Skip to content

Skill fetch-at-activation: harness matrix, provenance visibility, and the runtime fetch path (follow-up to #1958) #2532

Closed

Description

@mstomar125

Context

Follow-up to #1958 ("Make the graph the source of truth for the NodeSpace skill, and decide how guidance reaches external agents"), closed with 15/18 acceptance criteria verified. The 3 remaining criteria are captured here rather than left open on a mostly-done issue. They are NOT one uniform "needs more testing" gap — two are genuinely unbuilt feature work, one is a testing-tooling gap:

Remaining scope (from #1958's own acceptance criteria)

  1. Manual harness matrix — requires "at least Claude Code and Codex," covering activation, fetch-follow-through, daemon-down degradation, and a static control arm. Only the Claude Code leg is done (verified 2026-08-25 on a real machine, real session, real 321-node database). Codex/Gemini CLI/OpenCode legs need a machine with those CLIs installed — not available in the sandbox environment this work has run in so far.

  2. Fetched guidance visible, not gated — provenance must be marked where fetched guidance lands, so a user can see what changed and an injection-class failure produces signal rather than passing silently. Genuinely unbuilt: checked directly, SKILL.md currently has no instruction telling an agent to fetch procedural guidance from the graph at activation, and there's no fetch_guidance-shaped code anywhere in packages/skill/packages/cli. The delivery-channel decision (fetched, hybrid-shaped) is made and recorded on Make the graph the source of truth for the NodeSpace skill, and decide how guidance reaches external agents #1958 — this criterion is implementing that decision, not testing it.

  3. A user's/team's own graph edit reaches an external agent — the runtime half of the fetch mechanism, blocked on Create design system foundation #2 existing first. Has its own prerequisite: seeding currently skips by node type, so a guidance change never reaches an existing install even once the fetch mechanism exists — that prerequisite is real, self-contained work independent of the channel decision.

Why this is its own issue

#1958's own status checks (2026-08-27, 2026-09-01) were explicit that items 2/3 are "the epic's actual remaining body of work" — real design+build, not a quick add-on — and recommended picking them up as a dedicated focused pass rather than bolting them onto other work. Splitting them out here does that, and lets #1958 close on its 15 genuinely-done criteria rather than sit open indefinitely on a testing-tooling gap (item 1) that has nothing to do with items 2/3's engineering.

Acceptance criteria

  • Manual harness matrix run against Codex (minimum bar per Make the graph the source of truth for the NodeSpace skill, and decide how guidance reaches external agents #1958's own criterion) — needs a machine/environment with the Codex CLI installed
  • Fetch-at-activation mechanism implemented: an agent activating the skill fetches procedural guidance from the graph rather than only reading static SKILL.md content
  • Fetched guidance is visibly marked with provenance (not silently merged into static content)
  • The seeding-skips-by-node-type prerequisite fixed, so a guidance edit reaches an existing install, not just a fresh one
  • A user's/team's own graph edit demonstrably reaches an external agent session (the runtime half, end to end)

Related

Activity

  1. self-assigned this
    on Sep 10, 2026
  2. mstomar125 commented on Sep 10, 2026

    @mstomar125
    ContributorAuthor

    Opened PR #2559 implementing 4 of the 5 acceptance criteria. Summary:

    Fetch-at-activation mechanism implemented — nodespace skill guidance <query> (packages/cli) fetches procedural guidance from the graph's seeded skill nodes via the existing NodeService.SearchNodes RPC (no new server/proto surface). SKILL.md's body gained a ## Graph-Authored Guidance (Fetched) section instructing an activated agent to call it before a nontrivial operation.

    Provenance is visible, not gated — every result carries a marker (a GRAPH-FETCHED GUIDANCE banner in human mode, "provenance": "graph-fetched" in --json), and a new on-demand reference (references/graph-authored-guidance.md) covers the trust boundary: fetched content can supply procedure, never permission.

    The seeding-skips-by-node-type prerequisite turned out to already be fixed — PR #1818 (closed #1812, merged 2026-07-30, per-node versioned reconciliation) predates both #1958 and #2532. New tests against the real seed_skill_nodes() registry confirm it still holds.

    The runtime half (a user's own graph edit reaching an external agent) is demonstrated both in headless tests and live against a real isolated daemon + real embedding model: edited a seeded guidance node's content directly, re-ran nodespace skill guidance, and the edit came back.

    Left honestly open: the manual harness matrix against Codex (and ideally Gemini CLI/Cursor) — this environment has no machine with those CLIs installed. Only the Claude Code leg is verified (from #1958, 2026-08-25). Not faked or attempted here.

    Full design-call reasoning (which graph node type holds guidance, why no new CLI plumbing was needed beyond the provenance wrapper, a known limitation around the seeded skill nodes' SeedTier::System classification and long-term user-edit durability) is in the PR description.

  3. mstomar125 commented on Sep 10, 2026

    @mstomar125
    ContributorAuthor

    Closing — implemented and merged via PR #2559, with a follow-up fix cycle after adversarial review caught 3 real issues (a --limit cap bug producing empty-content banners, 8 bare issue-number references violating CLAUDE.md, and a real provenance-spoofing hardening gap in the trust-boundary claim itself) — all fixed, re-reviewed, confirmed at the code level.

    4 of 5 acceptance criteria closed:

    • Fetch-at-activation mechanism: done (nodespace skill guidance <query>)
    • Provenance visibility: done, with real anti-spoofing hardening (per-invocation nonce + ANSI/control-sequence stripping)
    • Seeding-skips-by-node-type prerequisite: found already fixed by an older, independent PR — verified with new tests against the real content, not just asserted
    • Runtime half (user edit reaches external agent): verified both headlessly and live against a real isolated daemon + embedding model

    One criterion genuinely not closeable here: the manual harness matrix against Codex/Gemini CLI/Cursor — this environment has no machine with those CLIs installed. Left open, not faked.

    One real tension found and tracked separately, not silently absorbed: seeded skill-guidance nodes have no durability protection against code-driven content replacement, so a user's own edit could be silently overwritten on the next content version bump. Filed as #2560.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions