@tea-agent/loop-agent 0.13.0-beta.0 → 0.13.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/AGENTS.md +157 -155
- package/CHANGELOG.md +301 -322
- package/README.md +335 -345
- package/bin/agent-worker.js +22 -22
- package/bin/loop-agent.js +21 -21
- package/dist/commands/cursor-prompt.js +6 -6
- package/dist/commands/init.js +597 -528
- package/dist/commands/loop-benchmark.js +11 -11
- package/dist/commands/pi-reuse-benchmark.js +16 -16
- package/dist/executors/shell-executor.js +200 -21
- package/dist/infrastructure/evaluation/candidate-store.js +5 -1
- package/dist/sidecars/cursor-prompt/executor.js +1 -1
- package/dist/task/runtime.js +27 -27
- package/dist/worker/observe/static/api.js +46 -46
- package/dist/worker/observe/static/app.js +150 -150
- package/dist/worker/observe/static/constants.js +148 -148
- package/dist/worker/observe/static/copy.js +67 -67
- package/dist/worker/observe/static/dag-helpers.js +172 -172
- package/dist/worker/observe/static/dag-layout.d.ts +31 -31
- package/dist/worker/observe/static/dag-layout.js +83 -83
- package/dist/worker/observe/static/dag-model.js +72 -72
- package/dist/worker/observe/static/dom.js +212 -53
- package/dist/worker/observe/static/format-pool.js +67 -67
- package/dist/worker/observe/static/format.js +292 -292
- package/dist/worker/observe/static/index.html +308 -308
- package/dist/worker/observe/static/kpi.js +94 -94
- package/dist/worker/observe/static/relations.js +133 -133
- package/dist/worker/observe/static/router.js +93 -93
- package/dist/worker/observe/static/run-processing.js +148 -148
- package/dist/worker/observe/static/shell-chrome.js +68 -68
- package/dist/worker/observe/static/state.js +267 -253
- package/dist/worker/observe/static/styles.css +1902 -1902
- package/dist/worker/observe/static/views/batch.js +227 -227
- package/dist/worker/observe/static/views/dag-graph.js +172 -172
- package/dist/worker/observe/static/views/dag-inspector.js +627 -607
- package/dist/worker/observe/static/views/dag.js +371 -362
- package/dist/worker/observe/static/views/dashboard.js +509 -252
- package/dist/worker/observe/static/views/failures.js +143 -143
- package/dist/worker/observe/static/views/feature.js +492 -492
- package/dist/worker/observe/static/views/pool.js +350 -350
- package/dist/worker/observe/static/views/run.js +453 -453
- package/dist/worker/observe/static/views/session-timeline.js +219 -205
- package/dist/worker/observe/static/views/shell.js +7 -7
- package/dist/worker/observe/static/views/task.js +314 -314
- package/dist/worker/observe/static/views/timeline.js +163 -163
- package/dist/workflows/dag/backend-test-case-manifest.js +503 -0
- package/dist/workflows/dag/backend-test-execution-contract.js +353 -0
- package/dist/workflows/dag/backend-test-result-contract.js +568 -0
- package/dist/workflows/dag/canvas-observer.js +275 -275
- package/dist/workflows/dag/decision-envelope.js +57 -2
- package/dist/workflows/dag/frontend-implementation-contract.js +240 -0
- package/dist/workflows/dag/frontend-project-capability.js +309 -0
- package/dist/workflows/dag/frontend-repair.js +341 -0
- package/dist/workflows/dag/frontend-risk.js +161 -0
- package/dist/workflows/dag/frontend-verification-trace.js +190 -0
- package/dist/workflows/dag/init-hybrid.js +1020 -125
- package/dist/workflows/dag/repair-artifact.js +43 -3
- package/dist/workflows/dag/skill-instructions.js +4 -2
- package/dist/workflows/dag/types.js +29 -8
- package/docs/README.md +105 -104
- package/docs/agent-dag-recovery-playbook.md +195 -195
- package/docs/agent-dag-runner.md +67 -67
- package/docs/architecture/README.md +26 -26
- package/docs/architecture/dag-execution.md +140 -140
- package/docs/architecture/evolution.md +54 -54
- package/docs/architecture/facts-and-state.md +71 -71
- package/docs/architecture/runtime-boundaries.md +191 -191
- package/docs/architecture/system-overview.md +93 -93
- package/docs/architecture/worker-and-feature.md +85 -85
- package/docs/cursor-prompt-sidecar.md +36 -36
- package/docs/decisions/README.md +18 -18
- package/docs/design/README.md +167 -167
- package/docs/development-principles.md +73 -73
- package/docs/exec-plans/README.md +6 -6
- package/docs/exec-plans/active/README.md +1 -4
- package/docs/exec-plans/completed/README.md +106 -84
- package/docs/feature-workflow.md +414 -389
- package/docs/harness-methodology-debugging.md +153 -153
- package/docs/harness-methodology-tdd.md +130 -130
- package/docs/harness-methodology-verification.md +27 -27
- package/docs/init-surface.manifest.json +307 -289
- package/docs/loop-agent-harness.md +142 -142
- package/docs/production-readiness.md +96 -96
- package/docs/progress/README.md +76 -60
- package/docs/reports/README.md +150 -108
- package/docs/skills/README.md +7 -7
- package/docs/skills/vetted-skill-registry.md +29 -29
- package/docs/templates/adr.md +60 -60
- package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
- package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
- package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
- package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
- package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
- package/docs/templates/agent-dag-report.schema.json +473 -473
- package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
- package/docs/templates/agent-dag.base.json +190 -190
- package/docs/templates/agent-dag.final-verification.json +185 -185
- package/docs/templates/agent-dag.schema.json +411 -411
- package/docs/templates/agent-dag.supervised-implementation.json +620 -501
- package/docs/templates/backend-test-analysis.schema.json +44 -44
- package/docs/templates/backend-test-case-manifest.schema.json +190 -0
- package/docs/templates/backend-test-dag.classify.prompt.md +75 -0
- package/docs/templates/backend-test-dag.generate-pytest.prompt.md +204 -202
- package/docs/templates/backend-test-dag.json +559 -311
- package/docs/templates/backend-test-dag.retrospect.prompt.md +139 -125
- package/docs/templates/backend-test-dag.review-cases.prompt.md +83 -81
- package/docs/templates/backend-test-execution.schema.json +133 -0
- package/docs/templates/backend-test-result.schema.json +99 -0
- package/docs/templates/branch-merge-report.md +93 -0
- package/docs/templates/exec-plan.md +64 -64
- package/docs/templates/feature-spec.md +53 -53
- package/docs/templates/frontend-design-contract.md +42 -42
- package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -0
- package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -0
- package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -0
- package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -0
- package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -0
- package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -0
- package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -0
- package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -0
- package/docs/templates/frontend-eval/metrics.md +138 -0
- package/docs/templates/frontend-eval/smoke-targets.md +53 -0
- package/docs/templates/frontend-implementation-contract.schema.json +27 -0
- package/docs/templates/frontend-task-constraints.md +35 -35
- package/docs/templates/frontend-task-requirement.md +70 -70
- package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -5
- package/docs/templates/frontend-test-dag.json +23 -23
- package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -3
- package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -3
- package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -3
- package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -3
- package/docs/templates/harness.schema.json +221 -221
- package/docs/templates/hybrid-dag.json +188 -188
- package/docs/templates/init-evolution-review.md +35 -35
- package/docs/templates/interactive-ui-round2-experiment.md +66 -66
- package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
- package/docs/templates/knowledge-sync-dag.json +178 -178
- package/docs/templates/knowledge-sync-draft.schema.json +71 -71
- package/docs/templates/product-line/AGENTS.md +8 -8
- package/docs/templates/product-line/README.md +9 -9
- package/docs/templates/product-line/acceptance.yaml +14 -14
- package/docs/templates/product-line/closeout.yaml +9 -9
- package/docs/templates/product-line/design.md +13 -13
- package/docs/templates/product-line/links.md +10 -10
- package/docs/templates/product-line/requirement.md +17 -17
- package/docs/templates/product-line/task-graph.yaml +15 -15
- package/docs/templates/product-line/task.yaml +64 -64
- package/docs/templates/product-line/test-plan.md +7 -7
- package/docs/templates/production-readiness-checklist.md +57 -57
- package/docs/templates/progress-log.md +17 -17
- package/docs/templates/project-start-checklist.md +9 -9
- package/docs/templates/qa-report.md +48 -48
- package/docs/templates/sprint-contract.md +29 -29
- package/docs/templates/worker-dogfood-evidence.md +80 -80
- package/docs/templates/worker-dogfood-setup.md +68 -68
- package/docs/verification-matrix.md +70 -70
- package/examples/decision-gate-agent-dag.json +177 -177
- package/examples/example-dag.json +46 -46
- package/examples/hybrid-loop-agent-dag.json +189 -189
- package/harness.json +66 -66
- package/package.json +52 -88
- package/scripts/check-product-line-docs.sh +29 -29
- package/scripts/check-task-pool-root.sh +32 -32
- package/scripts/kb-bootstrap-init-skeleton.sh +240 -240
- package/scripts/kb-graph-incremental-prepare.mjs +386 -386
- package/scripts/kb-graph-incremental-prepare.sh +5 -5
- package/scripts/kb-graph-materialize.mjs +105 -105
- package/scripts/kb-graph-materialize.sh +4 -4
- package/scripts/kb-graph-promote.mjs +164 -164
- package/scripts/kb-graph-promote.sh +4 -4
- package/scripts/kb-query.mjs +554 -554
- package/scripts/kb-query.sh +5 -5
- package/skills/agent-worker/SKILL.md +39 -39
- package/skills/agent-worker/references/agent-worker-operator.md +60 -60
- package/skills/ai-engineering-context/SKILL.md +48 -48
- package/skills/analyze-product-dependencies/SKILL.md +67 -67
- package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
- package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
- package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
- package/skills/analyze-product-dependencies/references/example.md +76 -76
- package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
- package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
- package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
- package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
- package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
- package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
- package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
- package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
- package/skills/analyze-product-requirements/SKILL.md +90 -90
- package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
- package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
- package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
- package/skills/analyze-product-requirements/references/example.md +86 -86
- package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
- package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
- package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
- package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
- package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
- package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
- package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
- package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
- package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
- package/skills/browser-tools/SKILL.md +196 -0
- package/skills/browser-tools/browser-content.js +103 -0
- package/skills/browser-tools/browser-cookies.js +35 -0
- package/skills/browser-tools/browser-eval.js +53 -0
- package/skills/browser-tools/browser-hn-scraper.js +108 -0
- package/skills/browser-tools/browser-nav.js +44 -0
- package/skills/browser-tools/browser-pick.js +162 -0
- package/skills/browser-tools/browser-screenshot.js +34 -0
- package/skills/browser-tools/browser-start.js +86 -0
- package/skills/browser-tools/package-lock.json +2556 -0
- package/skills/browser-tools/package.json +19 -0
- package/skills/code-review-core/SKILL.md +20 -20
- package/skills/codebase-scout/SKILL.md +19 -19
- package/skills/frontend-design-review/SKILL.md +66 -66
- package/skills/frontend-design-review/references/review-checklist.md +58 -58
- package/skills/frontend-implementation/SKILL.md +49 -47
- package/skills/frontend-implementation/references/code-standards.md +32 -32
- package/skills/frontend-implementation/references/design-spec.md +46 -46
- package/skills/frontend-implementation/references/node-contracts.md +27 -76
- package/skills/frontend-review/SKILL.md +59 -59
- package/skills/frontend-review/references/review-findings.md +47 -47
- package/skills/frontend-verification/SKILL.md +53 -53
- package/skills/frontend-verification/references/verification-checklist.md +68 -68
- package/skills/grill-me/SKILL.md +10 -10
- package/skills/grill-with-docs/SKILL.md +88 -88
- package/skills/grill-with-docs/adr-format.md +47 -47
- package/skills/grill-with-docs/context-format.md +60 -60
- package/skills/init-capability-evolution/SKILL.md +70 -70
- package/skills/loop-agent/SKILL.md +151 -151
- package/skills/loop-agent/references/README.md +67 -67
- package/skills/loop-agent/references/command-reference.md +527 -505
- package/skills/loop-agent/references/docs-converge.md +126 -126
- package/skills/loop-agent/references/harness-policy.md +263 -263
- package/skills/loop-agent/references/hybrid-dag.md +243 -238
- package/skills/loop-agent/references/learned/README.md +21 -21
- package/skills/loop-agent/references/long-running-loop.md +57 -57
- package/skills/loop-agent/references/model-routing.md +36 -36
- package/skills/loop-agent/references/multi-worktree.md +54 -54
- package/skills/loop-agent/references/one-shot-runs.md +85 -85
- package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
- package/skills/loop-agent/references/pi-prompt.md +23 -23
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
- package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
- package/skills/loop-agent/references/task-workflow.md +89 -89
- package/skills/loop-agent/references/verification-and-failure-handling.md +141 -139
- package/skills/playwright-cli/SKILL.md +420 -420
- package/skills/playwright-cli/references/element-attributes.md +23 -23
- package/skills/playwright-cli/references/playwright-tests.md +39 -39
- package/skills/playwright-cli/references/request-mocking.md +87 -87
- package/skills/playwright-cli/references/running-code.md +241 -241
- package/skills/playwright-cli/references/session-management.md +225 -225
- package/skills/playwright-cli/references/storage-state.md +275 -275
- package/skills/playwright-cli/references/test-generation.md +433 -433
- package/skills/playwright-cli/references/tracing.md +139 -139
- package/skills/playwright-cli/references/video-recording.md +143 -143
- package/skills/playwright-cli-case-generator/SKILL.md +74 -74
- package/skills/requesting-code-review/SKILL.md +101 -101
- package/skills/requesting-code-review/code-reviewer.md +168 -168
- package/skills/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/systematic-debugging/SKILL.md +296 -296
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/systematic-debugging/find-polluter.sh +63 -63
- package/skills/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/systematic-debugging/test-academic.md +14 -14
- package/skills/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/test-driven-development/SKILL.md +20 -20
- package/skills/using-git-worktrees/SKILL.md +215 -215
- package/skills/verification-before-completion/SKILL.md +154 -154
- package/skills/webapp-testing/SKILL.md +19 -19
|
@@ -1,125 +1,139 @@
|
|
|
1
|
-
# Backend Test DAG Retrospect Prompt Template
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Use this prompt for a **test retrospective** node: `executor: "pi"`, `role: "closeout"`, `toolProfile: "write"`, `writePolicy: "exclusive"`. The closeout agent reads
|
|
6
|
-
|
|
7
|
-
Do **not** create a new executor type. This is a standard `executor: pi` writer node.
|
|
8
|
-
|
|
9
|
-
## Recommended DAG Node Shape
|
|
10
|
-
|
|
11
|
-
```json
|
|
12
|
-
{
|
|
13
|
-
"id": "test-retrospect-pi",
|
|
14
|
-
"depends_on": ["
|
|
15
|
-
"complexity": "MED",
|
|
16
|
-
"executor": "pi",
|
|
17
|
-
"role": "closeout",
|
|
18
|
-
"toolProfile": "write",
|
|
19
|
-
"writePolicy": "exclusive",
|
|
20
|
-
"writeSet": ["docs/test-reports/**"],
|
|
21
|
-
"allowedPaths": ["docs/test-reports/**"],
|
|
22
|
-
"forbiddenPaths": [".harness/**", "artifacts/**"],
|
|
23
|
-
"outputContract": "Markdown retrospective report under docs/test-reports/ with coverage summary, review findings,
|
|
24
|
-
"subtask_prompt_markdown": "./backend-test-dag.retrospect.prompt.md"
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Prompt Body
|
|
29
|
-
|
|
30
|
-
You are the Backend Test DAG **test retrospective** agent.
|
|
31
|
-
|
|
32
|
-
Your job is to read upstream
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
**
|
|
72
|
-
**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
|
94
|
-
|
|
95
|
-
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
|
106
|
-
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
1
|
+
# Backend Test DAG Retrospect Prompt Template
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Use this prompt for a **test retrospective** node: `executor: "pi"`, `role: "closeout"`, `toolProfile: "write"`, `writePolicy: "exclusive"`. The closeout agent reads **Backend Test Result v1** (and classification), then generates a retrospective report with an objective maturity rating.
|
|
6
|
+
|
|
7
|
+
Do **not** create a new executor type. This is a standard `executor: pi` writer node.
|
|
8
|
+
|
|
9
|
+
## Recommended DAG Node Shape
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"id": "test-retrospect-pi",
|
|
14
|
+
"depends_on": ["classify-backend-test-result-pi"],
|
|
15
|
+
"complexity": "MED",
|
|
16
|
+
"executor": "pi",
|
|
17
|
+
"role": "closeout",
|
|
18
|
+
"toolProfile": "write",
|
|
19
|
+
"writePolicy": "exclusive",
|
|
20
|
+
"writeSet": ["docs/test-reports/**"],
|
|
21
|
+
"allowedPaths": ["docs/test-reports/**"],
|
|
22
|
+
"forbiddenPaths": [".harness/**", "artifacts/**"],
|
|
23
|
+
"outputContract": "Markdown retrospective report under docs/test-reports/ with coverage summary, review findings, Result v1 stats, classification, and maturity rating (A/B/C/D).",
|
|
24
|
+
"subtask_prompt_markdown": "./backend-test-dag.retrospect.prompt.md"
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Prompt Body
|
|
29
|
+
|
|
30
|
+
You are the Backend Test DAG **test retrospective** agent.
|
|
31
|
+
|
|
32
|
+
Your job is to read upstream Result v1 + classification (+ review report) and generate a retrospective report with a maturity rating. Write the report under `docs/test-reports/` only. Stay within `writeSet`. Do not write root `artifacts/**`.
|
|
33
|
+
|
|
34
|
+
This node runs on **both pass and assertion-fail** paths (after parse + classify). Final task success is decided later by `backend-test-outcome-gate-shell` using Result v1 shell facts only — **never** rewrite a failed result as passed in this report.
|
|
35
|
+
|
|
36
|
+
### Output Steps (do in order)
|
|
37
|
+
|
|
38
|
+
1. First, output the maturity rating on the first line: `Rating: A/B/C/D`
|
|
39
|
+
2. Then write the full report under `docs/test-reports/`
|
|
40
|
+
|
|
41
|
+
### Inputs
|
|
42
|
+
|
|
43
|
+
1. **Result v1 (authoritative stats)** — `$HARNESS_DAG_RUN_DIR/contracts/backend-test-result.json`
|
|
44
|
+
Use `passed` / `failed` / `error` / `skipped` / `outcome` / `failures[]` / `pytestExitCode` only from this artifact.
|
|
45
|
+
2. **Case Manifest v1 (authoritative AC coverage)** — `$HARNESS_DAG_RUN_DIR/contracts/backend-test-case-manifest.json`
|
|
46
|
+
Use `coverageSummary.acCoverageRatio`, `coveredAcCount`, `explicitAcCount`, case counts only from this artifact.
|
|
47
|
+
3. **Classification** — `classify-backend-test-result-pi` JSON (`category`, `confidence`, `evidence`). Interpretive only; does not override outcome.
|
|
48
|
+
4. **Review report** — `review-backend-cases-pi` output (VERDICT, findings, coverage assessment).
|
|
49
|
+
5. Optional secondary: execute stdout markers / JUnit path (do not re-parse logs for counts when Result v1 exists).
|
|
50
|
+
|
|
51
|
+
Do NOT re-read source documents. Use upstream outputs only.
|
|
52
|
+
|
|
53
|
+
### Stats authority
|
|
54
|
+
|
|
55
|
+
- Pass rate = `passed / (passed + failed + error)` when denominator > 0 (skipped excluded from denominator unless Result documents otherwise) — **Result v1 only**.
|
|
56
|
+
- AC coverage = `coverageSummary.acCoverageRatio` from Case Manifest v1 only (do **not** recompute or invent percentages).
|
|
57
|
+
- Failed case table rows must match `failures[]` from Result v1.
|
|
58
|
+
- If Result v1 `outcome` is not `passed`, the retrospective **must not** claim overall success.
|
|
59
|
+
|
|
60
|
+
### Maturity Rating Criteria
|
|
61
|
+
|
|
62
|
+
| Rating | Coverage (manifest) | Pass Rate (Result v1) | Review Findings |
|
|
63
|
+
|--------|---------------------|------------------------|-----------------|
|
|
64
|
+
| **A** | `acCoverageRatio` = 1 | 100% pytest pass | No Critical or Important findings |
|
|
65
|
+
| **B** | `acCoverageRatio` ≥ 0.8 | ≥90% pytest pass | Only Informational findings |
|
|
66
|
+
| **C** | `acCoverageRatio` ≥ 0.6 | ≥70% pytest pass | No Critical findings (Important allowed) |
|
|
67
|
+
| **D** | Below C thresholds | Below C thresholds | Or any Critical finding unresolved |
|
|
68
|
+
|
|
69
|
+
#### Rating Rules
|
|
70
|
+
|
|
71
|
+
- **Coverage** from Case Manifest `coverageSummary` only (deterministic gate product).
|
|
72
|
+
- **Pass rate** from Result v1 only (not guessed from logs).
|
|
73
|
+
- If `review-backend-cases-pi` returned `VERDICT: request-revision` and revision was not completed, cap at **D**.
|
|
74
|
+
- If Result v1 shows >30% failed+error among executed tests, cap at **D** regardless of coverage.
|
|
75
|
+
- Skipped tests count as "not covered" for pass rate but not as failures.
|
|
76
|
+
- Collection/command/report errors → cap at **D** and record classification (not ProductBug by default).
|
|
77
|
+
|
|
78
|
+
### Report Structure
|
|
79
|
+
|
|
80
|
+
Write the report as a Markdown file named `backend-test-retrospect-<date>.md` under `docs/test-reports/`.
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
# Backend Test Retrospective Report
|
|
84
|
+
|
|
85
|
+
**Date:** <YYYY-MM-DD>
|
|
86
|
+
**Task:** <task-id>
|
|
87
|
+
**Maturity Rating:** <A|B|C|D>
|
|
88
|
+
**Result outcome:** <from Result v1>
|
|
89
|
+
**Classification:** <from classify JSON>
|
|
90
|
+
|
|
91
|
+
## 1. Test Coverage Summary
|
|
92
|
+
|
|
93
|
+
| Metric | Value |
|
|
94
|
+
|--------|-------|
|
|
95
|
+
| Total acceptance criteria | N |
|
|
96
|
+
| Covered by test cases | N (X%) |
|
|
97
|
+
| Total functional test cases | N |
|
|
98
|
+
|
|
99
|
+
## 2. Automation Results (from Result v1)
|
|
100
|
+
|
|
101
|
+
| Metric | Value |
|
|
102
|
+
|--------|-------|
|
|
103
|
+
| Total tests | N |
|
|
104
|
+
| Passed | N |
|
|
105
|
+
| Failed | N |
|
|
106
|
+
| Error | N |
|
|
107
|
+
| Skipped | N |
|
|
108
|
+
| Pass rate | X% |
|
|
109
|
+
| Pytest exit code | N |
|
|
110
|
+
| Outcome | … |
|
|
111
|
+
| Execution status | … |
|
|
112
|
+
|
|
113
|
+
### Failed Test Analysis
|
|
114
|
+
|
|
115
|
+
| Test Case / Function | Message (truncated) | Classification |
|
|
116
|
+
|----------------------|-------------------|----------------|
|
|
117
|
+
| ... | ... | ... |
|
|
118
|
+
|
|
119
|
+
## 3. Review Findings
|
|
120
|
+
|
|
121
|
+
| Severity | Finding | Status |
|
|
122
|
+
|----------|---------|--------|
|
|
123
|
+
| … | … | … |
|
|
124
|
+
|
|
125
|
+
## 4. Maturity Rating Rationale
|
|
126
|
+
|
|
127
|
+
Explain which threshold was met or missed.
|
|
128
|
+
|
|
129
|
+
## 5. Recommendations
|
|
130
|
+
|
|
131
|
+
- Actionable items for the next iteration.
|
|
132
|
+
- Do not propose changing production code solely to greenwash tests.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Output Shape (after rating line)
|
|
136
|
+
|
|
137
|
+
After the mandatory maturity rating line, provide a brief summary paragraph before writing the full report file.
|
|
138
|
+
|
|
139
|
+
Do not include chain-of-thought. Do not write root `artifacts/**`.
|
|
@@ -1,81 +1,83 @@
|
|
|
1
|
-
# Backend Test DAG Review Cases Prompt Template
|
|
2
|
-
|
|
3
|
-
## Purpose
|
|
4
|
-
|
|
5
|
-
Use this prompt for a read-only **backend test case review** node: `executor: "pi"`, `role: "reviewer"`, `writePolicy: "read-only"`. The reviewer audits generated backend functional test cases for completeness, format compliance, and traceability to source requirements. Downstream `generate-backend-pytest-pi` depends on a `VERDICT: pass` to proceed.
|
|
6
|
-
|
|
7
|
-
Do **not** create `executor: reviewer`. Reviewer is a **role** on `executor: pi`.
|
|
8
|
-
|
|
9
|
-
## Recommended DAG Node Shape
|
|
10
|
-
|
|
11
|
-
```json
|
|
12
|
-
{
|
|
13
|
-
"id": "review-backend-cases-pi",
|
|
14
|
-
"depends_on": ["
|
|
15
|
-
"complexity": "HIGH",
|
|
16
|
-
"executor": "pi",
|
|
17
|
-
"role": "reviewer",
|
|
18
|
-
"writePolicy": "read-only",
|
|
19
|
-
"allowedPaths": ["**"],
|
|
20
|
-
"forbiddenPaths": [".harness/**", "artifacts/**"],
|
|
21
|
-
"outputContract": "Plain Markdown whose first non-empty line is VERDICT: pass or VERDICT: request-revision; followed by Findings and Coverage Assessment. No file writes.",
|
|
22
|
-
"subtask_prompt_markdown": "./backend-test-dag.review-cases.prompt.md"
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Prompt Body
|
|
27
|
-
|
|
28
|
-
You are the Backend Test DAG **test case reviewer** (read-only).
|
|
29
|
-
|
|
30
|
-
Your job is to audit the generated backend functional test cases for completeness, format compliance, requirement coverage, and traceability. You are **not** an implementer or test generator. Do not edit repository files, including root `artifacts/**`.
|
|
31
|
-
|
|
32
|
-
### Mandatory First Line
|
|
33
|
-
|
|
34
|
-
The **first non-empty line** of your response must be exactly one of:
|
|
35
|
-
|
|
36
|
-
- `VERDICT: pass`
|
|
37
|
-
- `VERDICT: request-revision`
|
|
38
|
-
|
|
39
|
-
No preamble, heading, or blank lines before the verdict line.
|
|
40
|
-
|
|
41
|
-
### Inputs to Review
|
|
42
|
-
|
|
43
|
-
1. **Acceptance criteria / analysis** — from the validated Backend Test Analysis v1 artifact materialized by `backend-test-analysis-contract-shell` (`contracts/backend-test-analysis.json` under the current DAG run). Do not treat free-form Markdown from `analyze-inputs-pi` as the contract.
|
|
44
|
-
2. **
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
| **
|
|
54
|
-
| **
|
|
55
|
-
| **
|
|
56
|
-
| **
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
59
|
-
| **
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
|
72
|
-
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
1
|
+
# Backend Test DAG Review Cases Prompt Template
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Use this prompt for a read-only **backend test case review** node: `executor: "pi"`, `role: "reviewer"`, `writePolicy: "read-only"`. The reviewer audits generated backend functional test cases for completeness, format compliance, and traceability to source requirements. Downstream `generate-backend-pytest-pi` depends on a `VERDICT: pass` to proceed.
|
|
6
|
+
|
|
7
|
+
Do **not** create `executor: reviewer`. Reviewer is a **role** on `executor: pi`.
|
|
8
|
+
|
|
9
|
+
## Recommended DAG Node Shape
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"id": "review-backend-cases-pi",
|
|
14
|
+
"depends_on": ["backend-test-case-manifest-shell", "backend-test-analysis-contract-shell"],
|
|
15
|
+
"complexity": "HIGH",
|
|
16
|
+
"executor": "pi",
|
|
17
|
+
"role": "reviewer",
|
|
18
|
+
"writePolicy": "read-only",
|
|
19
|
+
"allowedPaths": ["**"],
|
|
20
|
+
"forbiddenPaths": [".harness/**", "artifacts/**"],
|
|
21
|
+
"outputContract": "Plain Markdown whose first non-empty line is VERDICT: pass or VERDICT: request-revision; followed by Findings and Coverage Assessment. No file writes.",
|
|
22
|
+
"subtask_prompt_markdown": "./backend-test-dag.review-cases.prompt.md"
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Prompt Body
|
|
27
|
+
|
|
28
|
+
You are the Backend Test DAG **test case reviewer** (read-only).
|
|
29
|
+
|
|
30
|
+
Your job is to audit the generated backend functional test cases for completeness, format compliance, requirement coverage, and traceability. You are **not** an implementer or test generator. Do not edit repository files, including root `artifacts/**`.
|
|
31
|
+
|
|
32
|
+
### Mandatory First Line
|
|
33
|
+
|
|
34
|
+
The **first non-empty line** of your response must be exactly one of:
|
|
35
|
+
|
|
36
|
+
- `VERDICT: pass`
|
|
37
|
+
- `VERDICT: request-revision`
|
|
38
|
+
|
|
39
|
+
No preamble, heading, or blank lines before the verdict line.
|
|
40
|
+
|
|
41
|
+
### Inputs to Review
|
|
42
|
+
|
|
43
|
+
1. **Acceptance criteria / analysis** — from the validated Backend Test Analysis v1 artifact materialized by `backend-test-analysis-contract-shell` (`contracts/backend-test-analysis.json` under the current DAG run). Do not treat free-form Markdown from `analyze-inputs-pi` as the contract.
|
|
44
|
+
2. **Case Manifest v1** — `contracts/backend-test-case-manifest.json` (schemaId `backend-test-case-manifest-v1`). Prefer `coverageSummary` and caseId↔acIds from this artifact; do not invent coverage percentages.
|
|
45
|
+
3. **Generated test cases** — files under `testcase/md/`.
|
|
46
|
+
|
|
47
|
+
Do NOT re-read source documents. Use the validated analysis artifact, case manifest, and generated cases only.
|
|
48
|
+
|
|
49
|
+
### Review Checklist
|
|
50
|
+
|
|
51
|
+
| Area | Check | Severity if Missing |
|
|
52
|
+
|------|-------|---------------------|
|
|
53
|
+
| **ID format** | Every test case ID matches `BE-<MODULE>-<NNN>` (e.g. `BE-ORDER-001`) | Critical |
|
|
54
|
+
| **Positive path coverage** | Happy-path scenarios for each acceptance criterion | Critical |
|
|
55
|
+
| **Negative path coverage** | Error/exception scenarios (invalid input, not found, state violations) | Important |
|
|
56
|
+
| **Boundary conditions** | Edge cases (empty input, max length, edge values) | Important |
|
|
57
|
+
| **State transitions** | Illegal state changes covered | Important |
|
|
58
|
+
| **Requirement traceability** | Each acceptance criterion (AC-xxx) maps to at least one test case ID (manifest coverageSummary or evidenceGaps) | Critical |
|
|
59
|
+
| **Manifest consistency** | Markdown cases align with Case Manifest v1 caseId/acIds | Critical |
|
|
60
|
+
| **Case structure** | Each case has: ID, Title, Precondition, Steps, Expected Result | Important |
|
|
61
|
+
| **No duplicate IDs** | All test case IDs are unique across files | Critical |
|
|
62
|
+
|
|
63
|
+
### Conditional Coverage (check ONLY if mentioned in upstream analysis)
|
|
64
|
+
|
|
65
|
+
- **Authentication coverage**: check ONLY if the validated analysis artifact mentions auth mechanism (JWT, OAuth2, API Key, etc.)
|
|
66
|
+
- **Timeout coverage**: check ONLY if the validated analysis artifact mentions timeout handling or degradation strategy
|
|
67
|
+
- If not mentioned in the validated analysis artifact, do NOT flag as missing
|
|
68
|
+
|
|
69
|
+
### Verdict Rules
|
|
70
|
+
|
|
71
|
+
| Condition | Verdict |
|
|
72
|
+
|-----------|---------|
|
|
73
|
+
| All Critical checks pass, Important checks have no more than 2 findings | `VERDICT: pass` |
|
|
74
|
+
| Any Critical check fails | `VERDICT: request-revision` |
|
|
75
|
+
| More than 2 Important findings | `VERDICT: request-revision` |
|
|
76
|
+
| Only Informational findings | `VERDICT: pass` (with findings listed) |
|
|
77
|
+
|
|
78
|
+
### Output Shape (after verdict line)
|
|
79
|
+
|
|
80
|
+
1. **Coverage Assessment** — table mapping each AC to covering test case IDs (or "uncovered").
|
|
81
|
+
2. **Findings** — bullet list tagged `Critical`, `Important`, or `Informational`.
|
|
82
|
+
3. **Statistics** — total case count, positive/negative/boundary breakdown, module distribution.
|
|
83
|
+
4. **Required revisions** (only when `request-revision`) — numbered items for the upstream generator to fix.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://tea-agent.dev/schemas/backend-test-execution-v1.json",
|
|
4
|
+
"title": "Backend Test Execution v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"framework",
|
|
10
|
+
"runner",
|
|
11
|
+
"testRoot",
|
|
12
|
+
"workingDirectory",
|
|
13
|
+
"report",
|
|
14
|
+
"targetMode",
|
|
15
|
+
"existingFixtures",
|
|
16
|
+
"authenticationMode",
|
|
17
|
+
"requiredEnvNames",
|
|
18
|
+
"dataIsolation",
|
|
19
|
+
"evidenceGaps",
|
|
20
|
+
"evidenceRefs"
|
|
21
|
+
],
|
|
22
|
+
"properties": {
|
|
23
|
+
"schemaVersion": { "const": 1 },
|
|
24
|
+
"framework": { "const": "pytest" },
|
|
25
|
+
"runner": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"properties": {
|
|
29
|
+
"commandParts": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "type": "string", "minLength": 1 }
|
|
32
|
+
},
|
|
33
|
+
"frozenCommandHints": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "type": "string", "minLength": 1 }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"testRoot": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"minLength": 1,
|
|
42
|
+
"description": "Repo-relative posix path; no absolute form or .. segments"
|
|
43
|
+
},
|
|
44
|
+
"workingDirectory": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1,
|
|
47
|
+
"default": "."
|
|
48
|
+
},
|
|
49
|
+
"report": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"required": ["format", "relativeHint"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"format": { "const": "junit" },
|
|
55
|
+
"relativeHint": { "type": "string", "minLength": 1 }
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"targetMode": {
|
|
59
|
+
"enum": ["in-process", "external-running-service", "managed-command"]
|
|
60
|
+
},
|
|
61
|
+
"baseUrlEnvName": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"pattern": "^[A-Z_][A-Z0-9_]*$"
|
|
64
|
+
},
|
|
65
|
+
"readiness": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"items": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"required": ["path", "description"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"path": { "type": "string", "minLength": 1 },
|
|
73
|
+
"description": { "type": "string", "minLength": 1 }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"existingFixtures": {
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"additionalProperties": false,
|
|
82
|
+
"required": ["name", "sourcePath", "kind"],
|
|
83
|
+
"properties": {
|
|
84
|
+
"name": { "type": "string", "minLength": 1 },
|
|
85
|
+
"sourcePath": { "type": "string", "minLength": 1 },
|
|
86
|
+
"kind": { "type": "string", "minLength": 1 }
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"authenticationMode": { "type": "string", "minLength": 1 },
|
|
91
|
+
"requiredEnvNames": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"pattern": "^[A-Z_][A-Z0-9_]*$"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"dataIsolation": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": false,
|
|
101
|
+
"required": ["mode"],
|
|
102
|
+
"properties": {
|
|
103
|
+
"mode": { "type": "string", "minLength": 1 },
|
|
104
|
+
"evidence": { "type": "string", "minLength": 1 }
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"managedCommand": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"properties": {
|
|
111
|
+
"start": { "type": "string", "minLength": 1 },
|
|
112
|
+
"stop": { "type": "string", "minLength": 1 },
|
|
113
|
+
"sourceRef": { "type": "string", "minLength": 1 }
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"evidenceGaps": {
|
|
117
|
+
"type": "array",
|
|
118
|
+
"items": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": false,
|
|
121
|
+
"required": ["description"],
|
|
122
|
+
"properties": {
|
|
123
|
+
"description": { "type": "string", "minLength": 1 },
|
|
124
|
+
"sourceRef": { "type": "string", "minLength": 1 }
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"evidenceRefs": {
|
|
129
|
+
"type": "array",
|
|
130
|
+
"items": { "type": "string", "minLength": 1 }
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|