P0: prove registry plugins against current Zara API #510

Open
nsaspy wants to merge 13 commits from rage/53-zara-compat-red into main
Owner

Closes #53.

RAGE / TDD evidence

Started deliberately RED with the registry-wide compatibility contract before implementation.

Observed RED sequence:

  1. contract test existed before scripts/zara_compat.py;
  2. Nix source pin deliberately used a fake hash and produced the authoritative Zara source hash;
  3. the real compatibility gate then found a published runtime bug that static registry/unit checks missed: zara-starintel-server discovery module shadowed its zara_starintel_server package and failed under Zara's real loader.

The plugin entrypoint was renamed to remove that collision; the registry now points to the non-shadowing entrypoint.

Compatibility contract

Pinned supported Zara source: 8e247fd4cb6ffe1f3258bfb4f115a3339208e8c1.

The gate now:

  • enumerates every current/future plugins.json entry dynamically;
  • loads service entrypoints with Zara's real load_plugin_module;
  • requires real Zara ServicePlugin / PluginMetadata API v1 objects;
  • verifies registry/runtime name, version, API version, and plugin type agreement;
  • verifies tool surfaces are real LangChain BaseTool values;
  • runs under temporary HOME / XDG_CONFIG_HOME;
  • is owned by nix flake check alongside generated package/runtime-layout and every plugin unit suite;
  • keeps installer tests in temporary homes and service lifecycle tests on fake/local dependencies only.

Missing lifecycle coverage for Agent Zero, Persona, and StarIntel shutdown was added before completion; existing Discord, Avatar, and Local Recall suites already exercise lifecycle with fake/local dependencies.

Exact-head verification

Candidate: 75b14e78e0b74ffc177762325b928efa471c9bdb
CI run: 33950367814

Successful on that exact head:

  • whitespace gate;
  • compatibility contract tests;
  • full nix flake check including registry, compatibility, runtime layout, and plugin suites;
  • aggregate plugin package build.

No network, live secrets, GUI/audio hardware, Discord, Agent Zero, StarIntel Server, or other live external service is required by the deterministic gate.

Closes #53. ## RAGE / TDD evidence Started deliberately RED with the registry-wide compatibility contract before implementation. Observed RED sequence: 1. contract test existed before `scripts/zara_compat.py`; 2. Nix source pin deliberately used a fake hash and produced the authoritative Zara source hash; 3. the real compatibility gate then found a published runtime bug that static registry/unit checks missed: `zara-starintel-server` discovery module shadowed its `zara_starintel_server` package and failed under Zara's real loader. The plugin entrypoint was renamed to remove that collision; the registry now points to the non-shadowing entrypoint. ## Compatibility contract Pinned supported Zara source: `8e247fd4cb6ffe1f3258bfb4f115a3339208e8c1`. The gate now: - enumerates every current/future `plugins.json` entry dynamically; - loads service entrypoints with Zara's real `load_plugin_module`; - requires real Zara `ServicePlugin` / `PluginMetadata` API v1 objects; - verifies registry/runtime name, version, API version, and plugin type agreement; - verifies tool surfaces are real LangChain `BaseTool` values; - runs under temporary `HOME` / `XDG_CONFIG_HOME`; - is owned by `nix flake check` alongside generated package/runtime-layout and every plugin unit suite; - keeps installer tests in temporary homes and service lifecycle tests on fake/local dependencies only. Missing lifecycle coverage for Agent Zero, Persona, and StarIntel shutdown was added before completion; existing Discord, Avatar, and Local Recall suites already exercise lifecycle with fake/local dependencies. ## Exact-head verification Candidate: `75b14e78e0b74ffc177762325b928efa471c9bdb` CI run: `33950367814` Successful on that exact head: - whitespace gate; - compatibility contract tests; - full `nix flake check` including registry, compatibility, runtime layout, and plugin suites; - aggregate plugin package build. No network, live secrets, GUI/audio hardware, Discord, Agent Zero, StarIntel Server, or other live external service is required by the deterministic gate.
Some checks failed
CI / test (pull_request) Failing after 19s
This pull request has changes conflicting with the target branch.
  • flake.nix
  • plugins.json
  • scripts/zara_compat.py
  • tests/test_zara_compat.py
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin rage/53-zara-compat-red:rage/53-zara-compat-red
git switch rage/53-zara-compat-red

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff rage/53-zara-compat-red
git switch rage/53-zara-compat-red
git rebase main
git switch main
git merge --ff-only rage/53-zara-compat-red
git switch rage/53-zara-compat-red
git rebase main
git switch main
git merge --no-ff rage/53-zara-compat-red
git switch main
git merge --squash rage/53-zara-compat-red
git switch main
git merge --ff-only rage/53-zara-compat-red
git switch main
git merge rage/53-zara-compat-red
git push origin main
Sign in to join this conversation.
No description provided.