Skip to content

fix(agentplugins): share one nativeconfig kernel across activate, verify, and identity - #320

Merged
777genius merged 11 commits into
refactor/installer-core-clean-architecturefrom
fix/architecture-review-followup
Sep 19, 2026
Merged

777genius merged 11 commits into
refactor/installer-core-clean-architecturefrom
fix/architecture-review-followup

Conversation

@777genius

@777genius 777genius commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Activate wrote through env.NativeConfig while Verify/identity inspect constructed nativeconfig.New(). One kernel is injected into both Activator and NativeIdentityObserver; nil NativeConfig is fail-closed (zero Kernel).
  • Stager.project no longer returns empty native objects when As[Projector] misses a native/native-config client (including VS Code). Trait parity requires that projector. Claude and ChatGPT Activate run PreflightActivation themselves.
  • Kiro re-runs duplex preflight before native writes. Makefile and core-fast cd into the nested module under GOWORK=off.
  • Also keeps the earlier docs/CI nits: both composition roots named, merge-base lint documented, coverage cds into the nested module.

Test plan

  • Nested-module go test for domain, providers, clients/all, usecase
  • TestStagerRejectsMissingProjectorForNativeConfigClient
  • TestActivatorRejectsNativeConfigMutationWithoutKernel
  • core-fast on this PR

…lint gate

ADR 0007 and ARCHITECTURE claimed cmd/agentplugins was the only production clients/all importer; authoring's plugin-kit-ai binary is a second root. Coverage now cds into the nested module, and the plan matches the lint.yml that #319 actually shipped.
@coderabbitai

coderabbitai Bot commented Sep 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 809150ea-e8e3-40a0-a419-402cd621665c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…erify, and identity inspect

Activate wrote through env.NativeConfig while Verify and registry inspect constructed nativeconfig.New(), so an injected kernel never observed its own writes.
@777genius 777genius changed the title docs(agentplugins): composition roots and merge-base lint gate fix(agentplugins): share one nativeconfig kernel across activate, verify, and identity Sep 19, 2026
An omitted NativeConfig used to construct a second OS kernel, so production and tests could not tell a wired kernel from a default. Zero Kernel now fails Inspect/Apply; Kiro re-runs duplex preflight before native writes; Makefile/core-fast cd into the nested module under GOWORK=off.
Staging a native or native-config client without As[Projector] used to succeed with empty native objects. Claude and ChatGPT Activate now run PreflightActivation themselves so a skipped dispatcher lookup cannot bypass the probe.
A zero nativeconfig kernel skipped ApplyBatch on Cline/OpenCode skill-only
paths, so omitted NativeConfig still mutated the host tree. Require FileIO
before those writes and keep GOWORK=off test-core inside nested modules.
Gemini installs skills before ApplyBatch, so a zero kernel still mutated
the host tree and only failed on the later MCP batch. Require FileIO on
the Gemini and Windsurf native entry points before any skill or config IO.
…commit

Always-Clear InspectNativeRegistry let colliding skills and MCP names pass the pre-commit gate. Mirror Gemini: empty registry root is indeterminate, and a present host name is a collision.
…pect

Repair must observe identity after a host wiped managed MCP entries. Exact verify stays on Activate; identity inspect now matches Gemini's allow-missing check.
Wiping a managed Windsurf entry must still be repairable. Identity now uses allow-missing verify like Gemini; Activate still requires exact ownership.
Single-client Repair skips identity inspect. RepairGroup and Update are the production gates that must restore a missing owned Windsurf entry.
…t the package

RepairGroup refused a missing managed directory because inspect still verified the live ActivePath projection. Host-only inspect matches Cline and Gemini so a wiped package can be restaged.
@777genius
777genius merged commit e44ac41 into refactor/installer-core-clean-architecture Sep 19, 2026
27 checks passed
@777genius
777genius deleted the fix/architecture-review-followup branch September 19, 2026 08:08
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