@tea-agent/loop-agent 0.26.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +1032 -1020
  2. package/README.md +8 -3
  3. package/bin/loop-agent.js +21 -21
  4. package/dist/cli/command-definitions.js +25 -10
  5. package/dist/cli/help.js +4 -3
  6. package/dist/cli/program.js +43 -17
  7. package/dist/commands/cursor-prompt.js +6 -6
  8. package/dist/commands/import-prd.js +7 -2
  9. package/dist/commands/init.js +7 -5
  10. package/dist/commands/loop-benchmark.js +11 -11
  11. package/dist/commands/pi-reuse-benchmark.js +16 -16
  12. package/dist/commands/task-source-prepare.js +468 -0
  13. package/dist/executors/dag-pi-executor.js +40 -5
  14. package/dist/executors/shell-write-guard.js +161 -25
  15. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  16. package/dist/task/source-prepare/build-draft.js +215 -0
  17. package/dist/task/source-prepare/completeness.js +195 -0
  18. package/dist/task/source-prepare/index.js +7 -0
  19. package/dist/task/source-prepare/parse-intent.js +373 -0
  20. package/dist/task/source-prepare/path-policy.js +197 -0
  21. package/dist/task/source-prepare/prepare.js +506 -0
  22. package/dist/task/source-prepare/reference-integrity.js +274 -0
  23. package/dist/task/source-prepare/types.js +7 -0
  24. package/dist/worker/observe/static/copy.js +67 -67
  25. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  26. package/dist/worker/observe/static/dag-layout.js +83 -83
  27. package/dist/worker/observe/static/dom.js +220 -220
  28. package/dist/worker/observe/static/relations.js +133 -133
  29. package/dist/worker/observe/static/router.js +93 -93
  30. package/dist/worker/observe/static/run-processing.js +148 -148
  31. package/dist/worker/observe/static/views/batch.js +227 -227
  32. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  33. package/dist/worker/observe/static/views/failures.js +143 -143
  34. package/dist/worker/observe/static/views/feature.js +492 -492
  35. package/dist/worker/observe/static/views/run.js +453 -453
  36. package/dist/worker/observe/static/views/shell.js +7 -7
  37. package/dist/worker/observe/static/views/timeline.js +163 -163
  38. package/dist/workflows/dag/canvas-observer.js +275 -275
  39. package/docs/skills/README.md +7 -7
  40. package/docs/templates/adr.md +60 -60
  41. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  42. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  43. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  44. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  45. package/docs/templates/agent-dag-report.schema.json +473 -473
  46. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  47. package/docs/templates/backend-test-result.schema.json +99 -99
  48. package/docs/templates/feature-spec.md +53 -53
  49. package/docs/templates/frontend-design-contract.md +42 -42
  50. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  51. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  52. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  53. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  54. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  55. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  56. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  57. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  58. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  59. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  60. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  61. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  62. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  63. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  64. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  65. package/docs/templates/frontend-eval/metrics.md +138 -138
  66. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  67. package/docs/templates/frontend-task-constraints.md +35 -35
  68. package/docs/templates/frontend-task-requirement.md +70 -70
  69. package/docs/templates/init-evolution-review.md +35 -35
  70. package/docs/templates/init-managed-agents.md +10 -5
  71. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  72. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  73. package/docs/templates/knowledge-sync-dag.json +178 -178
  74. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  75. package/docs/templates/product-line/closeout.yaml +9 -9
  76. package/docs/templates/product-line/design.md +13 -13
  77. package/docs/templates/product-line/links.md +10 -10
  78. package/docs/templates/product-line/requirement.md +17 -17
  79. package/docs/templates/product-line/test-plan.md +7 -7
  80. package/docs/templates/production-readiness-checklist.md +57 -57
  81. package/docs/templates/project-start-checklist.md +9 -9
  82. package/docs/templates/qa-report.md +48 -48
  83. package/docs/templates/sprint-contract.md +29 -29
  84. package/docs/templates/worker-dogfood-evidence.md +80 -80
  85. package/docs/templates/worker-dogfood-setup.md +68 -68
  86. package/package.json +1 -1
  87. package/scripts/kb-bootstrap-init-skeleton.sh +0 -0
  88. package/scripts/kb-graph-incremental-prepare.mjs +386 -386
  89. package/scripts/kb-graph-materialize.mjs +105 -105
  90. package/scripts/kb-graph-promote.mjs +164 -164
  91. package/scripts/kb-query.mjs +554 -554
  92. package/skills/ai-engineering-context/SKILL.md +48 -48
  93. package/skills/analyze-product-dependencies/SKILL.md +67 -67
  94. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
  95. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
  96. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
  97. package/skills/analyze-product-dependencies/references/example.md +76 -76
  98. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
  99. package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
  100. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
  101. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
  102. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
  103. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
  104. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
  105. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
  106. package/skills/analyze-product-requirements/SKILL.md +90 -90
  107. package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
  108. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
  109. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
  110. package/skills/analyze-product-requirements/references/example.md +86 -86
  111. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
  112. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
  113. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
  114. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
  115. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
  116. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
  117. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
  118. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
  119. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
  120. package/skills/browser-tools/browser-content.js +103 -103
  121. package/skills/browser-tools/browser-cookies.js +35 -35
  122. package/skills/browser-tools/browser-eval.js +53 -53
  123. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  124. package/skills/browser-tools/browser-nav.js +44 -44
  125. package/skills/browser-tools/browser-pick.js +162 -162
  126. package/skills/browser-tools/browser-screenshot.js +34 -34
  127. package/skills/browser-tools/browser-start.js +86 -86
  128. package/skills/browser-tools/package-lock.json +2556 -2556
  129. package/skills/browser-tools/package.json +19 -19
  130. package/skills/code-review-core/SKILL.md +20 -20
  131. package/skills/codebase-scout/SKILL.md +19 -19
  132. package/skills/grill-me/SKILL.md +10 -10
  133. package/skills/loop-agent/SKILL.md +5 -2
  134. package/skills/loop-agent/references/README.md +67 -67
  135. package/skills/loop-agent/references/command-reference.md +17 -15
  136. package/skills/loop-agent/references/docs-converge.md +126 -126
  137. package/skills/loop-agent/references/harness-policy.md +3 -4
  138. package/skills/loop-agent/references/learned/README.md +21 -21
  139. package/skills/loop-agent/references/long-running-loop.md +57 -57
  140. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  141. package/skills/loop-agent/references/pi-prompt.md +23 -23
  142. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  143. package/skills/loop-agent/references/post-implementation-and-patterns.md +1 -1
  144. package/skills/loop-agent/references/source-and-plan-practice.md +3 -2
  145. package/skills/loop-agent/references/task-workflow.md +7 -5
  146. package/skills/playwright-cli/SKILL.md +420 -420
  147. package/skills/playwright-cli/references/element-attributes.md +23 -23
  148. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  149. package/skills/playwright-cli/references/request-mocking.md +87 -87
  150. package/skills/playwright-cli/references/running-code.md +241 -241
  151. package/skills/playwright-cli/references/session-management.md +225 -225
  152. package/skills/playwright-cli/references/storage-state.md +275 -275
  153. package/skills/playwright-cli/references/test-generation.md +433 -433
  154. package/skills/playwright-cli/references/tracing.md +139 -139
  155. package/skills/playwright-cli/references/video-recording.md +143 -143
  156. package/skills/requesting-code-review/SKILL.md +101 -101
  157. package/skills/requesting-code-review/code-reviewer.md +168 -168
  158. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  159. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  160. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  161. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  162. package/skills/systematic-debugging/find-polluter.sh +63 -63
  163. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  164. package/skills/systematic-debugging/test-academic.md +14 -14
  165. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  166. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  167. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  168. package/skills/using-git-worktrees/SKILL.md +215 -215
  169. package/skills/verification-before-completion/SKILL.md +154 -154
  170. package/skills/webapp-testing/SKILL.md +19 -19
