docs(6209): forge, dedup, tuning, registry, reply shapes and discipline, checkpoint, lesson kind tests
CI & Build / Python lint (push) Successful in 4s
CI & Build / Plugin hooks (push) Successful in 25s
CI & Build / TypeScript typecheck (push) Successful in 56s
CI & Build / integration (push) Successful in 1m24s
CI & Build / Python tests (push) Successful in 2m13s
CI & Build / Build & push image (push) Successful in 13s

Eight more test files state their properties without issue, milestone,
rule and decision numbers. The tuning and suspension notes describe the
symptom a shipped default or a late ledger produces instead of one
install's dated readings; the reply-discipline and checkpoint docstrings
state the failure they prevent instead of the session that measured it.
test_empty_selector_is_the_rule_115_baseline is renamed for what it
checks: the no-forge baseline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 21:30:54 -04:00
co-authored by Claude Opus 5.5
parent 0e658bf275
commit b3e6a27dc1
8 changed files with 97 additions and 110 deletions
+15 -20
View File
@@ -1,17 +1,13 @@
"""A reply's sections are chosen, not filled (#4153, milestone 409 step 7).
"""A reply's sections are chosen, not filled.
WHY THIS EXISTS
Step 6 measured the scaffold on live sessions and found the two halves
disagreeing: **adherence passed and the read test failed.** Completion replies
carried every section the table asks for — placement, what changed, what needs
the operator, what comes next — and the operator still could not read them.
The cause was in the skill rather than in compliance with it. It said to pick a
kind of reply "then fill its sections… keep them even when one is short", which
is an instruction to complete a form. Nothing anywhere set a ceiling, and a
section with a heading and nothing to say gets filled rather than dropped. So a
faithful reply and an unreadable one were the same reply.
A reply can carry every section the table asks for — placement, what changed,
what needs the operator, what comes next — and still be unreadable: adherence
passes and the read test fails. An instruction to pick a kind of reply "then
fill its sections" is an instruction to complete a form, and with no ceiling a
section with a heading and nothing to say gets filled rather than dropped. A
faithful reply and an unreadable one become the same reply.
WHAT IS PINNED
@@ -25,18 +21,18 @@ unchanged and are not this file's subject:
3. "Needs you" takes BOTH tests: theirs to decide, and blocking.
4. A decision already made is acted on rather than re-argued.
RULE 167, AND WHY THERE IS NO ABSENCE CHECK HERE
WHY THERE IS NO ABSENCE CHECK HERE
The obvious guard — assert the skill no longer tells anyone to "fill" a
section — is the trap snippet #3352 names. This skill legitimately discusses
The obvious guard — assert the skill never tells anyone to "fill" a section —
is a trap. This skill legitimately discusses
filling in order to warn against it ("not a form to complete", "a section
filled because it was in the table"), so an absence check would fail on the
corrected text: a false alarm about the very thing it protects.
So every assertion here is a PRESENCE check, and one is POSITIONAL —
`test_the_needs_you_test_sits_with_the_needs_you_section` pins where the test
lives, not merely that the words occur somewhere in the file. All four were
falsified against the pre-#4153 text before being committed.
lives, not merely that the words occur somewhere in the file. Each fails
against a skill that says to fill its sections.
"""
from __future__ import annotations
@@ -111,7 +107,7 @@ def test_the_needs_you_test_sits_with_the_needs_you_section():
def test_a_settled_decision_is_acted_on_rather_than_re_argued():
"""Re-opening a decision reads as self-contradiction, not as diligence.
Phrased as a practice rather than a prohibition (rule 165): the instruction
Phrased as a practice rather than a prohibition: the instruction
is what to DO with a decision, with the failure named after it.
"""
text = _flat()
@@ -126,14 +122,13 @@ def test_the_scaffold_itself_is_untouched():
"""This step changed the discipline AROUND the sections, not the sections.
If a future edit deletes a category while tightening the prose, that is a
change to #4009's subject and should not ride along silently here.
change to the scaffold itself and should not ride along silently here.
"""
text = _flat()
for section in ("where this sits", "what now works", "how / why",
"needs you", "next"):
assert section in text, f"completion-report section {section!r} is gone"
# The kinds live in the delivered shapes since milestone 500 step 4; the
# skill keeps the reasoning and the worked completion report.
# The kinds live in the delivered shapes; the skill keeps the reasoning and the worked completion report.
from scribe.services import reply_shapes
shapes = " ".join(s.title + " " + s.text for s in reply_shapes.SHAPES.values()).lower()