#32 feat: plugin system, wizard capability framework, memory provider model, and docs - #42
Merged
Merged
Conversation
…uivalence gate
Old test asserted git diff on agent_notes/dist/ was empty after build, but dist/
is gitignored so the diff is always empty — the gate could never fail.
New gate makes two real assertions:
a. rendering._plugin_include_skip(cfg) == legacy cost.render.include_skip(cfg)
for {}, {cost_report_enabled: True}, {cost_report_enabled: False} — collapses
to the legacy bridge when no manifest owns any include.
b. The installer plugin skill filter removes nothing when the registry owns no
skills (_disabled_owned is empty with an empty registry).
Proven red: adding skip.add("phantom_include") to _plugin_include_skip caused 3
failures (AssertionError: {'cost_reporting', 'phantom_include'} == {'cost_reporting'}).
Reverted; all 4 new tests pass green. Removes the now-unused state-local/state-none
fixture dirs. Full suite: 1800 passed, 15 deselected.
…ntries via registry
…gle onto plugins, polish plugins list
…or other agents
… the none option
… always-on minimum
…onditional (local steps aside)
This was referenced Jul 30, 2026
…ovider collector
… provider-routing test
…and add backend collector
…del/effort config
…pability runner
…larify accept-all copy
…ns CLI, writing a plugin)
This was referenced Aug 3, 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.
Delivers epic #32 (toggleable internal subsystems) plus the wizard capability framework, its docs, and two wizard UX improvements.
What's included
plugin.yamlmanifest +plugin_registry+enabled_pluginsconfig; theagent-notes plugins list|enable|disable|infoCLI; declarative surfaces (skills / agents / rules / includes / hooks / allow) routed through the registry with disable-uninstalls andrequires/backend.supports(...)gating; cost-report converted to a plugin (default off).local(default) orobsidian(single-brain | per-project) — configured viaagent-notes config memory, not a boolean plugin.stability: stable|wipfield across component families, with theAGENT_NOTES_ENABLE_WIPenv override.Capabilitydomain type + code-sideCapabilityRegistry; backend selection, per-backend model/effort config, the memory provider slot, and the cost-report toggle are all routed through the registry;TOTAL_STEPSis computed from the registry instead of a hardcoded constant. Built in byte-identical phases.pluginsCLI, a newdocs/WRITING_A_PLUGIN.md, and a plugin-layer section indocs/ARCHITECTURE.md.Verification
dist/is byte-identical for equivalent default selections — verified at every framework phase viascripts/dev/verify_dist_equiv.sh, and confirmed byte-identical across the whole branch.Notes for reviewers
cost-reportis a plugin today. Memory is a provider by design; cred-guard remains a hardcoded core hook. Convert the cred-guard to a plugin (default on) #38 ("convert cred-guard to a plugin") is closed but that conversion did not land — flagged for a follow-up decision (reopen, or accept cred-guard staying hardcoded).