generated from coulomb/repo-seed
173 lines
5.7 KiB
Markdown
173 lines
5.7 KiB
Markdown
# Accountability Root Manifest
|
|
|
|
The accountability root manifest is the handoff between the financial Fabric
|
|
model and the discovery/update loop.
|
|
|
|
It answers where discovery starts. A manifest names the netkingdom, actors,
|
|
fabric boundaries, and durable roots that can prove repositories, deployment
|
|
realities, service configuration, endpoint contracts, backup/recovery evidence,
|
|
and secret-root metadata. It does not collect live telemetry and it does not
|
|
make State Hub the authoring surface for topology.
|
|
|
|
Schema:
|
|
|
|
```text
|
|
schemas/accountability-root-manifest.schema.yaml
|
|
```
|
|
|
|
Current Railiance manifest:
|
|
|
|
```text
|
|
fabric/discovery/railiance-accountability-roots.yaml
|
|
```
|
|
|
|
Tenant/subfabric example:
|
|
|
|
```text
|
|
examples/discovery/accountability-root-manifest.yaml
|
|
```
|
|
|
|
Raw evidence run schema:
|
|
|
|
```text
|
|
schemas/accountability-root-evidence.schema.yaml
|
|
```
|
|
|
|
Identity projection schema:
|
|
|
|
```text
|
|
schemas/accountability-identity-projection.schema.yaml
|
|
```
|
|
|
|
Ownership review schema:
|
|
|
|
```text
|
|
schemas/accountability-ownership-review.schema.yaml
|
|
```
|
|
|
|
Update delta schema:
|
|
|
|
```text
|
|
schemas/accountability-update-delta.schema.yaml
|
|
```
|
|
|
|
## Required Sections
|
|
|
|
- `netkingdom`: root id, name, and king actor.
|
|
- `actors`: king, lord, tenant, operator, or steward actors.
|
|
- `fabrics`: fabric and subfabric boundaries.
|
|
- `discovery_roots`: durable roots such as State Hub repo inventory, Gitea
|
|
organizations, registry manifests, host paths, repo checkouts, deployment
|
|
automation, endpoint contracts, backup/recovery evidence, and secret-root
|
|
metadata.
|
|
- `refresh`: cadence and trigger hints for the future update loop.
|
|
|
|
## Boundary Rules
|
|
|
|
The current Railiance manifest has one active fabric:
|
|
`fabric.railiance.primary`. Future tenant subfabrics are added under that
|
|
fabric by adding a tenant actor, a `Subfabric`, and subfabric-scoped discovery
|
|
roots. This does not change the root fabric criterion: the fabric boundary
|
|
still rests on financial and operational accountability.
|
|
|
|
`owner_actor_id` on a discovery root describes the default owner to attach to
|
|
identity candidates discovered through that root. For ordinary repositories,
|
|
deployment files, and host-path evidence this should be the lord who pays for
|
|
the fabric. King authority remains modeled on the netkingdom and on roots that
|
|
represent recovery, secret, backup, or termination authority.
|
|
|
|
Discovery roots should state `safe_discovery` explicitly. Secret and backup
|
|
roots should use `metadata_only` or `explicit_review`; adapters must never read
|
|
secret values or operational telemetry while building Fabric graph evidence.
|
|
|
|
## Collecting Root Evidence
|
|
|
|
The first adapter slice emits raw evidence without promoting it into accepted
|
|
graph snapshots:
|
|
|
|
```bash
|
|
railiance-fabric discover-roots \
|
|
--manifest fabric/discovery/railiance-accountability-roots.yaml \
|
|
--max-items-per-root 200
|
|
```
|
|
|
|
The command covers manifest-backed repository inventory, repository checkout
|
|
identity, host-path evidence, deployment automation and infrastructure files,
|
|
State Hub/Gitea metadata roots, endpoint/service-config roots, and safe
|
|
metadata-only backup or secret roots. Remote HTTP reads are disabled by default;
|
|
pass `--include-remote` only when the operator intentionally wants configured
|
|
remote roots such as State Hub inventory endpoints to be fetched.
|
|
|
|
The output is an `AccountabilityRootEvidenceRun`. Every evidence item carries
|
|
provenance, source, fingerprint, `durable: true`, and
|
|
`live_telemetry: false`, preserving the boundary between Fabric evidence and
|
|
operational telemetry.
|
|
|
|
To normalize raw evidence into reviewable identity candidates:
|
|
|
|
```bash
|
|
railiance-fabric discover-roots \
|
|
--identity-projection \
|
|
--max-items-per-root 200
|
|
```
|
|
|
|
To persist raw evidence and identity candidates in a local SQLite store:
|
|
|
|
```bash
|
|
railiance-fabric discover-roots \
|
|
--store-db .railiance-fabric/accountability-evidence.sqlite3 \
|
|
--identity-projection
|
|
```
|
|
|
|
The store is intentionally separate from accepted registry graph snapshots. It
|
|
keeps raw evidence runs, evidence items, and identity candidates available for
|
|
inspection before any candidate is promoted.
|
|
|
|
## Ownership Review
|
|
|
|
To resolve ownership and containment from the normalized identities:
|
|
|
|
```bash
|
|
railiance-fabric discover-roots \
|
|
--ownership-review \
|
|
--store-db .railiance-fabric/accountability-evidence.sqlite3
|
|
```
|
|
|
|
The ownership review inherits owners from fabric/subfabric containment when
|
|
possible, applies explicit owner evidence from discovery roots, and marks
|
|
unresolved or ambiguous candidates as `needs_review`. Accepted candidates must
|
|
have a resolved owner and containment unless they are actors or the netkingdom
|
|
root.
|
|
|
|
To persist a reviewer decision for a stable identity candidate:
|
|
|
|
```bash
|
|
railiance-fabric review-identity identity:repository:example-repo \
|
|
--store-db .railiance-fabric/accountability-evidence.sqlite3 \
|
|
--decision accept \
|
|
--owner-actor-id actor.railiance.primary-lord \
|
|
--fabric-id fabric.railiance.primary \
|
|
--reviewer operator \
|
|
--note "accepted from reviewed checkout evidence"
|
|
```
|
|
|
|
Reviewer decisions are keyed by stable identity key. Later rescans apply the
|
|
latest decision for that key, so ordinary evidence refreshes do not lose
|
|
reviewed ownership choices.
|
|
|
|
## Update Deltas
|
|
|
|
To compare the current run with previous identity and ownership-review outputs:
|
|
|
|
```bash
|
|
railiance-fabric discover-roots \
|
|
--delta \
|
|
--previous-identity-projection previous-identities.json \
|
|
--previous-ownership-review previous-ownership.json
|
|
```
|
|
|
|
The delta separates candidate graph node changes, candidate graph edge changes,
|
|
ownership changes, containment changes, review-state changes, and blocker
|
|
changes. When `summary.promotion_needed` is `false`, the update loop can skip
|
|
promotion because the durable evidence produced no meaningful Fabric change.
|