feat(persona): graph-capability awareness, read-only boundary kept — 0.22.5#10
Merged
Conversation
…0.22.5 The persona-as-collaborator protocol (using-second-brain) knew the graph READ tools + the wingman graph-check but never referenced knowledge_relate, so the persona-driven loop didn't close the loop on a relationship confirmed mid-session. The wingman now does — as a SURFACE-ONLY step: on a confirmed/retired typed relationship it surfaces a *suggested* knowledge_relate (confirmed/retired only, never speculative). It does NOT call the tool. Edge curation stays owned by the three sanctioned writers (capture-time extractor + the user's manual tool + knowledge-maintainer); the extractor records the relationship from the session transcript at Stop, so the graph still accrues with NO user interaction. Design note (release-gate history review): an earlier cut added knowledge_relate to the persona's allowed-tools so it would write directly. The history/regression reviewer flagged this HIGH — it makes the always-on, model-invoked persona a 4th, ungoverned graph writer, reverting the deliberate write-ownership boundary agents/dream-runner.md enumerates, and pushing drain load onto the maintainer for edges the persona was never meant to make. Per that finding (and the user's call), the persona stays a READER; it surfaces, it does not write. New tests/test-persona-capability-awareness.sh guards both halves: awareness of the capability AND the read-only allowed-tools boundary (knowledge_relate must NOT be granted). Version 0.22.4 -> 0.22.5 (plugin + marketplace lockstep) + migration row. Prompt/test-only — no state migration. Full suite green (59 shell + 265 vitest). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds awareness of knowledge_relate to the persona-as-collaborator protocol while explicitly preserving the read-only boundary (the persona surfaces a suggestion; capture-time extractor + maintainer remain the writers). Bumps version to 0.22.5 and adds a guard test pinning both halves (awareness AND read-only allowed-tools).
Changes:
- New paragraph in
skills/using-second-brain/SKILL.mdinstructing the wingman to surface a suggestedknowledge_relatefor confirmed/retired typed relationships only. - New
tests/test-persona-capability-awareness.shasserting read tools granted,knowledge_relateNOT in allowed-tools, and the "never speculative" clause is present. - Version bump (plugin.json, marketplace.json) and 0.22.5 entry in the upgrade migrations table.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| skills/using-second-brain/SKILL.md | Adds the surface-only knowledge_relate paragraph. |
| tests/test-persona-capability-awareness.sh | New guard test for awareness + read-only boundary. |
| skills/upgrade/SKILL.md | Adds 0.22.5 migration row. |
| .claude-plugin/plugin.json | Version → 0.22.5. |
| .claude-plugin/marketplace.json | Version → 0.22.5. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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
The persona-as-collaborator protocol (
using-second-brain) knew the graph read tools + the wingman graph-check, but never referencedknowledge_relate— so the persona-driven loop never closed the loop on a relationship confirmed mid-session. Goal: persona aware of the capability, graph accrues with no user interaction.What
The wingman now surfaces a suggested
knowledge_relatewhen the work confirms (or retires) a typed relationship — confirmed/retired only, never speculative. It does not call the tool: edge curation stays owned by the three sanctioned writers (capture-time extractor + the user's manual tool + knowledge-maintainer), and the extractor records the relationship from the session transcript at Stop. So the graph still accrues without user interaction, and the persona stays a reader.Design note — release-gate review drove this
An earlier cut granted
knowledge_relatein the persona'sallowed-tools(direct write). The history/regression reviewer flagged it HIGH: that makes the always-on, model-invoked persona a 4th, ungoverned graph writer, reverting the deliberate write-ownership boundaryagents/dream-runner.mdenumerates, and pushing drain load onto the maintainer for edges the persona was never meant to make. The architectural reviewer independently flagged the"confirmed"trigger as too fuzzy. Per those findings (and an explicit maintainer call), the persona surfaces, it does not write — keeping the boundary intact while still delivering the awareness + zero-interaction accrual.Guard
New
tests/test-persona-capability-awareness.shpins both halves: awareness ofknowledge_relateAND the read-onlyallowed-toolsboundary (the tool must NOT be granted). Incorporates the unit reviewer's robustness fixes (.*over[^\n]*; asserts the load-bearing "never speculative" clause).Verification
Full suite green (59 shell + 265 vitest, 0 fail); version lockstep 0.22.5; validate-plugin OK. Prompt/test-only — no MCP change, no state migration.
🤖 Generated with Claude Code