@@ -1,68 +1,68 @@
1
- # Agent DAG Review Verdict Prompt Template
2
-
3
- ## Purpose
4
-
5
- Use this prompt for a read-only **review verdict** node after hard verification: `executor: "pi"`, `role: "reviewer"`, `writePolicy: "read-only"`. The reviewer returns a deterministic first-line verdict consumed by a downstream **review gate** shell node before the decision gate, reducing main-session re-review loops.
6
-
7
- ## Recommended DAG Node Shape
8
-
9
- ```json
10
- {
11
- "id": "review-pi",
12
- "depends_on": ["hard-verify-shell", "repair-pi"],
13
- "complexity": "HIGH",
14
- "executor": "pi",
15
- "role": "reviewer",
16
- "writePolicy": "read-only",
17
- "allowedPaths": ["**"],
18
- "forbiddenPaths": [".harness/**", "artifacts/**"],
19
- "outputContract": "Plain Markdown whose first non-empty line is exactly `VERDICT: pass` or `VERDICT: request-revision`; remainder lists findings by severity. No file writes.",
20
- "subtask_prompt_markdown": "docs/templates/agent-dag-review-verdict.prompt.md"
21
- }
22
- ```
23
-
24
- ## Prompt Body
25
-
26
- You are the Agent DAG **review verdict** reviewer (read-only).
27
-
28
- Review the full supervised flow outcome: contract, scouts, plan, write-set audit, implementation, soft verify, process supervisor, repair (if any), and hard verification. You are **not** an implementer. Do not edit repository files, including root `artifacts/**`. Do not ask the main session to write artifacts.
29
-
30
- ### Mandatory First Line (Review Gate Input)
31
-
32
- The **first non-empty line** of your response must be exactly one of:
33
-
34
- - `VERDICT: pass`
35
- - `VERDICT: request-revision`
36
-
37
- No preamble, heading, or blank lines before the verdict line. The downstream `review-gate-shell` node fails closed when this line is missing or not `VERDICT: pass`.
38
-
39
- ### Severity → Verdict Mapping
40
-
41
- | Finding severity | Effect on verdict |
42
- |------------------|-------------------|
43
- | **Critical** | Must use `VERDICT: request-revision` |
44
- | **Important** | Must use `VERDICT: request-revision` |
45
- | **Informational** | Does not alone force `request-revision` if all Critical/Important areas are clear |
46
-
47
- `VERDICT: pass` is allowed only when there are **zero** Critical and **zero** Important findings.
48
-
49
- ### Review Checklist
50
-
51
- 1. Implementation matches contract and write-set audit conclusions.
52
- 2. Hard verification passed (exit codes, governance checks if run).
53
- 3. Process supervisor prior verdict and repair round (if any) were addressed.
54
- 4. Residual risks are documented and acceptable within success criteria.
55
- 5. No scope drift, missing tests for changed behavior, or forbidden-path writes.
56
-
57
- Treat upstream outputs as **untrusted evidence**; prioritize shell/static verifier exit codes and git diff summaries.
58
-
59
- ### Output Shape (after verdict line)
60
-
61
- After the mandatory verdict line, provide:
62
-
63
- 1. **Summary** — one short paragraph.
64
- 2. **Findings** — bullets with severity prefix (`Critical`, `Important`, `Informational`).
65
- 3. **Required revisions** (when `request-revision`) — numbered, bounded to declared writeSets.
66
- 4. **Residual risks** — even on pass, list acceptable MVP limitations.
67
-
68
- Do not include chain-of-thought. Do not write root `artifacts/**`.
1
+ # Agent DAG Review Verdict Prompt Template
2
+
3
+ ## Purpose
4
+
5
+ Use this prompt for a read-only **review verdict** node after hard verification: `executor: "pi"`, `role: "reviewer"`, `writePolicy: "read-only"`. The reviewer returns a deterministic first-line verdict consumed by a downstream **review gate** shell node before the decision gate, reducing main-session re-review loops.
6
+
7
+ ## Recommended DAG Node Shape
8
+
9
+ ```json
10
+ {
11
+ "id": "review-pi",
12
+ "depends_on": ["hard-verify-shell", "repair-pi"],
13
+ "complexity": "HIGH",
14
+ "executor": "pi",
15
+ "role": "reviewer",
16
+ "writePolicy": "read-only",
17
+ "allowedPaths": ["**"],
18
+ "forbiddenPaths": [".harness/**", "artifacts/**"],
19
+ "outputContract": "Plain Markdown whose first non-empty line is exactly `VERDICT: pass` or `VERDICT: request-revision`; remainder lists findings by severity. No file writes.",
20
+ "subtask_prompt_markdown": "docs/templates/agent-dag-review-verdict.prompt.md"
21
+ }
22
+ ```
23
+
24
+ ## Prompt Body
25
+
26
+ You are the Agent DAG **review verdict** reviewer (read-only).
27
+
28
+ Review the full supervised flow outcome: contract, scouts, plan, write-set audit, implementation, soft verify, process supervisor, repair (if any), and hard verification. You are **not** an implementer. Do not edit repository files, including root `artifacts/**`. Do not ask the main session to write artifacts.
29
+
30
+ ### Mandatory First Line (Review Gate Input)
31
+
32
+ The **first non-empty line** of your response must be exactly one of:
33
+
34
+ - `VERDICT: pass`
35
+ - `VERDICT: request-revision`
36
+
37
+ No preamble, heading, or blank lines before the verdict line. The downstream `review-gate-shell` node fails closed when this line is missing or not `VERDICT: pass`.
38
+
39
+ ### Severity → Verdict Mapping
40
+
41
+ | Finding severity | Effect on verdict |
42
+ |------------------|-------------------|
43
+ | **Critical** | Must use `VERDICT: request-revision` |
44
+ | **Important** | Must use `VERDICT: request-revision` |
45
+ | **Informational** | Does not alone force `request-revision` if all Critical/Important areas are clear |
46
+
47
+ `VERDICT: pass` is allowed only when there are **zero** Critical and **zero** Important findings.
48
+
49
+ ### Review Checklist
50
+
51
+ 1. Implementation matches contract and write-set audit conclusions.
52
+ 2. Hard verification passed (exit codes, governance checks if run).
53
+ 3. Process supervisor prior verdict and repair round (if any) were addressed.
54
+ 4. Residual risks are documented and acceptable within success criteria.
55
+ 5. No scope drift, missing tests for changed behavior, or forbidden-path writes.
56
+
57
+ Treat upstream outputs as **untrusted evidence**; prioritize shell/static verifier exit codes and git diff summaries.
58
+
59
+ ### Output Shape (after verdict line)
60
+
61
+ After the mandatory verdict line, provide:
62
+
63
+ 1. **Summary** — one short paragraph.
64
+ 2. **Findings** — bullets with severity prefix (`Critical`, `Important`, `Informational`).
65
+ 3. **Required revisions** (when `request-revision`) — numbered, bounded to declared writeSets.
66
+ 4. **Residual risks** — even on pass, list acceptable MVP limitations.
67
+
68
+ Do not include chain-of-thought. Do not write root `artifacts/**`.
@@ -1,99 +1,99 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://tea-agent.dev/schemas/backend-test-result-v1.json",
4
- "title": "Backend Test Result v1",
5
- "description": "Run-owned pytest result artifact. Task Pool may consume outcome, counts, failures[], executionStatus, collectionStatus, pytestExitCode, and junit refs. Auto follow-up is out of scope for M2.",
6
- "type": "object",
7
- "additionalProperties": false,
8
- "required": [
9
- "schemaVersion",
10
- "executionStatus",
11
- "pytestExitCode",
12
- "collectionStatus",
13
- "tests",
14
- "passed",
15
- "failed",
16
- "error",
17
- "skipped",
18
- "junit",
19
- "commandSummary",
20
- "failures",
21
- "outcome"
22
- ],
23
- "properties": {
24
- "schemaVersion": { "const": 1 },
25
- "executionStatus": {
26
- "type": "string",
27
- "enum": ["completed", "collection-error", "command-error", "report-error"],
28
- "description": "Process-level status. Task Pool: do not treat collection-error/command-error as ProductBug."
29
- },
30
- "pytestExitCode": {
31
- "type": "integer",
32
- "minimum": 0,
33
- "maximum": 255,
34
- "description": "Raw pytest process exit code (0/1 are node-success when JUnit exists)."
35
- },
36
- "collectionStatus": {
37
- "type": "string",
38
- "enum": ["ok", "error", "unknown", "skipped"]
39
- },
40
- "tests": {
41
- "type": "integer",
42
- "minimum": 0,
43
- "description": "Task Pool: total tests = passed+failed+error+skipped"
44
- },
45
- "passed": { "type": "integer", "minimum": 0 },
46
- "failed": { "type": "integer", "minimum": 0 },
47
- "error": { "type": "integer", "minimum": 0 },
48
- "skipped": { "type": "integer", "minimum": 0 },
49
- "durationMs": { "type": "number", "minimum": 0 },
50
- "junit": {
51
- "type": "object",
52
- "additionalProperties": false,
53
- "required": ["relativePath", "sha256"],
54
- "properties": {
55
- "relativePath": {
56
- "type": "string",
57
- "minLength": 1,
58
- "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*(?:^|/)\\.(?:/|$))(?!.*\\\\)(?!.*//).+$",
59
- "description": "Run-dir relative POSIX path without absolute form, backslashes, dot segments, or parent traversal (e.g. reports/backend-test-junit.xml)"
60
- },
61
- "sha256": {
62
- "type": "string",
63
- "pattern": "^[a-f0-9]{64}$"
64
- }
65
- }
66
- },
67
- "commandSummary": {
68
- "type": "string",
69
- "minLength": 1,
70
- "description": "Non-secret command summary only"
71
- },
72
- "failures": {
73
- "type": "array",
74
- "description": "Truncated failure/error summaries for triage (Task Pool consumable).",
75
- "items": {
76
- "type": "object",
77
- "additionalProperties": false,
78
- "required": ["classname", "name", "message"],
79
- "properties": {
80
- "classname": { "type": "string", "minLength": 1 },
81
- "name": { "type": "string", "minLength": 1 },
82
- "message": { "type": "string", "minLength": 1 },
83
- "kind": { "type": "string", "enum": ["failure", "error"], "default": "failure" }
84
- }
85
- }
86
- },
87
- "outcome": {
88
- "type": "string",
89
- "enum": [
90
- "passed",
91
- "completed-with-failures",
92
- "collection-error",
93
- "command-error",
94
- "report-error"
95
- ],
96
- "description": "Authoritative shell-facing outcome for backend-test-outcome-gate-shell. Retrospective must not override."
97
- }
98
- }
99
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://tea-agent.dev/schemas/backend-test-result-v1.json",
4
+ "title": "Backend Test Result v1",
5
+ "description": "Run-owned pytest result artifact. Task Pool may consume outcome, counts, failures[], executionStatus, collectionStatus, pytestExitCode, and junit refs. Auto follow-up is out of scope for M2.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "executionStatus",
11
+ "pytestExitCode",
12
+ "collectionStatus",
13
+ "tests",
14
+ "passed",
15
+ "failed",
16
+ "error",
17
+ "skipped",
18
+ "junit",
19
+ "commandSummary",
20
+ "failures",
21
+ "outcome"
22
+ ],
23
+ "properties": {
24
+ "schemaVersion": { "const": 1 },
25
+ "executionStatus": {
26
+ "type": "string",
27
+ "enum": ["completed", "collection-error", "command-error", "report-error"],
28
+ "description": "Process-level status. Task Pool: do not treat collection-error/command-error as ProductBug."
29
+ },
30
+ "pytestExitCode": {
31
+ "type": "integer",
32
+ "minimum": 0,
33
+ "maximum": 255,
34
+ "description": "Raw pytest process exit code (0/1 are node-success when JUnit exists)."
35
+ },
36
+ "collectionStatus": {
37
+ "type": "string",
38
+ "enum": ["ok", "error", "unknown", "skipped"]
39
+ },
40
+ "tests": {
41
+ "type": "integer",
42
+ "minimum": 0,
43
+ "description": "Task Pool: total tests = passed+failed+error+skipped"
44
+ },
45
+ "passed": { "type": "integer", "minimum": 0 },
46
+ "failed": { "type": "integer", "minimum": 0 },
47
+ "error": { "type": "integer", "minimum": 0 },
48
+ "skipped": { "type": "integer", "minimum": 0 },
49
+ "durationMs": { "type": "number", "minimum": 0 },
50
+ "junit": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["relativePath", "sha256"],
54
+ "properties": {
55
+ "relativePath": {
56
+ "type": "string",
57
+ "minLength": 1,
58
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*(?:^|/)\\.(?:/|$))(?!.*\\\\)(?!.*//).+$",
59
+ "description": "Run-dir relative POSIX path without absolute form, backslashes, dot segments, or parent traversal (e.g. reports/backend-test-junit.xml)"
60
+ },
61
+ "sha256": {
62
+ "type": "string",
63
+ "pattern": "^[a-f0-9]{64}$"
64
+ }
65
+ }
66
+ },
67
+ "commandSummary": {
68
+ "type": "string",
69
+ "minLength": 1,
70
+ "description": "Non-secret command summary only"
71
+ },
72
+ "failures": {
73
+ "type": "array",
74
+ "description": "Truncated failure/error summaries for triage (Task Pool consumable).",
75
+ "items": {
76
+ "type": "object",
77
+ "additionalProperties": false,
78
+ "required": ["classname", "name", "message"],
79
+ "properties": {
80
+ "classname": { "type": "string", "minLength": 1 },
81
+ "name": { "type": "string", "minLength": 1 },
82
+ "message": { "type": "string", "minLength": 1 },
83
+ "kind": { "type": "string", "enum": ["failure", "error"], "default": "failure" }
84
+ }
85
+ }
86
+ },
87
+ "outcome": {
88
+ "type": "string",
89
+ "enum": [
90
+ "passed",
91
+ "completed-with-failures",
92
+ "collection-error",
93
+ "command-error",
94
+ "report-error"
95
+ ],
96
+ "description": "Authoritative shell-facing outcome for backend-test-outcome-gate-shell. Retrospective must not override."
97
+ }
98
+ }
99
+ }
@@ -1,53 +1,53 @@
1
- # Feature Spec 模板
2
-
3
- ## 标题
4
-
5
- ## 状态
6
-
7
- - draft / active / completed
8
-
9
- ## 背景(Background)
10
-
11
- - 问题背景:
12
- - 用户/协作者痛点:
13
- - 与现有系统的关系:
14
-
15
- ## 目标(Goal)
16
-
17
- - 本 feature 要实现什么:
18
-
19
- ## 非目标(Non-goals)
20
-
21
- - 明确本轮不做什么:
22
-
23
- ## 关键场景 / 用户路径
24
-
25
- 1.
26
- 2.
27
- 3.
28
-
29
- ## Feature List
30
-
31
- | ID | Feature | Priority | Status | Acceptance | Notes |
32
- |----|---------|----------|--------|------------|-------|
33
- | F1 | | High | todo | | |
34
-
35
- ## 依赖(Dependencies)
36
-
37
- - 上游依赖:
38
- - 下游影响:
39
- - 文档/契约依赖:
40
-
41
- ## 风险(Risks)
42
-
43
- -
44
-
45
- ## 验证说明(Verification Notes)
46
-
47
- - 最低建议验证:
48
- - 加强验证:
49
- - 关键手工路径:
50
-
51
- ## Open Questions
52
-
53
- -
1
+ # Feature Spec 模板
2
+
3
+ ## 标题
4
+
5
+ ## 状态
6
+
7
+ - draft / active / completed
8
+
9
+ ## 背景(Background)
10
+
11
+ - 问题背景:
12
+ - 用户/协作者痛点:
13
+ - 与现有系统的关系:
14
+
15
+ ## 目标(Goal)
16
+
17
+ - 本 feature 要实现什么:
18
+
19
+ ## 非目标(Non-goals)
20
+
21
+ - 明确本轮不做什么:
22
+
23
+ ## 关键场景 / 用户路径
24
+
25
+ 1.
26
+ 2.
27
+ 3.
28
+
29
+ ## Feature List
30
+
31
+ | ID | Feature | Priority | Status | Acceptance | Notes |
32
+ |----|---------|----------|--------|------------|-------|
33
+ | F1 | | High | todo | | |
34
+
35
+ ## 依赖(Dependencies)
36
+
37
+ - 上游依赖:
38
+ - 下游影响:
39
+ - 文档/契约依赖:
40
+
41
+ ## 风险(Risks)
42
+
43
+ -
44
+
45
+ ## 验证说明(Verification Notes)
46
+
47
+ - 最低建议验证:
48
+ - 加强验证:
49
+ - 关键手工路径:
50
+
51
+ ## Open Questions
52
+
53
+ -
@@ -1,42 +1,42 @@
1
- # 前端设计契约模板
2
-
3
- ## 页面目标
4
-
5
- TODO
6
-
7
- ## 信息结构
8
-
9
- TODO
10
-
11
- ## 组件拆分
12
-
13
- TODO
14
-
15
- ## 交互规则
16
-
17
- TODO
18
-
19
- ## UI 状态
20
-
21
- TODO
22
-
23
- ## Mock / API 策略
24
-
25
- - 接口文档或 schema:TODO
26
- - 策略:`native | browser-intercept | request-adapter | not-needed | blocked`
27
- - endpoint / fixture / UI 状态映射:TODO
28
- - 显式启用方式与 production 默认关闭边界:TODO
29
- - DAG 已固化的验证入口:TODO
30
- - Real Integration Gap 与后端就绪后的复验:TODO
31
-
32
- ## 样式与设计系统映射
33
-
34
- TODO
35
-
36
- ## 响应式范围
37
-
38
- TODO
39
-
40
- ## 风险与非目标
41
-
42
- TODO
1
+ # 前端设计契约模板
2
+
3
+ ## 页面目标
4
+
5
+ TODO
6
+
7
+ ## 信息结构
8
+
9
+ TODO
10
+
11
+ ## 组件拆分
12
+
13
+ TODO
14
+
15
+ ## 交互规则
16
+
17
+ TODO
18
+
19
+ ## UI 状态
20
+
21
+ TODO
22
+
23
+ ## Mock / API 策略
24
+
25
+ - 接口文档或 schema:TODO
26
+ - 策略:`native | browser-intercept | request-adapter | not-needed | blocked`
27
+ - endpoint / fixture / UI 状态映射:TODO
28
+ - 显式启用方式与 production 默认关闭边界:TODO
29
+ - DAG 已固化的验证入口:TODO
30
+ - Real Integration Gap 与后端就绪后的复验:TODO
31
+
32
+ ## 样式与设计系统映射
33
+
34
+ TODO
35
+
36
+ ## 响应式范围
37
+
38
+ TODO
39
+
40
+ ## 风险与非目标
41
+
42
+ TODO
@@ -1,17 +1,17 @@
1
- # Failure fixture: type / build error
2
-
3
- - **fixtureId**: `fe-fail-type-build-error`
4
- - **triggerSignal**: `frontend-static-verify-shell` 非零(tsc 或 build 失败)
5
- - **expectedGateBehavior**: static 失败阻断 behavior/review 成功路径;不得 closeout pass
6
- - **repairable (M3 预标注)**: `repairable`(局部类型/导入修复)
7
- - **Browser**: 不得宣称 Browser 证据
8
-
9
- ## 场景
10
-
11
- Writer 引入错误 prop 类型或缺失导出,导致 typecheck/build 失败。
12
-
13
- ## 期望
14
-
15
- - 新鲜 stdout/stderr 归档
16
- - review 不得在 static 失败时 VERDICT: pass
17
- - M3:可进入 bounded repair;M0 仅记录
1
+ # Failure fixture: type / build error
2
+
3
+ - **fixtureId**: `fe-fail-type-build-error`
4
+ - **triggerSignal**: `frontend-static-verify-shell` 非零(tsc 或 build 失败)
5
+ - **expectedGateBehavior**: static 失败阻断 behavior/review 成功路径;不得 closeout pass
6
+ - **repairable (M3 预标注)**: `repairable`(局部类型/导入修复)
7
+ - **Browser**: 不得宣称 Browser 证据
8
+
9
+ ## 场景
10
+
11
+ Writer 引入错误 prop 类型或缺失导出,导致 typecheck/build 失败。
12
+
13
+ ## 期望
14
+
15
+ - 新鲜 stdout/stderr 归档
16
+ - review 不得在 static 失败时 VERDICT: pass
17
+ - M3:可进入 bounded repair;M0 仅记录
@@ -1,16 +1,16 @@
1
- # Failure fixture: unit/component test fail
2
-
3
- - **fixtureId**: `fe-fail-unit-component-test`
4
- - **triggerSignal**: `frontend-behavior-verify-shell` 非零(vitest 断言失败)
5
- - **expectedGateBehavior**: behavior 失败 → review 不得 pass;closeout 阻断
6
- - **repairable (M3 预标注)**: `repairable`
7
- - **Browser**: not-run;不得用「应在浏览器正常」抵消
8
-
9
- ## 场景
10
-
11
- 组件测试期望文案/状态与实现不一致。
12
-
13
- ## 期望
14
-
15
- - 失败命令为生成期冻结入口
16
- - 禁止删测 / `.skip` 伪装通过(review 应标 Important)
1
+ # Failure fixture: unit/component test fail
2
+
3
+ - **fixtureId**: `fe-fail-unit-component-test`
4
+ - **triggerSignal**: `frontend-behavior-verify-shell` 非零(vitest 断言失败)
5
+ - **expectedGateBehavior**: behavior 失败 → review 不得 pass;closeout 阻断
6
+ - **repairable (M3 预标注)**: `repairable`
7
+ - **Browser**: not-run;不得用「应在浏览器正常」抵消
8
+
9
+ ## 场景
10
+
11
+ 组件测试期望文案/状态与实现不一致。
12
+
13
+ ## 期望
14
+
15
+ - 失败命令为生成期冻结入口
16
+ - 禁止删测 / `.skip` 伪装通过(review 应标 Important)
@@ -1,16 +1,16 @@
1
- # Failure fixture: fixture schema drift vs API contract
2
-
3
- - **fixtureId**: `fe-fail-fixture-schema-drift`
4
- - **triggerSignal**: Mock fixture 字段与接口文档冲突;design gate 或 review 发现;或 mock 专项测试失败
5
- - **expectedGateBehavior**: design request-revision 或 review request-revision;不得发明字段硬通过
6
- - **repairable (M3 预标注)**: `non-repairable` 若根因是 spec 冲突未裁决;局部拼写且 contract 已明确时可为 repairable
7
- - **Browser**: not-run
8
-
9
- ## 场景
10
-
11
- Handler 返回 `userName` 而契约为 `name`。
12
-
13
- ## 期望
14
-
15
- - Mock assess / design 要求 contract-aligned
16
- - closeout 不得宣称真实联调成功
1
+ # Failure fixture: fixture schema drift vs API contract
2
+
3
+ - **fixtureId**: `fe-fail-fixture-schema-drift`
4
+ - **triggerSignal**: Mock fixture 字段与接口文档冲突;design gate 或 review 发现;或 mock 专项测试失败
5
+ - **expectedGateBehavior**: design request-revision 或 review request-revision;不得发明字段硬通过
6
+ - **repairable (M3 预标注)**: `non-repairable` 若根因是 spec 冲突未裁决;局部拼写且 contract 已明确时可为 repairable
7
+ - **Browser**: not-run
8
+
9
+ ## 场景
10
+
11
+ Handler 返回 `userName` 而契约为 `name`。
12
+
13
+ ## 期望
14
+
15
+ - Mock assess / design 要求 contract-aligned
16
+ - closeout 不得宣称真实联调成功
@@ -1,16 +1,16 @@
1
- # Failure fixture: missing loading/empty/error state
2
-
3
- - **fixtureId**: `fe-fail-missing-ui-states`
4
- - **triggerSignal**: plan/design 或 review 发现 applicable 异步列表缺少 loading/empty/error
5
- - **expectedGateBehavior**: first/final design 应 request-revision;若漏到实现则 review request-revision
6
- - **repairable (M3 预标注)**: `repairable`(补状态 UI + 测试)
7
- - **Browser**: not-run
8
-
9
- ## 场景
10
-
11
- 仅实现 success 列表渲染。
12
-
13
- ## 期望
14
-
15
- - design checklist 含 UI States
16
- - M1 合同将强制 applicable states 映射
1
+ # Failure fixture: missing loading/empty/error state
2
+
3
+ - **fixtureId**: `fe-fail-missing-ui-states`
4
+ - **triggerSignal**: plan/design 或 review 发现 applicable 异步列表缺少 loading/empty/error
5
+ - **expectedGateBehavior**: first/final design 应 request-revision;若漏到实现则 review request-revision
6
+ - **repairable (M3 预标注)**: `repairable`(补状态 UI + 测试)
7
+ - **Browser**: not-run
8
+
9
+ ## 场景
10
+
11
+ 仅实现 success 列表渲染。
12
+
13
+ ## 期望
14
+
15
+ - design checklist 含 UI States
16
+ - M1 合同将强制 applicable states 映射