docs(rich): freeze Phase-B semantic contract candidate (#669) - #685
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Independent Phase-B authority review @
|
F1 (PR #685 review): the normative document described itself as a candidate awaiting independent review while ADR-019 and both indexes record it as adopted; repository text now states the post-merge status (header + §19 lead-in). F2 (PR #685 review): §7 merged plain and explicitly sourced legacy plain into one read state. They are now distinct states: plain follows from the slot's answer mode, legacy_plain requires explicit source / mode provenance, and an unexplained string where Rich is authoritative classifies as corrupt, so candidate restore / STALE adoption / export cannot bypass the typed-read trust boundary.
|
F1/F2 corrections landed in F1 — post-merge status. The status header now states the post-merge truth: F2 — read-trust split. §7 now carries separate
§19-F already enumerated legacy as a distinct state; the §7 table now matches it. Checks for Ready for the focused re-review (F1/F2 only). |
Focused re-review — F1/F2 @
|
Summary
Phase-B authority pass for #669 (Rich Protocol / Backend Contract Freeze): turn the candidate Phase-B decisions into repository-level authority so independent review can accept them and Phase C gets a stable oracle.
Documentation-only. No production code, no tests, no schema changes. The known B-F01 closure bug remains deliberately unfixed.
Authority structure
docs/architecture/rich-content-semantic-contract.md— single normative explanation of Rich V1 semantics and protocol composition.docs/README.mdauthority tables +docs/adr/README.mdstatus updated.What is frozen (candidate)
CONTENT_LIMITS+ declared editor→canonical mapping policy.CORRUPT_PERSISTED_RICH != EMPTY_DOCUMENT.Explicitly NOT frozen
Receipt physical storage / SHA implementation / DB schema & index; B-F01 repair mechanism (split vs reject left for Phase C/D after adversarial evidence); Phase-C generator design; offline protocol; admission protocol; capability resolver implementation; Math UX; exact export DTO field names.
B-F01 disposition
KNOWN · NOT FIXED · USED AS PHASE-B COUNTEREXAMPLE (motivating RC-03) · PHASE-C/D FOLLOW-UP.
Review rounds
344c1473: verdict CHANGE_REQUIRED — blockers F1 (post-merge status self-contradiction) and F2 (plain vs legacy_plain read-trust conflation).be035c6d(docs-only follow-up):plain/legacy_plaininto distinct read states with the provenance rule —plainfollows from slot answer mode (nevertypeof value === "string"),legacy_plainrequires explicit source/mode provenance, and an unexplained string where Rich is authoritative classifies ascorrupt, so candidate restore / reload / recovery /STALE_VERSIONadoption / grading-result rendering / export cannot bypass the typed-read boundary.Checks
pnpm format:check— PASSpnpm verify:static— PASS (format/lint/lint:arch/lint:db-config/lint:db-journal/lint:env-contract/lint:eslint/typecheck/openapi:check; recursive-reference exporter warnings are pre-existing)git diff --check— PASSbe035c6d(docs-only): pre-push gate re-ran lint:arch / typecheck / openapi:check — PASS (same pre-existing exporter warnings);pnpm format:checkre-run — PASSScope audit
git diff --statvs master: 4 files, +539/−6, all underdocs/. Noapps/orpackages/changes.Handoff
Refs #669, #673. Does not close #669.