Skip to content

#32 feat: plugin system, wizard capability framework, memory provider model, and docs - #42

Merged
verkligheten merged 55 commits into
developfrom
refactor/plugin-system
Aug 3, 2026
Merged

#32 feat: plugin system, wizard capability framework, memory provider model, and docs#42
verkligheten merged 55 commits into
developfrom
refactor/plugin-system

Conversation

@verkligheten

@verkligheten verkligheten commented Jul 30, 2026

Copy link
Copy Markdown
Member

Delivers epic #32 (toggleable internal subsystems) plus the wizard capability framework, its docs, and two wizard UX improvements.

What's included

  • Plugin foundation (Plugin manifest format, registry, and enabled-plugins config #33Convert cost-report to a plugin #37): plugin.yaml manifest + plugin_registry + enabled_plugins config; the agent-notes plugins list|enable|disable|info CLI; declarative surfaces (skills / agents / rules / includes / hooks / allow) routed through the registry with disable-uninstalls and requires/backend.supports(...) gating; cost-report converted to a plugin (default off).
  • Memory provider model (Model memory as a provider + strategy (local default / obsidian; no disable) #39): memory is a provider + strategy — local (default) or obsidian (single-brain | per-project) — configured via agent-notes config memory, not a boolean plugin.
  • Component lifecycle flag: an optional stability: stable|wip field across component families, with the AGENT_NOTES_ENABLE_WIP env override.
  • Wizard capability framework (Wizard: collapse memory and cost-report steps into one plugin-selection step #40): a Capability domain type + code-side CapabilityRegistry; backend selection, per-backend model/effort config, the memory provider slot, and the cost-report toggle are all routed through the registry; TOTAL_STEPS is computed from the registry instead of a hardcoded constant. Built in byte-identical phases.
  • Plugin-system docs (Docs: plugin model, writing a plugin, and the two meanings of plugin #41): the two meanings of "plugin" (Claude Code distribution artifact vs. internal toggleable subsystem), the plugins CLI, a new docs/WRITING_A_PLUGIN.md, and a plugin-layer section in docs/ARCHITECTURE.md.
  • Wizard UX: an "accept recommended models for all roles" shortcut that collapses the per-role gauntlet in step 2, and validation of the Obsidian vault path with a re-enter / use-anyway loop.

Verification

  • 1923 tests pass.
  • Generated dist/ is byte-identical for equivalent default selections — verified at every framework phase via scripts/dev/verify_dist_equiv.sh, and confirmed byte-identical across the whole branch.

Notes for reviewers

  • Only cost-report is 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).
  • The last two commits (accept-all gate, path validation) are wizard UX features, not epic tickets; they can be split into a separate PR if preferred.

…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.
@verkligheten verkligheten changed the title #32 feat: plugin system (cost-report) + memory provider model (#39) #32 feat: plugin system, wizard capability framework, memory provider model, and docs Aug 3, 2026
@verkligheten
verkligheten merged commit 1f2a7f3 into develop Aug 3, 2026
2 checks passed
@verkligheten
verkligheten deleted the refactor/plugin-system branch August 3, 2026 13:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant