core/comprehension_attempt/proposal.py: emit_proposal writes a content-addressed teaching/proposals/comprehension_failures/<hash>.json ONLY for growth-surface families (proposal_allowed). Deliberately toothless: status always proposal_only, mounted always false, requires_review always true (enforced in __post_init__); the problem text is hashed (sha256), never stored; filename = sha256(family:text_sha) so the same failure is idempotent. No proposal for a correct wrong=0 boundary. Serving never reads the sink (scanned: generate/stream, field/propagate, vault/store, generate/derivation, core/reliability_gate). Routes through the existing proposal-only flywheel (ADR-0055/0056/0057), never a parallel correction path. README pins the contract. 6 tests. |
||
|---|---|---|
| .. | ||
| README.md | ||
Comprehension failure proposals (proposal-only)
This directory is the write-only sink for the contemplation pass (N5/N6). When the loop meets
a growth-surface failure family (proposal_allowed = True in the N4 registry), it may emit one
content-addressed artifact here:
<sha256(failure_family : sha256(problem_text))>.json
Every artifact is deliberately toothless:
{
"status": "proposal_only",
"mounted": false,
"requires_review": true,
"suggested_next_fixture": null,
...
}
Hard rules (enforced by tests)
statusis alwaysproposal_only;mountedis alwaysfalse;requires_reviewis alwaystrue.- Serving never reads these files. No
generate/derivation,core/reliability_gate,generate/stream.py,field/propagate.py, orvault/store.pyreferences this path. - The raw problem text is hashed, never stored (
problem_text_sha256). - The emitter never proposes against a correct wrong=0 boundary (
must_remain_refusedfamilies produce no artifact). - Filenames are content-addressed and deterministic — the same failure writes the same path.
What happens next
A proposal is an input to human review, not a change. The aligned flow is
failure -> classification -> proposal -> review -> ratification
never failure -> self-patch. Ratification (authoring the gold fixture / reader rule) happens
only via a human-reviewed PR through the existing teaching flywheel (ADR-0055/0056/0057). The
engine cannot mount, ratify, or apply anything written here.
Generated artifacts are not committed; this README is the only tracked file in the directory.