feat(B-0170): extend check-self-recursive.ts with existence topic (v0.9.1)#4681
Merged
AceHack merged 1 commit intoMay 22, 2026
Merged
Conversation
…opic (v0.9.1) Adds a second supported self-check topic to check-self-recursive.ts: the README v0.9.0 promised "Adding additional topics (existence, path-forms, cross-surface, convention) is a 1-line dispatch each" — this slice cashes one of those. Operative-authorization: aaron 2026-05-14: "- **Devil-pole** (edge-runner drive): keep pushing, discover, go hard, never-be-idle". ## Changes - check-self-recursive.ts: SelfCheckTopic = "count" | "existence"; SUPPORTED_TOPICS gains "existence"; dispatch branch composes check-existence.ts; only drift-severity findings surface (warnings about gitignored-but-extant paths are a distinct sub-class concern and not treated as self-recursive failure). Bump v0.9.0 -> v0.9.1. - check-self-recursive.test.ts: +3 tests (parse "existence", detect self-recursive existence drift, mixed [count,existence] dispatch). - README.md: bump v0.9.0 -> v0.9.1; update supported-topics; clarify drift-vs-warning severity treatment. - B-0170 row: bump last_updated; update sub-class table row to reflect count + existence shipped. ## Focused checks - `bun test tools/substrate-claim-checker/check-self-recursive.test.ts` -> 23 pass / 0 fail (was 20; +3 new). - `bun test tools/substrate-claim-checker/` -> 140 pass / 0 fail across 7 files. No regressions. - End-to-end sanity: directive `self-check: [count, existence]` on a memo with both shapes of drift -> 2 findings (one per topic) and exit 1, as expected. ## Bounded slice discipline This stays well within "exactly one bounded step" per the task brief: one new topic case + tests + doc-bump, no architecture change, no new file. The remaining v1 sub-classes (semantic-equivalence, empirical-output) and the remaining self-recursive topics (path-forms, cross-surface, convention) stay deferred per the B-0170 done-criteria. Composes with: .claude/rules/skill-router-as-substrate-inventory.md (extend existing substrate before authoring new); B-0170 done-criteria item #1 (each sub-class has a check-type) — count + existence now both routed through self-recursive dispatch. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This was referenced May 22, 2026
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
Smallest safe slice of B-0170: extend
check-self-recursive.tsto dispatch a second topic (existence), cashing the README v0.9.0 promise that "Adding additional topics (existence, path-forms, cross-surface, convention) is a 1-line dispatch each". No new file, no architecture change.Operative-authorization: aaron 2026-05-14: "- Devil-pole (edge-runner drive): keep pushing, discover, go hard, never-be-idle".
Changes
tools/substrate-claim-checker/check-self-recursive.tsSelfCheckTopic = "count"→"count" | "existence"SUPPORTED_TOPICSgains"existence"check-existence.tswarningfindings are a distinct sub-class concern, not self-recursive failure)tools/substrate-claim-checker/check-self-recursive.test.ts— +3 tests:parseDirectiveof bareexistenceparseDirectiveof mixed[count, existence]preserves ordercheckFiledetects existence drift in self-check memocheckFileclean existence case (no path claims)checkFilemixed dispatch emits findings for both topicstools/substrate-claim-checker/README.md— version bump, supported-topics list, severity-treatment docdocs/backlog/P1/B-0170-...md—last_updated: 2026-05-22; sub-class table row reflectscount + existenceshippedFocused checks
bun test tools/substrate-claim-checker/check-self-recursive.test.tsbun test tools/substrate-claim-checker/[count, existence]directive on memo with both drift shapesgit ls-tree HEAD | wc -lvs parentBounded slice discipline
Stays well within "exactly one bounded step":
Composes with
.claude/rules/skill-router-as-substrate-inventory.md— extend existing substrate before authoring new; the check-self-recursive.ts dispatch was the substrate to extend.claude/rules/refresh-world-model-poll-pr-gate.md— Pure-git tier traversal during this session (GraphQL was 0/5000 at slice start; PR opened post-reset).claude/rules/zeta-expected-branch.md—ZETA_EXPECTED_BRANCHset +git branch --show-currentguard before commitTest plan
bun test tools/substrate-claim-checker/clean (140/140)🤖 Generated with Claude Code