docs(6209): rulebooks, pull telemetry, lesson usage, duplicate arm, cited status, trigger shape
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 14s
CI & Build / TypeScript typecheck (push) Successful in 54s
CI & Build / integration (push) Successful in 1m3s
CI & Build / Python tests (push) Successful in 1m55s
CI & Build / Build & push image (push) Successful in 13s
CI & Build / Python lint (push) Successful in 2s
CI & Build / Plugin hooks (push) Successful in 14s
CI & Build / TypeScript typecheck (push) Successful in 54s
CI & Build / integration (push) Successful in 1m3s
CI & Build / Python tests (push) Successful in 1m55s
CI & Build / Build & push image (push) Successful in 13s
Six more test files state their pinned properties without the issue and milestone history: the pull-telemetry guard explains enumerating kinds instead of listing two getter incidents, cited-record status explains why a hint's id needs its status instead of recounting one misreported step, and the trigger-shape guard keeps its reasoning about why prose heuristics fail while dropping the dated corpus audit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,12 @@
|
||||
"""A record you merely CITE carries its status (#4154, milestone 409 step 8).
|
||||
"""A record you merely CITE carries its status.
|
||||
|
||||
WHY THIS EXISTS
|
||||
|
||||
Step 1 (#4010) made placement cheap for a task whose status CHANGES: the write
|
||||
returns where it sits, and the report is written from that. It does nothing for
|
||||
a task a reply only mentions. In this milestone's own step-6 review the session
|
||||
reported "#4014 is the open step of milestone 409". #4014 had been done for
|
||||
four days; the open step was #4015. The id did not come from a read — it came
|
||||
from a retrieval hint, which carries an id, a kind and a title and says nothing
|
||||
about status, while `list_milestones` said "8 of 9" and would not say which one.
|
||||
`placement` is cheap for a task whose status CHANGES: the write returns where
|
||||
it sits, and the report is written from that. It does nothing for a task a
|
||||
reply only mentions. An id taken from a retrieval hint carries an id, a kind
|
||||
and a title and says nothing about status, and a count like "8 of 9" does not
|
||||
say which one is open — so a finished step can be reported as the open one.
|
||||
|
||||
Two surfaces, one principle: the status arrives with the id.
|
||||
|
||||
@@ -23,7 +21,7 @@ THE ONE THAT MATTERS MOST
|
||||
answer "what is next" and they must not drift. It is written as a behavioural
|
||||
cross-check rather than `assert milestones.OPEN_STEP_STATUSES is placement._OPEN`,
|
||||
which shares one object today and would therefore pass no matter what either
|
||||
side did with it (rule 167: a guard has to be able to fail). This one fails if
|
||||
side did with it — a guard has to be able to fail. This one fails if
|
||||
either side changes its ordering or its notion of "open" alone.
|
||||
"""
|
||||
from types import SimpleNamespace
|
||||
@@ -164,7 +162,7 @@ async def test_the_earliest_open_step_wins_not_the_earliest_step():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_the_batch_does_not_fan_out_per_milestone():
|
||||
"""#2384's shape must not come back through the new query.
|
||||
"""The step query must not fan out per milestone.
|
||||
|
||||
Three queries for one milestone and three for forty — the cost is in the
|
||||
number of QUERIES, not the number of plans. A per-milestone "what's next"
|
||||
@@ -182,7 +180,7 @@ async def test_the_batch_does_not_fan_out_per_milestone():
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_both_step_queries_take_the_same_visibility_clause():
|
||||
"""Rule 78, and a correctness point on top of it.
|
||||
"""Access control, and a correctness point on top of it.
|
||||
|
||||
`next_step` names a step; the counts beside it say how many there are. Read
|
||||
through different clauses, a row could name a step its own progress numbers
|
||||
@@ -265,7 +263,7 @@ def test_a_record_with_no_status_gains_no_parenthesis():
|
||||
|
||||
|
||||
def test_the_listing_tools_say_what_next_step_is_and_how_to_use_it():
|
||||
"""The contract every MCP client reads (rule 119, decision #4027).
|
||||
"""The contract every MCP client reads.
|
||||
|
||||
The field is only worth adding if a caller knows it is there. Without this
|
||||
the docstring can be tidied to a parameter list and the one surface that
|
||||
@@ -290,7 +288,7 @@ def test_the_reply_skill_says_a_cited_record_still_gets_read():
|
||||
|
||||
Presence, not absence — the skill legitimately discusses recall in order to
|
||||
warn against it, so an absence check here would be satisfied by the warning
|
||||
itself (snippet #3352).
|
||||
itself.
|
||||
"""
|
||||
import pathlib
|
||||
|
||||
|
||||
Reference in New Issue
Block a user