feat(pack): knowledge-explorer — the vault is obligatory, the graph enriches it - #95
Conversation
…nriches it Design for a pack skill that makes "what do we already know about this area" a discipline rather than thirty greps: .agents/knowledge/ as the mandatory tier, octograph as an optional instrument, and the promotion loop that lets graph findings grow the vault. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…nriches it A fifth pack skill for the question every role hits before acting on code it did not write: what do we already know about this area? Two tiers, and they are not equal. .agents/knowledge/ is the source of record and is never skipped. octograph is an instrument — it produces evidence the vault cannot hold (which files actually move together, who owns a path, whether a decomposition is clean), and where it is absent the answer is still valid, just thinner, and the skill says so. The discipline is the part docs/octograph.md cannot carry: run doctor before believing any zero, and know that `(no coupled files)` has three indistinguishable causes — an excluded path, an untracked path, or support below minSupport. Measured here, `impact` on the .claude/ copy of validate.js returns nothing while the pack copy of the same file returns its whole change set, because .claude/ is excluded by default. Pack version 49 -> 50 across all five SKILL.md files, the primer, both tokenomics markers, and the regenerated graph payload with its hash. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A skill nothing points at is a skill nothing invokes. Each sibling names it at the moment it hits the question: mission-planner before decomposing, workflow-designer before parallelising, mission-execution before the first edit, the gate at the QA phase. Pointers, not gates — the reader still decides whether the question is worth a query. Pinned by a test, so a fifth skill cannot go unreferenced the way this one nearly did. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The result is not the one the design predicted, so it is recorded as it happened. Grep beats the graph on #60's textual rule sites — including packages/board/src/validate.ts, the fifth site the issue itself missed, which grep reaches only because the doctrine phrase was copied verbatim. The graph's sole unique contribution is the pack version-bump cohort at support=19-20: six files sharing no token with the change, invisible to any search term, and the class of miss that ships a red CI run. Also corrects the spec: .claude/ copies are gitignored install output here, not change targets. The doubling is real only in a repo that vendors the pack. Bug filed on the board and mirrored to #94: `(no coupled files)` means three different things and the CLI distinguishes none of them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…r gap it exposed Two follow-ups from the #60 spike, both of which the skill itself asked for. The vault gains the finding the graph was uniquely able to produce: editing any pack payload obliges nine version markers, a regenerated bundle and a recorded hash, because packStatus accepts no partial state. The pieces were each documented; the obligation as a whole was not, which is why it gets rediscovered per author. That is the skill's own loop closing — the next reader gets it from tier 1 without spending a query. And the query ladder now says to run impact on the doctrine file as well as the code file. Process obligations attach to a KIND of file, so they are reachable only from that file and never from the change that triggers them — which is exactly how the cohort stayed invisible to grep. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Two follow-ups added, both of which the skill itself asked for. The vault gains the finding only the graph could produce. The query ladder gained the rule the spike exposed. Run No version re-bump: v50 is unreleased on this branch, and the payload hash covers |
… fired The 2026-08-12 decision was mitigate-don't-chase, with an explicit trigger: escalate if a `failed TWICE` ever lands. One landed, on PR #95, a pack/docs diff touching no packages/graph source. The mitigation did its job and the evidence it captured undermines it. The before and after state dumps are byte-identical, so nothing changed between attempts — the repo is left persistently broken, not momentarily inconsistent, and no retry budget can help. `error: bad tree object HEAD` is a fourth shape, and with status and rev-list both dead while HEAD, refs and .git are intact, every shape so far points at the object store rather than the refs. The title's premise is also now wrong: a second, one-commit fixture broke in the same run. Whatever this is, it is not specific to the heaviest fixture. Escalation itself is left to whoever owns packages/graph — it is a decision about several hundred CI runs, not a call for the session that tripped it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A fifth Octobots pack skill for the question every role hits before acting on code it did not write: what do we already know about this area?
The premise
Two sources, and they are not equal.
The vault is the source of record. octograph is an instrument — it produces evidence the vault cannot hold (which files actually move together, who owns a path, whether a decomposition is clean). Where it is absent or its history is too thin, the answer is still valid, just thinner, and the skill says so rather than pretending.
They belong in one skill because of the loop between them: the graph is how the vault grows. A verified, durable, cross-role finding is promoted into the vault, so nobody pays for the discovery twice.
What the skill adds that
docs/octograph.mdcannotThe doc says what each command answers. The skill carries the discipline:
doctorbefore believing any zero. This repo reportsdegraded— 31 analysable commits, squash-merged — which makes an emptyimpactmissing evidence, not evidence of absence.(no coupled files)has three indistinguishable causes: an excluded path, an untracked path, or support belowminSupport. The skill gives the two commands that discriminate them, and the rule that an excluded path should be re-queried at its unexcluded twin.support/nPMItravel with every claim.Measured against issue #60
Full record:
docs/superpowers/spikes/2026-08-13-knowledge-explorer-vs-issue-60.md. Both pass conditions were tested, and the result is not the one the design predicted — it is recorded as it happened.Issue #60 names four files. The true change set is seven. Of the three it misses:
packages/board/src/validate.ts:321— the same rule in TypeScript, which the issue explicitly claims does not existnpmi=0.857packages/board/test/validate.test.ts:210— the test pinning itSKILL.mdsupport=19–20Grep wins on the textual rule sites; the graph wins on the process cohort. Its unique contribution is not "find the other file that says the same thing" — a good grep does that more cheaply. It is "changing this kind of file obliges this ritual", a coupling that exists only in commit history and shares no token with the change. That is the class of miss that ships a red CI run.
Pass condition 2 passed outright, and exercised a cause the design had not anticipated:
impactonadd-workflow.jsreturned zero, and the three-cause rule correctly classified it as a support-floor zero (3 commits, tracked, not excluded) rather than an exclusion.The spec has been corrected where the run disproved it:
.claude/copies are gitignored install output in this repo, not change targets. The doubling is real only in a repo that vendors the pack — which is where #60 was originally hit.Also filed
#94 —
(no coupled files)meaning three different things is a defect inpackages/graph/src/cli.ts, kept out of this change deliberately. On the board asoctograph-code-architecture-graph/bugs/bug-impact-reports-an-excluded-path-as-uncoupled.Wiring
OCTOBOTS_SKILLSgains"knowledge-explorer"; the four parameterised convention tests apply to it automatically.SKILL.mdfrontmatter lines, three hand-edited banners, the regeneratedgraph/octograph.mjs, and its hash ingraph-payload-versions.json.Verification
pnpm build && pnpm typecheck && pnpm lint && pnpm test— all green. 1,278 tests: graph 565, extension 401, board 269, tokenomics 43.🤖 Generated with Claude Code