@smartmemory/compose 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1014 -0
- package/bin/compose.js +1515 -0
- package/dist/assets/_baseUniq-CQwX6VLz.js +1 -0
- package/dist/assets/arc-SxJ2J1sh.js +1 -0
- package/dist/assets/architectureDiagram-Q4EWVU46-BykunY1F.js +36 -0
- package/dist/assets/blockDiagram-DXYQGD6D-ohAKBOUw.js +132 -0
- package/dist/assets/c4Diagram-AHTNJAMY-DBDC3ENB.js +10 -0
- package/dist/assets/channel-DGElom1e.js +1 -0
- package/dist/assets/chunk-4BX2VUAB-Cv93Z7uM.js +1 -0
- package/dist/assets/chunk-4TB4RGXK-DE0WBDkj.js +206 -0
- package/dist/assets/chunk-55IACEB6-CE1EXenG.js +1 -0
- package/dist/assets/chunk-EDXVE4YY-DA7Ana6H.js +1 -0
- package/dist/assets/chunk-FMBD7UC4-CTDIPA3p.js +15 -0
- package/dist/assets/chunk-OYMX7WX6-uGBaPaTX.js +231 -0
- package/dist/assets/chunk-QZHKN3VN-CYlnXuUO.js +1 -0
- package/dist/assets/chunk-YZCP3GAM-ojGkzcZK.js +1 -0
- package/dist/assets/classDiagram-6PBFFD2Q-KqWP9wWZ.js +1 -0
- package/dist/assets/classDiagram-v2-HSJHXN6E-KqWP9wWZ.js +1 -0
- package/dist/assets/clone-DUJKJXd7.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-Bktn9hL-.js +1 -0
- package/dist/assets/dagre-KV5264BT-DFaSzuRF.js +4 -0
- package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/assets/diagram-5BDNPKRD-DnfmDzEm.js +10 -0
- package/dist/assets/diagram-G4DWMVQ6-Bm8W9YnG.js +24 -0
- package/dist/assets/diagram-MMDJMWI5-B5-TSKvp.js +43 -0
- package/dist/assets/diagram-TYMM5635-ls4rqlky.js +24 -0
- package/dist/assets/erDiagram-SMLLAGMA-giG6WO-r.js +85 -0
- package/dist/assets/flowDiagram-DWJPFMVM-XvlUuz-7.js +162 -0
- package/dist/assets/ganttDiagram-T4ZO3ILL-hLBV57oV.js +292 -0
- package/dist/assets/gitGraphDiagram-UUTBAWPF-BHu3s_Gn.js +106 -0
- package/dist/assets/graph-D0Cfv00Y.js +1 -0
- package/dist/assets/index-CUd6pFGF.css +1 -0
- package/dist/assets/index-DReRlzZI.js +1144 -0
- package/dist/assets/infoDiagram-42DDH7IO-DbqRsOo3.js +2 -0
- package/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dist/assets/ishikawaDiagram-UXIWVN3A-DnCdx7zb.js +70 -0
- package/dist/assets/journeyDiagram-VCZTEJTY-CfD7eNcP.js +139 -0
- package/dist/assets/kanban-definition-6JOO6SKY-BYaO9-mK.js +89 -0
- package/dist/assets/katex-DkKDou_j.js +257 -0
- package/dist/assets/layout-Bj72wOEB.js +1 -0
- package/dist/assets/linear-BRFo114D.js +1 -0
- package/dist/assets/min-GCHnKlJS.js +1 -0
- package/dist/assets/mindmap-definition-QFDTVHPH-n0PMebY4.js +96 -0
- package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/assets/pieDiagram-DEJITSTG-pN4CljHF.js +30 -0
- package/dist/assets/quadrantDiagram-34T5L4WZ-DNoAy8-D.js +7 -0
- package/dist/assets/requirementDiagram-MS252O5E-BhtY05PT.js +84 -0
- package/dist/assets/sankeyDiagram-XADWPNL6-B6AD-16A.js +10 -0
- package/dist/assets/sequenceDiagram-FGHM5R23-DShHM-uk.js +157 -0
- package/dist/assets/stateDiagram-FHFEXIEX-DMxn7HTo.js +1 -0
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-o6PnCs4e.js +1 -0
- package/dist/assets/timeline-definition-GMOUNBTQ-Cdu6uq52.js +120 -0
- package/dist/assets/vennDiagram-DHZGUBPP-CpK29iRe.js +34 -0
- package/dist/assets/wardley-RL74JXVD-BQgSkdcO.js +162 -0
- package/dist/assets/wardleyDiagram-NUSXRM2D-DJHYev6O.js +20 -0
- package/dist/assets/xychartDiagram-5P7HB3ND-1d75pbaO.js +7 -0
- package/dist/index.html +30 -0
- package/lib/agent-chains.js +65 -0
- package/lib/agent-string.js +86 -0
- package/lib/budget-ledger.js +86 -0
- package/lib/build-all.js +162 -0
- package/lib/build-dag.js +120 -0
- package/lib/build-stream-writer.js +190 -0
- package/lib/build.js +2997 -0
- package/lib/capability-checker.js +53 -0
- package/lib/cert-inject.js +38 -0
- package/lib/cli-progress.js +483 -0
- package/lib/constants.js +69 -0
- package/lib/cross-layer-audit.js +84 -0
- package/lib/debug-discipline.js +173 -0
- package/lib/feature-json.js +106 -0
- package/lib/gate-prompt.js +291 -0
- package/lib/gate-tiers.js +194 -0
- package/lib/health-history.js +119 -0
- package/lib/health-score.js +227 -0
- package/lib/ideabox.js +570 -0
- package/lib/import.js +244 -0
- package/lib/migrate-roadmap.js +94 -0
- package/lib/model-pricing.js +67 -0
- package/lib/new.js +413 -0
- package/lib/pipeline-cli.js +489 -0
- package/lib/plan-parser.js +103 -0
- package/lib/qa-scoping.js +474 -0
- package/lib/questionnaire.js +200 -0
- package/lib/resolve-port.js +7 -0
- package/lib/result-normalizer.js +349 -0
- package/lib/review-lenses.js +166 -0
- package/lib/roadmap-gen.js +210 -0
- package/lib/roadmap-parser.js +176 -0
- package/lib/server-probe.js +23 -0
- package/lib/staleness.js +87 -0
- package/lib/step-prompt.js +260 -0
- package/lib/step-validator.js +49 -0
- package/lib/stratum-mcp-client.js +365 -0
- package/lib/team-flag.js +46 -0
- package/lib/test-bootstrap.js +401 -0
- package/lib/triage.js +274 -0
- package/lib/vision-writer.js +391 -0
- package/package.json +111 -0
- package/pipelines/bug-fix.stratum.yaml +230 -0
- package/pipelines/build.stratum.yaml +498 -0
- package/pipelines/content.stratum.yaml +112 -0
- package/pipelines/coverage-sweep.stratum.yaml +52 -0
- package/pipelines/refactor.stratum.yaml +169 -0
- package/pipelines/research.stratum.yaml +88 -0
- package/pipelines/review-fix.stratum.yaml +109 -0
- package/presets/team-feature.stratum.yaml +105 -0
- package/presets/team-research.stratum.yaml +108 -0
- package/presets/team-review.stratum.yaml +106 -0
- package/scripts/agent-activity-hook.sh +31 -0
- package/scripts/agent-error-hook.sh +28 -0
- package/scripts/analyze-orphans.mjs +50 -0
- package/scripts/find-orphans.mjs +26 -0
- package/scripts/fix-phases.mjs +49 -0
- package/scripts/generate-stratum-spec.mjs +137 -0
- package/scripts/import-roadmap.mjs +116 -0
- package/scripts/phase-audit.mjs +33 -0
- package/scripts/run-pipeline.mjs +314 -0
- package/scripts/session-end-hook.sh +18 -0
- package/scripts/session-start-hook.sh +38 -0
- package/scripts/vision-hook.sh +104 -0
- package/scripts/vision-track.mjs +554 -0
- package/scripts/wire-all-orphans.mjs +108 -0
- package/scripts/wire-orphans.mjs +164 -0
- package/server/activity-routes.js +123 -0
- package/server/agent-health.js +197 -0
- package/server/agent-hooks.js +102 -0
- package/server/agent-mcp.js +10 -0
- package/server/agent-registry.js +95 -0
- package/server/agent-server.js +290 -0
- package/server/agent-spawn.js +251 -0
- package/server/agent-templates.js +77 -0
- package/server/artifact-manager.js +247 -0
- package/server/artifact-templates/architecture.md +28 -0
- package/server/artifact-templates/blueprint.md +21 -0
- package/server/artifact-templates/design.md +36 -0
- package/server/artifact-templates/plan.md +25 -0
- package/server/artifact-templates/prd.md +43 -0
- package/server/artifact-templates/report.md +40 -0
- package/server/block-tracker.js +90 -0
- package/server/build-stream-bridge.js +502 -0
- package/server/coalescing-buffer.js +46 -0
- package/server/compose-mcp-tools.js +479 -0
- package/server/compose-mcp.js +324 -0
- package/server/connectors/agent-connector.js +78 -0
- package/server/connectors/claude-sdk-connector.js +198 -0
- package/server/connectors/codex-connector.js +240 -0
- package/server/connectors/connector-discovery.js +18 -0
- package/server/connectors/connector-runtime.js +13 -0
- package/server/connectors/opencode-connector.js +200 -0
- package/server/design-routes.js +540 -0
- package/server/design-session.js +161 -0
- package/server/feature-scan.js +593 -0
- package/server/file-watcher.js +284 -0
- package/server/find-root.js +29 -0
- package/server/graph-export.js +343 -0
- package/server/ideabox-cache.js +77 -0
- package/server/ideabox-routes.js +294 -0
- package/server/index.js +156 -0
- package/server/model-tiers.js +49 -0
- package/server/pipeline-routes.js +288 -0
- package/server/policy-evaluator.js +36 -0
- package/server/project-root.js +122 -0
- package/server/security.js +23 -0
- package/server/session-manager.js +403 -0
- package/server/session-routes.js +190 -0
- package/server/session-store.js +107 -0
- package/server/settings-routes.js +35 -0
- package/server/settings-store.js +234 -0
- package/server/stratum-api.js +102 -0
- package/server/stratum-client.js +192 -0
- package/server/stratum-sync.js +193 -0
- package/server/summarizer.js +139 -0
- package/server/supervisor.js +196 -0
- package/server/vision-routes.js +668 -0
- package/server/vision-server.js +393 -0
- package/server/vision-store.js +360 -0
- package/server/vision-utils.js +179 -0
- package/server/worktree-gc.js +137 -0
- package/templates/ROADMAP.md +46 -0
package/package.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@smartmemory/compose",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Structured AI dev pipeline — goal-to-product orchestration with gates, iteration loops, and feature lifecycle management.",
|
|
5
|
+
"author": "SmartMemory",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"compose": "./bin/compose.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"dev": "node server/supervisor.js 2>&1 | tee /tmp/compose-server.log",
|
|
13
|
+
"dev:server": "node server/supervisor.js",
|
|
14
|
+
"dev:server:bare": "node server/index.js",
|
|
15
|
+
"dev:client": "vite",
|
|
16
|
+
"build": "vite build",
|
|
17
|
+
"preview": "vite preview",
|
|
18
|
+
"test": "node --test test/*.test.js",
|
|
19
|
+
"test:integration": "node --test test/integration/*.test.js",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"compose",
|
|
24
|
+
"smartmemory",
|
|
25
|
+
"ai",
|
|
26
|
+
"orchestration",
|
|
27
|
+
"agent",
|
|
28
|
+
"pipeline",
|
|
29
|
+
"stratum",
|
|
30
|
+
"claude",
|
|
31
|
+
"codex",
|
|
32
|
+
"cli"
|
|
33
|
+
],
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=18.0.0"
|
|
36
|
+
},
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "git+https://github.com/smartmemory/compose.git"
|
|
40
|
+
},
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://github.com/smartmemory/compose/issues"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://github.com/smartmemory/compose#readme",
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"files": [
|
|
49
|
+
"bin/**",
|
|
50
|
+
"server/**",
|
|
51
|
+
"lib/**",
|
|
52
|
+
"dist/**",
|
|
53
|
+
"templates/**",
|
|
54
|
+
"presets/**",
|
|
55
|
+
"pipelines/**",
|
|
56
|
+
"contracts/**",
|
|
57
|
+
"scripts/**",
|
|
58
|
+
"README.md",
|
|
59
|
+
"LICENSE"
|
|
60
|
+
],
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.47",
|
|
63
|
+
"@dagrejs/dagre": "^2.0.4",
|
|
64
|
+
"@hello-pangea/dnd": "^18.0.1",
|
|
65
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
66
|
+
"@opencode-ai/sdk": "^1.2.17",
|
|
67
|
+
"@radix-ui/react-collapsible": "^1.1.12",
|
|
68
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
69
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
70
|
+
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
71
|
+
"@radix-ui/react-select": "^2.2.6",
|
|
72
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
73
|
+
"@radix-ui/react-slot": "^1.2.4",
|
|
74
|
+
"@radix-ui/react-toggle": "^1.1.10",
|
|
75
|
+
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
76
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
77
|
+
"@tanstack/react-virtual": "^3.13.23",
|
|
78
|
+
"class-variance-authority": "^0.7.1",
|
|
79
|
+
"clsx": "^2.1.1",
|
|
80
|
+
"cors": "^2.8.5",
|
|
81
|
+
"cytoscape": "^3.33.1",
|
|
82
|
+
"cytoscape-dagre": "^2.5.0",
|
|
83
|
+
"cytoscape-fcose": "^2.2.0",
|
|
84
|
+
"date-fns": "^3.6.0",
|
|
85
|
+
"diff": "^8.0.4",
|
|
86
|
+
"express": "^4.21.0",
|
|
87
|
+
"ink": "^5.2.1",
|
|
88
|
+
"lucide-react": "^0.563.0",
|
|
89
|
+
"mermaid": "^11.13.0",
|
|
90
|
+
"react": "^19.2.5",
|
|
91
|
+
"react-dom": "^19.2.5",
|
|
92
|
+
"react-markdown": "^10.1.0",
|
|
93
|
+
"remark-gfm": "^4.0.1",
|
|
94
|
+
"tailwind-merge": "^3.4.0",
|
|
95
|
+
"tailwindcss-animate": "^1.0.7",
|
|
96
|
+
"uuid": "^11.0.0",
|
|
97
|
+
"ws": "^8.18.0",
|
|
98
|
+
"yaml": "^2.8.2",
|
|
99
|
+
"zustand": "^5.0.11"
|
|
100
|
+
},
|
|
101
|
+
"devDependencies": {
|
|
102
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
103
|
+
"autoprefixer": "^10.4.20",
|
|
104
|
+
"postcss": "^8.5.3",
|
|
105
|
+
"tailwindcss": "^3.4.17",
|
|
106
|
+
"vite": "^6.1.0"
|
|
107
|
+
},
|
|
108
|
+
"overrides": {
|
|
109
|
+
"zod": "^4.0.0"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# metadata:
|
|
2
|
+
# id: bug-fix
|
|
3
|
+
# label: "Bug Fix"
|
|
4
|
+
# description: "Diagnose and fix a bug — reproduce, trace root cause, scope audit, fix, test, verify, ship"
|
|
5
|
+
# category: maintenance
|
|
6
|
+
# steps: 8
|
|
7
|
+
# estimated_minutes: 40
|
|
8
|
+
|
|
9
|
+
version: "0.1"
|
|
10
|
+
|
|
11
|
+
# bug-fix pipeline
|
|
12
|
+
#
|
|
13
|
+
# Eight-step flow for disciplined bug resolution:
|
|
14
|
+
# 1. reproduce — confirm the bug exists with a failing test
|
|
15
|
+
# 2. diagnose — trace root cause by OBSERVING actual data (not assuming)
|
|
16
|
+
# 3. scope_check — grep audit if change spans multiple layers/repos
|
|
17
|
+
# 4. fix — implement the minimal correct fix across ALL affected layers
|
|
18
|
+
# 5. test — run full test suite, ensure no regressions
|
|
19
|
+
# 6. verify — confirm original reproduction case now passes
|
|
20
|
+
# 7. retro_check — detect fix chains and log discipline signals
|
|
21
|
+
# 8. ship — commit and report
|
|
22
|
+
#
|
|
23
|
+
# Debug Discipline (COMP-DEBUG-1):
|
|
24
|
+
# - diagnose requires trace_evidence (actual command output, not prose assumptions)
|
|
25
|
+
# - scope_check prevents incremental multi-layer discovery
|
|
26
|
+
# - retro_check detects fix chains and feeds iteration ledger
|
|
27
|
+
#
|
|
28
|
+
# Inputs:
|
|
29
|
+
# task — bug description (symptoms, steps to reproduce, affected files)
|
|
30
|
+
#
|
|
31
|
+
# Usage:
|
|
32
|
+
# stratum_plan <this yaml> "bug_fix" {"task": "..."}
|
|
33
|
+
|
|
34
|
+
contracts:
|
|
35
|
+
BugFixResult:
|
|
36
|
+
phase: {type: string}
|
|
37
|
+
summary: {type: string}
|
|
38
|
+
outcome: {type: string, values: [complete, failed]}
|
|
39
|
+
references_addressed: {type: string} # stringified int
|
|
40
|
+
|
|
41
|
+
TestResult:
|
|
42
|
+
passing: {type: boolean}
|
|
43
|
+
summary: {type: string}
|
|
44
|
+
failures: {type: array}
|
|
45
|
+
|
|
46
|
+
TraceEvidence:
|
|
47
|
+
command: {type: string}
|
|
48
|
+
actual_output: {type: string}
|
|
49
|
+
conclusion: {type: string}
|
|
50
|
+
|
|
51
|
+
DiagnoseResult:
|
|
52
|
+
root_cause: {type: string}
|
|
53
|
+
affected_layers: {type: array}
|
|
54
|
+
trace_evidence: {type: array, items: TraceEvidence}
|
|
55
|
+
summary: {type: string}
|
|
56
|
+
scope_hint: {type: string} # single | cross-layer | unknown
|
|
57
|
+
|
|
58
|
+
ScopeResult:
|
|
59
|
+
scope: {type: string, values: [single, cross_layer]}
|
|
60
|
+
references_found: {type: array}
|
|
61
|
+
repos_scanned: {type: number}
|
|
62
|
+
summary: {type: string}
|
|
63
|
+
references_count: {type: string} # stringified int for Stratum compat
|
|
64
|
+
|
|
65
|
+
RetroCheckResult:
|
|
66
|
+
fix_chains: {type: array}
|
|
67
|
+
attempt_count: {type: number}
|
|
68
|
+
escalation: {type: boolean}
|
|
69
|
+
discipline_score: {type: number}
|
|
70
|
+
summary: {type: string}
|
|
71
|
+
|
|
72
|
+
functions:
|
|
73
|
+
reproduce:
|
|
74
|
+
mode: compute
|
|
75
|
+
intent: >
|
|
76
|
+
Write a failing test that demonstrates the bug. The test must fail
|
|
77
|
+
before any fix is applied. Return a summary of the reproduction.
|
|
78
|
+
input:
|
|
79
|
+
task: {type: string}
|
|
80
|
+
output: BugFixResult
|
|
81
|
+
retries: 2
|
|
82
|
+
|
|
83
|
+
diagnose:
|
|
84
|
+
mode: compute
|
|
85
|
+
intent: >
|
|
86
|
+
Trace the root cause by OBSERVING actual data, not assuming.
|
|
87
|
+
You MUST run at least one command that prints a real value at the
|
|
88
|
+
failure point (docker exec, curl, python -c "print(type(x))").
|
|
89
|
+
Return trace_evidence: a list of {command, actual_output, conclusion}.
|
|
90
|
+
Also identify which layers are affected (core, service, frontend, infra).
|
|
91
|
+
"Import OK" and "build passed" are NOT trace evidence.
|
|
92
|
+
input:
|
|
93
|
+
task: {type: string}
|
|
94
|
+
output: DiagnoseResult
|
|
95
|
+
ensure:
|
|
96
|
+
- "result.trace_evidence != null"
|
|
97
|
+
- "result.trace_evidence.length >= 2"
|
|
98
|
+
- "result.root_cause != null"
|
|
99
|
+
- "result.scope_hint in ('single', 'cross-layer', 'unknown')"
|
|
100
|
+
retries: 2
|
|
101
|
+
|
|
102
|
+
scope_check:
|
|
103
|
+
mode: compute
|
|
104
|
+
intent: >
|
|
105
|
+
If the diagnosis shows the root cause involves a provider switch,
|
|
106
|
+
field rename, config key change, or anything spanning multiple
|
|
107
|
+
repos or layers: grep ALL configured project repos for every reference
|
|
108
|
+
to the affected term. Return the full reference list grouped by repo.
|
|
109
|
+
If the change is single-layer, return scope: 'single' and skip.
|
|
110
|
+
This prevents incremental multi-layer discovery (fixing one layer,
|
|
111
|
+
deploying, discovering the next layer is broken, repeat).
|
|
112
|
+
input:
|
|
113
|
+
task: {type: string}
|
|
114
|
+
diagnosis: {type: object}
|
|
115
|
+
output: ScopeResult
|
|
116
|
+
retries: 1
|
|
117
|
+
|
|
118
|
+
fix:
|
|
119
|
+
mode: compute
|
|
120
|
+
intent: >
|
|
121
|
+
Implement the minimal correct fix for the diagnosed root cause.
|
|
122
|
+
If scope_check found cross-layer references, address ALL of them
|
|
123
|
+
in coordinated commits — do not leave any reference unaddressed.
|
|
124
|
+
Change only what is necessary. Return a summary of changes made.
|
|
125
|
+
input:
|
|
126
|
+
task: {type: string}
|
|
127
|
+
scope: {type: object}
|
|
128
|
+
output: BugFixResult
|
|
129
|
+
retries: 2
|
|
130
|
+
|
|
131
|
+
test:
|
|
132
|
+
mode: compute
|
|
133
|
+
intent: >
|
|
134
|
+
Run the full test suite. Return structured JSON:
|
|
135
|
+
{ "passing": boolean, "summary": string, "failures": string[] }.
|
|
136
|
+
input:
|
|
137
|
+
task: {type: string}
|
|
138
|
+
output: TestResult
|
|
139
|
+
ensure:
|
|
140
|
+
- "result.passing == true"
|
|
141
|
+
retries: 5
|
|
142
|
+
|
|
143
|
+
verify:
|
|
144
|
+
mode: compute
|
|
145
|
+
intent: >
|
|
146
|
+
Re-run the reproduction test from step 1. Confirm it now passes.
|
|
147
|
+
Return a summary confirming the fix resolves the original bug.
|
|
148
|
+
input:
|
|
149
|
+
task: {type: string}
|
|
150
|
+
output: BugFixResult
|
|
151
|
+
retries: 1
|
|
152
|
+
|
|
153
|
+
retro_check:
|
|
154
|
+
mode: compute
|
|
155
|
+
intent: >
|
|
156
|
+
Analyze git history for this session. Detect fix chains: 2+ commits
|
|
157
|
+
modifying the same file or function. Count total fix attempts on
|
|
158
|
+
the target bug. For visual/CSS/layout bugs, enforce hard stop at
|
|
159
|
+
attempt 2 and flag for cross-agent escalation.
|
|
160
|
+
Return fix_chains (list of repeated files), attempt_count, whether
|
|
161
|
+
escalation was triggered, and a discipline_score (0-100).
|
|
162
|
+
input:
|
|
163
|
+
task: {type: string}
|
|
164
|
+
output: RetroCheckResult
|
|
165
|
+
retries: 1
|
|
166
|
+
|
|
167
|
+
ship:
|
|
168
|
+
mode: compute
|
|
169
|
+
intent: >
|
|
170
|
+
Commit all changes with a descriptive message. Update CHANGELOG.md
|
|
171
|
+
if appropriate. Return a summary of what was shipped.
|
|
172
|
+
input:
|
|
173
|
+
task: {type: string}
|
|
174
|
+
output: BugFixResult
|
|
175
|
+
retries: 1
|
|
176
|
+
|
|
177
|
+
flows:
|
|
178
|
+
bug_fix:
|
|
179
|
+
input:
|
|
180
|
+
task: {type: string}
|
|
181
|
+
output: BugFixResult
|
|
182
|
+
steps:
|
|
183
|
+
- id: reproduce
|
|
184
|
+
function: reproduce
|
|
185
|
+
inputs:
|
|
186
|
+
task: "$.input.task"
|
|
187
|
+
|
|
188
|
+
- id: diagnose
|
|
189
|
+
function: diagnose
|
|
190
|
+
inputs:
|
|
191
|
+
task: "$.input.task"
|
|
192
|
+
depends_on: [reproduce]
|
|
193
|
+
|
|
194
|
+
- id: scope_check
|
|
195
|
+
function: scope_check
|
|
196
|
+
inputs:
|
|
197
|
+
task: "$.input.task"
|
|
198
|
+
diagnosis: "$.steps.diagnose.output"
|
|
199
|
+
depends_on: [diagnose]
|
|
200
|
+
|
|
201
|
+
- id: fix
|
|
202
|
+
function: fix
|
|
203
|
+
inputs:
|
|
204
|
+
task: "$.input.task"
|
|
205
|
+
scope: "$.steps.scope_check.output"
|
|
206
|
+
depends_on: [scope_check]
|
|
207
|
+
|
|
208
|
+
- id: test
|
|
209
|
+
function: test
|
|
210
|
+
inputs:
|
|
211
|
+
task: "$.input.task"
|
|
212
|
+
depends_on: [fix]
|
|
213
|
+
|
|
214
|
+
- id: verify
|
|
215
|
+
function: verify
|
|
216
|
+
inputs:
|
|
217
|
+
task: "$.input.task"
|
|
218
|
+
depends_on: [test]
|
|
219
|
+
|
|
220
|
+
- id: retro_check
|
|
221
|
+
function: retro_check
|
|
222
|
+
inputs:
|
|
223
|
+
task: "$.input.task"
|
|
224
|
+
depends_on: [verify]
|
|
225
|
+
|
|
226
|
+
- id: ship
|
|
227
|
+
function: ship
|
|
228
|
+
inputs:
|
|
229
|
+
task: "$.input.task"
|
|
230
|
+
depends_on: [retro_check]
|