/wayfinder at user scope + full/lite charting modes (ADR-0101 rev A) - #359
Merged
Conversation
…R-0101 rev A) /wayfinder was catalog-registered but never flagged scope:["user"], so despite the catalog-driven promise of adr:catalog-scoped-user-skills it resolved only inside ojfbot repos — charting unavailable exactly when fog is thickest, before an initiative has a repo. Flagged for user scope (catalog v1.21). User scope forces the rest, and surfaced four defects repo scope had hidden: - resolve-or-fail was unenforced prose. Adds scripts/resolve-anchor.mjs (--detect, --anchor=ns:<slug>#P<n>), importing scripts/lib/northstar-fm.mjs rather than reimplementing the constrained frontmatter parse. - Map path was ambiguous: SKILL.md said repo-relative, map-format.md said core-absolute. Harmless inside core, a live bug from an arbitrary cwd. Full mode resolves to the core map library; lite mode to <cwd>. - Lite mode for off-fleet charting: file-only map, no northstar anchor, no tracker projection, announced out loud. A *claimed* anchor that will not resolve stays an error — silent de-anchoring is the guarded failure. - The /frame-standup cross-ref SKILL.md claimed did not exist. Step 4.6 now routes an unassertable slice entrance to charting instead of leaving the slice queued indefinitely. Also wires the selfco vault as the charting-time reference layer per adr:bonded-pair-division-of-labor (draft) — design-time, read-only, one-way, full mode only. The operating-surface-bonded-pair map already did this by hand. Unchanged: file-canonical maps, serialized research, the two-ledger separation, and the MANDATORY trigger posture (upstream's disable-model-invocation stays rejected — under-firing is this fleet's measured failure, per ADR-0068). Upstream mattpocock/skills remains at v1.1.0, the version already absorbed; no upstream drift to reconcile. Files a defect in passing: northstar-fm.mjs does not strip YAML inline comments, so buddy-check's registry slug parses with its comment attached (91 chars). northstar-lint missed it because it resolves by path; resolve-anchor.mjs is the fleet's first slug-keyed consumer. Worked around for slug comparison only — a naive strip would truncate live roadmap values containing "PR #165". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
Skill Audit — PR #359Skills used during development
Recommended skills (based on diff analysis)
Coverage
Generated by skill-audit |
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.
Why
/wayfinderwas catalog-registered but never flaggedscope: ["user"], so despite the catalog-driven promise ofadr:catalog-scoped-user-skillsit resolved only inside ojfbot repos — charting unavailable exactly when fog is thickest, before an initiative has a repo. That flag is the whole install; the rest of this PR is what user scope forces.Worth stating up front: upstream
mattpocock/skillsis still at v1.1.0, the exact versiondecisions/adopt-stack/pocock-skills-v1-1.mdabsorbed (pinneded37663). There is no upstream drift to reconcile — this is not a re-vendor.Four defects repo scope was hiding
resolve-or-failwas unenforced prose. The skill mandated thatns:<slug>#P<n>anchors resolve, but named no mechanism. Addsscripts/resolve-anchor.mjs(--detect,--anchor=), importingscripts/lib/northstar-fm.mjsrather than reimplementing the constrained frontmatter parse.SKILL.mdsaiddecisions/wayfinder/<slug>.md;map-format.mdsaidcore/decisions/wayfinder/<slug>.md. Harmless inside core, a live bug from an arbitrary cwd. Full mode → the core map library (one library, so any surface can enumerate every open frontier in one read); lite →<cwd>./frame-standupcross-ref was fiction.SKILL.mdclaimed one; grep found zero mentions inframe-standup. Step 4.6 now routes an unassertable slice entrance to charting instead of leaving the slicequeuedindefinitely.Also wires the selfco vault as the charting-time reference layer per
adr:bonded-pair-division-of-labor(draft) — design-time, read-only, one-way, full mode only. Theoperating-surface-bonded-pairmap was already doing this by hand.Deliberately unchanged
File-canonical maps, serialized research, the two-ledger separation, and the MANDATORY trigger posture. Upstream's
disable-model-invocation: truestays rejected — under-firing, not over-firing, is this fleet's measured failure (ADR-0068).Defect filed, not silently absorbed
northstar-fm.mjsdoesn't strip YAML inline comments, sobuddy-check's registry slug parses as 91 chars with its comment attached.northstar-lintnever caught it because it resolves bypath;resolve-anchor.mjsis the fleet's first slug-keyed consumer.Patching
scalar()looked like the clean fix until the corpus scan:roadmap-l2-ojfbot.md:301istitle: "Calibrate judge #1 — …"and severalentrance/deliverablevalues citePR #165. A naive\s+#.*$strip would truncate live roadmap slices and break an operational CI gate. Scoped the workaround to slug comparison only (kebab slugs can never contain" #") and fileddecisions/defects/dr-northstar-fm-inline-comment-not-stripped.mdasrepair-mechanism.Verification
install-agents.sh --user-scopeproduced no duplicate hooks.--detect:fullfrom core and from a sibling repo;litefrom a dir outside the fleet.buddy-checkbare slug,l1-virtuallightlowercase); wrong-case variants correctly fail.ns:l1-fieldwork-1#P1(registered onmainmid-review, file in a private repo) correctly returnsunreachable: truewhile keeping full mode — the vantage case, validated against a registry entry that appeared after the code was written.f1-learning-studio,operating-surface-bonded-pair) unmodified and their anchors resolve.northstar-lint,roadmap-lint,defects-lintall pass.status.jsonluntouched — the two-ledger invariant holds.🤖 Generated with Claude Code