docs(6209): wide net, startup, stamps, slippage, miss route and parity tests
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 15s
CI & Build / TypeScript typecheck (push) Successful in 53s
CI & Build / integration (push) Successful in 1m10s
CI & Build / Build & push image (push) Canceled after 0s
CI & Build / Python tests (push) Canceled after 1m23s

Eight more test files state the property they pin as a present-tense
fact. Incident narratives (a dated storage stall, a week of zero tuning
events, a two-project poisoned ledger, a twenty-site owner audit) become
the failure shape each test defends; one-install figures that name a rule
become a general worked example with the calibration numbers kept. The
family-grouping regression guard is renamed for what it checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 21:27:17 -04:00
co-authored by Claude Opus 5.5
parent d41e72d26c
commit ff08500128
8 changed files with 154 additions and 196 deletions
+31 -36
View File
@@ -1,10 +1,9 @@
"""The review surface: rows whose evidence no longer meets the bar, and
canons whose own rows no longer agree what they are (#4204, #4208).
canons whose own rows no longer agree what they are.
WHAT THESE GUARD, and it is a property rather than an output shape. The
ledger was poisoned by a machine writing permanent classifications that
nobody read — 32 rows on one project, 334 on another. The correction is NOT
a machine that un-writes them; that is the same mistake pointed the other
WHAT THESE GUARD, and it is a property rather than an output shape. A machine
writing permanent classifications that nobody reads poisons the ledger. The
correction is NOT a machine that un-writes them; that is the same mistake pointed the other
way. It is a reader that puts the evidence in front of a judge.
So the tests below assert two things hardest:
@@ -15,8 +14,8 @@ So the tests below assert two things hardest:
* the listing changes nothing, which is checked by giving it rows and
asserting the rows come back untouched.
The round-trip test exists because the score used to live only inside a
prose sentence. Writer and parser are now one constant apart, and a change
The round-trip test exists because the score is carried inside a prose
sentence. Writer and parser are one constant apart, and a change
to one that the other does not follow is exactly the kind of silent rot the
hook's own history is made of.
"""
@@ -135,10 +134,9 @@ def test_a_canon_whose_members_agree_is_not_listed() -> None:
def test_a_canon_whose_members_are_all_different_things_is_listed() -> None:
"""Portal's #3283, in miniature: a class, a getter, a test and a binding
recorded as instances of one pattern — and in four different files, as
they really were. The paths matter now: a callable sharing a file with a
class is read as that class's method (#4220), so putting them all in one
"""A class, a getter, a test and a binding recorded as instances of one
pattern — in four different files. The paths matter: a callable sharing a
file with a class is read as that class's method, so putting them all in one
file would test the excuse rather than the disagreement."""
rows = [_member("class SessionAbsent(RuntimeError):", path="src/errors.py",
symbol="SessionAbsent"),
@@ -198,7 +196,7 @@ def test_the_review_changes_nothing_about_the_rows_it_reads() -> None:
def test_the_service_carries_no_machinery_for_bulk_withdrawal() -> None:
"""A structural guard (rule 167) on the design decision, not on output.
"""A structural guard on the design decision, not on output.
If someone adds an auto-retire path to the ledger, this fails and the
conversation about whether a machine may un-judge in bulk happens again
— deliberately, rather than in a diff nobody read."""
@@ -209,19 +207,18 @@ def test_the_service_carries_no_machinery_for_bulk_withdrawal() -> None:
assert banned not in body, banned
# ── coherence is about what a canon CANNOT account for (#4220) ────────────
# ── coherence is about what a canon CANNOT account for ────────────────────
#
# The first version of this check asked whether every member shared a form.
# On its first live day the only two canons it reported were both sound,
# while the genuinely polluted one had already been cleaned by hand — a
# surface whose whole output is noise is one that stops being read.
# Asking whether every member shares a form reports sound canons — a class and
# its methods are two forms of one shape — and a surface whose whole output is
# noise stops being read.
#
# The obvious repair — group by family, keep the majority test — is a trap,
# and `test_family_grouping_alone_would_have_gone_blind` is the guard that
# stops anyone walking back into it.
# and `test_family_grouping_alone_passes_a_polluted_canon` is the guard that
# stops anyone walking into it.
def _model(sym, path):
"""A SQLAlchemy model class, as #2844 holds one."""
"""A SQLAlchemy model class, as the model-convention canon holds one."""
return _member(f"class {sym}(Base, TimestampMixin):", path=path)
@@ -231,10 +228,9 @@ def _to_dict(path):
def test_a_class_and_the_to_dict_beside_it_are_one_shape() -> None:
"""#2844 exactly: the SQLAlchemy model convention, whose own text is
about the class AND the to_dict it must carry. Live it scored
37/62 = 0.597 and was called incoherent for containing precisely what it
says it contains."""
"""The SQLAlchemy model convention, whose own text is about the class AND
the to_dict it must carry. A form-level check scores it 37/62 = 0.597 and
calls it incoherent for containing precisely what it says it contains."""
rows = []
for i in range(6):
rows += [_model(f"M{i}", f"src/scribe/models/m{i}.py"),
@@ -244,9 +240,9 @@ def test_a_class_and_the_to_dict_beside_it_are_one_shape() -> None:
def test_a_sync_starter_and_the_async_tick_it_schedules_are_one_shape() -> None:
"""#2849: four loop-starters and three ticks. `shape_family` already
collapses fn and async-fn for the divergence gate; this surface was the
one place still asking at form level."""
"""Four loop-starters and three ticks. `shape_family` collapses fn and
async-fn for the divergence gate, and this surface asks at the same
level."""
rows = [_member("def start_notification_loop() -> None:", path="src/n.py"),
_member("def start_log_retention_loop() -> None:", path="src/l.py"),
_member("def start_auth_token_retention_loop() -> None:", path="src/a.py"),
@@ -256,10 +252,10 @@ def test_a_sync_starter_and_the_async_tick_it_schedules_are_one_shape() -> None:
assert stamps_to_review(rows)["incoherent_count"] == 0
def test_family_grouping_alone_would_have_gone_blind() -> None:
"""THE REGRESSION GUARD. Polluted #2844 as it stood this morning: 37
model classes, 25 to_dict methods beside them, and 31 rows that had no
business being there. Counted as families that is 56 callables to 37
def test_family_grouping_alone_passes_a_polluted_canon() -> None:
"""THE REGRESSION GUARD. A polluted model canon: 37 model classes, 25
to_dict methods beside them, and 31 rows that have no business being
there. Counted as families that is 56 callables to 37
types — 0.602, a clean pass under any majority test. Those 31 rows are
the ones the surface exists to find, so a change that lets this canon
read as coherent has broken the feature while keeping every other test
@@ -352,12 +348,11 @@ def test_the_coherence_verdict_reads_rows_and_writes_nothing() -> None:
for r in rows] == before
# ── a weak stamp is listed for judgment and counted by nobody (#4608) ─────
# ── a weak stamp is listed for judgment and counted by nobody ─────────────
#
# The floor guarded new writes; the rows written before it went on electing
# canons. On two projects a YAML CI snippet "dominated" a Svelte directory on
# the strength of 0.68-0.72 stamps, and every write there was told it
# diverged from it. The readers below must agree with the review surface
# The floor guards new writes; rows written below it would otherwise go on
# electing canons, so an unrelated snippet "dominates" a directory on the
# strength of 0.68-0.72 stamps and every write there is told it diverged. The readers below must agree with the review surface
# about what "weak" means — one predicate, so they cannot drift apart.
def test_one_predicate_says_what_weak_is() -> None: