@xhulz/nina 0.53.1 → 0.53.3
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/package.json +1 -1
- package/releases/0.53.2/core/GAPS.md +125 -0
- package/releases/0.53.2/core/answered.json +68 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/architect.md +1 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/dba.md +3 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/devops.md +1 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/implementer.md +1 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/qa.md +7 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/reviewer.md +3 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/secops.md +3 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/solidity-auditor.md +3 -0
- package/releases/0.53.2/core/defaults/tree/.claude/agents/solidity-dev.md +3 -0
- package/releases/0.53.2/core/tree/.claude/agents/architect.md +129 -0
- package/releases/0.53.2/core/tree/.claude/agents/dba.md +117 -0
- package/releases/0.53.2/core/tree/.claude/agents/devops.md +118 -0
- package/releases/0.53.2/core/tree/.claude/agents/implementer.md +163 -0
- package/releases/0.53.2/core/tree/.claude/agents/integration-tester.md +168 -0
- package/releases/0.53.2/core/tree/.claude/agents/planner.md +132 -0
- package/releases/0.53.2/core/tree/.claude/agents/qa.md +150 -0
- package/releases/0.53.2/core/tree/.claude/agents/reviewer.md +184 -0
- package/releases/0.53.2/core/tree/.claude/agents/secops.md +120 -0
- package/releases/0.53.2/core/tree/.claude/agents/solidity-auditor.md +126 -0
- package/releases/0.53.2/core/tree/.claude/agents/solidity-dev.md +123 -0
- package/releases/0.53.2/core/tree/.claude/agents-overview.md +64 -0
- package/releases/0.53.2/core/tree/.claude/frontend.md +10 -0
- package/releases/0.53.2/core/tree/.claude/graph.md +75 -0
- package/releases/0.53.2/core/tree/.claude/patterns.md +251 -0
- package/releases/0.53.2/core/tree/.claude/pills/README.md +150 -0
- package/releases/0.53.2/core/tree/.claude/pipeline.md +101 -0
- package/releases/0.53.2/core/tree/.claude/retrieval.md +103 -0
- package/releases/0.53.2/core/tree/.claude/router.md +202 -0
- package/releases/0.53.2/core/tree/.claude/templates/integration.md +46 -0
- package/releases/0.53.2/core/tree/CLAUDE.md +164 -0
- package/releases/0.53.2/core/tree/scripts/cost-watch.mjs +25 -0
- package/releases/0.53.2/core/tree/scripts/edit-guard.mjs +24 -0
- package/releases/0.53.2/core/tree/scripts/harness-check.mjs +71 -0
- package/releases/0.53.2/core/tree/scripts/loop-gate.mjs +19 -0
- package/releases/0.53.2/core/vocabulary.json +13 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents/architect.md +5 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents/reviewer.md +5 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents/solidity-auditor.md +18 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents/solidity-dev.md +16 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/agents-overview.md +6 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/graph.md +11 -0
- package/releases/0.53.2/surfaces/blockchain/tree/.claude/router.md +6 -0
- package/releases/0.53.2/surfaces/blockchain/tree/CLAUDE.md +12 -0
- package/releases/0.53.2/surfaces/d1/tree/.claude/agents/dba.md +15 -0
- package/releases/0.53.2/surfaces/d1/tree/.claude/agents/devops.md +2 -0
- package/releases/0.53.2/surfaces/d1/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.2/surfaces/d1/tree/.claude/patterns.md +8 -0
- package/releases/0.53.2/surfaces/d1/tree/CLAUDE.md +2 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/architect.md +5 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/dba.md +54 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/integration-tester.md +10 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/planner.md +2 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/reviewer.md +22 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/agents-overview.md +5 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/graph.md +8 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/patterns.md +22 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/pipeline.md +13 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/retrieval.md +5 -0
- package/releases/0.53.2/surfaces/db/tree/.claude/router.md +4 -0
- package/releases/0.53.2/surfaces/db/tree/CLAUDE.md +17 -0
- package/releases/0.53.2/surfaces/drizzle/tree/.claude/agents/dba.md +9 -0
- package/releases/0.53.2/surfaces/drizzle/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.2/surfaces/drizzle/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.2/surfaces/drizzle/tree/.claude/patterns.md +7 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/architect.md +14 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/dba.md +2 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/devops.md +29 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/implementer.md +14 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/integration-tester.md +11 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/qa.md +3 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/agents/secops.md +8 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/patterns.md +17 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/.claude/retrieval.md +8 -0
- package/releases/0.53.2/surfaces/edge-cf/tree/CLAUDE.md +27 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/agents/architect.md +20 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/agents/devops.md +28 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/agents/implementer.md +25 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/agents/qa.md +17 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/agents/reviewer.md +56 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/patterns.md +8 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/retrieval.md +2 -0
- package/releases/0.53.2/surfaces/frontend/tree/.claude/router.md +14 -0
- package/releases/0.53.2/surfaces/frontend/tree/CLAUDE.md +5 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/architect.md +16 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/implementer.md +12 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/integration-tester.md +20 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/planner.md +2 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/reviewer.md +21 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/agents-overview.md +8 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/graph.md +10 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/patterns.md +38 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/pipeline.md +16 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/retrieval.md +16 -0
- package/releases/0.53.2/surfaces/integrations/tree/.claude/router.md +6 -0
- package/releases/0.53.2/surfaces/integrations/tree/CLAUDE.md +17 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/architect.md +12 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/dba.md +14 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/implementer.md +11 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/reviewer.md +23 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/secops.md +5 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/solidity-auditor.md +4 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/agents/solidity-dev.md +4 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/graph.md +2 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/patterns.md +49 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/pipeline.md +2 -0
- package/releases/0.53.2/surfaces/money/tree/.claude/retrieval.md +2 -0
- package/releases/0.53.2/surfaces/money/tree/CLAUDE.md +11 -0
- package/releases/0.53.2/surfaces/pii/tree/.claude/agents/dba.md +2 -0
- package/releases/0.53.2/surfaces/pii/tree/.claude/agents/devops.md +8 -0
- package/releases/0.53.2/surfaces/pii/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.53.2/surfaces/pii/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.2/surfaces/pii/tree/.claude/agents/solidity-auditor.md +5 -0
- package/releases/0.53.2/surfaces/pii/tree/CLAUDE.md +5 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/architect.md +2 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/dba.md +42 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/devops.md +11 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/integration-tester.md +2 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/agents/reviewer.md +2 -0
- package/releases/0.53.2/surfaces/prisma/tree/.claude/patterns.md +15 -0
- package/releases/0.53.2/surfaces/prisma/tree/CLAUDE.md +5 -0
- package/releases/0.53.3/core/GAPS.md +125 -0
- package/releases/0.53.3/core/answered.json +68 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/architect.md +1 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/dba.md +3 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/devops.md +1 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/implementer.md +1 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/qa.md +7 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/reviewer.md +3 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/secops.md +3 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/solidity-auditor.md +3 -0
- package/releases/0.53.3/core/defaults/tree/.claude/agents/solidity-dev.md +3 -0
- package/releases/0.53.3/core/tree/.claude/agents/architect.md +129 -0
- package/releases/0.53.3/core/tree/.claude/agents/dba.md +117 -0
- package/releases/0.53.3/core/tree/.claude/agents/devops.md +118 -0
- package/releases/0.53.3/core/tree/.claude/agents/implementer.md +163 -0
- package/releases/0.53.3/core/tree/.claude/agents/integration-tester.md +168 -0
- package/releases/0.53.3/core/tree/.claude/agents/planner.md +132 -0
- package/releases/0.53.3/core/tree/.claude/agents/qa.md +150 -0
- package/releases/0.53.3/core/tree/.claude/agents/reviewer.md +184 -0
- package/releases/0.53.3/core/tree/.claude/agents/secops.md +120 -0
- package/releases/0.53.3/core/tree/.claude/agents/solidity-auditor.md +126 -0
- package/releases/0.53.3/core/tree/.claude/agents/solidity-dev.md +123 -0
- package/releases/0.53.3/core/tree/.claude/agents-overview.md +64 -0
- package/releases/0.53.3/core/tree/.claude/frontend.md +10 -0
- package/releases/0.53.3/core/tree/.claude/graph.md +75 -0
- package/releases/0.53.3/core/tree/.claude/patterns.md +251 -0
- package/releases/0.53.3/core/tree/.claude/pills/README.md +150 -0
- package/releases/0.53.3/core/tree/.claude/pipeline.md +101 -0
- package/releases/0.53.3/core/tree/.claude/retrieval.md +103 -0
- package/releases/0.53.3/core/tree/.claude/router.md +202 -0
- package/releases/0.53.3/core/tree/.claude/templates/integration.md +46 -0
- package/releases/0.53.3/core/tree/CLAUDE.md +164 -0
- package/releases/0.53.3/core/tree/scripts/cost-watch.mjs +25 -0
- package/releases/0.53.3/core/tree/scripts/edit-guard.mjs +24 -0
- package/releases/0.53.3/core/tree/scripts/harness-check.mjs +71 -0
- package/releases/0.53.3/core/tree/scripts/loop-gate.mjs +19 -0
- package/releases/0.53.3/core/vocabulary.json +13 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents/architect.md +5 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents/reviewer.md +5 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents/solidity-auditor.md +18 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents/solidity-dev.md +16 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/agents-overview.md +6 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/graph.md +11 -0
- package/releases/0.53.3/surfaces/blockchain/tree/.claude/router.md +6 -0
- package/releases/0.53.3/surfaces/blockchain/tree/CLAUDE.md +12 -0
- package/releases/0.53.3/surfaces/d1/tree/.claude/agents/dba.md +15 -0
- package/releases/0.53.3/surfaces/d1/tree/.claude/agents/devops.md +2 -0
- package/releases/0.53.3/surfaces/d1/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.3/surfaces/d1/tree/.claude/patterns.md +8 -0
- package/releases/0.53.3/surfaces/d1/tree/CLAUDE.md +2 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/architect.md +5 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/dba.md +54 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/integration-tester.md +10 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/planner.md +2 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/reviewer.md +22 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/agents-overview.md +5 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/graph.md +8 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/patterns.md +22 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/pipeline.md +13 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/retrieval.md +5 -0
- package/releases/0.53.3/surfaces/db/tree/.claude/router.md +4 -0
- package/releases/0.53.3/surfaces/db/tree/CLAUDE.md +17 -0
- package/releases/0.53.3/surfaces/drizzle/tree/.claude/agents/dba.md +9 -0
- package/releases/0.53.3/surfaces/drizzle/tree/.claude/agents/devops.md +5 -0
- package/releases/0.53.3/surfaces/drizzle/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.3/surfaces/drizzle/tree/.claude/patterns.md +7 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/architect.md +14 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/dba.md +2 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/devops.md +29 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/implementer.md +14 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/integration-tester.md +11 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/qa.md +3 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/agents/secops.md +8 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/patterns.md +17 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/.claude/retrieval.md +8 -0
- package/releases/0.53.3/surfaces/edge-cf/tree/CLAUDE.md +27 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/agents/architect.md +20 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/agents/devops.md +28 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/agents/implementer.md +25 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/agents/qa.md +17 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/agents/reviewer.md +56 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/patterns.md +8 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/retrieval.md +2 -0
- package/releases/0.53.3/surfaces/frontend/tree/.claude/router.md +14 -0
- package/releases/0.53.3/surfaces/frontend/tree/CLAUDE.md +5 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/architect.md +16 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/implementer.md +12 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/integration-tester.md +20 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/planner.md +2 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/reviewer.md +21 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/agents-overview.md +8 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/graph.md +10 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/patterns.md +38 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/pipeline.md +16 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/retrieval.md +16 -0
- package/releases/0.53.3/surfaces/integrations/tree/.claude/router.md +6 -0
- package/releases/0.53.3/surfaces/integrations/tree/CLAUDE.md +17 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/architect.md +12 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/dba.md +14 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/implementer.md +11 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/reviewer.md +23 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/secops.md +5 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/solidity-auditor.md +4 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/agents/solidity-dev.md +4 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/graph.md +2 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/patterns.md +49 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/pipeline.md +2 -0
- package/releases/0.53.3/surfaces/money/tree/.claude/retrieval.md +2 -0
- package/releases/0.53.3/surfaces/money/tree/CLAUDE.md +11 -0
- package/releases/0.53.3/surfaces/pii/tree/.claude/agents/dba.md +2 -0
- package/releases/0.53.3/surfaces/pii/tree/.claude/agents/devops.md +8 -0
- package/releases/0.53.3/surfaces/pii/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.53.3/surfaces/pii/tree/.claude/agents/secops.md +2 -0
- package/releases/0.53.3/surfaces/pii/tree/.claude/agents/solidity-auditor.md +5 -0
- package/releases/0.53.3/surfaces/pii/tree/CLAUDE.md +5 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/architect.md +2 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/dba.md +42 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/devops.md +11 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/integration-tester.md +2 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/agents/reviewer.md +2 -0
- package/releases/0.53.3/surfaces/prisma/tree/.claude/patterns.md +15 -0
- package/releases/0.53.3/surfaces/prisma/tree/CLAUDE.md +5 -0
- package/src/commands/learn.mjs +43 -19
- package/src/dashboard.html +104 -19
- package/src/dashboard.mjs +5 -1
package/src/dashboard.html
CHANGED
|
@@ -61,7 +61,21 @@
|
|
|
61
61
|
.stage { display: grid; grid-template-columns: 170px 1fr; gap: 4px 14px; padding: 12px 0; border-bottom: 1px solid #2a2838; }
|
|
62
62
|
.empty { color: var(--faint); padding: 30px 0; text-align: center; }
|
|
63
63
|
.note { margin: 4px 0; font-size: 13px; }
|
|
64
|
-
|
|
64
|
+
.answer { background: var(--panel); border: 1px solid var(--line); border-left: 4px solid var(--faint); border-radius: 6px; padding: 12px 16px; margin: 0 0 14px; }
|
|
65
|
+
.answer[data-tone="ok"] { border-left-color: var(--green); } .answer[data-tone="bad"] { border-left-color: var(--red); } .answer[data-tone="warn"] { border-left-color: var(--amber); }
|
|
66
|
+
.answer .q { color: var(--faint); font-size: 12px; }
|
|
67
|
+
.answer .head { font: 600 18px var(--sans); margin: 2px 0 4px; }
|
|
68
|
+
.answer p { margin: 2px 0; color: var(--soft); font-size: 13px; }
|
|
69
|
+
.cmp { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 12px 14px; margin: 0 0 10px; }
|
|
70
|
+
.cmp .top { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-bottom: 8px; }
|
|
71
|
+
.cmp .verdict { margin-left: auto; font: 600 13px var(--mono); }
|
|
72
|
+
.chip.wraps { white-space: normal; overflow-wrap: anywhere; }
|
|
73
|
+
.meter { display: grid; grid-template-columns: 48px minmax(60px, 1fr) 44px minmax(0, 230px); align-items: center; gap: 2px 10px; margin: 4px 0; font-size: 13px; }
|
|
74
|
+
.meter .pctv { text-align: right; }
|
|
75
|
+
@media (max-width: 640px) {
|
|
76
|
+
.stage { grid-template-columns: 1fr; } nav { margin-left: 0; }
|
|
77
|
+
.meter { grid-template-columns: 48px minmax(60px, 1fr) 44px; } .meter .detail { grid-column: 2 / -1; }
|
|
78
|
+
}
|
|
65
79
|
</style>
|
|
66
80
|
</head>
|
|
67
81
|
<body>
|
|
@@ -210,34 +224,105 @@ const RENDER = {
|
|
|
210
224
|
|
|
211
225
|
learning(d) {
|
|
212
226
|
if (!d) return el('p', { class: 'empty' }, 'No profile here to read the learning cycle of.');
|
|
213
|
-
const
|
|
227
|
+
const name = (rel) => rel.replace(/^\.claude\/pills\//, '').replace(/^retired\//, '').replace(/\.md$/, '');
|
|
228
|
+
const graduated = (rel) => rel.startsWith('.claude/pills/retired/');
|
|
229
|
+
const dayOf = (iso) => new Date(`${iso}T12:00:00`).toLocaleDateString(undefined, { month: 'short', day: 'numeric' });
|
|
230
|
+
const daysIn = ([a, b]) => Math.round((Date.parse(`${b}T12:00:00Z`) - Date.parse(`${a}T12:00:00Z`)) / 86_400_000) + 1;
|
|
231
|
+
const lessonChip = (rel) => el('span', { class: 'chip wraps', title: rel }, name(rel), graduated(rel) ? el('span', { class: 'faint' }, ' · graduated') : null);
|
|
232
|
+
// Lessons written the same day for the same stage are read over the same rounds, so they are one comparison, not
|
|
233
|
+
// a row each repeating its numbers.
|
|
234
|
+
const groups = [];
|
|
235
|
+
for (const c of d.checks.filter((x) => x.before)) {
|
|
236
|
+
const same = groups.find((g) => g.role === c.role && g.date === c.date && g.on === c.on);
|
|
237
|
+
if (same) same.lessons.push(c.rel);
|
|
238
|
+
else groups.push({ ...c, lessons: [c.rel] });
|
|
239
|
+
}
|
|
240
|
+
const rank = { higher: 0, lower: 1, unclear: 2 };
|
|
241
|
+
groups.sort((a, b) => rank[a.change] - rank[b.change] || b.date.localeCompare(a.date) || a.role.localeCompare(b.role));
|
|
214
242
|
const unmeasured = d.checks.filter((c) => !c.before);
|
|
243
|
+
const [less, more, unclear] = ['lower', 'higher', 'unclear'].map((k) => groups.filter((g) => g.change === k).length);
|
|
244
|
+
const lessonsRead = new Set(groups.flatMap((g) => g.lessons)).size;
|
|
245
|
+
const history = d.span ? daysIn(d.span) : 0;
|
|
246
|
+
const shortest = Math.min(...groups.flatMap((g) => [g.before, g.after]).map((side) => (side.span[0] ? daysIn(side.span) : 0)));
|
|
247
|
+
// The share is of work sent back, so up is worse. A move the rounds are too few to tell from chance still says
|
|
248
|
+
// which way it went: "could be chance" alone read, beside 33% → 67%, as if the larger number were the better one.
|
|
249
|
+
const share = (side) => (side.n ? Math.round((100 * side.loops) / side.n) : 0);
|
|
250
|
+
const verdict = (g) =>
|
|
251
|
+
g.change === 'lower' ? ['ok', '▼ better: sent back less']
|
|
252
|
+
: g.change === 'higher' ? ['bad', '▲ worse: sent back more']
|
|
253
|
+
: share(g.after) > share(g.before) ? ['faint', '▲ sent back more, but could be chance']
|
|
254
|
+
: share(g.after) < share(g.before) ? ['faint', '▼ sent back less, but could be chance']
|
|
255
|
+
: ['faint', '≈ no change'];
|
|
256
|
+
|
|
257
|
+
const answer = !groups.length
|
|
258
|
+
? { tone: 'faint', head: 'Not measurable yet', body: unmeasured.length ? `None of the ${unmeasured.length} lesson-and-stage pairs has enough rounds of its stage on both sides of its date — the reasons are at the bottom.` : 'No lesson has been written yet.' }
|
|
259
|
+
: less && more
|
|
260
|
+
? { tone: 'warn', head: 'Mixed', body: `${less} comparison(s) sent back less since their lessons, ${more} sent back more, ${unclear} with no clear change.` }
|
|
261
|
+
: more
|
|
262
|
+
? { tone: 'bad', head: 'Sent back more since', body: `In ${more} of ${groups.length} comparison(s) the stage had more of its work sent back after its lessons than before; ${unclear ? `the other ${unclear} show no clear change` : 'none shows less'}.` }
|
|
263
|
+
: less
|
|
264
|
+
? { tone: 'ok', head: 'Sent back less since', body: `In ${less} of ${groups.length} comparison(s) the stage had less of its work sent back after its lessons than before${unclear ? `; the other ${unclear} show no clear change` : ''}.` }
|
|
265
|
+
: { tone: 'faint', head: 'No clear change yet', body: `None of the ${groups.length} comparison(s) moved by more than chance moves a share at that many rounds.` };
|
|
266
|
+
|
|
267
|
+
const meter = (label, side) => el('div', { class: 'meter' },
|
|
268
|
+
el('span', { class: 'faint' }, label),
|
|
269
|
+
bar([[side.n ? side.loops / side.n : 0, 'var(--amber)']]),
|
|
270
|
+
el('span', { class: 'mono pctv' }, pct(side.loops, side.n)),
|
|
271
|
+
el('span', { class: 'faint detail' }, `${side.loops} of ${side.n} rounds · ${side.span[0] ? `${dayOf(side.span[0])}${side.span[1] !== side.span[0] ? ` – ${dayOf(side.span[1])}` : ''}` : 'no day'}`),
|
|
272
|
+
);
|
|
273
|
+
const comparison = (g) => el('div', { class: 'cmp' },
|
|
274
|
+
el('div', { class: 'top' },
|
|
275
|
+
el('span', { class: 'role' }, g.role),
|
|
276
|
+
el('span', { class: 'soft' }, `${g.lessons.length} lesson${g.lessons.length > 1 ? 's' : ''} written ${dayOf(g.date)}`),
|
|
277
|
+
g.on ? el('span', { class: 'faint mono' }, g.on) : null,
|
|
278
|
+
el('span', { class: `verdict ${verdict(g)[0]}` }, verdict(g)[1]),
|
|
279
|
+
),
|
|
280
|
+
el('div', { class: 'faint', style: 'font-size:12px;margin:0 0 2px' }, `share of the ${g.role}'s rounds sent back to it · lower is better`),
|
|
281
|
+
meter('before', g.before),
|
|
282
|
+
meter('after', g.after),
|
|
283
|
+
el('div', { class: 'faint', style: 'margin:6px 0 8px' }, `for reference, the other stages over the same days: ${pct(g.control.before.loops, g.control.before.n)} → ${pct(g.control.after.loops, g.control.after.n)}`),
|
|
284
|
+
el('div', { class: 'chips' }, g.lessons.map(lessonChip)),
|
|
285
|
+
);
|
|
286
|
+
// What could not be measured, by its reason: the same reason, word for word, is one line.
|
|
287
|
+
const reasons = new Map();
|
|
288
|
+
for (const c of unmeasured) reasons.set(c.why, [...(reasons.get(c.why) ?? []), c.rel]);
|
|
289
|
+
|
|
215
290
|
return el('div', {},
|
|
216
291
|
el('h2', {}, 'Learning'),
|
|
217
292
|
el('p', { class: 'sub' }, said('Whether the pipeline learns from its own runs, link by link, as `nina learn` reads it.')),
|
|
293
|
+
el('div', { class: 'answer', 'data-tone': answer.tone },
|
|
294
|
+
el('div', { class: 'q' }, 'Did the lessons help?'),
|
|
295
|
+
el('div', { class: 'head' }, answer.head),
|
|
296
|
+
el('p', {}, answer.body),
|
|
297
|
+
groups.length && history < 2 * d.window + 1
|
|
298
|
+
? el('p', {}, `This project has ${history} day(s) of history, so a lesson is compared over fewer than the ${d.window} days either side the measure asks for: read it as an early sign.`)
|
|
299
|
+
: groups.length && shortest < d.window
|
|
300
|
+
? el('p', {}, `The shortest comparison has rounds on ${shortest} day(s) of one side, of the ${d.window} the measure reads: read it as an early sign.`)
|
|
301
|
+
: null,
|
|
302
|
+
),
|
|
218
303
|
el('div', { class: 'cards' },
|
|
219
|
-
card('observe', d.rounds ? `${d.runs} runs` : '—', d.rounds ? `${d.rounds} rounds, ${d.span[0]} → ${d.span[1]}` : 'nothing recorded'),
|
|
220
|
-
card('capture', d.late.length ? `${d.late.length} owed` : '✓', d.late.length ? 'stages sent back with nothing written down' : `no stage sent back
|
|
221
|
-
card('apply', d.use.measured ? pct(d.use.read, d.use.measured) : '—', d.use.measured ? `of ${d.use.measured} runs read a lesson` : 'not measured yet'),
|
|
222
|
-
card('
|
|
304
|
+
card('observe · what ran', d.rounds ? `${d.runs} runs` : '—', d.rounds ? `${d.rounds} rounds, ${d.span[0]} → ${d.span[1]}` : 'nothing recorded'),
|
|
305
|
+
card('capture · written down?', d.late.length ? `${d.late.length} owed` : '✓', d.late.length ? 'stages sent back with nothing written down' : `no stage sent back ${d.at}+ times without a lesson in ${d.days} days`),
|
|
306
|
+
card('apply · read?', d.use.measured ? pct(d.use.read, d.use.measured) : '—', d.use.measured ? `of ${d.use.measured} runs read a lesson` : 'not measured yet'),
|
|
307
|
+
card('verify · helped?', !groups.length ? '—' : less && more ? 'mixed' : more ? '▲ more' : less ? '▼ less' : '≈ unclear', groups.length ? `${groups.length} comparison(s) of ${lessonsRead} lesson(s): ${less} sent back less, ${more} more` : 'nothing measurable yet'),
|
|
308
|
+
card('graduate · made rules?', `${d.open.length} open`, `${d.ready.length} at ${d.at}+ · ${d.madeHere} made a rule here${d.relapses.length ? ` · ${d.relapses.length} watched` : ''}`),
|
|
223
309
|
card('loops', d.gated ? (d.activity ? String(d.activity.rounds) : '—') : 'no gate', d.activity ? `rounds on capped edges · ${d.activity.held} sent to you` : d.gated ? 'no ledger yet' : 'caps are instructions'),
|
|
224
310
|
),
|
|
225
311
|
d.late.length ? [el('h3', {}, 'capture · sent back with nothing written down'), d.late.map((o) => el('div', { class: 'note' }, el('span', { class: 'role' }, o.role), ` ${o.count} loop-back(s) ${o.since ? `since its newest lesson (${o.since})` : 'and no lesson at all'}`, el('ul', { class: 'list soft' }, o.recent.map((r) => el('li', {}, `${when(r.ts)} · ${r.desc ?? '(no description)'}`)))))] : null,
|
|
312
|
+
el('h3', {}, 'verify · is each stage sent back less since its lessons?'),
|
|
313
|
+
el('p', { class: 'note soft', style: 'margin-bottom:12px' }, `For each lesson, the share of its stage's rounds that a later stage sent back, in the ${d.window} days before it was written and the ${d.window} after — lower is better. A change is called only when it is larger than chance moves a share at that many rounds. The other stages, over the same days, say whether everything moved at once: then it was the work that changed, not the lesson.`),
|
|
314
|
+
groups.length ? groups.map(comparison) : el('p', { class: 'note faint' }, 'No lesson could be measured yet.'),
|
|
226
315
|
d.owed.length ? [el('h3', {}, 'to graduate · here or in the harness'), d.owed.map((o) => el('p', { class: 'note' }, el('span', { class: 'mono' }, o.rel), o.declined ? el('span', { class: 'soft' }, ` — declined by the harness${o.declined.in ? ` in ${o.declined.in}` : ''}: ${o.declined.why}`) : el('span', { class: 'soft' }, ` — recurred ${o.occurrences} times`)))] : null,
|
|
227
316
|
d.open.length ? [el('h3', {}, 'requests open in the harness'), table(['since', 'pill', 'proposed for'], d.open.map((r) => [el('span', { class: 'mono soft' }, r.date), el('span', { class: 'mono' }, r.pill), r.target]))] : null,
|
|
228
|
-
d.relapses.length ? [el('h3', {}, '
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
el('span', { class: 'soft' }, `${pct(c.control.before.loops, c.control.before.n)} → ${pct(c.control.after.loops, c.control.after.n)}`),
|
|
238
|
-
]), [3])
|
|
239
|
-
: el('p', { class: 'note faint' }, 'No lesson could be measured yet.'),
|
|
240
|
-
unmeasured.length ? el('p', { class: 'note faint' }, `${unmeasured.length} more could not be measured.`) : null,
|
|
317
|
+
d.relapses.length ? [el('h3', {}, 'graduated, then seen again'),
|
|
318
|
+
d.relapses.map((r) => el('p', { class: 'note' },
|
|
319
|
+
el('span', { class: r.due ? 'bad' : 'faint' }, r.due ? '✗ ' : '· '),
|
|
320
|
+
el('span', { class: 'mono', title: r.rel }, name(r.rel)),
|
|
321
|
+
el('span', { class: 'soft' }, ` — seen ${r.recurred} time(s) since its rule ${r.target === 'project' ? `was made here in ${r.rule_in}` : `shipped in ${r.answered_in || 'a release'}`}`),
|
|
322
|
+
r.due ? el('span', { class: 'bad' }, ': the rule did not hold') : el('span', { class: 'faint' }, `; watched, it reopens at ${d.at}`)))] : null,
|
|
323
|
+
unmeasured.length ? el('details', { style: 'margin-top:24px' },
|
|
324
|
+
el('summary', { class: 'soft', style: 'cursor:pointer' }, `${unmeasured.length} lesson-and-stage pair(s) could not be measured, and why`),
|
|
325
|
+
[...reasons].map(([why, rels]) => el('div', { class: 'note', style: 'margin:10px 0' }, el('div', { class: 'soft' }, why), el('div', { class: 'chips', style: 'margin-top:4px' }, rels.map(lessonChip))))) : null,
|
|
241
326
|
);
|
|
242
327
|
},
|
|
243
328
|
|
package/src/dashboard.mjs
CHANGED
|
@@ -21,7 +21,7 @@ import { layerRootFor } from './commands/compose.mjs';
|
|
|
21
21
|
import { taskList } from './commands/runs.mjs';
|
|
22
22
|
import { pipelineData } from './commands/pipeline.mjs';
|
|
23
23
|
import { pillsData } from './commands/pills.mjs';
|
|
24
|
-
import { learningData } from './commands/learn.mjs';
|
|
24
|
+
import { CAPTURE_AT, VERIFY_DAYS, learningData } from './commands/learn.mjs';
|
|
25
25
|
import { statsData } from './commands/stats.mjs';
|
|
26
26
|
|
|
27
27
|
/** The page: one self-contained file, nothing fetched from anywhere else. */
|
|
@@ -72,6 +72,10 @@ export function dashboardTabs(target, ctx) {
|
|
|
72
72
|
const d = await learningData(target, layers.dir, profile, { records: roundsOf(target) });
|
|
73
73
|
return {
|
|
74
74
|
days: d.days,
|
|
75
|
+
// How many times makes an event: a stage sent back, a lesson recurring, a rule that came back. And the days
|
|
76
|
+
// either side of a lesson that verify reads, which a project younger than them cannot fill.
|
|
77
|
+
at: CAPTURE_AT,
|
|
78
|
+
window: VERIFY_DAYS,
|
|
75
79
|
runs: d.runs,
|
|
76
80
|
rounds: d.rounds,
|
|
77
81
|
span: d.span,
|