wicked-garden 12.31.0 → 12.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -15
- package/.claude-plugin/plugin.json +3 -4
- package/CHANGELOG.md +63 -1
- package/CONTRIBUTING.md +9 -7
- package/README.md +13 -4
- package/docs/README.md +2 -1
- package/docs/adr/0001-code-relationship-graph-engine.md +7 -1
- package/docs/adr/0002-major-cleanup-keep-cut.md +9 -3
- package/docs/adr/0003-peers-gate-required-layers-optin.md +10 -4
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +9 -0
- package/docs/adr/0005-code-graph-re-homes-to-wicked-estate.md +18 -11
- package/docs/adr/0006-qe-campaign-homes-into-the-four-planes.md +76 -0
- package/docs/adr/{0005-retarget-inventory.md → 0007-retarget-inventory.md} +14 -1
- package/docs/brain-chunk-format.md +9 -0
- package/docs/examples/qe-campaign-nightly.yml +136 -0
- package/docs/examples/qe-campaign-pr.yml +84 -0
- package/docs/getting-started.md +4 -3
- package/docs/outgov-per-turn.md +144 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +2 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +2 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +2 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +2 -0
- package/docs/required-peers.md +58 -21
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +2 -0
- package/evidence/aw25-golden/README.md +80 -0
- package/evidence/aw25-golden/campaign-recon.aw25.json +53 -0
- package/evidence/aw25-golden/chain/00-daemon-ready.txt +43 -0
- package/evidence/aw25-golden/chain/01-ingest.txt +1 -0
- package/evidence/aw25-golden/chain/02-fanout-manifest.json +63 -0
- package/evidence/aw25-golden/chain/02-fanout-manifest.json.crew-payload.json +58 -0
- package/evidence/aw25-golden/chain/02-fanout.txt +6 -0
- package/evidence/aw25-golden/chain/03-enforcement-post.json +54 -0
- package/evidence/aw25-golden/chain/04-rules-recall.json +22 -0
- package/evidence/aw25-golden/chain/05-run-terminal.json +55 -0
- package/evidence/aw25-golden/chain/06-governance-claims.json +1 -0
- package/evidence/aw25-golden/chain/07-acceptance.json +1 -0
- package/evidence/aw25-golden/ruleset/aw25-golden.md +53 -0
- package/evidence/aw25-golden/ruleset/policies/POL-2500.json +11 -0
- package/evidence/aw25-golden/run.sh +244 -0
- package/evidence/th6-dod/00-daemon-ready-line.txt +1 -0
- package/evidence/th6-dod/01-acceptance-deny.jsonl +2 -0
- package/evidence/th6-dod/02-qe-run-1.json +15 -0
- package/evidence/th6-dod/03-qe-run-2.json +15 -0
- package/evidence/th6-dod/04-flake-history.json +27 -0
- package/evidence/th6-dod/05-manifest-run2.json +58 -0
- package/evidence/th6-dod/06-gate-pass.json +1 -0
- package/evidence/th6-dod/07-acceptance-satisfied.jsonl +2 -0
- package/evidence/th6-dod/08-host-run-terminal.json +13 -0
- package/evidence/th6-dod/09-acceptance-after-terminal.jsonl +2 -0
- package/evidence/th6-dod/10-verdicts-rows.json +16 -0
- package/evidence/th6-dod/README.md +62 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/console.json +3 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/manifest.json +113 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/result.json +75 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/steps.json +48 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/th6-home-connected.png +0 -0
- package/evidence/th6-dod/qe-evidence-bundle-8d49b3fe/wire.json +80 -0
- package/hooks/scripts/stop.py +20 -10
- package/package.json +1 -1
- package/schemas/README.md +12 -0
- package/schemas/campaign-recon.schema.json +226 -0
- package/scripts/domain/extract_loop.py +40 -0
- package/scripts/domain/validate_domain_model.py +7 -2
- package/scripts/platform/guard_pipeline.py +158 -12
- package/scripts/qe/campaign_degradation.py +545 -0
- package/scripts/qe/campaign_dispatch.py +134 -0
- package/scripts/qe/campaign_intake.py +633 -0
- package/scripts/qe/campaign_plan.py +534 -0
- package/scripts/qe/lib/campaign-rerun.mjs +392 -0
- package/scripts/qe/lib/campaign-scoreboard.mjs +677 -0
- package/scripts/qe/lib/flake-policy.mjs +365 -0
- package/scripts/qe/lib/gate.mjs +279 -7
- package/scripts/qe/lib/vault-evidence.mjs +664 -0
- package/scripts/qe/runner/README.md +256 -0
- package/scripts/qe/runner/bin/qe-run.mjs +103 -0
- package/scripts/qe/runner/package.json +29 -0
- package/scripts/qe/runner/specs/s1-smoke.spec.json +61 -0
- package/scripts/qe/runner/specs/th6-acceptance-dod.spec.json +56 -0
- package/scripts/qe/runner/src/asserts.mjs +265 -0
- package/scripts/qe/runner/src/evidence.mjs +348 -0
- package/scripts/qe/runner/src/index.mjs +21 -0
- package/scripts/qe/runner/src/lint.mjs +192 -0
- package/scripts/qe/runner/src/redact.mjs +163 -0
- package/scripts/qe/runner/src/runner.mjs +215 -0
- package/scripts/qe/runner/src/spec.mjs +119 -0
- package/scripts/qe/runner/src/wire-capture.mjs +91 -0
- package/scripts/qe/runner/test/asserts.test.mjs +81 -0
- package/scripts/qe/runner/test/campaign-rerun.test.mjs +268 -0
- package/scripts/qe/runner/test/evidence-redaction.test.mjs +168 -0
- package/scripts/qe/runner/test/fixture-ns.test.mjs +83 -0
- package/scripts/qe/runner/test/lint.test.mjs +121 -0
- package/scripts/qe/runner/test/redact.test.mjs +95 -0
- package/scripts/qe/runner/test/th17-vault-evidence.test.mjs +533 -0
- package/scripts/qe/runner/test/th21-flake-policy.test.mjs +226 -0
- package/scripts/qe/runner/test/th6-gate-wiring.test.mjs +292 -0
- package/skills/archetype/refs/incident.md +8 -7
- package/skills/archetype/refs/migrate.md +9 -7
- package/skills/archetype/refs/modernize.md +5 -4
- package/skills/archetype/refs/review.md +5 -5
- package/skills/archetype/refs/specify.md +3 -3
- package/skills/classify/SKILL.md +1 -1
- package/skills/core/SKILL.md +1 -1
- package/skills/core/refs/install.md +2 -2
- package/skills/core/refs/setup.md +6 -6
- package/skills/domain/SKILL.md +55 -3
- package/skills/domain/vendor/README.md +37 -22
- package/skills/domain/vendor/VERSION +1 -1
- package/skills/domain-extractor/SKILL.md +4 -0
- package/skills/engineering-conformance-reviewer/SKILL.md +10 -4
- package/skills/mem/SKILL.md +9 -1
- package/skills/mem/refs/scopes.md +5 -1
- package/skills/platform/peer-health/SKILL.md +1 -1
- package/skills/qe/SKILL.md +43 -11
- package/skills/qe/refs/accept.md +14 -2
- package/skills/qe/refs/author.md +1 -1
- package/skills/qe/refs/campaign-ci.md +153 -0
- package/skills/qe/refs/campaign-degradation.md +129 -0
- package/skills/qe/refs/campaign-flake-policy.md +158 -0
- package/skills/qe/refs/campaign-grading.md +235 -0
- package/skills/qe/refs/campaign.md +274 -0
- package/skills/qe/refs/evidence.md +47 -2
- package/skills/qe/refs/execute.md +9 -3
- package/skills/qe/refs/insight.md +1 -1
- package/skills/qe/refs/intake.md +146 -0
- package/skills/qe/refs/integration.md +32 -4
- package/skills/qe/refs/plan.md +1 -1
- package/skills/qe/refs/review.md +2 -2
- package/skills/qe/refs/scenario-format.md +65 -6
- package/skills/qe/refs/setup.md +1 -1
- package/skills/qe-a11y-test-engineer/SKILL.md +1 -1
- package/skills/qe-acceptance-test-reviewer/SKILL.md +24 -0
- package/skills/qe-ai-feature-test-engineer/SKILL.md +1 -1
- package/skills/qe-chaos-test-engineer/SKILL.md +1 -1
- package/skills/qe-compliance-test-engineer/SKILL.md +1 -1
- package/skills/qe-flaky-test-hunter/SKILL.md +16 -1
- package/skills/qe-iac-test-engineer/SKILL.md +1 -1
- package/skills/qe-incident-to-scenario-synthesizer/SKILL.md +1 -1
- package/skills/qe-mutation-test-engineer/SKILL.md +1 -1
- package/skills/qe-release-readiness-engineer/SKILL.md +1 -1
- package/skills/qe-scenario-executor/SKILL.md +1 -1
- package/skills/qe-security-test-engineer/SKILL.md +1 -1
- package/skills/qe-snapshot-hygiene-auditor/SKILL.md +1 -1
- package/skills/qe-test-code-quality-auditor/SKILL.md +1 -1
- package/skills/qe-test-impact-analyzer/SKILL.md +91 -7
- package/skills/qe-visual-regression-engineer/SKILL.md +1 -1
- package/skills/search/SKILL.md +12 -2
- package/skills/search/refs/answer.md +6 -1
- package/skills/search/refs/hotspots.md +4 -1
|
@@ -1,15 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "wicked-garden",
|
|
3
|
-
"owner": {
|
|
4
|
-
"name": "Mike Parcewski"
|
|
5
|
-
},
|
|
6
|
-
"plugins": [
|
|
7
|
-
{
|
|
8
|
-
"name": "wicked-garden",
|
|
9
|
-
"source": "./",
|
|
10
|
-
"description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, real multi-model second opinions. Don't fight the harness; fill its gaps. The gate needs wicked-vault (a self-contained infra peer, installed directly) and re-derives through garden's built-in engine; testing/brain/bus are opt-in layers.",
|
|
11
|
-
"version": "12.31.0"
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"version": "12.31.0"
|
|
15
|
-
}
|
|
1
|
+
{"name": "wicked-garden", "owner": {"name": "Mike Parcewski"}, "plugins": [{"name": "wicked-garden", "source": "./", "description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, real multi-model second opinions. Don't fight the harness; fill its gaps. The gate needs wicked-vault (a self-contained infra peer, installed directly) and re-derives through garden's built-in engine; estate/bus are opt-in layers (wicked-testing and wicked-brain are retired \u2014 QE ships in-catalog as the qe domain, memory lives in wicked-estate).", "version": "12.32.0"}], "version": "12.32.0"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wicked-garden",
|
|
3
|
-
"version": "12.
|
|
4
|
-
"description": "Your coding agent's harness already plans and swarms; Wicked Garden is the curated toolkit for what it can't do alone. Proof, not claims
|
|
3
|
+
"version": "12.32.0",
|
|
4
|
+
"description": "Your coding agent's harness already plans and swarms; Wicked Garden is the curated toolkit for what it can't do alone. Proof, not claims \u2014 gates re-derive 'done' through the internal loom engine (fail-closed, independently attested via wicked-vault), so a self-asserted pass can't lie its way green. Relationships grep can't see \u2014 the wicked-estate code graph + injected bus/dispatch/capability/archetype edges power blast-radius & lineage. Plus deterministic multi-file refactor (wicked-patch), cross-session memory + knowledge (the mem domain over wicked-estate), real multi-model second opinions (jam:council), portable expertise as on-demand skill-refs, and evidence-gated testing (the in-catalog qe domain). It reads the shape of your work to apply the right rigor \u2014 steering, not a pipeline \u2014 then gets out of the way. The compiler stamps a self-contained evidence gate into any repo that runs with no wicked-garden installed. Don't fight the harness; fill its gaps. The evidence gate requires wicked-vault, a self-contained infra peer wicked-garden installs directly; wicked-bus is an opt-in layer \u2014 install what you'll use, the toolkit works without the rest.",
|
|
5
5
|
"wicked_vault_version": "^0.5.0",
|
|
6
|
-
"wicked_ledger_version": "^0.
|
|
7
|
-
"wicked_brain_version": "^0.18.0",
|
|
6
|
+
"wicked_ledger_version": "^0.4.0",
|
|
8
7
|
"wicked_bus_version": "^2.0.0",
|
|
9
8
|
"author": {
|
|
10
9
|
"name": "Mike Parcewski",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,8 +2,70 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
### Added
|
|
6
|
+
- **AW-25 golden path — the wiki pipeline's own evidence-gated proof (recon arch-R21).** The guardrails program now applies its own DoD to itself: a committed, re-runnable acceptance scenario proves seed doc → `wicked-core rules ingest`/`fanout` (isolated stores; enforcement over the crew API, never CLI against a daemon store) → `rules.recall` over the **installed** `wicked-estate-mcp` 0.15.1 returning the rule with its digest-bearing provenance citation → an ISOLATED crew daemon's governed run deterministically tripping the canary trigger (the token rides the run INTENT, so the gate's evaluated context matches with no reliance on the worker model) → the gate denial citing the rule id + wiki URI (`POL-2500`, `wiki://aw25-golden#POL-2500` — via policy criteria AND `conform:` obligations, two independent citation paths) → the ConformanceClaim visible in `GET /runs/:id/acceptance` (deny-dominates, `guardrailed: false`). Ships as `scenarios/qe/aw25-golden-path.md` (scenario-format v1.1, category cli, isolation exclusive), `evidence/aw25-golden/` (seed ruleset with doc↔gate id-twinned `POL-2500`, `run.sh` fail-loud chain script, `campaign-recon.aw25.json` — spec-2 schema-validated plan with a machinery-verified claim ceiling, and the recorded `chain/` evidence 00–07 from a real run), plus `tests/qe/test_aw25_golden_artifacts.py` pinning the artifacts (schema validity, id-twinning, the AC-critical citation assertions in run.sh) hermetically. Evaluator≠creator: the verdict of record is crew's acceptance read, captured verbatim. Findings recorded in the evidence README: the <200-char PHASE SUBSTANCE GATE rejects a too-terse canary BEFORE any claim is recorded (first trip hit exactly this), and the ACP carrier reports `enforcement: enforced` with an empty `armedUnits` list.
|
|
7
|
+
- **Flaky-verdict policy at the campaign acceptance gate (TH-21, ADR 0006 — RECON-TEST-HARNESS test-R23).** One flaky scenario can no longer silently deny OR silently pass a nightly campaign, and exclusions always carry reasons. New written policy `skills/qe/refs/campaign-flake-policy.md` + pure policy engine `scripts/qe/lib/flake-policy.mjs`, applied by `campaign-scoreboard.mjs` on every assembly: (a) **bounded diagnostic re-runs with BOTH verdicts recorded** — a re-run lands as its own runs+verdicts rows under the same stable scenario id (TH-6's flake history, now consumed at the gate via `flake_policy.history`); mixed outcomes are a `flake_signal` blocker naming `wicked-garden-qe-flaky-test-hunter` (never best-of-N), >1+2 runs of one rung is a `rerun_bound_exceeded` violation, and a `--runs` selection showing PASS while omitting a same-window deny-graded sibling is a `pass_laundering_risk` violation; (b) **quarantine lane with owner+deadline via the hunter's taxonomy** — the gate consumes the hunter's ledger `tasks` row fail-closed (`quarantined: true` + scenario binding + taxonomy cause + owner + unexpired `quarantine_expires`; invalid/expired records are reported and NOT honored — the scenario keeps denying); (c) **quarantined scenarios are excluded-with-reason** — rows stay on the scoreboard, the exclusion (id/cause/owner/deadline/reason/observed grades) rides `certification.excluded` + `certification.gate_summary`, and `gate.mjs --exclusions-from <scoreboard.json>` appends the canonical clause to `verdict_summary` so it reaches crew's acceptance payload (the 8-field `wicked.qe.gate.*` wire contract untouched; exclusions missing id/reason/owner/deadline exit 3). A fully-quarantined campaign cannot certify; a quarantined PASS is excluded too; structural violations are never excused. Hunter's SKILL.md §5/§6 now pin the machine contract (body gains required `owner`). Tests: `tests/qe/test_campaign_flake_policy.py` (9 CLI cases, hermetic) + `scripts/qe/runner/test/th21-flake-policy.test.mjs` (14 unit cases).
|
|
8
|
+
- **qe campaign grading through the accept trio (TH-10, ADR 0006).** New `skills/qe/refs/campaign-grading.md` playbook: campaign evidence bundles grade through the SAME role-isolated reviewer as `refs/accept.md` (evidence PATHS only; isolation hard-enforced on Claude Code via host-level `allowed-tools`, advisory on Gemini/Codex/Cursor/Kiro — the boundary is now written down in both refs), with validate-before-grading against wicked-ledger's evidence-manifest 2.1 contract (schema-fail = INCONCLUSIVE; validator unavailable = fail closed). New deterministic glue `scripts/qe/lib/campaign-scoreboard.mjs` assembles the campaign-proven verbatim scoreboard shape `{id, grade, executor_claim, evidence_ok}` and makes self-grading structurally impossible: verdict rows by executor identities (`qe-runner/executor-claim`, `*executor*`, the `test-designer` dev-loop) are refused as grade sources and reported as `self_grade_attempt` violations; `executor_claim` derives from manifest-2.1 `scenario_evidence.status` (the contract's "executor's claim, never the verdict of record" field). Encodes the scenario-defect vs product-finding fork (verdict-reason tag `[scenario-defect]` → bounded re-author/re-run fix lane; `[product-finding]` → GH issue + idempotent ledger `tasks` mirror via `--mirror-tasks`) so certification terminates: `certification.disposition` is always `certified` or `not-certified`, never pending. Reviewer skill gains the campaign-bundle duties (structural floor re-check, claim-vs-evidence posture, mandatory non-PASS classification). Tests: `tests/qe/test_campaign_scoreboard.py` (8 cases, hermetic via a `WICKED_LEDGER_PKG_DIR` stub).
|
|
9
|
+
- **`qe campaign` recon+generation action (TH-7, ADR 0006).** New `campaign` action on the `wicked-garden-qe` router (`skills/qe/refs/campaign.md`): derives a capability inventory from three lenses — the estate code graph when the target repo is indexed, docs recall via `wicked-garden-mem`, and live probing (health endpoints, crew's committed `packages/crew/endpoint-manifest.json`, DOM landmarks) — and emits a dependency-ordered campaign plan CONFORMING to `schemas/campaign-recon.schema.json` v1 (never a parallel format), persisted as a ledger `strategies` row + scenario-format v1 files under `.wicked-qe/campaigns/<name>/`. Assembly/validation glue is `scripts/qe/campaign_plan.py` (stdlib-only, fail-closed): honest `sources.estate: "unindexed"` degradation is DERIVED (an unindexed plan claiming estate-sourced entries is rejected), doc-derived claims are forced `status: "proposed"` pending human review (the incident-to-scenario pending-review pattern), ladder order + rung↔capability binding are enforced beyond the JSON schema, and generated stubs fail until authored (never a silent PASS). Tests: `tests/qe/test_campaign_action.py` validates a generated three-lens plan against the schema itself.
|
|
10
|
+
- **qe dispatch guard (TH-7, guard half of the retired agent-surface cleanup — arch-R25 ≡ test-R20).** `scripts/qe/campaign_dispatch.py`: every qe dispatch resolves its specialist through `resolve_specialist()`, which asserts the resolved worker is a shipped `wicked-garden-qe-*` skill and BLOCKS retired `wicked-testing-*` / `wicked-brain-*` names at dispatch with a clear error naming the garden replacement (exit 2 on the CLI; never a silent rewrite). Wired into `skills/qe/SKILL.md` (fork workers) and `skills/qe/refs/execute.md` (dispatch block).
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Re-landed TH-5's campaign-recon schema, clobbered by #1083's stale-base squash.** PR #1083 (TH-4) was squashed from a branch cut before #1082 merged, silently reverting `schemas/campaign-recon.schema.json`, `tests/qe/test_campaign_recon_schema.py`, and the `schemas/README.md` standalone-contract section. Restored byte-for-byte from the #1082 squash commit. (The same squash also reverted #1081's docs/peer-floor work — flagged to its owning lane, not restored here.)
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **`wicked_ledger_version` floor `^0.2.0` → `^0.4.0` (recon XC-4 — the wicked-ledger 2.1 floor-bump wave).** wicked-ledger 0.4.0 ships evidence-manifest **2.1.0** (optional `scenario_evidence` block + first-class `claim_level` enum, `validateManifest` reviewer entry point — TH-5) and new-feature API surface, so the npm minor moved and the old caret (`^0.2.0` excludes 0.3+) had to move with it. Store compat is unchanged in every direction a garden consumer touches: SQLite `schema_version` stays **3** (no new migrations since 0.1.0), and manifest 2.1 is a **minor** — 2.0.0 bundles still validate (covered by the ledger's backward-compat smoke test) and 2.x readers gate on the major. The pin is single-sourced in `plugin.json`; the six qe skill files (`skills/qe/SKILL.md`, `skills/qe/refs/{accept,insight,integration}.md`, `skills/qe-release-readiness-engineer/SKILL.md`, `skills/qe-test-impact-analyzer/SKILL.md`) reference it symbolically and needed no edits — this completes the ledger-pin half DT-13 deferred to XC-4.
|
|
17
|
+
- **Peer-floor and manifest truth pass (recon DT-13).** One consistent vault-floor story: every doc restatement now says **≥ 0.5.0** — the floor `scripts/loom/manifest.py` (`version_pin="0.5"`) and `plugin.json` (`wicked_vault_version ^0.5.0`) have carried since 12.31.0 (checked by the peer registry's health probe: `loom doctor` reports a below-floor vault as `drift` and exits non-zero) — replacing the stale `≥ 0.4.0` (README, CONTRIBUTING, `skills/archetype/refs/{review,incident,migrate,modernize,specify}.md`) and `^0.3.0` (`docs/required-peers.md`) claims. manifest.py + plugin.json are declared the single source; restatements carry a greppable `<!-- vault-floor -->` marker, and `docs/required-peers.md` documents the bump procedure. `skills/core/refs/setup.md` now checks the probed vault version against the floor and tells a below-floor (e.g. 0.4.x) user to upgrade via `npm i -g wicked-vault@latest`.
|
|
18
|
+
- **`docs/required-peers.md` rewritten to the shipped truth.** The vault install command is now the working `npm i -g wicked-vault` form (was `npx wicked-vault-install`, which E404s on a fresh machine — no npm package of that name exists; it's a bin of `wicked-vault`). The loom row no longer presents a required external peer pinned `^0.2.0`: the engine has been absorbed in-package (`scripts/loom/`, dispatched in-process by `scripts/_loom.py`) since 12.27.0. **Decision (recon OQ-4):** the standalone `wicked-loom` npm package (0.4.0, not deprecated) is not a sanctioned install path — the pin is deleted, not bumped; `WICKED_LOOM_BIN` stays a debugging escape hatch.
|
|
19
|
+
- **`.claude-plugin/plugin.json`: deleted the retired `wicked_brain_version` pin** (`^0.18.0` — wicked-brain retired 2026-08, Phase 5-S7; nothing reads the key). The `wicked_ledger_version ^0.2.0` pin is deliberately untouched here — it moves with the coordinated wicked-ledger 2.1 floor-bump wave.
|
|
20
|
+
- **`.claude-plugin/marketplace.json`: retired-layers copy fixed** — "testing/brain/bus are opt-in layers" → estate/bus are the opt-in layers; wicked-testing and wicked-brain are retired (QE ships in-catalog as the `qe` domain; memory lives in wicked-estate).
|
|
21
|
+
- **`docs/brain-chunk-format.md`: retirement banner added** (recon DT-18) — the doc read as live instructions to write chunks into `~/.wicked-brain`, which is a frozen archive that must never be written; the format is preserved as historical reference for the chunks migrated into wicked-estate.
|
|
22
|
+
- **Site: the wicked-interactive card tells the document-engine story** (recon DT-12) — wicked-interactive moved planes rather than retiring: it is the foundation's document engine (storage, version lineage, HTML/PDF/PPTX/video rendering) that wicked-crew spawns and proxies, not a standalone visual builder. Install command unchanged (two-step marketplace add + install).
|
|
23
|
+
- **Backfilled the 12.30.0 and 12.31.0 changelog entries below** (recon DT-17) — the previous release entry was 12.29.1 while npm shipped 12.31.0; the vault-direct-peer entry that sat under [Unreleased] shipped in 12.31.0 and now lives there.
|
|
24
|
+
|
|
25
|
+
## [12.32.0] — 2026-08-30
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **qe campaign suite complete**: recon+generation w/ dispatch guard, intake propose-as-gate, accept-trio grading, flaky-verdict quarantine, degradation scenarios, campaign rerun+diff, CI recipes (PR subset / governed nightly), vault-backed evidence integrity (content-addressed, redaction-first), AW-25 golden-path evidence chain, dogfood corpus wiring.
|
|
29
|
+
- **Per-turn rules source**: stop.py names `rules.recall` as THE per-turn source; guard_pipeline consumes a graph-derived rules dir with content-hash provenance; `WG_OUTGOV` defaults to advisory `warn`.
|
|
30
|
+
- **Architecture-wiki pointers** in the mem/search/conformance skills (`knowledge.recall {"scope_prefix":"wiki:"}` + estate `rules.recall`).
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Site version stamp injected at build from the plugin manifest (DT-7 — can never re-stale).
|
|
34
|
+
- campaign-recon schema v2: `desktop` category tiers + `isolation` annotation in one bump.
|
|
35
|
+
|
|
36
|
+
## [12.31.0] — 2026-08-25
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **Phase 5 — wicked-brain retired; memory/knowledge/context re-homed onto wicked-estate.** The `mem` domain now runs over wicked-estate (S7 brain folds: vision ingest, session capture, cited answer — #1048); the auto-memorize loop rebuilt on estate (#1050); context assembly retargeted from wicked-brain onto wicked-estate (S4 — #1044) and the wicked-brain route retired outright — estate-only context stack (S7 — #1056). Reach plumbing: estate reach-shim so garden hooks can reach the estate stdio MCP (S2 — #1041) and a persistent stdio broker for ~50x faster estate calls (S3).
|
|
40
|
+
- **ADR 0005 — the code-relationship graph re-homed to wicked-estate** (supersedes ADR 0004 — #1040): remaining graph consumers re-homed (S5: A1/A2/A4/A5/A6 + Section B — #1049) and wicked-patch's graph reader retargeted (A3 — #1045).
|
|
41
|
+
- **Phase 6 — wicked-testing retired; QE ships in-catalog.** wicked-testing's capability set became the garden `qe` domain (Phase 6b — #1047); the wicked-testing peer retired and its `wicked_testing_version` pin dropped (Phase 6c — #1051); qe event/domain rebrand — `.wicked-qe` store dirname, qe stamps, in-catalog helpers, `wicked_vault_version` floor `^0.4.4` → `^0.5.0` and `wicked_ledger_version` `^0.1.0` → `^0.2.0` (#1052). (Earlier in the same release, the testing floor had been bumped `^0.8.0` → `^0.10.0` — #1037 — before the peer's retirement mooted it.)
|
|
42
|
+
- **wicked-vault became a direct infra peer — no longer installed "via wicked-testing"** (#1039). `wicked-vault` is published from its own repo (mikeparcewski/wicked-vault): self-contained, zero runtime deps. The loom peer registry (`scripts/loom/manifest.py`) installs it directly (`install_cmd` = `["npm", "install", "-g", "wicked-vault@latest"]`, was `["npx", "wicked-testing", "install"]`); `plugin.json` `wicked_vault_version` floor `^0.4.0` → `^0.4.4` (raised again to `^0.5.0` by #1052 in this same release). Narrative corrected across `plugin.json` / `marketplace.json` descriptions, `docs/getting-started.md`, and `skills/core/refs/setup.md`; fixed a hardcoded `~/Projects/wicked-vault` dev path in `scripts/compiler/phase0/wire_vault.py`.
|
|
43
|
+
- Site: wave-2 capability deep-dive — the catalog, the qe wall, the extension pitch (#1055); shared chrome re-pins (studio first-class — #1058, and digest updates); baseline Playwright smoke suite for the signature widgets (#1046).
|
|
44
|
+
- Docs accuracy: removed the sunsetted Gemini CLI from the harness list and panel description (#1065).
|
|
45
|
+
- Dependency wave: astro 7.2.x, react 19.2.18, motion v13, svgo, npm_and_yarn group.
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
- **Third-party extension contract (packs)** — drop-in packs, shipped conformance gate, crew routing (#1057).
|
|
49
|
+
- Event hygiene: 6 wicked-core production events cataloged + a 4-segment `wicked.<domain>.<noun>.<verb>` format validator (#1061); 3-segment QE event names renamed to canonical 4-segment (#1060).
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
- Drift-guard: crew contract check re-pointed at `wicked-crew-api-types` (#1054).
|
|
53
|
+
- Bootstrap perf: CH-02 legacy-scan result cached, eliminating a ~20s rglob on session start (#1064).
|
|
54
|
+
- E2E: `BootstrapEndToEndTests` isolated from shared `HOME` state (#1066).
|
|
55
|
+
|
|
56
|
+
## [12.30.0] — 2026-07-30
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
- **Domain extraction pipeline:** structural extraction loop — clusters, blast-radius framing, parallel workers (#1020); Message Batches API pipeline + direct-API adapter for rule extraction (#1025).
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
- Domain-extraction robustness chain: infra failures abort the pass instead of RISK-flooring (#1021); zero-yield batches abort as infra-suspect and floors never overwrite content (#1022, #1023); one in-pass retry before infra abort (#1024); batch timeouts retry once before flooring (#1026); rule statements phrased in product-functional terms with config trivia floored honestly (#1027); trailing-dot-tolerant symbol-id matching so model-normalized ids recanonize (#1028).
|
|
63
|
+
- Scaffolding: YAML-quote template name placeholders — unquoted `{{name}}` broke codex's skill loader (#1029).
|
|
64
|
+
|
|
5
65
|
### Changed
|
|
6
|
-
-
|
|
66
|
+
- Site: version-free kicker chip — npm is the version authority (#1018).
|
|
67
|
+
- CI: notify wicked-installer on release tags (#1030).
|
|
68
|
+
- DoD bookkeeping: L3-009/L3-010 evidence checked off against the 12.29.1 release (#1015); shared deps updated to v19.2.8 (#1008).
|
|
7
69
|
|
|
8
70
|
## [12.29.1] — 2026-07-21
|
|
9
71
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -19,8 +19,8 @@ uv run pytest tests/ -x
|
|
|
19
19
|
## Escape Hatches
|
|
20
20
|
|
|
21
21
|
> **Historical note (Phase 6c):** the `WG_SKIP_WICKED_TESTING_CHECK` escape
|
|
22
|
-
> hatch and the SessionStart wicked-testing probe it bypassed were removed
|
|
23
|
-
> when wicked-testing retired — the qe domain ships in-catalog (the
|
|
22
|
+
> hatch and the SessionStart wicked-testing probe it bypassed were removed <!-- historical -->
|
|
23
|
+
> when wicked-testing retired — the qe domain ships in-catalog (the <!-- historical -->
|
|
24
24
|
> `wicked-garden-qe` router + specialists), so there is no peer package to
|
|
25
25
|
> probe. The acceptance gate concept now lives in wicked-crew's
|
|
26
26
|
> `/runs/:id/acceptance` route.
|
|
@@ -29,11 +29,13 @@ uv run pytest tests/ -x
|
|
|
29
29
|
|
|
30
30
|
**For offline CI and dev environments without the wicked-vault peer only.**
|
|
31
31
|
|
|
32
|
-
wicked-vault (npm, ≥0.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
loom
|
|
32
|
+
wicked-vault (npm, ≥ 0.5.0 <!-- vault-floor -->, install `npm i -g wicked-vault`)
|
|
33
|
+
is the one required peer (the loom engine is built into the garden; bus is an
|
|
34
|
+
opt-in layer). The garden's produces-gates re-derive
|
|
35
|
+
evidence through the built-in loom engine — `scripts/qe/vault_gate.py` runs
|
|
36
|
+
`loom gate` in-process (`scripts/_loom.py` → `scripts/loom/`), which shells
|
|
37
|
+
`wicked-vault cross-check`, so the vault is the backend loom re-runs the
|
|
38
|
+
verifier against. loom resolves the vault; the concrete-install
|
|
37
39
|
probe (`vault_available`) and the `WICKED_VAULT_BIN` kill-switch below still apply.
|
|
38
40
|
The vault CLI is resolved in order:
|
|
39
41
|
|
package/README.md
CHANGED
|
@@ -54,14 +54,23 @@ No universal pipeline to obey. A hook reads each prompt's *shape* and that decid
|
|
|
54
54
|
## Install
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
|
|
57
|
+
claude plugins marketplace add mikeparcewski/wicked-garden
|
|
58
|
+
claude plugins install wicked-garden
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Or use the family installer — [`npx wicked-installer`](https://www.npmjs.com/package/wicked-installer)
|
|
62
|
+
installs/updates the whole wicked-\* family (garden, its peers, and the rest).
|
|
63
|
+
|
|
64
|
+
Then, in a Claude Code session:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
58
67
|
/wicked-garden-core setup # verifies peers; blocks only on the one the gate needs
|
|
59
68
|
```
|
|
60
69
|
|
|
61
70
|
**One required peer, the rest opt-in.** The evidence gate is the floor we won't fake, so it needs one external peer — setup blocks without it:
|
|
62
71
|
|
|
63
72
|
```bash
|
|
64
|
-
npm i -g wicked-vault # wicked-vault (≥ 0.
|
|
73
|
+
npm i -g wicked-vault # wicked-vault (≥ 0.5.0), the honest-evidence backend the gate re-derives against
|
|
65
74
|
```
|
|
66
75
|
|
|
67
76
|
> The gate/resolve engine (formerly the separate `wicked-loom` package) is now **absorbed in-package** as of v12.27.0 (`scripts/loom/`) — nothing extra to install. The gate re-hashes recorded evidence and re-runs its verifier through that engine; a false "tests pass" is **rejected**, a missing backend **fails closed**.
|
|
@@ -71,7 +80,7 @@ The rest of the kit is **opt-in layers** — add what you want, skip the rest an
|
|
|
71
80
|
```bash
|
|
72
81
|
# wicked-estate — the memory/knowledge layer (cross-session recall + cited search, the "what"):
|
|
73
82
|
# install the `wicked-estate` + `wicked-estate-mcp` binaries onto PATH or ~/.local/bin
|
|
74
|
-
|
|
83
|
+
npm i -g wicked-bus && npx wicked-bus-install # the audit-trail layer (fire-and-forget; fail-open without it)
|
|
75
84
|
```
|
|
76
85
|
|
|
77
86
|
> Evidence-gated acceptance testing (author ≠ executor ≠ reviewer) needs no extra install — it ships **in-catalog** as the `qe` domain (`wicked-garden-qe`).
|
|
@@ -127,7 +136,7 @@ Full author guide: [`docs/extending.md`](docs/extending.md).
|
|
|
127
136
|
|
|
128
137
|
## Requirements
|
|
129
138
|
|
|
130
|
-
A coding-agent harness ([Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) ≥ 1.0 for the plugin surface; the peers + compiled gate are harness-agnostic) · Python 3.9+ (stdlib-only hooks) · Node + `npx` · the gate's one required peer (`wicked-vault` ≥ 0.
|
|
139
|
+
A coding-agent harness ([Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) ≥ 1.0 for the plugin surface; the peers + compiled gate are harness-agnostic) · Python 3.9+ (stdlib-only hooks) · Node + `npx` · the gate's one required peer (`wicked-vault` ≥ 0.5.0) plus opt-in layers (`wicked-estate` · `wicked-bus`).
|
|
131
140
|
|
|
132
141
|
## License
|
|
133
142
|
|
package/docs/README.md
CHANGED
|
@@ -14,7 +14,8 @@ Work in wicked-garden is organized around **9 work-shape archetypes** — not a
|
|
|
14
14
|
| [Required Peers](required-peers.md) | The five required peer plugins and the install/runtime stance |
|
|
15
15
|
| [The Compiler](compiler.md) | `/wicked-garden-prove compile` — emit a self-contained vault-backed gate into any repo |
|
|
16
16
|
| [Extending the Catalog](extending.md) | Ship a third-party pack — `{vendor}-{domain}-{role}` skills, the `wicked-pack.json` manifest, the shipped conformance gate, install + crew routing |
|
|
17
|
-
| [
|
|
17
|
+
| [Output Governance (Per-Turn)](outgov-per-turn.md) | The advisory hook lane — `WG_OUTGOV` modes (default `warn`), `rules.recall` as the single per-turn rule source, content-hash provenance for the graph-derived rules dir |
|
|
18
|
+
| [Brain Chunk Format](brain-chunk-format.md) | Historical: how content was chunked for the retired wicked-brain index (the migrated chunks in wicked-estate keep this shape) | <!-- historical -->
|
|
18
19
|
|
|
19
20
|
## Quick Links
|
|
20
21
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0001
|
|
3
|
+
title: "Code-relationship graph: adopt codegraph as the engine, add injected-edge extractors"
|
|
4
|
+
status: superseded
|
|
5
|
+
date: 2026-06-09
|
|
6
|
+
---
|
|
1
7
|
# ADR 0001 — Code-relationship graph: adopt codegraph as the engine, add injected-edge extractors
|
|
2
8
|
|
|
3
|
-
- **Status:** Superseded by [ADR 0004](0004-code-graph-moves-to-wicked-brain.md) (2026-06-10) — the engine choice (codegraph) + injected-edge concept stand, but the graph's **home moved to wicked-brain** (garden no longer hosts the shim/extractors). Originally: Accepted (prototype validated).
|
|
9
|
+
- **Status:** Superseded by [ADR 0004](0004-code-graph-moves-to-wicked-brain.md) (2026-06-10) — the engine choice (codegraph) + injected-edge concept stand, but the graph's **home moved to wicked-brain** (garden no longer hosts the shim/extractors). Originally: Accepted (prototype validated). <!-- historical -->
|
|
4
10
|
- **Date:** 2026-06-09
|
|
5
11
|
- **Context owners:** wicked-garden
|
|
6
12
|
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0002
|
|
3
|
+
title: "Major cleanup: collapse rubric-wrappers to skills; keep only what the agent actually uses"
|
|
4
|
+
status: active
|
|
5
|
+
date: 2026-06-09
|
|
6
|
+
---
|
|
1
7
|
# ADR 0002 — Major cleanup: collapse rubric-wrappers to skills; keep only what the agent actually uses
|
|
2
8
|
|
|
3
9
|
- **Status:** Accepted — **fully executed**. All domains collapsed (product #910; engineering #911; platform #912; data+delivery #913; agentic+jam+persona+smaht #914), orphan agents purged via `scripts/ci/find_orphan_agents.py`, and `components.json` re-derived via `scripts/ci/sync_components.py`. End state: 90 commands, 40 agents (from 56), 71 skills.
|
|
@@ -31,13 +37,13 @@ This is grounded in a full hands-on pass: every domain was invoked and judged ag
|
|
|
31
37
|
| code-graph (codegraph + injected-edge extractors) → `search:blast-radius`, `search:lineage` | **output + tokens** — finds injected relationships grep can't; impact in one query vs. reading many files |
|
|
32
38
|
| wicked-patch (`rename`/`add-field`/`remove`/`apply`) — once wired to the graph DB | **easier + output** — deterministic multi-file refactor |
|
|
33
39
|
| `jam:council` / multi-model | **output** — real external-model perspective the agent can't produce alone |
|
|
34
|
-
| `jam:brainstorm` / `revisit` (the wicked-brain decision-memory loop) | **output** — longitudinal decision/outcome memory |
|
|
40
|
+
| `jam:brainstorm` / `revisit` (the wicked-brain decision-memory loop) | **output** — longitudinal decision/outcome memory | <!-- historical -->
|
|
35
41
|
| `smaht:briefing` | **tokens** — one event-store query replaces stitching git+memory+tasks |
|
|
36
42
|
| `data:ontology` | **output** — real RDF-vocabulary engine (beats free-recall) |
|
|
37
43
|
| `persona:as` (built-in personas) + `persona:list` | **output** — hand-authored constraints/memories measurably steer; cheap discovery |
|
|
38
44
|
| `platform:security` (now drives real `gitleaks`/`semgrep`) | **output** — real SAST/secrets, not grep-guessing |
|
|
39
45
|
| `platform:toolchain` | **tokens/easier** — fast deterministic CLI inventory |
|
|
40
|
-
| wicked-testing integration (`acceptance`/`run`/`plan`/`review`) | **output** — evidence-gated testing backbone |
|
|
46
|
+
| wicked-testing integration (`acceptance`/`run`/`plan`/`review`) | **output** — evidence-gated testing backbone | <!-- historical -->
|
|
41
47
|
| archetype **gate** + actionable steering (emits the `prove` one-liner) | **output** — turns the principle into a reflex |
|
|
42
48
|
| Core plumbing: `setup`, `where-am-i`, `help`, `intent`, `reset`, `classify`, hooks | load-bearing |
|
|
43
49
|
|
|
@@ -47,7 +53,7 @@ These are `Task(subagent)` rubric-wrappers: a checklist the agent already applie
|
|
|
47
53
|
|
|
48
54
|
| Domain | Collapse | Note |
|
|
49
55
|
|---|---|---|
|
|
50
|
-
| product | ✅ **EXECUTED — all 12** (`a11y`,`ux`,`ux-review`,`elicit`,`strategy`,`mockup`,`screenshot`,`analyze`,`synthesize`,`listen`,`align`,`acceptance`) | The pattern. Each rubric is now `skills/product/refs/<name>.md`, loaded inline. **Kept dispatch** only for the genuine multi-lens cases: `ux-review --focus all` (4 lenses) and `strategy --focus all` (2 lenses). Removed the dispatch-only agents `ux-analyst`, `user-voice`, `mockup-generator`; kept the rest (still referenced). `acceptance --scenarios` wicked-testing tie-in preserved in the ref. |
|
|
56
|
+
| product | ✅ **EXECUTED — all 12** (`a11y`,`ux`,`ux-review`,`elicit`,`strategy`,`mockup`,`screenshot`,`analyze`,`synthesize`,`listen`,`align`,`acceptance`) | The pattern. Each rubric is now `skills/product/refs/<name>.md`, loaded inline. **Kept dispatch** only for the genuine multi-lens cases: `ux-review --focus all` (4 lenses) and `strategy --focus all` (2 lenses). Removed the dispatch-only agents `ux-analyst`, `user-voice`, `mockup-generator`; kept the rest (still referenced). `acceptance --scenarios` wicked-testing tie-in preserved in the ref. | <!-- historical -->
|
|
51
57
|
| engineering | `debug`, `plan`, `arch`, `review`, `docs` | `debug` duplicates `superpowers:systematic-debugging` (collapse to a pointer); rest collapse with R1–R6 preserved as a ref. |
|
|
52
58
|
| platform | `compliance`, `audit`, `incident`, `health`, `traces`, `actions`, `gh`, `infra` | keep `security` + `toolchain`. Collapse the SOC2/HIPAA audit checklist into a ref. |
|
|
53
59
|
| data | `analyze`, `data`, `pipeline`, `ml` | keep `ontology`. |
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0003
|
|
3
|
+
title: "Two required peers (the gate), three opt-in layers"
|
|
4
|
+
status: active
|
|
5
|
+
date: 2026-06-09
|
|
6
|
+
---
|
|
1
7
|
# ADR 0003 — Two required peers (the gate), three opt-in layers
|
|
2
8
|
|
|
3
|
-
- **Status:** Accepted — executed. *(Historical note, Phase 6c: `wicked-testing` has since retired as a peer — its skills ship in-catalog as the `qe` domain and the acceptance gate lives in wicked-crew. The opt-in-layer reasoning below is preserved as written.)*
|
|
9
|
+
- **Status:** Accepted — executed. *(Historical note, Phase 6c: `wicked-testing` has since retired as a peer — its skills ship in-catalog as the `qe` domain and the acceptance gate lives in wicked-crew. The opt-in-layer reasoning below is preserved as written.)* <!-- historical -->
|
|
4
10
|
- **Date:** 2026-06-09
|
|
5
11
|
- **Supersedes:** the v12 stance in `docs/required-peers.md` ("five peers are required infrastructure").
|
|
6
12
|
|
|
7
13
|
## Context
|
|
8
14
|
|
|
9
|
-
v12 made all five peers (`wicked-testing`, `wicked-vault`, `wicked-brain`, `wicked-bus`, `wicked-loom`) **required** — `/wicked-garden:setup` blocked without any one, and the SessionStart bootstrap nagged "REQUIRED but not installed" for each.
|
|
15
|
+
v12 made all five peers (`wicked-testing`, `wicked-vault`, `wicked-brain`, `wicked-bus`, `wicked-loom`) **required** — `/wicked-garden:setup` blocked without any one, and the SessionStart bootstrap nagged "REQUIRED but not installed" for each. <!-- historical -->
|
|
10
16
|
|
|
11
17
|
A third-party review pass (a skeptic persona + a `jam:council` panel of external models — codex/gpt-5.5 and opencode/claude-haiku) converged, independently, on one verdict: **the all-or-nothing five-peer requirement contradicts the "gap-filler that gets out of the way" pitch and is the single biggest adoption blocker.** "A gap-filler should feel additive; this sounds like infrastructure." "A single required peer would unlock solo adoption; bundle the other four as opt-in layers and you'd see 10× more install attempts."
|
|
12
18
|
|
|
@@ -17,7 +23,7 @@ The author's counter-point matters too: **garden's goal is a curated toolkit**,
|
|
|
17
23
|
Split the peers by what actually needs them:
|
|
18
24
|
|
|
19
25
|
- **Required — the evidence gate:** `wicked-vault` + `wicked-loom`. The toolkit's central promise is *re-derived, fail-closed "done."* A gate that can't re-derive evidence is the one thing we refuse to fake, so setup **blocks** without these two. Trading adoption for honesty here is deliberate.
|
|
20
|
-
- **Opt-in layers:** `wicked-testing` (acceptance-testing tool), `wicked-brain` (memory + search — the *what*), `wicked-understanding` (repo playbooks — the *how*; `skills`-standard, added in v12.16), `wicked-bus` (audit trail). Each unlocks one capability; none is a prerequisite for the others or for the gate. Setup **recommends** them and continues; bootstrap surfaces them informationally.
|
|
26
|
+
- **Opt-in layers:** `wicked-testing` (acceptance-testing tool), `wicked-brain` (memory + search — the *what*), `wicked-understanding` (repo playbooks — the *how*; `skills`-standard, added in v12.16), `wicked-bus` (audit trail). Each unlocks one capability; none is a prerequisite for the others or for the gate. Setup **recommends** them and continues; bootstrap surfaces them informationally. <!-- historical -->
|
|
21
27
|
|
|
22
28
|
This is the toolkit stance: **breadth you adopt incrementally**, not a five-thing prerequisite wall.
|
|
23
29
|
|
|
@@ -25,7 +31,7 @@ This is the toolkit stance: **breadth you adopt incrementally**, not a five-thin
|
|
|
25
31
|
|
|
26
32
|
- The produces-gate already routes only through vault+loom; it never needed testing/brain/bus.
|
|
27
33
|
- `wicked-bus` emission was already fire-and-forget / fail-open.
|
|
28
|
-
- `wicked-brain` absence already degrades (structural search falls back to codegraph; memory features simply go dark).
|
|
34
|
+
- `wicked-brain` absence already degrades (structural search falls back to codegraph; memory features simply go dark). <!-- historical -->
|
|
29
35
|
- Runtime resilience + the kill-switches (`WICKED_VAULT_BIN=""`, `WICKED_LOOM_CUTOVER=off`) are unchanged — they still fail closed, never vacuous-pass.
|
|
30
36
|
|
|
31
37
|
## Changes
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0004
|
|
3
|
+
title: "Move the code-relationship graph to wicked-brain (inverts ADR 0001's homing)"
|
|
4
|
+
status: superseded
|
|
5
|
+
date: 2026-06-10
|
|
6
|
+
supersedes: [wicked-garden-adr-0001]
|
|
7
|
+
---
|
|
1
8
|
# ADR 0004 — Move the code-relationship graph to wicked-brain (inverts ADR 0001's homing)
|
|
2
9
|
|
|
10
|
+
<!-- historical-doc -->
|
|
11
|
+
|
|
3
12
|
- **Status:** Superseded by [ADR 0005](0005-code-graph-re-homes-to-wicked-estate.md) (2026-08-11) — the
|
|
4
13
|
graph's **home moved from wicked-brain to wicked-estate** (which independently built a more capable
|
|
5
14
|
graph: 75-language tree-sitter extractor, `ExtraEdgeExtractor` TOML injected edges, cross-repo
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0005
|
|
3
|
+
title: "Re-home the code-relationship graph to wicked-estate (supersedes ADR 0004)"
|
|
4
|
+
status: active
|
|
5
|
+
date: 2026-08-11
|
|
6
|
+
supersedes: [wicked-garden-adr-0004]
|
|
7
|
+
---
|
|
1
8
|
# ADR 0005 — Re-home the code-relationship graph to wicked-estate (supersedes ADR 0004)
|
|
2
9
|
|
|
3
10
|
- **Status:** Accepted
|
|
4
11
|
- **Date:** 2026-08-11
|
|
5
12
|
- **Supersedes:** [ADR 0004](0004-code-graph-moves-to-wicked-brain.md) **in full** — the graph's
|
|
6
|
-
home moves from `wicked-brain` to `wicked-estate`. Also **retires the engine choice** carried
|
|
13
|
+
home moves from `wicked-brain` to `wicked-estate`. Also **retires the engine choice** carried <!-- historical -->
|
|
7
14
|
forward from [ADR 0001](0001-code-relationship-graph-engine.md): `@colbymchenry/codegraph` is
|
|
8
15
|
replaced by estate's own 75-language tree-sitter extractor. What ADR 0001/0004 got right — a real
|
|
9
16
|
relationship graph with **injected edges** as the load-bearing idea — stands; only the home and
|
|
@@ -13,22 +20,22 @@
|
|
|
13
20
|
estate `docs/adr/ADR-001-graph-schema.md` (graph schema),
|
|
14
21
|
estate `docs/extractor-sdk.md`, estate `CLAUDE.md`. (Cross-repo references are given as
|
|
15
22
|
paths, not links — they resolve in the `wicked-estate` repo, not this one.)
|
|
16
|
-
- **Retarget checklist:** [`
|
|
23
|
+
- **Retarget checklist:** [`0007-retarget-inventory.md`](0007-retarget-inventory.md) *(renumbered from 0005, 2026-08-29)* — the actionable
|
|
17
24
|
call-site → estate mapping that Stage S5 executes.
|
|
18
25
|
|
|
19
26
|
## Context
|
|
20
27
|
|
|
21
|
-
ADR 0004 homed the code-relationship graph in `wicked-brain`: brain shelled `@colbymchenry/codegraph`
|
|
28
|
+
ADR 0004 homed the code-relationship graph in `wicked-brain`: brain shelled `@colbymchenry/codegraph` <!-- historical -->
|
|
22
29
|
to build a per-repo `.codegraph/codegraph.db`, read it back over `graph-*` server actions + a
|
|
23
|
-
`wicked-brain:graph` skill, and let plugins contribute proprietary injected edges through a drop-in
|
|
30
|
+
`wicked-brain:graph` skill, and let plugins contribute proprietary injected edges through a drop-in <!-- historical -->
|
|
24
31
|
registry (`<repo>/.codegraph-extractors/*.mjs`). Garden became a consumer: `skills/search/SKILL.md`,
|
|
25
32
|
`skills/search/refs/hotspots.md`, and `wicked-patch` (`scripts/engineering/patch/codegraph_db.py`)
|
|
26
33
|
all target that brain surface, and garden ships `.codegraph-extractors/archetype.mjs` as its drop-in.
|
|
27
34
|
|
|
28
35
|
Two facts have since changed the ground under ADR 0004:
|
|
29
36
|
|
|
30
|
-
1. **The brain graph is gone.** ADR 0004's implementation is stripped from the current wicked-brain
|
|
31
|
-
working tree — there is no `wicked-brain-graph` skill, no `@colbymchenry/codegraph` dependency,
|
|
37
|
+
1. **The brain graph is gone.** ADR 0004's implementation is stripped from the current wicked-brain <!-- historical -->
|
|
38
|
+
working tree — there is no `wicked-brain-graph` skill, no `@colbymchenry/codegraph` dependency, <!-- historical -->
|
|
32
39
|
and no `graph-*` server action. Every garden call-site above therefore points at a **surface that
|
|
33
40
|
no longer exists** — an already-dangling contract, not a live coupling.
|
|
34
41
|
|
|
@@ -74,11 +81,11 @@ cross-repo overlay the brain never had). There is no code to move — only garde
|
|
|
74
81
|
|
|
75
82
|
| | 0004 (brain) | 0005 (estate) |
|
|
76
83
|
|---|---|---|
|
|
77
|
-
| Home of the graph + queries | wicked-brain | **wicked-estate** |
|
|
84
|
+
| Home of the graph + queries | wicked-brain | **wicked-estate** | <!-- historical -->
|
|
78
85
|
| Static engine | `@colbymchenry/codegraph` peer (Node ≥ 22.5) | **estate `wicked-estate-extract`** — 75-language tree-sitter, in-binary |
|
|
79
86
|
| Injected edges | per-repo JS drop-ins `<repo>/.codegraph-extractors/*.mjs` | **`ExtraEdgeExtractor` TOML rules** (`.wicked-estate-extractors/<name>.toml`, `extra_edge.rs`) |
|
|
80
87
|
| Cross-repo / cross-store edges | none | **`wicked-estate-overlay` `XedgeStore`** (`xedge.db`) |
|
|
81
|
-
| blast-radius / lineage owner | brain `graph-*` actions + `wicked-brain:graph` skill | **estate MCP tools `BlastRadius` / `Lineage` / `TraverseGraph` / `RankHotspots`** |
|
|
88
|
+
| blast-radius / lineage owner | brain `graph-*` actions + `wicked-brain:graph` skill | **estate MCP tools `BlastRadius` / `Lineage` / `TraverseGraph` / `RankHotspots`** | <!-- historical -->
|
|
82
89
|
| Graph DB | `<repo>/.codegraph/codegraph.db` (codegraph-native SQLite) | **estate index DB** (`wicked-estate index <path>`; queried via MCP, not read raw) |
|
|
83
90
|
| wicked-patch symbol source | reads `.codegraph/codegraph.db` directly | **estate graph** (via MCP / an estate export) |
|
|
84
91
|
| Injected-edge direction | `source = dependent, target = producer/playbook`; blast-radius = dependents | **unchanged in spirit** — estate invariant is `source = dependent, target = dependency`, blast-radius = dependents (`xedge.rs` header; estate `CLAUDE.md`). The archetype rule ports **without a direction flip.** |
|
|
@@ -98,9 +105,9 @@ cross-repo overlay the brain never had). There is no code to move — only garde
|
|
|
98
105
|
## Consequences
|
|
99
106
|
|
|
100
107
|
- **The dangling contracts get a real target.** Every garden call-site that today references a
|
|
101
|
-
retired brain surface (`graph-index`, `graph-blast-radius`, `graph-lineage`, `wicked-brain:graph`,
|
|
108
|
+
retired brain surface (`graph-index`, `graph-blast-radius`, `graph-lineage`, `wicked-brain:graph`, <!-- historical -->
|
|
102
109
|
raw `.codegraph/codegraph.db` reads) maps to a live estate MCP tool or the estate graph. The exact
|
|
103
|
-
mapping is [`
|
|
110
|
+
mapping is [`0007-retarget-inventory.md`](0007-retarget-inventory.md) *(renumbered from 0005, 2026-08-29)*.
|
|
104
111
|
- **Any repo** gets relationship-graph knowledge by running the wicked-estate MCP server — no garden
|
|
105
112
|
required and, unlike ADR 0004, **no external codegraph peer / Node version floor** either.
|
|
106
113
|
- **Garden's archetype extractor is re-authored, not dropped.** `.codegraph-extractors/archetype.mjs`
|
|
@@ -118,7 +125,7 @@ cross-repo overlay the brain never had). There is no code to move — only garde
|
|
|
118
125
|
|
|
119
126
|
## Implementation
|
|
120
127
|
|
|
121
|
-
- **This PR (Stage S0):** ADR 0005 + [`
|
|
128
|
+
- **This PR (Stage S0):** ADR 0005 + [`0007-retarget-inventory.md`](0007-retarget-inventory.md) *(renumbered from 0005, 2026-08-29)*; mark
|
|
122
129
|
ADR 0004 superseded (its Status banner). No consumer code touched.
|
|
123
130
|
- **Stage S5 (later):** execute the retarget inventory — repoint `skills/search/*` to estate MCP
|
|
124
131
|
tools, repoint `scripts/engineering/patch/codegraph_db.py` to the estate graph, author the archetype
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0006
|
|
3
|
+
title: "The test harness homes into the four planes as "qe campaign" — no new product"
|
|
4
|
+
status: active
|
|
5
|
+
date: 2026-08-29
|
|
6
|
+
---
|
|
7
|
+
# ADR 0006 — The test harness homes into the four planes as "qe campaign" — no new product
|
|
8
|
+
|
|
9
|
+
- **Status:** Accepted
|
|
10
|
+
- **Date:** 2026-08-29
|
|
11
|
+
- **Context owners:** wicked-garden (capability) + wicked-crew/wicked-core (control) + wicked-ledger/wicked-vault (evidence) + wicked-studio (surface)
|
|
12
|
+
- **Relates to:** garden `skills/qe/` (the qe domain), `scripts/qe/lib/gate.mjs` (the `wicked.qe.gate.*` wire contract), `schemas/` (contract-schema home); core `src/campaign.rs` + DES-CAMPAIGN-001 (the Campaign DAG scheduler); crew `GET /runs/:id/acceptance` (the deny-dominates gate); ledger `docs/SCHEMA-CONTRACT.md` (evidence-manifest versioning). (Cross-repo references are paths in those repos, not links.)
|
|
13
|
+
- **Origin:** 2026-08 test-harness recon (RECON-TEST-HARNESS test-R3); precedent in `scratch/TARGET-ARCHITECTURE.md` Phase 6 (wicked-testing dissolution). <!-- historical -->
|
|
14
|
+
|
|
15
|
+
## Context
|
|
16
|
+
|
|
17
|
+
The 2026-08 studio E2E campaign proved a working shape for large-scale, evidence-gated
|
|
18
|
+
verification: recon a product's surfaces into a capability inventory, generate a
|
|
19
|
+
dependency-ordered scenario ladder, execute deterministically (model-free browser/API
|
|
20
|
+
runners, wire capture, read-back assertions), grade through an isolated reviewer, and
|
|
21
|
+
land evidence where an acceptance gate can re-derive it. The question this ADR settles
|
|
22
|
+
is *where that harness lives*.
|
|
23
|
+
|
|
24
|
+
The tempting answer — a new standalone product ("interactive test harness",
|
|
25
|
+
"wicked-harness") — has already been tried and unwound once. **wicked-testing was <!-- historical -->
|
|
26
|
+
retired in 2026-08 (Phase 6) INTO exactly the planes below**, at real cost: npm
|
|
27
|
+
deprecation at 0.11.0, install-surface migration, the `wicked.qe.*` event rebrand,
|
|
28
|
+
repo archival, site redirects. Its 40 specialists and the acceptance trio became
|
|
29
|
+
garden's `qe` domain; its machine gate became crew's `/runs/:id/acceptance`; its data
|
|
30
|
+
layer became wicked-ledger + wicked-vault under `.wicked-qe/`. A standalone harness
|
|
31
|
+
would recreate the product we just paid to dissolve.
|
|
32
|
+
|
|
33
|
+
## Decision
|
|
34
|
+
|
|
35
|
+
**No new product.** The harness is a *campaign* capability distributed across the four
|
|
36
|
+
existing planes, under the name **"qe campaign"**.
|
|
37
|
+
|
|
38
|
+
| Concern | Plane | Home | Rationale |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| **Executor runtime** (model-free browser/API runner, vendored Playwright, wire-capture/read-back helpers — TH-4) | **Capability** | **wicked-garden**, `scripts/qe/runner` inside the qe domain | The executor is a tool any control plane invokes, like the rest of the qe pipeline (accept trio, gate.mjs) already in garden. Crew runs *governed workers*; it does not own domain tooling. Precedent: wicked-testing's executor skills landed in garden, only the gate landed in crew. | <!-- historical -->
|
|
41
|
+
| **Recon + generation** (estate-seeded capability inventory, scenario ladder — TH-7) | **Capability** | wicked-garden qe domain (`campaign` action) | Skill work: reads estate's graph + mem/search, emits scenario format v1 — never a parallel format. |
|
|
42
|
+
| **Schemas** (TH-5) | **Capability + Evidence** (two owners, deliberately) | `campaign-recon.schema.json` → **wicked-garden/schemas/** (sits beside assert_contracts.json, health_probe.json, wicked-pack.schema.json); scenario-evidence shape + `claim_level` enum (certified \| machinery-verified \| skipped) → **wicked-ledger manifest 2.1** via SCHEMA-CONTRACT.md | The recon artifact is a capability contract; the evidence shape is the system of record's contract. A single home would create the parallel-format drift the qe domain forbids. Reviewer validates against the ledger's schema before grading; schema-fail = INCONCLUSIVE. |
|
|
43
|
+
| **Scheduler** (durable parallel DAG over scenarios — TH-9) | **Control** | **wicked-core** `src/campaign.rs` (`launch_campaign`/`resume_campaign`, already built per DES-CAMPAIGN-001), exposed through **wicked-crew** `POST/GET /api/v1/campaigns` + WS passthrough of the Campaign* events | The scheduler exists; the work is exposure, not construction. Garden gets no scheduler. Governance (evaluator≠creator, deny-dominates, HITL gates) is crew's job by design. |
|
|
44
|
+
| **Evidence + acceptance** | **Evidence (foundation)** | **wicked-ledger** rows (scenarios/runs/verdicts) + **wicked-vault** artifacts under `.wicked-qe/evidence/<run-id>/`; crew's `GET /runs/:id/acceptance` re-derives the verdict from them | "Done" is re-derived from evidence, never asserted — the family's founding rule. Zero new gate or persistence code. |
|
|
45
|
+
| **Scoreboard** (TH-14) | **Experience** | **wicked-studio**, read-only in v1: scenario ladder, node status from Campaign* WS frames, verdict chips, evidence links, flake/cost trends from ledger insight queries | Studio is a pure client of crew's wire contract; a read surface adds no new authority. Authoring/triage is explicitly phase 2. |
|
|
46
|
+
|
|
47
|
+
### Naming
|
|
48
|
+
|
|
49
|
+
- **"qe campaign"** — the garden action a user invokes (extends the existing qe domain vocabulary).
|
|
50
|
+
- **"Campaigns"** — the studio surface.
|
|
51
|
+
- **`CampaignDef` / Campaign*** — wicked-core's terms, unchanged; core owns them via DES-CAMPAIGN-001.
|
|
52
|
+
- **Avoid** "interactive test harness" (collides with the wicked-interactive product) and any revival of the retired "wicked-testing" name. <!-- historical -->
|
|
53
|
+
|
|
54
|
+
## Consequences
|
|
55
|
+
|
|
56
|
+
1. **This ADR is the anti-scope-creep anchor.** Every TH task cites its plane
|
|
57
|
+
assignment from the table above: TH-4 (executor) → garden; TH-5 (schemas) → garden
|
|
58
|
+
+ wicked-ledger; TH-6 (gate wiring) → garden qe (gate.mjs emit) + ledger + crew acceptance; TH-7 (recon/
|
|
59
|
+
generation) → garden; TH-9 (scheduler exposure) → wicked-core-ts + crew; TH-12
|
|
60
|
+
(intake: plan proposed as a HITL gate) → garden `campaign_intake` glue over crew's
|
|
61
|
+
existing gate wire (elicitation follow-on = crew#358); TH-14
|
|
62
|
+
(scoreboard) → studio. A TH task proposing a new package outside these homes is
|
|
63
|
+
out of contract and needs a superseding ADR.
|
|
64
|
+
2. **No new install surface.** The campaign arrives with `wicked-garden` (capability),
|
|
65
|
+
`wicked-crew` (control + API), and the ledger/vault peers users already have.
|
|
66
|
+
Nothing new to publish, deprecate, or redirect later.
|
|
67
|
+
3. **Separation of duties is structural.** Garden authors and executes (writes
|
|
68
|
+
evidence, never verdicts of record); the qe accept trio grades in isolation; crew's
|
|
69
|
+
gate re-derives acceptance from ledger evidence, deny-dominates. No plane can
|
|
70
|
+
self-grade.
|
|
71
|
+
4. **Costs accepted:** the capability is spread across four repos, so cross-repo
|
|
72
|
+
contract discipline (scenario format v1, `wicked.qe.gate.*` payload, ledger manifest
|
|
73
|
+
versioning, `wicked-crew-api-types`) is load-bearing — schema and floor bumps move
|
|
74
|
+
through their owners' release trains, never ad hoc. Crew-side scheduler exposure is
|
|
75
|
+
a prerequisite for durable parallel runs; until it lands, campaigns run as ordinary
|
|
76
|
+
governed workflows.
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
id: wicked-garden-adr-0007
|
|
3
|
+
title: "Retarget inventory (brain graph surface → wicked-estate)"
|
|
4
|
+
status: retired
|
|
5
|
+
date: 2026-08-11
|
|
6
|
+
---
|
|
7
|
+
# ADR 0007 — Retarget inventory (brain graph surface → wicked-estate)
|
|
8
|
+
|
|
9
|
+
> **Renumbered 2026-08-29 (was ADR 0005)** — this companion checklist shared the number
|
|
10
|
+
> of [ADR 0005](0005-code-graph-re-homes-to-wicked-estate.md), the decision it executes
|
|
11
|
+
> (AW-12 / arch-R12 duplicate-number fix). Content below is unchanged. **Status: retired**
|
|
12
|
+
> — Stage S5 executed this inventory; line numbers reference the garden HEAD of its day.
|
|
13
|
+
|
|
14
|
+
<!-- historical-doc -->
|
|
2
15
|
|
|
3
16
|
Companion to [ADR 0005](0005-code-graph-re-homes-to-wicked-estate.md). This is the **actionable
|
|
4
17
|
checklist Stage S5 executes.** Every garden call-site that references wicked-brain's (now-retired)
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Brain Chunk Format — Cross-CLI Reference
|
|
2
2
|
|
|
3
|
+
<!-- historical-doc -->
|
|
4
|
+
> **RETIRED (2026-08, Phase 5-S7).** wicked-brain is retired and `~/.wicked-brain`
|
|
5
|
+
> is a **frozen archive — never write to it** (and never delete it). This format
|
|
6
|
+
> reference is preserved because the chunks written under it were migrated
|
|
7
|
+
> zero-loss into **wicked-estate** and keep `wicked-brain://…` source URIs there.
|
|
8
|
+
> **Do not write new chunks in this format.** To store knowledge or memories
|
|
9
|
+
> today, use wicked-garden's `mem` domain (`wicked-garden-mem` `store`/`ingest`)
|
|
10
|
+
> over wicked-estate. Everything below is historical reference only.
|
|
11
|
+
|
|
3
12
|
This document defines the wicked-brain chunk format so any CLI (Claude Code, Codex, Gemini, Copilot) can write chunks that integrate into the shared knowledge graph.
|
|
4
13
|
|
|
5
14
|
## Chunk File Structure
|