cat-mode: relabeling text away from a checker is the fifth way past a block - #485
Open
Conversation
Pre-edit test evidence: AssertionError: 305 not less than or equal to 300 : cat-mode is 305 lines (cap 300) -- cut per 'Fix the tool, not just the instance': restructure or trim before adding more. Post-edit test evidence: OK
…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 cap holds and the reference text landed. Layer exception: allowed. Proof runs after the docs task so it checks the finished branch; it reads files only and changes nothing. Motivation: The base branch fails this exact test today. 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: 095bd534-4874-41a5-a521-4c06a90baeda
…the block-is-a-stop rule names relabeling text away from a checker as a forbidden shape, and the mode page is back under its line cap. Review lane: docs Safety invariant: Prose only. No hook, script, installer, or settings change, and no edit outside corpus/skills/cat-mode; 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, including the line-cap test and the block-is-a-stop reference test. Slice rationale: One rule's full text gains one shape and its page summary shrinks, so the diff carries one claim. Architectural effect: None; the mode page gains no new section. Goal: Extend the reference entry and shorten the page bullet. Motivation: The same session that produced the rule passed a plan checker by placing unchanged step text under a heading the checker does not inspect; the open change also pushed the page to 305 lines against a cap of 300. Alternative considerations: Raising the line cap was rejected; the cap exists so the page is trimmed instead of grown. Adding the fifth shape to the page bullet was rejected for the same reason; 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. In corpus/skills/cat-mode/SKILL.md, shorten the same bullet to its bold lead plus one sentence: Do what the block asks, or report the block and stop; the forbidden shapes are in references/named-constraints.md. Then confirm the page is at most 300 lines and that every assertion in tests/test_cat_mode.py still finds its text, in particular the block-is-a-stop reference test and the named-constraints reference test. Non-goals: No change to any other bullet, section, hook, or script. No dates, session identifiers, or incident narrative in either file. Layer: docs Feature state: active Files: - corpus/skills/cat-mode/SKILL.md - corpus/skills/cat-mode/references/named-constraints.md Change types: - corpus/skills/cat-mode/SKILL.md: modify - 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
…o 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: aa2c0d9c-2c30-4565-b8d2-c7ed0aac396f
…aa17ae771-c01843f2 — Review claim: the block-is-a-stop rule names relabeling text away from a checker as a forbidden shape, and the mode page is back under its line cap. Review lane: docs Safety invariant: Prose only. No hook, script, installer, or settings change, and no edit outside corpus/skills/cat-mode; 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, including the line-cap test and the block-is-a-stop reference test. Slice rationale: One rule's full text gains one shape and its page summary shrinks, so the diff carries one claim. Architectural effect: None; the mode page gains no new section. Goal: Extend the reference entry and shorten the page bullet. Motivation: The same session that produced the rule passed a plan checker by placing unchanged step text under a heading the checker does not inspect; the open change also pushed the page to 305 lines against a cap of 300. Alternative considerations: Raising the line cap was rejected; the cap exists so the page is trimmed instead of grown. Adding the fifth shape to the page bullet was rejected for the same reason; 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. In corpus/skills/cat-mode/SKILL.md, shorten the same bullet to its bold lead plus one sentence: Do what the block asks, or report the block and stop; the forbidden shapes are in references/named-constraints.md. Then confirm the page is at most 300 lines and that every assertion in tests/test_cat_mode.py still finds its text, in particular the block-is-a-stop reference test and the named-constraints reference test. Non-goals: No change to any other bullet, section, hook, or script. No dates, session identifiers, or incident narrative in either file. Layer: docs Feature state: active Files: - corpus/skills/cat-mode/SKILL.md - corpus/skills/cat-mode/references/named-constraints.md Change types: - corpus/skills/cat-mode/SKILL.md: modify - 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.
…f547e6ae-8fc51a42 — 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.
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_75bfcff5-eabb-4479-8398-d54d71cf81cc) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This prose-only slice names a fifth forbidden way to get past a block: moving wording outside the region a checker reads.
It also shortens the mode page's block rule so the page remains within its line limit.
Review Claim
Approve the added rule text and shortened summary; together they name the missing evasion and keep the page within its cap.
Review Lane
behavior
Review Unit
corpus-lesson
Safety Invariant
Only prose changes under the cat-mode corpus are included. No hook, script, installer, setting, or test assertion changes.
Slice Rationale
This slice keeps one rule clarification and its page summary together. The proof and cleanup tasks remain separate review concerns.
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.shRevert Plan
Revert Plan
git revert <sha>