Promote schema and canonicalizer out of history; add EvidenceModel (T06)
Verified the three published hashes reproduce byte for byte before promoting anything, then moved the schema, canonicalizer and vectors into governed assets. history/20260909-initial-exploration/ is untouched and stays the provenance record. - schemas/, informed_decision/, tests/vectors/ populated; the reference canonicalizer's ad-hoc __main__ block replaced by a real `python -m informed_decision` entry point. - tests/test_canonicalize.py — 20 tests, all green. Published vectors, all four isolation properties, canonical-form round-trip, key sorting, and a provenance test asserting the governed fixtures have not drifted from history/. - docs/specs/EvidenceModel.md — the two hashes, the split and why it exists, the four isolation properties, the presentation record, the bundle, and the relationship to audit-core. - pyproject.toml, Makefile. One test of mine was wrong on first run: it scanned for ", " to assert no insignificant whitespace, which fires on prose inside a brief. Replaced with a canonical round-trip comparison, which is the property actually meant. The canonicalizer was correct. EvidenceModel leads with what the model does NOT claim — no proof of comprehension, no proof of reading (deliberately, since the alternative is surveillance), no survival of a compromised surface, and audit-core's inherited bound that a hash chain cannot prove a record was never sent. T06 stays progress: the SCOPE.md rewrite is gated on the T02 ruling. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V3W1dQG7GFFM9d94jFx7iR Assistant: claude-code Assistant-Model: opus Assistant-Process: 1565372@bnt-lap001 Assistant-Session: 16bb2f25-b34c-49ef-8e94-5fec3567a568
This commit is contained in:
parent
7ae67b2f4e
commit
a8e227851e
19 changed files with 2207 additions and 2 deletions
|
|
@ -237,7 +237,7 @@ are placeholders.
|
|||
|
||||
```task
|
||||
id: INFD-WP-0001-T06
|
||||
status: todo
|
||||
status: progress
|
||||
priority: high
|
||||
state_hub_task_id: "47cb3f7a-e349-5c81-a304-86275e058a85"
|
||||
```
|
||||
|
|
@ -275,6 +275,30 @@ exercised in CI; the three published expected hashes reproduce byte-for-byte;
|
|||
the implemented-and-first-cut boundary rather than the aspiration, and no longer
|
||||
carries the T01 "nothing is implemented" banner.
|
||||
|
||||
2026-09-09 — substantive half done; task stays `progress` because the `SCOPE.md`
|
||||
rewrite is gated on T02. Delivered:
|
||||
|
||||
- `schemas/decision-memo.schema.json` plus both worked examples;
|
||||
`informed_decision/canonicalize.py` as the governed canonicalizer, with the
|
||||
ad-hoc `__main__` block replaced by `python -m informed_decision`;
|
||||
fixtures under `tests/vectors/`. `history/` is untouched.
|
||||
- `tests/test_canonicalize.py` — 20 tests, all green. The three published
|
||||
hashes reproduce byte for byte, and all four isolation properties are pinned.
|
||||
- `docs/specs/EvidenceModel.md`.
|
||||
- `pyproject.toml`, `Makefile` (`make test`, `make check`).
|
||||
|
||||
Two things worth recording rather than burying:
|
||||
|
||||
- Isolation properties 1, 2 and 4 are all *negative* — they assert the hash does
|
||||
**not** change. A canonicalizer returning a constant would pass all three.
|
||||
Property 3 plus per-field variants over `question`, `requested_act`,
|
||||
`binding_level` and `packet` are what stop the suite being vacuous.
|
||||
- `test_governed_vectors_match_the_preserved_history_copy` asserts the governed
|
||||
fixtures have not drifted from the founding copies, so quietly editing a
|
||||
vector to make a failing test pass is itself a failure.
|
||||
|
||||
Remaining for `done`: rewrite `SCOPE.md` after the T02 ruling.
|
||||
|
||||
## Publish the OIDC browser-client contract to key-cape
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue