wicked-garden 12.29.1 → 12.31.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.
Files changed (220) hide show
  1. package/.claude-plugin/components.json +46 -4
  2. package/.claude-plugin/marketplace.json +3 -3
  3. package/.claude-plugin/plugin.json +4 -4
  4. package/.claude-plugin/specialist.json +1 -1
  5. package/.product/DES-001-technical-design.md +8 -7
  6. package/.product/RAID.md +4 -4
  7. package/.product/REQ-001-application-overview.md +2 -2
  8. package/.product/REQ-002-technology-constraints.md +3 -3
  9. package/.product/REQ-003-domain-model.md +1 -1
  10. package/.product/REQ-005-dod-criteria.md +7 -4
  11. package/CHANGELOG.md +3 -0
  12. package/CONTRIBUTING.md +14 -38
  13. package/ETHOS.md +3 -3
  14. package/README.md +28 -9
  15. package/WICKED_GARDEN_BUS_EVENTS.md +5 -3
  16. package/docs/README.md +4 -2
  17. package/docs/adr/0003-peers-gate-required-layers-optin.md +1 -1
  18. package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +6 -1
  19. package/docs/adr/0005-code-graph-re-homes-to-wicked-estate.md +131 -0
  20. package/docs/adr/0005-retarget-inventory.md +154 -0
  21. package/docs/domains.md +4 -4
  22. package/docs/extending.md +191 -0
  23. package/docs/getting-started.md +14 -14
  24. package/docs/required-peers.md +9 -4
  25. package/docs/v11/archetypes.md +3 -3
  26. package/hooks/hooks.json +1 -1
  27. package/hooks/scripts/bootstrap.py +129 -358
  28. package/hooks/scripts/notification.py +9 -1
  29. package/hooks/scripts/post_tool.py +11 -67
  30. package/hooks/scripts/pre_compact.py +18 -80
  31. package/hooks/scripts/pre_tool.py +12 -5
  32. package/hooks/scripts/prompt_submit.py +50 -122
  33. package/hooks/scripts/session_end.py +3 -3
  34. package/hooks/scripts/stop.py +80 -96
  35. package/hooks/scripts/subagent_lifecycle.py +12 -2
  36. package/hooks/scripts/task_completed.py +16 -15
  37. package/install.mjs +92 -9
  38. package/package.json +2 -2
  39. package/schemas/wicked-pack.schema.json +123 -0
  40. package/scripts/_bus.py +52 -5
  41. package/scripts/_bus_catalog_gen.py +2 -2
  42. package/scripts/_bus_consumers.json +2 -26
  43. package/scripts/_context_backend.py +471 -0
  44. package/scripts/_estate_client.py +794 -0
  45. package/scripts/_heavy_cadence.py +15 -73
  46. package/scripts/_integration_resolver.py +38 -91
  47. package/scripts/_pack_registry.py +672 -0
  48. package/scripts/_session.py +7 -15
  49. package/scripts/_validate_registry.py +37 -10
  50. package/scripts/compiler/phase0/wire_vault.py +26 -10
  51. package/scripts/crew/flow_compiler.py +7 -3
  52. package/scripts/crew/specialist_resolver.py +102 -7
  53. package/scripts/delivery/telemetry.py +14 -2
  54. package/scripts/domain/_rule_extractor.py +7 -0
  55. package/scripts/domain/batch_extract.py +226 -0
  56. package/scripts/domain/extract_loop.py +267 -16
  57. package/scripts/domain/rule_model_api.py +87 -0
  58. package/scripts/engineering/patch/estate_db.py +345 -0
  59. package/scripts/engineering/patch/generators/__init__.py +1 -1
  60. package/scripts/engineering/patch/patch.py +18 -109
  61. package/scripts/engineering/patch/safety.py +6 -4
  62. package/scripts/jam/consensus.py +1 -1
  63. package/scripts/loom/compose.py +2 -2
  64. package/scripts/loom/manifest.py +28 -40
  65. package/scripts/loom/resolve.py +1 -1
  66. package/scripts/mem/__init__.py +0 -0
  67. package/scripts/mem/auto_memorize.py +494 -0
  68. package/scripts/mem/estate_memory.py +385 -0
  69. package/scripts/{_brain_ingest → mem}/session_fact_extractor.py +163 -6
  70. package/scripts/pack/__init__.py +0 -0
  71. package/scripts/pack/check.py +376 -0
  72. package/scripts/qe/lib/context-md-validator.mjs +137 -0
  73. package/scripts/qe/lib/exec-with-timeout.mjs +178 -0
  74. package/scripts/qe/lib/gate.mjs +415 -0
  75. package/scripts/qe/vault_gate.py +1 -1
  76. package/scripts/sentinel/invariants.py +25 -55
  77. package/scripts/smaht/adapters/brain_adapter.py +64 -78
  78. package/scripts/smaht/adapters/delegation_adapter.py +5 -5
  79. package/scripts/smaht/adapters/domain_adapter.py +1 -1
  80. package/scripts/smaht/adapters/events_adapter.py +1 -1
  81. package/scripts/smaht/context_package.py +15 -15
  82. package/scripts/where_am_i.py +2 -48
  83. package/skills/agentic-architect/SKILL.md +1 -1
  84. package/skills/agentic-performance-analyst/SKILL.md +1 -1
  85. package/skills/agentic-safety-reviewer/SKILL.md +6 -1
  86. package/skills/archetype/refs/build.md +1 -1
  87. package/skills/core/SKILL.md +20 -15
  88. package/skills/core/refs/install.md +5 -7
  89. package/skills/core/refs/report-issue.md +1 -1
  90. package/skills/core/refs/setup.md +25 -56
  91. package/skills/data/refs/data.md +1 -1
  92. package/skills/data/refs/pipeline.md +2 -2
  93. package/skills/data-engineer/SKILL.md +2 -2
  94. package/skills/deliberate/refs/run-workflow.md +3 -3
  95. package/skills/domain/vendor/README.md +3 -3
  96. package/skills/engineering/patch/SKILL.md +14 -4
  97. package/skills/engineering/refs/plan.md +1 -1
  98. package/skills/engineering/refs/review.md +1 -1
  99. package/skills/engineering-migration-engineer/SKILL.md +1 -1
  100. package/skills/ground/SKILL.md +36 -36
  101. package/skills/integration-discovery/SKILL.md +3 -3
  102. package/skills/integration-discovery/refs/cli-detection.md +3 -3
  103. package/skills/integration-discovery/refs/discovery-sources.md +3 -3
  104. package/skills/integration-discovery/refs/task-patterns.md +10 -10
  105. package/skills/jam/SKILL.md +6 -6
  106. package/skills/jam/refs/quick.md +1 -1
  107. package/skills/jam/refs/revisit.md +8 -11
  108. package/skills/jam/refs/synthesis-patterns.md +1 -1
  109. package/skills/jam-brainstorm-facilitator/SKILL.md +11 -11
  110. package/skills/jam-council/SKILL.md +5 -5
  111. package/skills/mem/SKILL.md +136 -0
  112. package/skills/mem/refs/scopes.md +80 -0
  113. package/skills/mem-capture/SKILL.md +89 -0
  114. package/skills/mem-ingest/SKILL.md +131 -0
  115. package/skills/platform/audit/SKILL.md +2 -2
  116. package/skills/platform/compliance/SKILL.md +2 -2
  117. package/skills/platform/peer-health/SKILL.md +6 -6
  118. package/skills/platform-compliance-officer/SKILL.md +11 -2
  119. package/skills/platform-privacy-expert/SKILL.md +1 -1
  120. package/skills/platform-security-engineer/SKILL.md +14 -4
  121. package/skills/product/SKILL.md +4 -4
  122. package/skills/product/acceptance-criteria/SKILL.md +1 -1
  123. package/skills/product/listen/SKILL.md +2 -2
  124. package/skills/product/refs/acceptance.md +3 -3
  125. package/skills/product/refs/align.md +1 -1
  126. package/skills/product/refs/elicit.md +1 -1
  127. package/skills/product/refs/listen.md +1 -1
  128. package/skills/product/requirements-analysis/SKILL.md +2 -2
  129. package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +2 -2
  130. package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +3 -3
  131. package/skills/product/strategy/SKILL.md +3 -3
  132. package/skills/product/synthesize/SKILL.md +1 -1
  133. package/skills/product/ux-review/SKILL.md +1 -1
  134. package/skills/product-a11y-expert/SKILL.md +11 -2
  135. package/skills/product-requirements-analyst/SKILL.md +10 -2
  136. package/skills/product-ui-reviewer/SKILL.md +1 -1
  137. package/skills/product-ux-designer/SKILL.md +1 -1
  138. package/skills/product-value-strategist/SKILL.md +1 -1
  139. package/skills/qe/SKILL.md +168 -0
  140. package/skills/qe/refs/accept.md +464 -0
  141. package/skills/qe/refs/author.md +126 -0
  142. package/skills/qe/refs/evidence.md +238 -0
  143. package/skills/qe/refs/execute.md +154 -0
  144. package/skills/qe/refs/insight.md +149 -0
  145. package/skills/qe/refs/integration.md +274 -0
  146. package/skills/qe/refs/plan.md +148 -0
  147. package/skills/qe/refs/review.md +147 -0
  148. package/skills/qe/refs/scenario-format.md +307 -0
  149. package/skills/qe/refs/setup.md +130 -0
  150. package/skills/qe-a11y-test-engineer/SKILL.md +259 -0
  151. package/skills/qe-acceptance-test-executor/SKILL.md +215 -0
  152. package/skills/qe-acceptance-test-reviewer/SKILL.md +200 -0
  153. package/skills/qe-acceptance-test-writer/SKILL.md +162 -0
  154. package/skills/qe-ai-feature-test-engineer/SKILL.md +383 -0
  155. package/skills/qe-chaos-test-engineer/SKILL.md +257 -0
  156. package/skills/qe-code-analyzer/SKILL.md +79 -0
  157. package/skills/qe-compliance-test-engineer/SKILL.md +271 -0
  158. package/skills/qe-contract-testing-engineer/SKILL.md +53 -0
  159. package/skills/qe-coverage-archaeologist/SKILL.md +52 -0
  160. package/skills/qe-data-quality-tester/SKILL.md +51 -0
  161. package/skills/qe-e2e-orchestrator/SKILL.md +51 -0
  162. package/skills/qe-exploratory-tester/SKILL.md +56 -0
  163. package/skills/qe-flaky-test-hunter/SKILL.md +252 -0
  164. package/skills/qe-fuzz-property-engineer/SKILL.md +58 -0
  165. package/skills/qe-iac-test-engineer/SKILL.md +247 -0
  166. package/skills/qe-incident-to-scenario-synthesizer/SKILL.md +288 -0
  167. package/skills/qe-integration-test-engineer/SKILL.md +46 -0
  168. package/skills/qe-load-performance-engineer/SKILL.md +59 -0
  169. package/skills/qe-localization-test-engineer/SKILL.md +49 -0
  170. package/skills/qe-mutation-test-engineer/SKILL.md +240 -0
  171. package/skills/qe-observability-test-engineer/SKILL.md +45 -0
  172. package/skills/qe-production-quality-engineer/SKILL.md +47 -0
  173. package/skills/qe-release-readiness-engineer/SKILL.md +240 -0
  174. package/skills/qe-requirements-quality-analyst/SKILL.md +56 -0
  175. package/skills/qe-risk-assessor/SKILL.md +48 -0
  176. package/skills/qe-scenario-executor/SKILL.md +185 -0
  177. package/skills/qe-security-test-engineer/SKILL.md +474 -0
  178. package/skills/qe-semantic-reviewer/SKILL.md +27 -1
  179. package/skills/qe-snapshot-hygiene-auditor/SKILL.md +274 -0
  180. package/skills/qe-test-automation-engineer/SKILL.md +66 -0
  181. package/skills/qe-test-code-quality-auditor/SKILL.md +299 -0
  182. package/skills/qe-test-data-manager/SKILL.md +58 -0
  183. package/skills/qe-test-designer/SKILL.md +83 -0
  184. package/skills/qe-test-impact-analyzer/SKILL.md +227 -0
  185. package/skills/qe-test-oracle/SKILL.md +177 -0
  186. package/skills/qe-test-strategist/SKILL.md +141 -0
  187. package/skills/qe-testability-reviewer/SKILL.md +49 -0
  188. package/skills/qe-ui-component-test-engineer/SKILL.md +48 -0
  189. package/skills/qe-visual-regression-engineer/SKILL.md +290 -0
  190. package/skills/search/SKILL.md +90 -88
  191. package/skills/search/codebase-narrator/SKILL.md +2 -2
  192. package/skills/search/refs/answer.md +61 -0
  193. package/skills/search/refs/hotspots.md +25 -43
  194. package/skills/search/refs/service-map.md +5 -11
  195. package/skills/smaht/SKILL.md +15 -14
  196. package/skills/smaht/intent/SKILL.md +2 -2
  197. package/skills/smaht/refs/briefing.md +1 -1
  198. package/skills/swarm/SKILL.md +1 -1
  199. package/skills/swarm/refs/receipts-and-evidence.md +1 -1
  200. package/skills/workflow/SKILL.md +14 -4
  201. package/skills/workflow/refs/integration.md +6 -6
  202. package/scripts/_brain_ingest/__init__.py +0 -2
  203. package/scripts/_brain_port.py +0 -163
  204. package/scripts/_wicked_testing_probe.py +0 -277
  205. package/scripts/engineering/patch/codegraph_db.py +0 -125
  206. package/scripts/smaht/_bus_consumers.py +0 -98
  207. package/skills/multi-model/SKILL.md +0 -43
  208. package/skills/multi-model/refs/aichat.md +0 -119
  209. package/skills/multi-model/refs/aider.md +0 -100
  210. package/skills/multi-model/refs/auditability.md +0 -238
  211. package/skills/multi-model/refs/codex.md +0 -169
  212. package/skills/multi-model/refs/context.md +0 -306
  213. package/skills/multi-model/refs/copilot.md +0 -161
  214. package/skills/multi-model/refs/examples.md +0 -224
  215. package/skills/multi-model/refs/gemini.md +0 -185
  216. package/skills/multi-model/refs/goose.md +0 -112
  217. package/skills/multi-model/refs/llm.md +0 -124
  218. package/skills/multi-model/refs/opencode.md +0 -196
  219. package/skills/multi-model/refs/orchestration.md +0 -188
  220. package/skills/multi-model/refs/pi.md +0 -208
@@ -2,8 +2,8 @@
2
2
  "_comment": "Issue #328: Component declarations for wicked-garden plugin. Claude Code plugin.json does not yet support inline component declarations beyond path overrides. This manifest documents all components for tooling, validation, and future schema support. When plugin.json gains a 'components' field, merge this data into plugin.json. The plugin is skills-only: former commands/ became actions of consolidated per-domain skills, and former agents/ became standalone context:fork worker skills (enumerated under fork_skills). Regenerate derived blocks with scripts/ci/sync_components.py.",
3
3
  "domains": ["agentic", "crew", "data", "engineering", "jam", "mem", "persona", "platform", "product", "qe", "search", "smaht"],
4
4
  "summary": {
5
- "skills": 99,
6
- "fork_skills": 38,
5
+ "skills": 141,
6
+ "fork_skills": 78,
7
7
  "hooks": 13,
8
8
  "specialists": 7
9
9
  },
@@ -35,7 +35,9 @@
35
35
  "jam": ["jam"],
36
36
  "jam-brainstorm-facilitator": ["jam-brainstorm-facilitator"],
37
37
  "jam-council": ["jam-council"],
38
- "multi-model": ["multi-model"],
38
+ "mem": ["mem"],
39
+ "mem-capture": ["mem-capture"],
40
+ "mem-ingest": ["mem-ingest"],
39
41
  "persona": ["persona"],
40
42
  "persona-agent": ["persona-agent"],
41
43
  "platform": ["audit", "compliance", "errors", "gate-benchmark-rebaseline", "gh-cli", "github-actions", "gitlab-ci", "glab-cli", "health", "observability", "peer-health", "platform", "prereq-doctor"],
@@ -49,7 +51,47 @@
49
51
  "product-ux-designer": ["product-ux-designer"],
50
52
  "product-value-strategist": ["product-value-strategist"],
51
53
  "prove": ["prove"],
54
+ "qe": ["qe"],
55
+ "qe-a11y-test-engineer": ["qe-a11y-test-engineer"],
56
+ "qe-acceptance-test-executor": ["qe-acceptance-test-executor"],
57
+ "qe-acceptance-test-reviewer": ["qe-acceptance-test-reviewer"],
58
+ "qe-acceptance-test-writer": ["qe-acceptance-test-writer"],
59
+ "qe-ai-feature-test-engineer": ["qe-ai-feature-test-engineer"],
60
+ "qe-chaos-test-engineer": ["qe-chaos-test-engineer"],
61
+ "qe-code-analyzer": ["qe-code-analyzer"],
62
+ "qe-compliance-test-engineer": ["qe-compliance-test-engineer"],
63
+ "qe-contract-testing-engineer": ["qe-contract-testing-engineer"],
64
+ "qe-coverage-archaeologist": ["qe-coverage-archaeologist"],
65
+ "qe-data-quality-tester": ["qe-data-quality-tester"],
66
+ "qe-e2e-orchestrator": ["qe-e2e-orchestrator"],
67
+ "qe-exploratory-tester": ["qe-exploratory-tester"],
68
+ "qe-flaky-test-hunter": ["qe-flaky-test-hunter"],
69
+ "qe-fuzz-property-engineer": ["qe-fuzz-property-engineer"],
70
+ "qe-iac-test-engineer": ["qe-iac-test-engineer"],
71
+ "qe-incident-to-scenario-synthesizer": ["qe-incident-to-scenario-synthesizer"],
72
+ "qe-integration-test-engineer": ["qe-integration-test-engineer"],
73
+ "qe-load-performance-engineer": ["qe-load-performance-engineer"],
74
+ "qe-localization-test-engineer": ["qe-localization-test-engineer"],
75
+ "qe-mutation-test-engineer": ["qe-mutation-test-engineer"],
76
+ "qe-observability-test-engineer": ["qe-observability-test-engineer"],
77
+ "qe-production-quality-engineer": ["qe-production-quality-engineer"],
78
+ "qe-release-readiness-engineer": ["qe-release-readiness-engineer"],
79
+ "qe-requirements-quality-analyst": ["qe-requirements-quality-analyst"],
80
+ "qe-risk-assessor": ["qe-risk-assessor"],
81
+ "qe-scenario-executor": ["qe-scenario-executor"],
82
+ "qe-security-test-engineer": ["qe-security-test-engineer"],
52
83
  "qe-semantic-reviewer": ["qe-semantic-reviewer"],
84
+ "qe-snapshot-hygiene-auditor": ["qe-snapshot-hygiene-auditor"],
85
+ "qe-test-automation-engineer": ["qe-test-automation-engineer"],
86
+ "qe-test-code-quality-auditor": ["qe-test-code-quality-auditor"],
87
+ "qe-test-data-manager": ["qe-test-data-manager"],
88
+ "qe-test-designer": ["qe-test-designer"],
89
+ "qe-test-impact-analyzer": ["qe-test-impact-analyzer"],
90
+ "qe-test-oracle": ["qe-test-oracle"],
91
+ "qe-test-strategist": ["qe-test-strategist"],
92
+ "qe-testability-reviewer": ["qe-testability-reviewer"],
93
+ "qe-ui-component-test-engineer": ["qe-ui-component-test-engineer"],
94
+ "qe-visual-regression-engineer": ["qe-visual-regression-engineer"],
53
95
  "runtime-exec": ["runtime-exec"],
54
96
  "search": ["codebase-narrator", "search"],
55
97
  "smaht": ["discovery", "intent", "propose-skills", "smaht"],
@@ -58,7 +100,7 @@
58
100
  "workflow": ["workflow"],
59
101
  "worktrees": ["worktrees"]
60
102
  },
61
- "fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "wicked-garden-crew-implementer", "wicked-garden-crew-researcher", "wicked-garden-crew-reviewer", "wicked-garden-data-engineer", "wicked-garden-domain-coverage", "wicked-garden-domain-extractor", "wicked-garden-domain-modeler", "wicked-garden-engineering-api-documentarian", "wicked-garden-engineering-conformance-reviewer", "wicked-garden-engineering-debugging", "wicked-garden-engineering-migration-engineer", "wicked-garden-engineering-solution-architect", "wicked-garden-ground", "wicked-garden-integration-discovery", "wicked-garden-jam-brainstorm-facilitator", "wicked-garden-jam-council", "wicked-garden-multi-model", "wicked-garden-persona-agent", "wicked-garden-platform-compliance-officer", "wicked-garden-platform-privacy-expert", "wicked-garden-platform-security-engineer", "wicked-garden-product-a11y-expert", "wicked-garden-product-requirements-analyst", "wicked-garden-product-ui-reviewer", "wicked-garden-product-ux-designer", "wicked-garden-product-value-strategist", "wicked-garden-qe-semantic-reviewer", "wicked-garden-runtime-exec", "wicked-garden-smaht", "wicked-garden-swarm", "wicked-garden-wickedizer", "wicked-garden-workflow", "wicked-garden-worktrees"],
103
+ "fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "wicked-garden-crew-implementer", "wicked-garden-crew-researcher", "wicked-garden-crew-reviewer", "wicked-garden-data-engineer", "wicked-garden-domain-coverage", "wicked-garden-domain-extractor", "wicked-garden-domain-modeler", "wicked-garden-engineering-api-documentarian", "wicked-garden-engineering-conformance-reviewer", "wicked-garden-engineering-debugging", "wicked-garden-engineering-migration-engineer", "wicked-garden-engineering-solution-architect", "wicked-garden-ground", "wicked-garden-integration-discovery", "wicked-garden-jam-brainstorm-facilitator", "wicked-garden-jam-council", "wicked-garden-mem-capture", "wicked-garden-mem-ingest", "wicked-garden-persona-agent", "wicked-garden-platform-compliance-officer", "wicked-garden-platform-privacy-expert", "wicked-garden-platform-security-engineer", "wicked-garden-product-a11y-expert", "wicked-garden-product-requirements-analyst", "wicked-garden-product-ui-reviewer", "wicked-garden-product-ux-designer", "wicked-garden-product-value-strategist", "wicked-garden-qe-a11y-test-engineer", "wicked-garden-qe-acceptance-test-executor", "wicked-garden-qe-acceptance-test-reviewer", "wicked-garden-qe-acceptance-test-writer", "wicked-garden-qe-ai-feature-test-engineer", "wicked-garden-qe-chaos-test-engineer", "wicked-garden-qe-code-analyzer", "wicked-garden-qe-compliance-test-engineer", "wicked-garden-qe-contract-testing-engineer", "wicked-garden-qe-coverage-archaeologist", "wicked-garden-qe-data-quality-tester", "wicked-garden-qe-e2e-orchestrator", "wicked-garden-qe-exploratory-tester", "wicked-garden-qe-flaky-test-hunter", "wicked-garden-qe-fuzz-property-engineer", "wicked-garden-qe-iac-test-engineer", "wicked-garden-qe-incident-to-scenario-synthesizer", "wicked-garden-qe-integration-test-engineer", "wicked-garden-qe-load-performance-engineer", "wicked-garden-qe-localization-test-engineer", "wicked-garden-qe-mutation-test-engineer", "wicked-garden-qe-observability-test-engineer", "wicked-garden-qe-production-quality-engineer", "wicked-garden-qe-release-readiness-engineer", "wicked-garden-qe-requirements-quality-analyst", "wicked-garden-qe-risk-assessor", "wicked-garden-qe-scenario-executor", "wicked-garden-qe-security-test-engineer", "wicked-garden-qe-semantic-reviewer", "wicked-garden-qe-snapshot-hygiene-auditor", "wicked-garden-qe-test-automation-engineer", "wicked-garden-qe-test-code-quality-auditor", "wicked-garden-qe-test-data-manager", "wicked-garden-qe-test-designer", "wicked-garden-qe-test-impact-analyzer", "wicked-garden-qe-test-oracle", "wicked-garden-qe-test-strategist", "wicked-garden-qe-testability-reviewer", "wicked-garden-qe-ui-component-test-engineer", "wicked-garden-qe-visual-regression-engineer", "wicked-garden-runtime-exec", "wicked-garden-smaht", "wicked-garden-swarm", "wicked-garden-wickedizer", "wicked-garden-workflow", "wicked-garden-worktrees"],
62
104
  "hooks": ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "TaskCompleted", "SubagentStart", "SubagentStop", "PermissionRequest", "Notification", "PreCompact", "Stop", "SessionEnd"],
63
105
  "specialists": [
64
106
  {
@@ -7,9 +7,9 @@
7
7
  {
8
8
  "name": "wicked-garden",
9
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 (auto-installed via wicked-testing) and re-derives through garden's built-in engine; testing/brain/bus are opt-in layers.",
11
- "version": "12.29.1"
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
12
  }
13
13
  ],
14
- "version": "12.29.1"
14
+ "version": "12.31.0"
15
15
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "wicked-garden",
3
- "version": "12.29.1",
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 codegraph + injected bus/dispatch/capability edges power blast-radius & lineage. Plus deterministic multi-file refactor (wicked-patch), cross-session memory (wicked-brain), real multi-model second opinions (jam:council), portable expertise as on-demand skill-refs, and evidence-gated testing (wicked-testing). 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 (installed automatically via wicked-testing); wicked-testing, wicked-brain, and wicked-bus are opt-in layers \u2014 install what you'll use, the toolkit works without the rest.",
5
- "wicked_testing_version": "^0.8.0",
6
- "wicked_vault_version": "^0.4.0",
3
+ "version": "12.31.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 — 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 — 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 — steering, not a pipeline — 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 — install what you'll use, the toolkit works without the rest.",
5
+ "wicked_vault_version": "^0.5.0",
6
+ "wicked_ledger_version": "^0.2.0",
7
7
  "wicked_brain_version": "^0.18.0",
8
8
  "wicked_bus_version": "^2.0.0",
9
9
  "author": {
@@ -23,7 +23,7 @@
23
23
  {
24
24
  "name": "qe",
25
25
  "role": "quality-engineering",
26
- "description": "Quality Engineering specialist powered by wicked-testing peer plugin. Crew dispatches QE agents by their wicked-testing:* subagent_type names. Covers test strategy, scenario generation, testability review, semantic alignment, risk assessment, test automation, and shift-left quality practices. Requires wicked-testing ^0.2 installed.",
26
+ "description": "Quality Engineering specialist — in-catalog qe domain (Phase 6b). Crew dispatches QE workers by their wicked-garden-qe-* skill names (router: wicked-garden-qe). Covers test strategy, scenario generation, testability review, semantic alignment, risk assessment, test automation, evidence-gated acceptance testing, and shift-left quality practices.",
27
27
  "enhances": ["clarify", "design", "qe", "build", "review", "operate", "*"]
28
28
  },
29
29
  {
@@ -182,9 +182,10 @@ wicked-patch is the deterministic multi-file transformation engine. It is expose
182
182
 
183
183
  ```
184
184
  Developer invokes patch action: /wicked-garden-engineering patch-plan OldName
185
- → engineering-patch skill reads codegraph from wicked-brain:
186
- .codegraph/codegraph.db (structural graph, tree-sitter)
187
- + injected edges (bus producer→consumer, dispatch, capability)
185
+ → engineering-patch skill reads the wicked-estate graph (ADR 0005):
186
+ built by `wicked-estate index` (75-language tree-sitter, in-binary),
187
+ adapted to the patch schema via estate_db.py (.codegraph/estate.db)
188
+ + injected edges (bus producer→consumer, dispatch, capability, archetype)
188
189
  → computes full affected file set:
189
190
  direct references (grep-visible)
190
191
  + injected-edge references (not grep-visible)
@@ -203,7 +204,7 @@ Developer invokes apply: /wicked-garden-engineering apply <patch-file>
203
204
 
204
205
  New language support: `/wicked-garden-engineering new-generator` creates a generator for an additional language. Generators implement a documented interface; adding one requires no change to the patch core.
205
206
 
206
- wicked-patch and wicked-brain share the same codegraph database (`.codegraph/codegraph.db`). The `wicked-garden-search index` action refreshes both layers — brain (semantic) and codegraph (structural).
207
+ wicked-patch and the `wicked-garden-search` actions read the same wicked-estate graph. The `wicked-garden-search index` action (`wicked-estate index <path>`) refreshes the static graph and re-applies the injected-edge rules in one pass (ADR 0005).
207
208
 
208
209
  ---
209
210
 
@@ -254,9 +255,9 @@ Per-session ephemeral shared state. Not persisted across process restarts. Used
254
255
 
255
256
  wicked-bus integration. Emits events in 4-segment format (`wicked.<domain>.<noun>.<past-tense-verb>`). The bus provides at-least-once delivery, append-only event records, and FTS5 search via the wicked-bus backing store.
256
257
 
257
- ### codegraph.db
258
+ ### estate graph
258
259
 
259
- Structural code graph built and maintained by wicked-brain at `.codegraph/codegraph.db`. Consumed by wicked-patch. The `search:index` action refreshes it.
260
+ Structural code graph built and maintained by wicked-estate (`wicked-estate index <path>`; DB at `.wicked-estate/graph.db` by default, patch adapter DB at `.codegraph/estate.db`). Includes garden's injected archetype edges via `.wicked-estate-extractors/archetype.toml`. Consumed by wicked-patch and the search skill's actions. The `search:index` action refreshes it (ADR 0005).
260
261
 
261
262
  ---
262
263
 
@@ -304,6 +305,6 @@ Skills check for daemon availability before dispatching to it. If the daemon is
304
305
  | wicked-testing | `scripts/qe/` (acceptance pipeline) | Installed peer; invoked by acceptance skills |
305
306
  | wicked-brain | `scripts/crew/`, search/smaht skills | Brain server on port 4243; auto-starts on skill invocation |
306
307
  | wicked-bus | `scripts/_bus.py` | Installed peer; event emit/consume |
307
- | codegraph | `.codegraph/codegraph.db` | Built by wicked-brain; consumed by patch skill |
308
+ | wicked-estate | `wicked-estate index` / estate MCP tools | `WICKED_ESTATE_BIN` env → PATH → `~/.local/bin`; consumed by search + patch skills |
308
309
 
309
310
  All peers degrade gracefully on absence — except the evidence gate, which fails closed when vault or loom is unreachable. A transient peer outage never invents a pass.
package/.product/RAID.md CHANGED
@@ -16,7 +16,7 @@ review-required: true
16
16
  |----|------|-----------|--------|------------|
17
17
  | RISK-001 | Archetype detection accuracy degrades for ambiguous or very short prompts | Medium | Medium | Detector returns confidence score; low-confidence prompts prompt for clarification. Multi-archetype output handles mixed-intent work. |
18
18
  | RISK-002 | wicked-loom/wicked-vault peer absent → evidence gate fails closed | High (setup) | Low (expected) | Failing closed is the intended behavior. `/wg-check` validates peers at setup; setup skill guides installation. |
19
- | RISK-003 | codegraph not built → blast-radius/lineage/wicked-patch unavailable | High (optional) | Medium | codegraph is explicitly opt-in; skills degrade gracefully to text-search when graph is absent. |
19
+ | RISK-003 | wicked-estate graph not built → blast-radius/lineage/wicked-patch unavailable | High (optional) | Medium | wicked-estate is explicitly opt-in; skills degrade gracefully to text-search when the graph is absent (and flag that injected relationships are missing). |
20
20
  | RISK-004 | Plugin not loaded in `claude -p` non-interactive mode | Medium | High | Documented mitigation: user must add `--plugin-dir` via clis.toml override (garden#994 resolution). Long-term fix: persistent worker sessions (core#13). |
21
21
  | RISK-005 | Council seat (Antigravity/Codex) unavailable or returns garbage | Medium | Low | Council aggregation tolerates partial failures; the skill surfaces which seats failed. |
22
22
  | RISK-006 | Hook scripts fail on Windows without correct Python fallback | Low | High | All scripts use cross-platform patterns (tempfile.gettempdir, python fallback chain). CI must include Windows runner. |
@@ -30,7 +30,7 @@ review-required: true
30
30
  |----|-----------|
31
31
  | ASS-001 | The host harness (Claude Code, Codex, Cursor, …) handles all planning, parallelism, and LLM calls. wicked-garden does not re-implement harness capabilities. |
32
32
  | ASS-002 | Users install the required peers (`wicked-testing`/`wicked-vault`, `wicked-loom`) before using the evidence gate. The setup skill validates this. |
33
- | ASS-003 | The codegraph (`.codegraph/codegraph.db`) is built and up-to-date when blast-radius/lineage/wicked-patch are used. |
33
+ | ASS-003 | The wicked-estate graph (`wicked-estate index <path>`) is built and up-to-date when blast-radius/lineage/wicked-patch are used. |
34
34
  | ASS-004 | Harness plugins are loaded in interactive mode; non-interactive (`claude -p`) mode requires explicit plugin-dir configuration. |
35
35
  | ASS-005 | The `WICKED_VAULT_ACTOR` environment variable is set to a meaningful, stable actor identity for hard-gate evidence recording (not OS `$USER`). |
36
36
  | ASS-006 | wicked-bus is optional; garden emits events fail-open when bus is unavailable. |
@@ -55,8 +55,8 @@ review-required: true
55
55
  | wicked-vault ≥ 0.4.0 | Runtime | Yes (for evidence gate) | Evidence backend. `0.4.0` introduced fail-closed `attest` on weak identity. |
56
56
  | wicked-loom | Runtime | Yes (for evidence gate) | Gate/resolve engine. Resolved via `WICKED_LOOM_BIN` → config → PATH → `npx`. |
57
57
  | wicked-testing | Runtime | Yes (for acceptance) | The acceptance pipeline is the standard gate mechanism. |
58
- | wicked-brain | Runtime | Optional | Cross-session memory + codegraph. Required for blast-radius, lineage, wicked-patch. |
58
+ | wicked-brain | Runtime | Optional | Cross-session memory + semantic search. |
59
59
  | wicked-bus | Runtime | Optional | Event audit trail. Garden emits events fail-open without it. |
60
- | codegraph (`@colbymchenry/codegraph`) | Runtime | Optional | Static graph builder. Powers blast-radius/lineage/wicked-patch. |
60
+ | wicked-estate | Runtime | Optional | Code-graph owner (ADR 0005): `wicked-estate index` + MCP tools. Powers blast-radius/lineage/hotspots/wicked-patch. Resolved via `WICKED_ESTATE_BIN` → PATH → `~/.local/bin`. |
61
61
  | Python ≥ 3.9 | Runtime | Yes | Required for all hook scripts and CLI tools. |
62
62
  | node.js ≥ 18 | Runtime | Yes | Required for npm peer installs and wicked-vault/loom. |
@@ -15,7 +15,7 @@ review-required: true
15
15
  wicked-garden is a Claude Code plugin (v12.28.1) that fills the gaps modern coding-agent harnesses cannot close alone. The premise is direct: harnesses — Claude Code, Codex, Cursor, Aider, OpenCode, Zed/ACP, and others — already plan, parallelize, and execute well. wicked-garden does not compete with that; it adds only what a planner-executor genuinely cannot do on its own:
16
16
 
17
17
  - **Evidence-gated done** — re-derives "done" from recorded evidence via the internal loom engine and wicked-vault; a self-asserted "tests pass" cannot lie its way green.
18
- - **Relationships grep cannot see** — codegraph + injected event-bus/dispatch/capability edges power blast-radius and lineage analysis.
18
+ - **Relationships grep cannot see** — the wicked-estate code graph + injected event-bus/dispatch/capability/archetype edges power blast-radius and lineage analysis (ADR 0005).
19
19
  - **Deterministic multi-file refactor** — wicked-patch applies graph-driven renames and field additions across an entire codebase without leaving silent half-applied states.
20
20
  - **Cross-session memory** — wicked-brain persists decisions, patterns, and gotchas across sessions; knowledge that only lives in chat history does not exist.
21
21
  - **Real multi-model second opinions** — the jam:council skill convenes external LLM CLIs (Claude Code, Antigravity, Codex, local models) for independent evaluation; it is not the model talking to itself.
@@ -86,7 +86,7 @@ The plugin installs via `/plugin install wicked-garden` into any Claude Code ses
86
86
 
87
87
  1. A developer needs to rename a domain type across a large codebase — source files, tests, migration files, configuration, and documentation.
88
88
  2. They invoke the patch skill: `/wicked-garden-engineering rename OldName NewName`.
89
- 3. The `wicked-garden-engineering-patch` nested skill reads the codegraph from wicked-brain (`.codegraph/codegraph.db`), identifies all nodes referencing `OldName`, and computes the full set of affected files including injected edges (bus producer→consumer, dispatch links) that grep cannot see.
89
+ 3. The `wicked-garden-engineering-patch` nested skill reads the wicked-estate graph (built by `wicked-estate index`, adapted via `scripts/engineering/patch/estate_db.py`), identifies all nodes referencing `OldName`, and computes the full set of affected files including injected edges (bus producer→consumer, dispatch links) that grep cannot see.
90
90
  4. The skill shows the patch plan (files affected, kinds of change, risk surface). The developer approves or scopes the change.
91
91
  5. On approval, the patch applies deterministically using the language-specific generator for each file type. Generators exist out of the box for Python, TypeScript, Java, Go, SQL, Rust, Kotlin, C#, PHP, and Ruby. A `new-generator` action lets contributors add additional languages.
92
92
  6. The result is a complete, consistent rename across every file that references the symbol — including the relationships grep cannot see.
@@ -42,10 +42,10 @@ Three additional peers are opt-in:
42
42
  | Peer | npm Package | Required Version | Role |
43
43
  |------|-------------|-----------------|------|
44
44
  | wicked-testing | `wicked-testing` | `^0.8.0` | Acceptance testing gate; also installs wicked-vault as a transitive dependency |
45
- | wicked-brain | `wicked-brain` | `^0.18.0` | Cross-session memory, code graph, semantic search |
45
+ | wicked-brain | `wicked-brain` | `^0.18.0` | Cross-session memory, semantic search (the code graph moved to wicked-estate, ADR 0005) |
46
46
  | wicked-bus | `wicked-bus` | `^2.0.0` | Event audit trail, append-only event store, FTS5 search |
47
47
 
48
- wicked-understanding (repo playbooks from HEAD) and codegraph (structural code intelligence) are additional optional integrations.
48
+ wicked-understanding (repo playbooks from HEAD) and wicked-estate (structural code intelligence — the code graph, ADR 0005) are additional optional integrations.
49
49
 
50
50
  ---
51
51
 
@@ -57,7 +57,7 @@ wicked-understanding (repo playbooks from HEAD) and codegraph (structural code i
57
57
 
58
58
  **SessionState** (`scripts/_session.py`) — per-session ephemeral shared state. Does not persist across process restarts.
59
59
 
60
- **codegraph.db** — wicked-brain builds and maintains this structural code graph at `.codegraph/codegraph.db`. wicked-patch consumes it for multi-file refactor operations.
60
+ **estate graph** — wicked-estate builds and maintains the structural code graph (`wicked-estate index <path>`, DB at `.wicked-estate/graph.db` by default; the patch adapter materializes `.codegraph/estate.db`). wicked-patch consumes it for multi-file refactor operations (ADR 0005).
61
61
 
62
62
  ---
63
63
 
@@ -184,7 +184,7 @@ Compiler
184
184
  → emitted gate resolves wicked-vault via npx (no wicked-garden runtime required)
185
185
 
186
186
  wicked-patch
187
- → reads codegraph.db (wicked-brain structural graph + injected edges)
187
+ → reads the wicked-estate graph (structural graph + injected edges, ADR 0005)
188
188
  → computes affected file set (including injected edges grep cannot see)
189
189
  → applies language-specific generator per file
190
190
  → produces deterministic multi-file change
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: REQ-005-dod-criteria
3
3
  title: wicked-garden — Definition of Done Criteria
4
- status: partially-verified
5
- version: 0.9
4
+ status: verified
5
+ version: 1.0
6
6
  date: 2026-07-21
7
7
  author: mike.parcewski@gmail.com
8
8
  review-required: true
@@ -93,8 +93,10 @@ These criteria require independent evaluation — the evaluator is not the agent
93
93
  <!-- evidence: PR #1010 (chore/garden-release-12.29.1) merged to main. plugin.json, marketplace.json, package.json, package-lock.json all bumped to 12.29.1. Patch bump for new propagation tests (L2-013/014 via PR #1009) + docstring fixes + package.json sync from 12.28.1. Prior: PR #1007 bumped plugin.json/marketplace.json to 12.29.0 (minor: sentinel event, two event renames, npm test script). (2026-07-21) -->
94
94
  - [x] **L3-008** — `components.json` regenerated and committed with the version bump.
95
95
  <!-- evidence: `python3 scripts/ci/sync_components.py` → "components.json: in sync" — no diff from current skill tree. components.json verified current in PR #1010. (2026-07-21) -->
96
- - [ ] **L3-009** — Release tagged in git and published to the marketplace registry.
97
- - [ ] **L3-010** — `test.yml` CI workflow is green on the release tag (unit tests + E2E trust-spine tests + wicked-patch conformance tests all pass).
96
+ - [x] **L3-009** — Release tagged in git and published to the marketplace registry.
97
+ <!-- evidence: tag `v12.29.1` pushed to GitHub. GitHub release created at https://github.com/mikeparcewski/wicked-garden/releases/tag/v12.29.1. `release.yml` ran on the tag (run ID 29859516956) — pre-publish check passed (`validate.py` + `_validate_registry.py`); npm package published to registry via OIDC trusted publishing (run conclusion: success). (2026-07-21) -->
98
+ - [x] **L3-010** — `test.yml` CI workflow is green on the release tag (unit tests + E2E trust-spine tests + wicked-patch conformance tests all pass).
99
+ <!-- evidence: `test.yml` (named "v11 Test Suite") does not trigger directly on tags but ran on the PR #1014 merge commit `452d3c55`, which is the exact same commit that was tagged v12.29.1. Run ID 29858482241: `test` job conclusion=success (1m26s). 972 passed, 17 skipped. This satisfies "CI green on the release commit". (2026-07-21) -->
98
100
 
99
101
  ---
100
102
 
@@ -127,3 +129,4 @@ These criteria require independent evaluation — the evaluator is not the agent
127
129
  | 0.7 | 2026-07-21 | mike.parcewski@gmail.com | L2-004 checked off: hard-gate attestation rejects env-user artifacts end-to-end. vault 0.9.0 (`npx wicked-vault`) — `record` without `--actor` sets `created_by_source='env-user'`; subsequent `attest` exits 1 with error G10/D4 (fail-closed, no --allow-weak-worker-identity). |
128
130
  | 0.8 | 2026-07-21 | mike.parcewski@gmail.com | L2-010b, L2-011, L2-012 checked off: compiler end-to-end verified. `compile.py /tmp/l2-010b-test-repo` (package.json with `npm test`) emitted gate.py + contract.json; `python3 .wicked/gate.py` → PASS (vault resolved via npx, no garden install required). `--trigger hook` → pre-push hook created at `.git/hooks/pre-push` (runs gate.py, blocks on non-zero). `--trigger ci` → `.github/workflows/wicked-gate.yml` created (on push+PR, gate job runs gate.py). |
129
131
  | 0.9 | 2026-07-21 | mike.parcewski@gmail.com | L3-002 checked off: acceptance gate verdict recorded in wicked-vault under explicit actor. `npx wicked-vault record ... --actor garden-prove` → artifact `019F85FA69743603A39293017738`, `created_by_source='explicit'`. `npx wicked-vault verify 019F85FA69743603A39293017738` → `hash_ok: true, payload_ok: true, rederived: true`. Verdict is re-derivable, not self-asserted. vault 0.9.0. |
132
+ | 1.0 | 2026-07-21 | mike.parcewski@gmail.com | L3-009 and L3-010 checked off. L3-009: `git tag v12.29.1` + `git push origin v12.29.1`; GitHub release at https://github.com/mikeparcewski/wicked-garden/releases/tag/v12.29.1; `release.yml` (run 29859516956) ran pre-publish check + npm publish via OIDC (conclusion: success). L3-010: test.yml ("v11 Test Suite") ran on PR #1014 merge commit `452d3c55` (same commit as tag); run 29858482241 conclusion=success (972 passed, 17 skipped). Status promoted to `verified` — all 42 L1/L2/L3 items checked off. |
package/CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ### Changed
6
+ - **wicked-vault is now a direct infra peer — no longer installed "via wicked-testing".** `wicked-vault@0.4.4` is published from its own repo (mikeparcewski/wicked-vault): self-contained, zero runtime deps. The loom peer registry (`scripts/loom/manifest.py`) now installs it directly (`install_cmd` = `["npm", "install", "-g", "wicked-vault@latest"]`, was `["npx", "wicked-testing", "install"]`) and bumps the vault MAJOR.MINOR floor `0.3` → `0.4` (in lockstep with `plugin.json`). `plugin.json` `wicked_vault_version` floor `^0.4.0` → `^0.4.4`. Narrative corrected across `plugin.json` / `marketplace.json` descriptions, `docs/getting-started.md`, and `skills/core/refs/setup.md` (vault installs directly, not through wicked-testing). Fixed a hardcoded `~/Projects/wicked-vault` dev path in `scripts/compiler/phase0/wire_vault.py` so it resolves the published vault via `npx --yes wicked-vault`. This cuts the testing → garden coupling and makes the garden's evidence gate standalone.
7
+
5
8
  ## [12.29.1] — 2026-07-21
6
9
 
7
10
  ### Added
package/CONTRIBUTING.md CHANGED
@@ -18,38 +18,19 @@ uv run pytest tests/ -x
18
18
 
19
19
  ## Escape Hatches
20
20
 
21
- ### WG_SKIP_WICKED_TESTING_CHECK
22
-
23
- **For offline CI and dev environments without npm access only.**
24
-
25
- When set to `1`, the SessionStart wicked-testing probe is bypassed:
26
-
27
- ```bash
28
- export WG_SKIP_WICKED_TESTING_CHECK=1
29
- ```
30
-
31
- Effect:
32
- - `wicked_testing_missing` is set to `false` — crew commands proceed normally.
33
- - The probe subprocess (`npx wicked-testing --version`) is never invoked.
34
- - A single warning is emitted to **stderr** (not to the Claude session briefing):
35
- `WG_SKIP_WICKED_TESTING_CHECK is set — wicked-testing version check bypassed (offline dev mode). Do not use in production.`
36
-
37
- **When to use**: CI pipelines where npm is unavailable; local development on
38
- machines without Node.js installed; offline development sessions.
39
-
40
- **When NOT to use**: Production environments, any session where crew QE gates
41
- will actually run (the bypass skips the version check but wicked-testing agents
42
- will still fail if the package is absent).
43
-
44
- This escape hatch is a developer override. It does NOT appear in user-facing help,
45
- setup wizard output, or the README. It is not a supported production configuration.
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
24
+ > `wicked-garden-qe` router + specialists), so there is no peer package to
25
+ > probe. The acceptance gate concept now lives in wicked-crew's
26
+ > `/runs/:id/acceptance` route.
46
27
 
47
28
  ### WICKED_VAULT_BIN
48
29
 
49
30
  **For offline CI and dev environments without the wicked-vault peer only.**
50
31
 
51
- wicked-vault (npm, ≥0.3, install `npx wicked-testing install`) is a required peer
52
- alongside wicked-loom/bus/brain/testing. The garden's produces-gates re-derive
32
+ wicked-vault (npm, ≥0.4, install `npm i -g wicked-vault`) is a required peer
33
+ alongside wicked-loom/bus/brain. The garden's produces-gates re-derive
53
34
  evidence through **wicked-loom** — `scripts/qe/vault_gate.py` shells `wicked-loom
54
35
  gate`, which in turn shells `wicked-vault cross-check`, so the vault is the backend
55
36
  loom re-runs the verifier against. loom resolves the vault; the concrete-install
@@ -62,8 +43,7 @@ The vault CLI is resolved in order:
62
43
  4. a local `node_modules/.bin/wicked-vault`
63
44
  5. `npx --yes wicked-vault`
64
45
 
65
- Setting `WICKED_VAULT_BIN=""` (set-but-empty) is the vault analogue of
66
- `WG_SKIP_WICKED_TESTING_CHECK`:
46
+ Setting `WICKED_VAULT_BIN=""` (set-but-empty) disables vault resolution:
67
47
 
68
48
  ```bash
69
49
  export WICKED_VAULT_BIN=""
@@ -88,12 +68,8 @@ setup wizard output, or the README. It is not a supported production configurati
88
68
 
89
69
  ### Fail-open boundary
90
70
 
91
- The wicked-testing probe (`_wicked_testing_probe.probe()`) is called by
92
- `_probe_wicked_testing()` in `hooks/scripts/bootstrap.py` at SessionStart.
93
- Any exception that escapes the probe is caught by `_probe_wicked_testing()`
94
- which logs actionable detail to stderr and continues bootstrap (fail-open).
95
-
96
- **CH-02 close**: `crew_command_gate()` in `scripts/crew/_prerequisites.py`
97
- is fail-closed: if `session_state.extras["wicked_testing_probe"]` is absent
98
- (probe exception path), the gate treats this as missing rather than passing.
99
- This prevents silent unblocked crew runs when the probe fails silently.
71
+ SessionStart probes in `hooks/scripts/bootstrap.py` (vault / bus / loom
72
+ dependency checks) are fail-open: any exception is caught, logged to stderr
73
+ with actionable detail, and bootstrap continues. Gates that *enforce*
74
+ evidence are fail-closed at their own layer (`scripts/qe/vault_gate.py`),
75
+ never at the probe.
package/ETHOS.md CHANGED
@@ -18,11 +18,11 @@
18
18
 
19
19
  **Quality pressure must be structural, not delegated to willpower.** Reviews skipped under deadline pressure are gates that didn't exist. So enforcement lives in code, not prose: hard gates refuse to advance at runtime, produces re-derive through wicked-loom (which re-runs the verifier via the vault), and the audit trail is append-only. Good intentions don't have to survive a Friday afternoon — the gates do.
20
20
 
21
- **Knowledge compounds across sessions or it isn't knowledge.** If a decision, gotcha, or pattern lives only in the current chat, it dies with the chat. Every memorable thing belongs in a tier-appropriate memory store with confidence and decay rules. wicked-brain is the difference between learning once and learning every time.
21
+ **Knowledge compounds across sessions or it isn't knowledge.** If a decision, gotcha, or pattern lives only in the current chat, it dies with the chat. Every memorable thing belongs in a tier-appropriate memory store with confidence and decay rules. The mem domain over wicked-estate is the difference between learning once and learning every time.
22
22
 
23
23
  **Native primitives over bespoke abstractions.** Claude Code's `TaskCreate`, `Skill`, `Agent`, and hooks are the surface. We extend them — we don't replace them. A task with metadata is more durable than a custom kanban; a skill with a frontmatter description is more discoverable than a registry call. The plugin is **skills-only**: user entry points are consolidated per-domain skills, and the former agents are fork-context worker skills — one surface, not three.
24
24
 
25
- **The gate is required; the rest is a toolkit.** wicked-garden's one non-negotiable is the evidence gate, so it stands on two required peers: **wicked-vault** (the backend that makes "done" re-derivable) and **wicked-loom** (the engine that re-runs the verifier). The core skill's `setup` action (`/wicked-garden-core setup`) blocks without them — a gate you can fake is worse than no gate. The other siblings are **opt-in layers**, not prerequisites: **wicked-testing** (acceptance testing), **wicked-brain** (cross-session memory — the *what*), **wicked-understanding** (repo playbooks — the *how*), **wicked-bus** (the audit trail). Install the ones you'll use; the toolkit works without the others — breadth you adopt incrementally, not a five-thing prerequisite wall. And required-at-install is not brittle-at-runtime: a transient outage degrades gracefully and never bricks a session — but a gate never pretends missing evidence is a pass; that path **fails closed**. We depend on the gate; we don't crash with the layers.
25
+ **The gate is required; the rest is a toolkit.** wicked-garden's one non-negotiable is the evidence gate, so it stands on two required peers: **wicked-vault** (the backend that makes "done" re-derivable) and **wicked-loom** (the engine that re-runs the verifier). The core skill's `setup` action (`/wicked-garden-core setup`) blocks without them — a gate you can fake is worse than no gate. The other siblings are **opt-in layers**, not prerequisites: **wicked-estate** (cross-session memory + knowledge — the *what*), **wicked-understanding** (repo playbooks — the *how*), **wicked-bus** (the audit trail). Acceptance testing needs no sibling at all — the `qe` domain ships in-catalog. Install the ones you'll use; the toolkit works without the others — breadth you adopt incrementally, not a five-thing prerequisite wall. And required-at-install is not brittle-at-runtime: a transient outage degrades gracefully and never bricks a session — but a gate never pretends missing evidence is a pass; that path **fails closed**. We depend on the gate; we don't crash with the layers.
26
26
 
27
27
  **Cross-platform is non-negotiable.** macOS, Linux, Windows (Git Bash, WSL, native). Bare `python3` doesn't exist on Windows; bare `/tmp` doesn't exist on Windows; the shim and `${TMPDIR:-/tmp}` exist for a reason. If a contributor adds shell that breaks on Windows, the contribution is incomplete.
28
28
 
@@ -68,7 +68,7 @@
68
68
 
69
69
  **Not a single-language toolkit.** Cross-platform stdlib-only Python for the plumbing. wicked-patch's generators support Python, TypeScript, Java, Go, SQL, Rust, Kotlin, C#, PHP, Ruby out of the box; new languages plug in via the generator interface.
70
70
 
71
- **Not closed.** The siblings (vault + loom required for the gate; testing, brain, understanding, bus opt-in) are peers, not forks — and the compiler emits a vault-backed harness any repo can adopt **without installing wicked-garden at all**. The plugin's relationship to other tools is "stand on, and hand off," not "absorb."
71
+ **Not closed.** The siblings (vault + loom required for the gate; estate, understanding, bus opt-in) are peers, not forks — and the compiler emits a vault-backed harness any repo can adopt **without installing wicked-garden at all**. The plugin's relationship to other tools is "stand on, and hand off," not "absorb."
72
72
 
73
73
  ---
74
74
 
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  ## The premise
19
19
 
20
- Coding agents grew up. Claude Code, Codex, Cursor, Antigravity, Aider, OpenCode, Gemini CLI, Zed/ACP — they're not autocomplete anymore. They plan. They parallelize. And each has *strong opinions* about how it likes to work.
20
+ Coding agents grew up. Claude Code, Codex, Cursor, Antigravity, Aider, OpenCode, Zed/ACP — they're not autocomplete anymore. They plan. They parallelize. And each has *strong opinions* about how it likes to work.
21
21
 
22
22
  Most plugins try to boss them around — re-implement planning, impose a workflow, make the agent dance. You end up fighting your own tools.
23
23
 
@@ -30,9 +30,9 @@ Most plugins try to boss them around — re-implement planning, impose a workflo
30
30
  | says *"tests pass"* (sometimes it's lying) | re-runs the proof. False "done" → **rejected.** Missing backend → **fails closed.** Never a vacuous green. |
31
31
  | greps and reads — blind to string-wired links | sees the **injected edges** (event→consumer, command→agent, agent→capability) grep never will → `blast-radius`, `lineage` |
32
32
  | refactors on a hope and a prayer | renames across files as a **graph operation**, not find-replace roulette → wicked-patch |
33
- | forgets everything at `exit` | remembers what session 1 decided when you're in session 47 → wicked-brain |
33
+ | forgets everything at `exit` | remembers what session 1 decided when you're in session 47 → the mem domain over wicked-estate |
34
34
  | re-derives *how to work in this repo* every task — which file owns the bug, the wiring step, the test command | loads the repo's own playbooks (`fix-bug`/`add-feature`/`verify`…), generated from HEAD → wicked-understanding |
35
- | asks *itself* for a second opinion | convenes a **real multi-model panel** (Gemini / Codex / …) → the jam skill's `council` action |
35
+ | asks *itself* for a second opinion | convenes a **real multi-model panel** (Antigravity / Codex / …) → the jam skill's `council` action |
36
36
  | re-derives WCAG/CWE/SOC2 from memory every time | loads the rubric on demand, ships it to any repo |
37
37
  | grades its own homework | author ≠ executor ≠ reviewer → evidence-gated testing |
38
38
 
@@ -61,7 +61,7 @@ No universal pipeline to obey. A hook reads each prompt's *shape* and that decid
61
61
  **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
62
 
63
63
  ```bash
64
- npx wicked-testing install # installs wicked-vault (≥ 0.4.0), the honest-evidence backend the gate re-derives against
64
+ npm i -g wicked-vault # wicked-vault (≥ 0.4.0), the honest-evidence backend the gate re-derives against
65
65
  ```
66
66
 
67
67
  > 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**.
@@ -69,12 +69,14 @@ npx wicked-testing install # installs wicked-vault (≥ 0.4.0), the honest-e
69
69
  The rest of the kit is **opt-in layers** — add what you want, skip the rest and the toolkit still works:
70
70
 
71
71
  ```bash
72
- npx wicked-testing install # the acceptance-testing layer (author ≠ executor ≠ reviewer)
73
- /plugin install wicked-brain # the memory layer — cross-session recall + cited search (the "what")
72
+ # wicked-estate — the memory/knowledge layer (cross-session recall + cited search, the "what"):
73
+ # install the `wicked-estate` + `wicked-estate-mcp` binaries onto PATH or ~/.local/bin
74
74
  /plugin install wicked-bus # the audit-trail layer (fire-and-forget; fail-open without it)
75
75
  ```
76
76
 
77
- Optional, lights up the code graph: `npx @colbymchenry/codegraph` (Node ≥ 22.5) → powers `blast-radius` / `lineage` / `hotspots` / wicked-patch. Details: [`docs/required-peers.md`](docs/required-peers.md).
77
+ > Evidence-gated acceptance testing (author ≠ executor ≠ reviewer) needs no extra install — it ships **in-catalog** as the `qe` domain (`wicked-garden-qe`).
78
+
79
+ Optional, lights up the code graph: **wicked-estate** (single binary; `wicked-estate index <path>` + the estate MCP server) → powers `blast-radius` / `lineage` / `hotspots` / wicked-patch (ADR 0005 — no external codegraph engine, no Node version floor). Details: [`docs/required-peers.md`](docs/required-peers.md).
78
80
 
79
81
  ## Try it
80
82
 
@@ -94,6 +96,23 @@ Optional, lights up the code graph: `npx @colbymchenry/codegraph` (Node ≥ 22.5
94
96
 
95
97
  ---
96
98
 
99
+ ## Build on it
100
+
101
+ The catalog is open: ship your own domain pack — a `wicked-pack.json`
102
+ manifest plus `{vendor}-{domain}` router / `{vendor}-{domain}-{role}` fork
103
+ workers — and the runtime discovers it without a garden PR: catalog listing,
104
+ crew specialist routing, peer-floor probing, same evidence discipline.
105
+
106
+ ```bash
107
+ npx wicked-garden pack check ./acme-seo-pack # the shipped conformance gate
108
+ npx wicked-installer pack add acme-seo-pack # acquire + validate + install + register
109
+ npx wicked-garden pack list # what the runtime sees
110
+ ```
111
+
112
+ Full author guide: [`docs/extending.md`](docs/extending.md).
113
+
114
+ ---
115
+
97
116
  ## Principles
98
117
 
99
118
  - **Don't fight the harness.** Fill the gaps; never re-implement what it already does well.
@@ -104,11 +123,11 @@ Optional, lights up the code graph: `npx @colbymchenry/codegraph` (Node ≥ 22.5
104
123
 
105
124
  ## More
106
125
 
107
- [`ETHOS.md`](ETHOS.md) · [`docs/getting-started.md`](docs/getting-started.md) · [`docs/domains.md`](docs/domains.md) · [`docs/required-peers.md`](docs/required-peers.md) · [`docs/compiler.md`](docs/compiler.md)
126
+ [`ETHOS.md`](ETHOS.md) · [`docs/getting-started.md`](docs/getting-started.md) · [`docs/domains.md`](docs/domains.md) · [`docs/required-peers.md`](docs/required-peers.md) · [`docs/compiler.md`](docs/compiler.md) · [`docs/extending.md`](docs/extending.md)
108
127
 
109
128
  ## Requirements
110
129
 
111
- 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.4.0) plus opt-in layers (`wicked-testing` · `wicked-brain` · `wicked-bus`).
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.4.0) plus opt-in layers (`wicked-estate` · `wicked-bus`).
112
131
 
113
132
  ## License
114
133
 
@@ -9,7 +9,7 @@
9
9
  wicked.<domain>.<noun>.<past-tense-verb>
10
10
  ```
11
11
 
12
- Four segments (wicked-bus SPEC grammar). Always starts with `wicked.`. Domain = the producing plugin's short name (`garden` for garden-owned events; `crew` for the shared phase lifecycle; `brain` for consumed wicked-brain events). Noun = the thing that changed. Verb = past tense.
12
+ Four segments (wicked-bus SPEC grammar). Always starts with `wicked.`. Domain = the producing plugin's short name (`garden` for garden-owned events; `crew` for the shared phase lifecycle). Noun = the thing that changed. Verb = past tense.
13
13
  `domain` field is always `wicked-garden`. `subdomain` identifies the functional area.
14
14
 
15
15
  ## Payload Tiers
@@ -89,13 +89,13 @@ These fields are **stripped automatically** by `_bus.py` before emission:
89
89
 
90
90
  | Event Type | Subdomain | Description |
91
91
  |------------|-----------|-------------|
92
- | `wicked.garden.fact.extracted` | `facts` | Structured fact extracted from conversation (consumed by wicked-brain auto-memorize) |
92
+ | `wicked.garden.fact.extracted` | `facts` | Structured fact extracted from conversation (consumed by the garden-run auto-memorize drain -> estate memory) |
93
93
 
94
94
  ### Gate
95
95
 
96
96
  | Event Type | Subdomain | Description |
97
97
  |------------|-----------|-------------|
98
- | `wicked.test.verdict.created` | `gate.verdict` | wicked-testing reviewer recorded a gate verdict (PASS/FAIL/N-A/SKIP) |
98
+ | `wicked.test.verdict.created` | `gate.verdict` | qe reviewer recorded a gate verdict (PASS/FAIL/N-A/SKIP) |
99
99
 
100
100
  ### Jam
101
101
 
@@ -125,6 +125,8 @@ These fields are **stripped automatically** by `_bus.py` before emission:
125
125
  |------------|-----------|-------------|
126
126
  | `wicked.garden.coverage.changed` | `qe.coverage` | Test coverage metrics changed |
127
127
  | `wicked.garden.scenario.run` | `qe.scenario` | Test scenario executed with pass/fail result |
128
+ | `wicked.qe.release.assessed` | `qe.release` | Release readiness verdict assessed against ledger evidence window |
129
+ | `wicked.qe.scenario.authored` | `qe.scenario` | Scenario file authored from a production incident; queues a human review task |
128
130
 
129
131
  ### Sentinel
130
132
 
package/docs/README.md CHANGED
@@ -13,15 +13,17 @@ Work in wicked-garden is organized around **9 work-shape archetypes** — not a
13
13
  | [Domains](domains.md) | The 10 domain skills archetypes invoke for expertise |
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
- | [Brain Chunk Format](brain-chunk-format.md) | How wicked-garden content is chunked for the brain index |
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
+ | [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) |
17
18
 
18
19
  ## Quick Links
19
20
 
20
21
  - **New to wicked-garden?** Start with [Getting Started](getting-started.md).
21
22
  - **Want to understand how work is shaped?** Read [Archetypes](v11/archetypes.md).
22
- - **Setting up?** The [Required Peers](required-peers.md) — wicked-testing, wicked-vault, wicked-brain, wicked-bus, wicked-loom — are verified by `/wicked-garden-core setup`.
23
+ - **Setting up?** The [Required Peers](required-peers.md) — wicked-vault, wicked-estate, wicked-bus — are verified by `/wicked-garden-core setup` (the loom engine ships in-package; the qe domain is in-catalog).
23
24
  - **Looking for domain expertise or a specific action?** Browse [Domains](domains.md).
24
25
  - **Want a build gate that runs without wicked-garden present?** See [The Compiler](compiler.md).
26
+ - **Shipping your own domain pack?** Follow [Extending the Catalog](extending.md) — `npx wicked-garden pack check` validates it against the same rules the built-ins follow.
25
27
 
26
28
  ## Need Help?
27
29
 
@@ -1,6 +1,6 @@
1
1
  # ADR 0003 — Two required peers (the gate), three opt-in layers
2
2
 
3
- - **Status:** Accepted — executed.
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.)*
4
4
  - **Date:** 2026-06-09
5
5
  - **Supersedes:** the v12 stance in `docs/required-peers.md` ("five peers are required infrastructure").
6
6
 
@@ -1,6 +1,11 @@
1
1
  # ADR 0004 — Move the code-relationship graph to wicked-brain (inverts ADR 0001's homing)
2
2
 
3
- - **Status:** Accepted
3
+ - **Status:** Superseded by [ADR 0005](0005-code-graph-re-homes-to-wicked-estate.md) (2026-08-11) — the
4
+ graph's **home moved from wicked-brain to wicked-estate** (which independently built a more capable
5
+ graph: 75-language tree-sitter extractor, `ExtraEdgeExtractor` TOML injected edges, cross-repo
6
+ `XedgeStore`, and `BlastRadius`/`Lineage`/`TraverseGraph` MCP tools), and the brain graph
7
+ implementation this ADR described was stripped from the wicked-brain tree. The injected-edge idea
8
+ and the knowing/doing split stand; the home and the codegraph engine choice do not. Originally: Accepted.
4
9
  - **Date:** 2026-06-10
5
10
  - **Supersedes:** the *homing* decision of [ADR 0001](0001-code-relationship-graph-engine.md) (graph lives in garden). **Keeps** ADR 0001's engine choice (codegraph) and the injected-edge concept.
6
11
  - **Context owners:** wicked-garden + wicked-brain