Skip to content
Merged
2 changes: 1 addition & 1 deletion corpus/skills/cat-mode/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ What happens to a number once it exists:
- **Schema before UI.** Required identity properties plus a green canary before the first insight or notebook PATCH; split the forward-stamp PR from the historical-backfill PR.
- **Claim a chart gap fixed only after naming write vs enrich ownership** (local vs peer vs fleet).
- **Write a thrash checkpoint before attaching new scope:** after two same-type interventions or the first live backfill, record tier and canary status first.
- **When a same-type miss forces a working-style catch mid analytics thrash, stop feature PRs until that catch is locked** (for example the first `intervention-must-automate` flag, an explicit `/automate-me`, or a same-type restatement).
- **Stop analytics feature iteration and lock the class catch before more analytics PRs when automate is mandated mid thrash** (for example the first `intervention-must-automate` flag, an explicit `/automate-me`, or a same-type restatement).

Each rule's full text: [references/verify.md](references/verify.md).

Expand Down
5 changes: 3 additions & 2 deletions corpus/skills/cat-mode/references/verify.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,8 @@ defaults above and [[principle-push-not-poll]]; they do not replace them.
of a run, write the current tier and canary status before attaching new
stack publication or plan scope. A checkpoint is a receipt, not a status
ping.
- **When a same-type miss forces a working-style catch mid analytics thrash, stop feature PRs until that catch is locked** (for example the
- **Stop analytics feature iteration and lock the class catch before more
analytics PRs when automate is mandated mid thrash** (for example the
first `intervention-must-automate` flag, an explicit `/automate-me`, or
a same-type restatement). The standing default that would have prevented
the miss lands first; dashboard, backfill, and insight work wait until
Expand All @@ -226,4 +227,4 @@ defaults above and [[principle-push-not-poll]]; they do not replace them.
resume when the artifact arrives. Chat process greps, log tails, and
wait-and-repeat shell loops are the poll defect
[[principle-push-not-poll]] already forbids — this rule names the
ownership hand-off, not another check-wait-repeat count.
ownership hand-off, not another check-wait-repeat count.
7 changes: 4 additions & 3 deletions tests/test_cat_mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ def test_skill_names_thrash_checkpoint_defaults(self):
self.assertIn("Claim a chart gap fixed only after naming write vs enrich ownership", text)
self.assertIn("Write a thrash checkpoint before attaching new scope", text)
self.assertIn(
"When a same-type miss forces a working-style catch mid analytics thrash, stop feature PRs until that catch is locked",
"Stop analytics feature iteration and lock the class catch before more analytics PRs when automate is mandated mid thrash",
text,
)
self.assertIn("Do not race publication against a live long job in the same thread", text)
Expand All @@ -397,10 +397,10 @@ def test_verify_reference_carries_analytics_thrash_checkpoints(self):
self.assertIn("Write a thrash checkpoint before attaching new scope", text)
self.assertIn("intervention-must-automate", text)
self.assertIn(
"When a same-type miss forces a working-style catch mid analytics thrash, stop feature PRs until that catch is locked",
"Stop analytics feature iteration and lock the class catch before more",
text,
)
self.assertIn("same-type miss forces a working-style catch", text)
self.assertIn("when automate is mandated mid thrash", text)
self.assertIn(
"Million-row or multi-host backfills are owned by a durable runner",
text,
Expand Down Expand Up @@ -489,6 +489,7 @@ def test_every_referenced_skill_still_exists(self):
"ls",
"owner-serve",
"strace",
"intervention-must-automate",
# Absolute-negative words in backticks, not skill names.
"only",
"never",
Expand Down
Loading