docs(6209): snippets, rule embeddings, notes, ledger ageing and references, routes, reporting, handshake, lesson kind, request deadlines, contract-around-change, family models
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 14s
CI & Build / TypeScript typecheck (push) Successful in 1m0s
CI & Build / integration (push) Successful in 1m14s
CI & Build / Python tests (push) Successful in 1m59s
CI & Build / Build & push image (push) Successful in 15s

Twelve more test files drop issue, milestone, rule, note, lesson and
snippet numbers and the dated or one-project figures that recorded how
each property was found; the docstrings state the property and why it
holds. The contract-around-the-change guard keeps the dict-key example as
the failure a signature-watcher misses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 21:34:24 -04:00
co-authored by Claude Opus 5.5
parent ead4a7e2ad
commit d0d278dcce
12 changed files with 100 additions and 112 deletions
+9 -9
View File
@@ -1,9 +1,9 @@
"""The document a rule is EMBEDDED as (milestone 307 step 4, note 3026).
"""The document a rule is EMBEDDED as.
This shape is measured, not chosen. Note 2485 probed the live corpus and found
the snippet was the only discriminative record in it — a 0.153 top-to-second
gap against 0.010-0.023 for everything else — and that the cause was its shape:
purpose stated twice in a short, single-topic document. These cases pin that
This shape is measured, not chosen. Probed across a corpus, the snippet is the
most discriminative record kind — a 0.153 top-to-second gap against
0.010-0.023 for everything else — and the cause is its shape: purpose stated
twice in a short, single-topic document. These cases pin that
recipe onto rules, and pin the exclusion that matters more than any of it.
"""
import pytest
@@ -27,8 +27,8 @@ def test_the_trigger_appears_twice_which_is_what_makes_a_vector_sharp():
def test_why_is_never_embedded():
"""The exclusion this whole design turns on. `why` is dated incident
narrative — rule 46's runs to 4,300 characters — and long multi-topic prose
is what made sixteen dev-logs mutually indistinguishable: the average lands
narrative — it can run to thousands of characters — and long multi-topic
prose is what makes dev-logs mutually indistinguishable: the average lands
on a centroid they all share. Adding it would not give the vector more to
work with; it would give every rule the SAME thing to work with.
@@ -41,7 +41,7 @@ def test_why_is_never_embedded():
def test_a_rule_with_no_trigger_still_embeds_just_less_sharply():
"""Every rule written before milestone 307 has no trigger. Degrading to
"""A rule can have no trigger. Degrading to
title + statement keeps them findable; it does NOT pad the document with
whatever text is lying around, which would be the tempting fix and the
wrong one."""
@@ -60,7 +60,7 @@ def test_an_empty_rule_yields_no_document_and_therefore_no_vector():
def test_a_long_rule_chunks_and_every_chunk_carries_the_trigger():
"""Rule 46's statement is ~3,600 characters across two headed sections.
"""A ~3,600-character statement across two headed sections.
The existing chunker splits it at headings and prefixes each chunk with the
title — which now CONTAINS the trigger, so each half stays anchored to what
the rule is for. This is why splitting a merged rule costs nothing at