You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4c2e6ee
Browse filesBrowse the repository at this point in the historyBrowse files
docs(p022): bring the status surfaces level with what cp5 proves (#259 cp5.4)
The census fragment now describes the checkpoint-5 comparison surface — every
`Finding` member and every refusal in full — and counts the rendered-surface
family beside the verdict ledger through tests/verdict_render_census.py, the
same interpretation the render harness and the inventory use. Its filename
stays checkpoint 4's, because that is where it was introduced and two notes
link it; what it describes it now says in its own first paragraph, which keeps
one census for one ledger instead of two that can disagree.
The cp5.1/5.2/5.3 campaigns are registered like cp4's and the shadow slice's
and rendered by the same single interpreter, so the existing gate holds them:
a result that no longer matches its definition, was taken on a dirty tree,
missed a required catcher, or names a commit this tree does not descend from is
a red build.
spec/Bridge.md §6 and spec/BridgeBehaviorMatrix.md move the BR-V4 wording rows
and the BR-V9 rendering rows from "carried by the goldens, compared at cp5" to
compared, marked L3 ✅ with a legend saying what the mark means. The P-022
status row, the proposals index and the cp4 note's forward pointer move with
them. The cp4 note keeps its own numbers as history and says so.
No count is typed into any status surface: every number lives in a generated
fragment and the prose links. The wording these surfaces now carry is "Layer 3
parity over the measured set at the full Finding and the rendered surfaces",
with the unmeasured set named — protocol documents (row 4b), the
coordinate-domain controls (decision owed), the OD-1 door controls. Not
"verdict parity complete", not "#259 complete", not "shadow mode".
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DQ471fbXuoL2Poo4Ap3Kfb
<!-- GENERATED by scripts/render_checkpoint_status.py from tests/fixtures/verdicts/manifest.json and the *.verdicts.json goldens. Do not edit: regenerate with `python scripts/render_checkpoint_status.py`; tests/run_tests.py fails while this file is stale. -->
1
+
<!-- GENERATED by scripts/render_checkpoint_status.py from tests/fixtures/verdicts/ and tests/fixtures/verdict_renders/ (manifests + goldens). Do not edit: regenerate with `python scripts/render_checkpoint_status.py`; tests/run_tests.py fails while this file is stale. -->
2
2
3
-
# P-022 checkpoint 4 — measured census
3
+
# P-022 #259 — the Layer 3 measured census
4
4
5
-
Computed by `tests/verdict_census.py` (the interpretation `tests/test_verdict_fixtures.py` verifies against the Python projection) over the frozen Layer 3 ledger; the Rust half is `rust/crates/own-bridge/tests/verdicts.rs`.
5
+
Computed by `tests/verdict_census.py` and `tests/verdict_render_census.py` (the interpretations the two fixture harnesses verify against the Python projections) over the frozen ledgers; the Rust halves are `rust/crates/own-bridge/tests/verdicts.rs` and `.../tests/renders.rs`.
6
+
7
+
**The surface this describes is checkpoint 5's**: the verdict replay compares EVERY `Finding` member (`message`, `related` and `flow` included) and every refusal in full, and the rendered-surface replay compares bytes. At checkpoint 4 the same ledger was compared on identity, anchor, kind and tiering only, and refusals up to their `message=` member; the counts below are the ledger's either way, which is why one fragment serves both and says which surface it means.
@@ -17,8 +19,20 @@ Computed by `tests/verdict_census.py` (the interpretation `tests/test_verdict_fi
17
19
| … refused by `check_facts` with an error containing `obligation protocol`| 2 |
18
20
| … refused by `check_facts` with an error containing `outside the core's line domain`| 4 |
19
21
| … refused at the typed `OwnIr` door (#294 OD-1) | 2 |
20
-
| replayed by Rust at the cp4 surface (goldens minus exclusions) | 79 |
21
-
| … reference refusals among them (compared by refusal class) | 5 |
22
-
| … findings among them (compared on the cp4 members) | 152 |
22
+
| replayed by Rust (goldens minus exclusions) | 79 |
23
+
| … reference refusals among them (compared in full) | 5 |
24
+
| … findings among them (compared on every `Finding` member) | 152 |
25
+
26
+
The differential counts over the replayed set — Python-only, Rust-only, changed, ordering-only, unexplained — are asserted, not measured here: the Rust replay compares every replayed case's full ordered verdict list (or its refusal text) against the golden on every member, collects every divergence without fail-fast, and fails if one exists. A green `cargo test -p own-bridge --test verdicts` is 0 / 0 / 0 / 0 / 0 by construction; a non-zero count is a red build.
27
+
28
+
## The rendered surfaces (BR-V9)
29
+
30
+
A second family, and a different kind of comparison: its replay compares the **bytes**, because SARIF key order is part of this surface. Cases are listed, never swept — one exists to exercise a BR-V9 rule, and which rows each pins is the join the [surface inventory](p022-cp5-inventory.md) reports on.
23
31
24
-
The differential counts over the replayed set — Python-only, Rust-only, changed, ordering-only, unexplained — are asserted, not measured here: the Rust replay compares every replayed case's full ordered verdict list (or its refusal class) against the golden on the cp4 members, collects every divergence without fail-fast, and fails if one exists. A green `cargo test -p own-bridge --test verdicts` is 0 / 0 / 0 / 0 / 0 by construction; a non-zero count is a red build.
0 commit comments