generated from coulomb/repo-seed
feat: persist accountability evidence identities
This commit is contained in:
@@ -14,7 +14,13 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
from urllib.parse import quote
|
||||
|
||||
from .accountability_roots import DEFAULT_ROOT_MANIFEST_PATH, collect_accountability_root_evidence
|
||||
from .accountability_roots import (
|
||||
DEFAULT_ROOT_MANIFEST_PATH,
|
||||
AccountabilityEvidenceStore,
|
||||
build_identity_projection,
|
||||
collect_accountability_root_evidence,
|
||||
load_accountability_root_manifest,
|
||||
)
|
||||
from .connectors import ConnectorConfig
|
||||
from .financial_baseline import financial_export_from_legacy
|
||||
from .loader import declaration_files, load_yaml
|
||||
@@ -116,6 +122,8 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
discover_roots.add_argument("--manifest", type=Path, default=DEFAULT_ROOT_MANIFEST_PATH)
|
||||
discover_roots.add_argument("--include-remote", action="store_true", help="Allow HTTP reads from configured remote roots.")
|
||||
discover_roots.add_argument("--max-items-per-root", type=int, default=200)
|
||||
discover_roots.add_argument("--identity-projection", action="store_true", help="Print normalized identity candidates instead of raw evidence.")
|
||||
discover_roots.add_argument("--store-db", type=Path, default=None, help="Persist evidence and identity candidates in a SQLite store.")
|
||||
|
||||
registry = sub.add_parser("registry", help="Feed a running Railiance Fabric registry service.")
|
||||
registry_sub = registry.add_subparsers(dest="registry_command", required=True)
|
||||
@@ -330,12 +338,17 @@ def main(argv: list[str] | None = None) -> int:
|
||||
return _scan_repo(args)
|
||||
|
||||
if args.command == "discover-roots":
|
||||
manifest = load_accountability_root_manifest(args.manifest)
|
||||
payload = collect_accountability_root_evidence(
|
||||
args.manifest,
|
||||
include_remote=args.include_remote,
|
||||
max_items_per_root=args.max_items_per_root,
|
||||
)
|
||||
print(json.dumps(payload, indent=2, sort_keys=True))
|
||||
projection = build_identity_projection(payload, manifest)
|
||||
if args.store_db:
|
||||
store = AccountabilityEvidenceStore(args.store_db)
|
||||
store.add_evidence_run(payload, projection)
|
||||
print(json.dumps(projection if args.identity_projection else payload, indent=2, sort_keys=True))
|
||||
return 0
|
||||
|
||||
if args.command == "registry":
|
||||
|
||||
Reference in New Issue
Block a user