docs: record P6 implementation, contract, and automated acceptance PASS

This commit is contained in:
2026-08-13 12:44:19 +02:00
parent 124891bbfe
commit be0e68e77d
3 changed files with 82 additions and 12 deletions
@@ -79,6 +79,23 @@ thothctl --installation <absolute>/thothii-installation.yaml workspace vector re
- `preprocess run` continues only with the exact accepted blob digest and a compatible reusable
DWH binding; otherwise it records a new review checkpoint.
## Commit-addressed Evidence materialization (P6)
- Filesystem Evidence `<workspace-id>/evidence` is materialized from the exact pinned Git commit
into the immutable revision content root `<registry>/snapshots/<commit>/<id>/evidence` at
activation, with a sibling bounded manifest `<id>/evidence.manifest.json` whose digest is chained
into `snapshot.json`.
- Materialization uses fixed Git plumbing (`ls-tree -r -z` + `cat-file blob`) and refuses symlinks
and gitlinks at any depth, traversal/absolute/duplicate/cross-namespace paths, and non-regular
modes. Installation-local limits bound entry count (default 4096), total bytes (64 MiB),
per-file bytes (8 MiB), path bytes (4096), and manifest bytes (1 MiB); a size-sum preflight runs
before any bytes are written and no partial root is published.
- `preprocess evidence` and `preprocess run` operate directly on the materialized root; the
temporary `evidence_materialization_required` stop is retired (the code remains only for
pre-P6 compatibility). HTTP/S3 Evidence is unchanged.
- Materialized roots are retained with their commit-addressed snapshot directory and removed only
when the revision becomes unreferenced.
## Validation
- `--installation` is mandatory and absolute.
@@ -133,6 +150,9 @@ The request is streamed as one schema-versioned JSON document over stdin. Public
`thothctl --json` parses the operator stdout strictly and re-encodes only the public fields above.
`evidence_materialization_required` is retained for pre-P6 compatibility; since P6, filesystem
Evidence is materialized at activation and preprocesses directly.
## Exit codes
- `0`: `succeeded`, `unchanged`, or `dry_run`