cat-mode: relabeling text away from a checker is the fifth way past a block - #520
Conversation
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3bac8e76-778c-4372-ae31-199737dc7147) |
|
Replaces #485: same claim, rebased onto main after #471 (its old base) squash-merged, plus the test the skill coverage gate requires. #485 could not be reopened. GitHub refused, because its branch was force-pushed while the PR was closed: |
|
Queued — the merge queue status continues in this comment ↓. |
Tests: - python3 -m unittest tests.test_cat_mode -v OK - git grep -c "relabel or relocate wording" -- corpus/skills/cat-mode/references/named-constraints.md corpus/skills/cat-mode/references/named-constraints.md:1 - python3 scripts/check_no_dated_provenance.py ok no dated provenance
…k-is-a-stop rule's full text names relabeling wording away from a checker as a forbidden shape. Review lane: docs Safety invariant: Prose only. No hook, script, installer, or settings change, and no edit outside corpus/skills/cat-mode/references; every existing cat-mode test assertion keeps its target text. Pending user confirmation in this session. Effectiveness measurement: tests/test_cat_mode.py passes in full and the new sentence appears exactly once in the reference file. Slice rationale: One rule's full text gains one sentence, so the diff carries one claim. Architectural effect: None; the page summary in SKILL.md is untouched. Goal: Add the sentence to the reference entry. Motivation: The session that produced the rule passed a plan checker by placing unchanged step text under a heading the checker does not inspect. Alternative considerations: Adding the shape to the SKILL.md bullet was rejected because the page is capped and the full text lives in the reference file. Implementation details: In corpus/skills/cat-mode/references/named-constraints.md, inside the entry that begins "A hook or classifier block is a stop, not a puzzle", add one sentence before "Do what the block asks": Do not relabel or relocate wording so that the region a checker inspects no longer contains it; the words stay where the check looks, or the check is raised with the user. Keep the entry's wrap width. Then run the cat-mode test module and confirm every assertion still finds its text. Non-goals: No change to SKILL.md, any other bullet, hook, or script. No dates, session identifiers, or incident narrative. Layer: docs Feature state: active Files: - corpus/skills/cat-mode/references/named-constraints.md Change types: - corpus/skills/cat-mode/references/named-constraints.md: modify Acceptance criteria: - `python3 -m unittest tests.test_cat_mode -v` exits 0. - `git grep -c "relabel or relocate wording" -- corpus/skills/cat-mode/references/named-constraints.md` prints 1. - `python3 scripts/check_no_dated_provenance.py` exits 0. Exit code: 0 Invoker-Finalize-Id: 44d91e03-2d3a-4321-856b-a2845718380c
… claim: the cat-mode test module and the prose gates pass on the finished branch. Review lane: proof Safety invariant: Verification is read-only and does not alter any file. Effectiveness measurement: The test module run and the two gates are the direct measurement. Slice rationale: One focused proof per claim before review. Architectural effect: None; verification only. Goal: Prove the reference text landed and nothing else changed. Layer exception: allowed. Proof runs after the docs task so it checks the finished branch; it reads files only and changes nothing. Motivation: A sentence that breaks an assertion never reaches the installed skill. Alternative considerations: The full repository suite was rejected; this module is the one the branch touches. Implementation details: Run the cat-mode test module, the provenance gate, and the skill coverage gate. Non-goals: No mutations. Layer: app_regression Feature state: active Acceptance criteria: - Exits 0 only when all three pass. Exit code: 0 Invoker-Finalize-Id: c2258fad-e08d-4bc0-bcad-62aac2474252
…No ephemeral inter-task handoff files remain in the worktree before the merge gate. Review lane: cleanup Safety invariant: The scrub script only checks for known handoff artifact names and never touches source, tests, or other repository files. Effectiveness measurement: The script exits non-zero if any handoff artifact remains. Slice rationale: Required terminal scrub for every implementation workflow. Architectural effect: None; hygiene only. Goal: Leave the branch free of handoff artifacts. Motivation: Handoff files must not reach the PR. Alternative considerations: Manual cleanup was rejected as non-deterministic. Implementation details: Run scripts/scrub-handoff-artifacts.sh. Non-goals: No product edits. Layer: app_regression Feature state: active Acceptance criteria: - `bash scripts/scrub-handoff-artifacts.sh` exits 0. Exit code: 0 Invoker-Finalize-Id: 065b98b8-c465-4895-a3a8-cd8a2afd2bcd
|
@Mergifyio queue |
Merge Queue Status
This pull request spent 2 minutes 40 seconds in the queue, with no time running CI. Waiting for
All conditions
ReasonThe pull request #520 has been manually updated Tick the box to put this pull request back in the merge queue (same as
|
…ade5d843b-1fd551d4 — Review claim: No ephemeral inter-task handoff files remain in the worktree before the merge gate. Review lane: cleanup Safety invariant: The scrub script only checks for known handoff artifact names and never touches source, tests, or other repository files. Effectiveness measurement: The script exits non-zero if any handoff artifact remains. Slice rationale: Required terminal scrub for every implementation workflow. Architectural effect: None; hygiene only. Goal: Leave the branch free of handoff artifacts. Motivation: Handoff files must not reach the PR. Alternative considerations: Manual cleanup was rejected as non-deterministic. Implementation details: Run scripts/scrub-handoff-artifacts.sh. Non-goals: No product edits. Layer: app_regression Feature state: active Acceptance criteria: - `bash scripts/scrub-handoff-artifacts.sh` exits 0.
714e424 to
b67afca
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3f8b7b59-7d6b-424f-9854-c59193d45095) |
Summary
This rule tells agents to stop when a hook or checker blocks a requested action.
The rule previously named four ways to evade that stop, but omitted moving wording outside the checker’s inspection area.
This change names that fifth forbidden shape in the rule’s full reference text.
Review Claim
The block-is-a-stop rule explicitly forbids relocating wording so a checker no longer sees it.
Review Lane
behavior
Review Unit
corpus-lesson
Safety Invariant
This is prose only. It changes one sentence in the rule reference and touches no hooks, scripts, installers, settings, tests, or files outside the reference corpus.
Slice Rationale
This slice carries one sentence for one rule. The page summary and its line-cap cleanup belong to the stacked base change.
Non-goals
Test Plan
Test Plan
python3 -m unittest tests.test_cat_mode -v && python3 scripts/check_no_dated_provenance.py && python3 scripts/check_skill_test_coverage.py --base origin/main --head HEADbash scripts/scrub-handoff-artifacts.shgit grep -c "relabel or relocate wording" -- corpus/skills/cat-mode/references/named-constraints.mdprints 1.Revert Plan
Revert Plan
git revert <the commit that adds this sentence>