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
+7 -7
View File
@@ -1,10 +1,10 @@
"""Every retrieval point is declared, derived from the CALL SITES (#3431).
"""Every retrieval point is declared, derived from the CALL SITES.
WHY AST AND NOT GREP, demonstrated rather than asserted. Two of the sources in
this system reach their recorder as `source=SOURCE` through a module-level
constant — `wide_net` and `preference_slot` — so a grep for `source="` finds
neither. A registry test built on that grep would pass while being blind to
two arms, which is the narrowing #3191 warns about: a check that looks
two arms — a check that looks
thorough and quietly covers less than it claims.
So the extractor below parses each module, resolves module-level string
@@ -35,13 +35,13 @@ from scribe.services.retrieval_surfaces import SURFACES
SRC = Path(__file__).resolve().parents[1] / "src"
# The recorders, plus the one FORWARDER. `rules_payload` takes a `source` and
# passes it to `record_rule_surfaced` on its caller's behalf (snippet #2858),
# passes it to `record_rule_surfaced` on its caller's behalf,
# so its callers are the real declaration site and a scan of recorders alone
# would miss every ambient rule surfacing.
RECORDERS = {
"record_retrieval", "record_surfaced", "record_pulled",
"record_rule_surfaced", "record_rule_pulled", "rules_payload",
# The rulings arm (#4769): its two recorders, and `rulings_for_paths`,
# The rulings arm: its two recorders, and `rulings_for_paths`,
# which forwards its caller's `source` the way `rules_payload` does.
"record_system_surfaced", "record_system_pulled", "rulings_for_paths",
}
@@ -90,7 +90,7 @@ def call_sites() -> tuple[dict[str, set[str]], list[str]]:
def test_the_extractor_finds_something() -> None:
"""The guard has to be able to fail (rule 167).
"""The guard has to be able to fail.
An extractor that silently matched nothing would make every assertion
below vacuously true — a green suite proving the opposite of what it
@@ -130,7 +130,7 @@ def test_every_unresolved_call_site_is_declared() -> None:
# EQUALITY, not prefix. The first spelling of this compared against a
# prefix that could never match — the paths begin `scribe/` — so the check
# passed by matching nothing, which is the failure mode a guard is most
# likely to have and least likely to show (rule 167).
# likely to have and least likely to show.
undeclared = sorted({u for u in unresolved if u not in FAN_OUT_SITES})
assert not undeclared, (
"these call sites pass `source` as a value this test cannot resolve, "
@@ -157,7 +157,7 @@ def test_every_tunable_surface_is_also_a_registered_point() -> None:
def test_a_quiet_point_says_why() -> None:
"""A justified silence must carry its justification (#2475).
"""A justified silence must carry its justification.
Without the reason the reader cannot tell a decision from an oversight,
which is the whole difference this field exists to record.