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
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:
@@ -43,7 +43,7 @@ async def test_short_body_skips_semantic_check():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_semantic_match_when_body_substantial():
|
||||
# A note blocks only in the copy band (#4306).
|
||||
# A note blocks only in the copy band.
|
||||
hit = fake_note(id=20, title="Existing", note_type="note")
|
||||
sem = AsyncMock(return_value=[(0.99, hit)])
|
||||
with patch("scribe.services.dedup.async_session",
|
||||
@@ -60,8 +60,8 @@ async def test_semantic_match_when_body_substantial():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_a_near_note_is_surfaced_not_blocked():
|
||||
"""#4306: sibling notes — the next dev-log, another part of one design —
|
||||
measured 0.90–0.98, so a match there is shown for the session to judge
|
||||
"""Sibling notes — the next dev-log, another part of one design — measure
|
||||
0.90–0.98, so a match there is shown for the session to judge
|
||||
instead of refusing the write."""
|
||||
from scribe.services.dedup import _NOTE_OVERLAP_FLOOR
|
||||
|
||||
@@ -133,9 +133,9 @@ def test_a_batch_overlap_names_its_record():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_gate_catches_a_duplicate_hiding_in_a_later_chunk():
|
||||
"""The capability #280 adds to the gate: a long candidate that duplicates
|
||||
an existing record in ONE SECTION is caught, where the whole-document
|
||||
query this replaces diluted exactly the section that mattered. The gate
|
||||
"""A long candidate that duplicates an existing record in ONE SECTION is
|
||||
caught; a whole-document query would dilute exactly the section that
|
||||
matters. The gate
|
||||
queries once per chunk and any chunk's hit blocks."""
|
||||
para = ("This section restates an existing decision in enough words to be "
|
||||
"a real paragraph of content for the chunker to keep. ") * 4
|
||||
@@ -202,13 +202,13 @@ def test_duplicate_response_shape():
|
||||
assert "update_task" in r["message"]
|
||||
|
||||
|
||||
# --- snippet structural identity (#2518) -------------------------------------
|
||||
# --- snippet structural identity ---------------------------------------------
|
||||
#
|
||||
# The gate used to compare a snippet's rendered DOCUMENT, which is mostly prose
|
||||
# about the code. Measured on the button corpus, that failed in both directions
|
||||
# at once: two deliberately-parallel variants were refused at 0.92, while a
|
||||
# verbatim re-record of one snippet under a different name scored below 0.90 and
|
||||
# was created. These tests pin the structural signals that replaced it.
|
||||
# A snippet's rendered DOCUMENT is mostly prose about the code, and comparing
|
||||
# it fails in both directions at once: two deliberately-parallel variants
|
||||
# refused at 0.92, while a verbatim re-record under a different name scores
|
||||
# below 0.90 and is created. These tests pin the structural signals used
|
||||
# instead.
|
||||
|
||||
|
||||
def _session_sequence(results):
|
||||
@@ -371,7 +371,7 @@ def test_duplicate_response_names_what_matched_for_structural_hits():
|
||||
assert "identical code" in r["message"]
|
||||
|
||||
|
||||
# --- the generalised report (#2547) ------------------------------------------
|
||||
# --- the generalised report -------------------------------------------------
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -404,7 +404,7 @@ def test_every_kind_has_a_suggestion_and_none_proposes_merging_notes():
|
||||
"""The suggestion is the report's point: what to DO differs by what the
|
||||
records are, and 'merge' is only ever the answer for snippets — folding two
|
||||
notes destroys what each said, which is why consolidated_at was dropped
|
||||
rather than built (#2483)."""
|
||||
rather than built."""
|
||||
from scribe.services.dedup import _KIND_SUGGESTION, _REPORT_KINDS
|
||||
|
||||
for kind in _REPORT_KINDS:
|
||||
@@ -418,7 +418,7 @@ def test_every_kind_has_a_suggestion_and_none_proposes_merging_notes():
|
||||
assert "supersedes" in _KIND_SUGGESTION["note"]
|
||||
|
||||
|
||||
# ── the plan gate (milestone 415, step 4) ─────────────────────────────────────
|
||||
# ── the plan gate ─────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
Reference in New Issue
Block a user