@tea-agent/loop-agent 0.43.0-next.17 → 0.43.0-next.19
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 +1 -1
- package/CHANGELOG.md +68 -2309
- package/README.md +7 -0
- package/dist/application/dag/args.js +8 -0
- package/dist/application/task-lifecycle/advance.js +38 -7
- package/dist/build-stamp.json +3 -3
- package/dist/cli/command-definitions.js +2 -0
- package/dist/cli/program.js +3 -1
- package/dist/cli/update/init-surface-notifier.js +2 -0
- package/dist/cli/update/policy.js +2 -0
- package/dist/commands/cursor-prompt.js +2 -0
- package/dist/commands/dag-approve.js +2 -0
- package/dist/commands/dag-final-verification.js +2 -0
- package/dist/commands/dag-init-hybrid.js +2 -0
- package/dist/commands/dag-reconcile-tasks.js +2 -0
- package/dist/commands/dag-reject.js +2 -0
- package/dist/commands/dag-report.js +2 -0
- package/dist/commands/dag-rerun.js +2 -0
- package/dist/commands/dag-resume.js +2 -0
- package/dist/commands/dag-workflow-compile.js +2 -0
- package/dist/commands/dag-workflow-plan.js +2 -0
- package/dist/commands/dag-workflow-validate.js +2 -0
- package/dist/commands/delegate.js +2 -0
- package/dist/commands/examples.js +2 -0
- package/dist/commands/import-prd.js +2 -0
- package/dist/commands/init-model-catalog.js +2 -0
- package/dist/commands/init.js +19 -13
- package/dist/commands/instructions.js +2 -0
- package/dist/commands/knowledge.js +2 -0
- package/dist/commands/loop-benchmark.js +2 -0
- package/dist/commands/pi-prompt.js +2 -0
- package/dist/commands/pi-reuse-benchmark.js +2 -0
- package/dist/commands/promote-run.js +2 -0
- package/dist/commands/stats.js +1 -1
- package/dist/commands/study-init.js +2 -0
- package/dist/commands/task-advance.js +34 -0
- package/dist/commands/task-source-prepare.js +2 -0
- package/dist/commands/worktree-create.js +2 -0
- package/dist/commands/worktree-remove.js +2 -0
- package/dist/executors/dag-pi-executor.js +1640 -194
- package/dist/executors/pi-executor.js +85 -3
- package/dist/executors/pi-sdk-executor.js +18 -0
- package/dist/executors/shell-executor.js +92 -7
- package/dist/executors/shell-verification.js +3 -0
- package/dist/governance/exec-plans.js +6 -3
- package/dist/infrastructure/console/app-data.js +6 -0
- package/dist/shared/artifacts-core.js +2 -0
- package/dist/shared/backend-dogfood-preflight.js +47 -0
- package/dist/shared/dag-failure-category.js +3 -0
- package/dist/shared/git-progress.js +2 -0
- package/dist/shared/one-shot-prompt-args.js +2 -0
- package/dist/shared/operator/capabilities.js +180 -0
- package/dist/shared/package-metadata.js +6 -4
- package/dist/shared/pi-context-pressure/sift-bridge.js +1 -1
- package/dist/shared/reference-context.js +2 -0
- package/dist/task/config-types.js +29 -0
- package/dist/task/contract/project.js +9 -0
- package/dist/task/contract/recover.js +6 -0
- package/dist/task/contract/schema.js +17 -0
- package/dist/task/source-prepare/artifact-meta.js +9 -2
- package/dist/task/source-prepare/build-draft.js +60 -0
- package/dist/task/source-prepare/fragment-inventory.js +4 -1
- package/dist/task/source-prepare/parse-intent.js +36 -11
- package/dist/task/task-demand-routing.js +5 -2
- package/dist/worker/console/chat/browser-automation.js +468 -308
- package/dist/worker/console/chat/browser-routes.js +175 -57
- package/dist/worker/console/chat/explore-tools.js +5 -2
- package/dist/worker/console/chat/pi-mode-loop-isolation.js +155 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +115 -20
- package/dist/worker/console/chat/pi-runtime/custom-tools/operator-tools.js +24 -16
- package/dist/worker/console/chat/pi-runtime/custom-tools/scheduled-goal-tools.js +22 -0
- package/dist/worker/console/chat/pi-runtime/progressive-tools.js +195 -0
- package/dist/worker/console/chat/pi-runtime.js +95 -28
- package/dist/worker/console/chat/routes.js +20 -1
- package/dist/worker/console/chat/scheduled-goal-booking.js +59 -0
- package/dist/worker/console/chat/scheduled-goal-delivery.js +27 -0
- package/dist/worker/console/chat/scheduled-goal-request.js +190 -0
- package/dist/worker/console/chat/sdd-data-alignment.js +1 -1
- package/dist/worker/console/chat/session-mode.js +8 -4
- package/dist/worker/console/chat/session-store.js +42 -9
- package/dist/worker/console/chat/tool-preview.js +115 -0
- package/dist/worker/console/chat/tools.js +7 -1
- package/dist/worker/console/chat/turn-order.js +13 -0
- package/dist/worker/console/chat/turn-process.js +32 -30
- package/dist/worker/console/operator-actions.js +50 -0
- package/dist/worker/console/prd-intake-bridge.js +54 -1
- package/dist/worker/console/scheduled-goal-host.js +98 -0
- package/dist/worker/console/scheduled-goal-operation-adapter.js +127 -0
- package/dist/worker/console/server.js +15 -0
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-C4NXyedy.js → abnfDiagram-N423BO3Z-8-j6y-sd.js} +1 -1
- package/dist/worker/console/static/assets/{arc-NZ3qXvBI.js → arc-eoQiMvuk.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-COZSRvml.js → architectureDiagram-T3A2C74G-C4A3uMcI.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-Ck0Gxi9C.js → blockDiagram-VBNYF7ZC-D4zD2F-Q.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-BX5HQ4Ox.js → c4Diagram-5PPSVZJV-j1RkJziL.js} +1 -1
- package/dist/worker/console/static/assets/channel-ChE7y-cx.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-CoviemSL.js → chunk-2GRJ4B5K-YBHmhik1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DbOdOkbZ.js → chunk-2Q5K7J3B-COfWyo9P.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BsG2pmdQ.js → chunk-5RXB4S5H-I99OUkHY.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-DGdvrNm8.js → chunk-5VM5RSS4-XKxoJNJ4.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-BAy7Yd6y.js → chunk-6Q2QTUOP-DLT_cYx1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-D9UA7hUb.js → chunk-GF5L2VYU-CxcKZ9mV.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-DPz7SZ8V.js → chunk-JWPE2WC7-V1EqXdjY.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-BmuEOIh7.js → chunk-KBJHAD2P-DebTtdFp.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-CIhBWnd8.js → chunk-RYQCIY6F-B-ivNRDf.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CScR6mDD.js → chunk-XXDRQBXY-DC_Ds11b.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C01TCf2X.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C01TCf2X.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-BjpfWaUr.js → cose-bilkent-JH36ORCC-sWEqKwIb.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BFQohJgT.js → cynefin-VYW2F7L2-BXa_dcu4.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-D3gzRJnS.js → cynefinDiagram-MW4NZA55-C-Mle84F.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-5eojkhoA.js → dagre-VZM6K2ZE-CXPDBITe.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CpD8LWu_.js → diagram-7IWD3JNH-CC-WJQfa.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-B8_4qJ2a.js → diagram-B4RE2ZJO-CDAV5Vs4.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-HOsXf0eu.js → diagram-LBJQPF4R-CmFiAcNz.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BqwRwiWP.js → diagram-Q27KOJAE-DPBZHuyn.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-BRVCNZe1.js → diagram-UB23O5K3-jUlm_Ds3.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Cvb1TgGh.js → ebnfDiagram-BXEA7PRR-DWhQ3mfY.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DS0O0qG9.js → erDiagram-JOGREHBK-Tr2gMqet.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BHIRvRr3.js → flowDiagram-UKHOOZJN-DJjVQHPA.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-DcCJ1JWx.js → ganttDiagram-PKOTCBZU-D74dQ4u0.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-B9ia5ony.js → gitGraphDiagram-DS77QQ5N-DwW0tZ0X.js} +1 -1
- package/dist/worker/console/static/assets/index-BWkIfcrK.css +1 -0
- package/dist/worker/console/static/assets/{index-wXlQohNs.js → index-Cdkvw_H6.js} +97 -97
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-3ogpgegn.js → infoDiagram-6WML65LV-ILCbxJyb.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-4tgpQ5SL.js → ishikawaDiagram-WSZJBQD7-DeuWBQ89.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DNfgHqFx.js → journeyDiagram-NVQOT4AX-CF5ih8Fk.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-Dz7ngC8z.js → kanban-definition-27J2QSJJ-C7yOSuRO.js} +1 -1
- package/dist/worker/console/static/assets/{linear-DI7Jv62E.js → linear-BDZ9riWi.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-CQA4Nzmo.js → mermaid.core-7pKqYtpZ.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-CtsMc8Mf.js → mindmap-definition-FAOFIHXS-LeJDybSU.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-ByppE9yH.js → pegDiagram-VL7TDLO6-BJvT3pMD.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-B5PtgFgt.js → pieDiagram-7S7Q4E2Y-_rGqpMan.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-Cq4p0k2K.js → quadrantDiagram-CIZ2JOQS-DPcSv5aA.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-DjfkyljN.js → railroadDiagram-AXF67PYL-Drxx4hkJ.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-DzynNRSl.js → requirementDiagram-LRYGKXZP-BCTUdU4z.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Cj7TCpTJ.js → sankeyDiagram-W5VNT64P-B6wzbZmB.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-C73C6ykA.js → sequenceDiagram-SI44F4Z6-BGt8d3QQ.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-BiNLgN2x.js → sizeCapture-X5ZJPWSS-7nlhJKo7.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-UwvjS64-.js → stateDiagram-OKZ733FA-Cv2stqMA.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DC7V5vcq.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-CC7DH98r.js → swimlanes-SLNWSIFB-qDAo4Yc1.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bwy4QUTO.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-LSBXTR70.js → timeline-definition-Z64GVDOM-CKbDNKTr.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-BAuxWwGP.js → vennDiagram-T6HMQDX7-DI-9EHic.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y--E5_gjZx.js → wardleyDiagram-T6FBY63Y-BrzzRDpX.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-dJWNmyzF.js → xychartDiagram-ELKLHX3M-BclH5hGh.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +41 -11
- package/dist/worker/console/static-src/operator-chat/compaction-message.js +3 -17
- package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +15 -5
- package/dist/worker/console/static-src/operator-chat/timeline-merge.js +29 -0
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +2 -5
- package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +2 -0
- package/dist/worker/console/static-src/prd-file-import.js +3 -1
- package/dist/worker/console/workspace-context.js +17 -1
- package/dist/worker/delivery/git-transaction.js +2 -0
- package/dist/worker/feature/fullstack-validate.js +2 -0
- package/dist/worker/loop-agent/loop-agent-client.js +8 -2
- package/dist/worker/materialize/harness-task-materializer.js +4 -1
- package/dist/worker/metrics/projector.js +1 -1
- package/dist/worker/observability/event-store.js +4 -1
- package/dist/worker/observability/read-model.js +4 -1
- package/dist/worker/observe/node-transparency.js +23 -1
- package/dist/worker/observe/routes.js +4 -0
- package/dist/worker/observe/static/operator-chrome.js +3 -1
- package/dist/worker/outcomes/declared-artifacts.js +2 -0
- package/dist/worker/preflight.js +3 -0
- package/dist/worker/scheduler/scheduled-goal-dispatch.js +117 -0
- package/dist/worker/scheduler/scheduled-goal-evidence.js +167 -0
- package/dist/worker/scheduler/scheduled-goal-recovery.js +62 -0
- package/dist/worker/scheduler/scheduled-goal-store.js +699 -0
- package/dist/worker/scheduler/scheduled-goal-supervisor.js +132 -0
- package/dist/worker/scheduler/scheduled-goal-time.js +102 -0
- package/dist/worker/scheduler/scheduled-goal-types.js +95 -0
- package/dist/worker/task-spec/validate.js +4 -1
- package/dist/workflows/dag/backend-test-markdown-workflow.js +6 -24
- package/dist/workflows/dag/backend-test-plan-protocol.js +82 -5
- package/dist/workflows/dag/dag-retry-schema.js +11 -0
- package/dist/workflows/dag/decision-envelope.js +2 -0
- package/dist/workflows/dag/dynamic-runtime/shared.js +2 -2
- package/dist/workflows/dag/frontend-closeout.js +4 -2
- package/dist/workflows/dag/frontend-committed-facts.js +461 -0
- package/dist/workflows/dag/frontend-durable-tools.js +15 -3
- package/dist/workflows/dag/frontend-implementation-contract.js +365 -8
- package/dist/workflows/dag/frontend-plan-canary.js +53 -0
- package/dist/workflows/dag/frontend-plan-decision-contract.js +803 -0
- package/dist/workflows/dag/frontend-plan-render.js +0 -2
- package/dist/workflows/dag/frontend-prewrite-gate.js +3 -3
- package/dist/workflows/dag/frontend-provider-capability-matrix.js +8 -61
- package/dist/workflows/dag/frontend-recovery-run.js +57 -0
- package/dist/workflows/dag/frontend-review-context.js +43 -70
- package/dist/workflows/dag/frontend-risk.js +92 -10
- package/dist/workflows/dag/frontend-session-budget.js +117 -3
- package/dist/workflows/dag/frontend-shape.js +11 -55
- package/dist/workflows/dag/frontend-test-execution-evidence.js +35 -10
- package/dist/workflows/dag/frontend-typed-event-store.js +32 -25
- package/dist/workflows/dag/frontend-verification-trace.js +25 -12
- package/dist/workflows/dag/frontend-writer-admission.js +3 -47
- package/dist/workflows/dag/frontend-writer-status.js +0 -23
- package/dist/workflows/dag/init-hybrid.js +202 -111
- package/dist/workflows/dag/interrupt-request.js +2 -0
- package/dist/workflows/dag/lifecycle.js +11 -2
- package/dist/workflows/dag/node-execution.js +50 -13
- package/dist/workflows/dag/reconcile-run.js +2 -0
- package/dist/workflows/dag/repair-artifact.js +3 -1
- package/dist/workflows/dag/report.js +2 -0
- package/dist/workflows/dag/rerun-plan.js +10 -0
- package/dist/workflows/dag/rerun-task.js +79 -1
- package/dist/workflows/dag/retry-policy.js +18 -0
- package/dist/workflows/dag/scheduler.js +2 -4
- package/dist/workflows/dag/types.js +44 -6
- package/dist/workflows/dag/validate.js +4 -0
- package/docs/README.md +1 -0
- package/docs/governance/README.md +1 -0
- package/docs/init-surface.manifest.json +1 -0
- package/docs/operations/README.md +2 -0
- package/docs/templates/README.md +1 -1
- package/docs/templates/agent-dag.schema.json +2 -2
- package/docs/templates/backend-test-dag.json +14 -10
- package/docs/templates/frontend-implementation-contract.schema.json +0 -7
- package/docs/templates/frontend-implementation-dag.json +8 -9
- package/package.json +8 -3
- package/skills/frontend-bounded-implement/SKILL.md +3 -4
- package/skills/frontend-design-review/SKILL.md +7 -12
- package/skills/frontend-design-review/references/review-checklist.md +7 -7
- package/skills/frontend-plan/SKILL.md +8 -18
- package/skills/frontend-plan/references/decision-contract.md +19 -26
- package/skills/frontend-review/SKILL.md +21 -25
- package/skills/frontend-review/references/review-findings.md +48 -24
- package/dist/worker/console/static/assets/channel-BxdTlb_5.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-_ByA1Nf8.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-_ByA1Nf8.js +0 -1
- package/dist/worker/console/static/assets/index-B9goN3S5.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-nLgMZ0D3.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-BcYqTady.js +0 -8
- package/dist/workflows/dag/frontend-shadow-dual-write.js +0 -975
|
@@ -6,22 +6,24 @@
|
|
|
6
6
|
implementation paths and verification target IDs.
|
|
7
7
|
- Record observable state and interaction behavior, including trigger and expected
|
|
8
8
|
behavior. IDs and paths alone are not behavioral coverage.
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
- One behavior target may cover multiple related requirements when one observable
|
|
10
|
+
test behavior proves them together.
|
|
11
|
+
- Every non-static verification target `id` is the stable identifier of that
|
|
12
|
+
contract entry only; it never needs to appear in test titles. Do not add tests
|
|
13
|
+
or rename titles to carry generated ids.
|
|
12
14
|
- Static targets are for project-wide commands and are traced by file and command
|
|
13
15
|
only.
|
|
14
16
|
|
|
15
|
-
###
|
|
17
|
+
### Behavior target shape (canonical example)
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
Each behavior target names the requirements it proves and declared UI states it
|
|
20
|
+
exercises. Empty `requirementIds`, or empty `uiStates` when any state/interaction
|
|
21
|
+
is declared, is rejected. Copy state names verbatim; never invent synonyms.
|
|
19
22
|
|
|
20
23
|
```json
|
|
21
24
|
{
|
|
22
|
-
"id": "VT-
|
|
23
|
-
"
|
|
24
|
-
"file": "src/App.tsx",
|
|
25
|
+
"id": "VT-COUNTER-LOCAL-CONSTRAINTS",
|
|
26
|
+
"file": "src/App.test.tsx",
|
|
25
27
|
"requirementIds": ["AC-FE-001", "AC-FE-005"],
|
|
26
28
|
"uiStates": ["disabled-minus", "default"]
|
|
27
29
|
}
|
|
@@ -45,7 +47,7 @@ carries behavior, implementation targets, and verification target ids:
|
|
|
45
47
|
"applicable": true,
|
|
46
48
|
"expectedBehavior": "minus button disabled at count 0",
|
|
47
49
|
"implementationTargets": ["src/components/SmokeCounter.tsx"],
|
|
48
|
-
"verificationTargetIds": ["VT-
|
|
50
|
+
"verificationTargetIds": ["VT-COUNTER-LOCAL-CONSTRAINTS"]
|
|
49
51
|
}
|
|
50
52
|
],
|
|
51
53
|
"interactions": [
|
|
@@ -54,7 +56,7 @@ carries behavior, implementation targets, and verification target ids:
|
|
|
54
56
|
"trigger": "User clicks refresh",
|
|
55
57
|
"expectedBehavior": "reloads runs",
|
|
56
58
|
"implementationTargets": ["src/App.tsx"],
|
|
57
|
-
"verificationTargetIds": ["VT-
|
|
59
|
+
"verificationTargetIds": ["VT-SMOKE-COUNTER-BEHAVIOR"]
|
|
58
60
|
}
|
|
59
61
|
]
|
|
60
62
|
}
|
|
@@ -74,7 +76,8 @@ non-static verification target files to the writer writeSet separately.
|
|
|
74
76
|
"src/App.tsx"
|
|
75
77
|
],
|
|
76
78
|
"verificationTargetIds": [
|
|
77
|
-
"VT-
|
|
79
|
+
"VT-SMOKE-COUNTER-BEHAVIOR",
|
|
80
|
+
"VT-COUNTER-LOCAL-CONSTRAINTS"
|
|
78
81
|
]
|
|
79
82
|
}
|
|
80
83
|
```
|
|
@@ -110,8 +113,9 @@ One component choice may cover many states/interactions via `covers`.
|
|
|
110
113
|
`reuse-existing` requires an existing-file `evidencePath`; greenfield uses `new`.
|
|
111
114
|
|
|
112
115
|
For Mock/API, keep the real request path enabled by default. Select only a strategy
|
|
113
|
-
allowed by the frozen task capability. Active Mock requires
|
|
114
|
-
|
|
116
|
+
allowed by the frozen task capability. Active Mock requires deterministic Mock-backed
|
|
117
|
+
verification and production-default-off activation. `not-needed` requires positive
|
|
118
|
+
real/no-remote evidence or records a real-integration gap.
|
|
115
119
|
|
|
116
120
|
Add dependencies only when authorized. Record unsupported dependency, path, API,
|
|
117
121
|
design, or verification needs as blocking evidence gaps; never invent a command or
|
|
@@ -134,20 +138,9 @@ and checked again by the policy shell.
|
|
|
134
138
|
Use `record_plan_group_coverage` for a complete declared execution group with shared
|
|
135
139
|
targets/VTs; runtime expands to all canonical members. Submit individual coverage
|
|
136
140
|
for differences. Constraints/exclusions create no invented UI or tests; keep genuine
|
|
137
|
-
|
|
141
|
+
evidence gaps, and never weaken behavior evidence required by the source.
|
|
138
142
|
|
|
139
143
|
Submit Mock policy with `record_mock_api` and empty endpoints, then one endpoint per
|
|
140
144
|
`record_mock_endpoint`. Use `replace:true` for revisions, plus `remove:true` to
|
|
141
145
|
withdraw an endpoint. Use stable finding/fact identities; successful receipts mean
|
|
142
146
|
durable commits. Resume missing work instead of regenerating full JSON or history.
|
|
143
|
-
|
|
144
|
-
## Implementation steps submission
|
|
145
|
-
|
|
146
|
-
Submit `finalize_plan` with `implementationSteps: [{requirementIds, action}]`.
|
|
147
|
-
Each action says what to change and where within the approved implementation
|
|
148
|
-
paths. Cover every frozen requirement ID, including constraints and exclusions
|
|
149
|
-
(state what to preserve or avoid). One action may cover several related IDs.
|
|
150
|
-
Do not merely repeat file names or AC titles. Missing, unknown or blank steps
|
|
151
|
-
return a correctable receipt; fix the steps and call finalize_plan again.
|
|
152
|
-
The runtime renders these into canonical `implementationSteps` strings with AC
|
|
153
|
-
references. No test plan or new tests are required by this protocol.
|
|
@@ -4,7 +4,7 @@ description: Use to review completed frontend code and verification before close
|
|
|
4
4
|
references:
|
|
5
5
|
- path: references/review-findings.md
|
|
6
6
|
required: true
|
|
7
|
-
maxChars:
|
|
7
|
+
maxChars: 3200
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Frontend Review
|
|
@@ -16,9 +16,9 @@ design-review prose or `ai_workspace/`.
|
|
|
16
16
|
|
|
17
17
|
## Authoritative Terminal
|
|
18
18
|
|
|
19
|
-
Submit findings one at a time with `record_review_finding`
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
Submit findings one at a time with `record_review_finding` (stable IDs,
|
|
20
|
+
`replace:true` for revisions). The terminal auto-includes saved findings; correct
|
|
21
|
+
rejected calls, then commit one successful terminal:
|
|
22
22
|
|
|
23
23
|
- `approve_review` when no Critical/Important finding remains;
|
|
24
24
|
- `request_review_changes` for a defect, missing required evidence, forbidden
|
|
@@ -30,24 +30,20 @@ Requested changes end this run; the recovery controller owns follow-up.
|
|
|
30
30
|
|
|
31
31
|
## Review Scope
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Verification Assessment, UX Assessment, and Residual Risks headings.
|
|
51
|
-
|
|
52
|
-
A pass requires no Critical/Important findings and all required shell checks passed.
|
|
53
|
-
Still report knowledge-source status and optional browser/manual gaps.
|
|
33
|
+
Follow the findings guide's review sequence and pass rules. In addition:
|
|
34
|
+
|
|
35
|
+
- Compare intent, contract, plan, diff, and evidence; report altered requirements.
|
|
36
|
+
Check every changed file against allowed/forbidden/approved write scope, and map
|
|
37
|
+
criteria to behavior, applicable UI states, tests, and shell evidence.
|
|
38
|
+
- Mock strategies need the real request as default, contract-aligned fixtures,
|
|
39
|
+
production isolation, and no false real-integration claim; `not-needed` needs
|
|
40
|
+
real/no-remote evidence, or a default-auto skipped-Mock rationale with the Real
|
|
41
|
+
Integration Gap preserved when no project Mock capability is confirmed.
|
|
42
|
+
- Inspect lint only when `lintConfigured: true`; with `lintConfigured: false` there
|
|
43
|
+
is no lint surface — report no lint finding. Typecheck, build, and test still
|
|
44
|
+
require successful exits.
|
|
45
|
+
- Read shell exit status from `verificationEvidence.commands`, not prose or the
|
|
46
|
+
trace: the trace proves binding only, never that a command succeeded. Judge
|
|
47
|
+
whether the tests are sufficient; do not guess whether the commands ran.
|
|
48
|
+
- Evaluate component/design claims against bound evidence; do not replace it with a
|
|
49
|
+
repository-wide search or connector query. Do not edit files.
|
|
@@ -1,30 +1,54 @@
|
|
|
1
1
|
# Frontend Review Findings Guide
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Severity
|
|
4
4
|
|
|
5
|
-
- **Critical
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- **Advisory**: behavior correctness, edge cases, regression concerns and missing
|
|
9
|
-
tests. Record these for later frontend-test work; they do not block implementation.
|
|
5
|
+
- **Critical**: blocks primary flow, corrupts data, violates security/privacy, writes forbidden paths, bypasses required verification.
|
|
6
|
+
- **Important**: acceptance/state/validation gap, material convention drift, missing behavior tests, unauthorized dependency, unsafe mock activation/import, mock-contract drift, misleading real-integration claim, or failed/missing required verification.
|
|
7
|
+
- **Minor**: non-blocking maintainability, copy, layout, or cleanup issue.
|
|
10
8
|
|
|
11
9
|
## Evidence
|
|
12
10
|
|
|
13
|
-
Cite
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
##
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
- Cite tight file locations, exact commands/results, or named DAG artifacts.
|
|
12
|
+
- Never invent evidence; name the missing check. An implementation summary is not the actual diff.
|
|
13
|
+
- Failed required static/behavior verification is at least Important. Lint may be
|
|
14
|
+
`baseline-debt` only with a valid `frontend-lint-assessment-v1`; this is not a
|
|
15
|
+
passed lint result. A changed-file lint diagnostic, new unmatched diagnostic,
|
|
16
|
+
command drift, missing baseline, timeout, or unparseable output is Important.
|
|
17
|
+
- Treat the design evidence already bound in the canonical review context as the
|
|
18
|
+
source of truth. Do not launch a connector query or repository-wide OpenSpec/
|
|
19
|
+
`ai_workspace` search to replace frozen evidence; label a missing bound evidence
|
|
20
|
+
reference accurately instead.
|
|
21
|
+
|
|
22
|
+
## Review Sequence
|
|
23
|
+
|
|
24
|
+
1. Establish changed-file inventory and write boundaries.
|
|
25
|
+
2. Compare the bound contract with the approved constraints and cumulative diff.
|
|
26
|
+
3. Map each criterion to code, states, tests, and evidence.
|
|
27
|
+
4. Inspect interactions, state/data/API behavior, failure paths, and regressions.
|
|
28
|
+
5. Check mock selection, contract-to-fixture mapping, activation/default path,
|
|
29
|
+
handler/fixture/adapter and consumer diff, verification, production imports, and
|
|
30
|
+
the real-integration gap.
|
|
31
|
+
6. Check bound design evidence, responsive/a11y behavior, dependencies, and maintenance.
|
|
32
|
+
7. Classify findings and derive the verdict mechanically.
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
- [Critical|Important|Minor] path:line — Problem; impact; required correction; evidence.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Pass Rules
|
|
39
|
+
|
|
40
|
+
- No Critical or Important findings remain.
|
|
41
|
+
- Required static and behavior nodes ran and passed: verify each frozen command through
|
|
42
|
+
`verificationEvidence.commands` (per-command `exitCode`/`ok`) instead of inferring from
|
|
43
|
+
the trace, which only proves binding.
|
|
44
|
+
- When the task declares lint commands (`lintConfigured: true`), lint is `passed` or
|
|
45
|
+
evidence-backed `baseline-debt`; typecheck, build, and test are passed. Any debt count
|
|
46
|
+
and affected unchanged files remain disclosed. A task that declares no lint commands
|
|
47
|
+
reports `lintConfigured: false`: lint is not part of its verification surface, so
|
|
48
|
+
report no lint finding either way.
|
|
49
|
+
- Changed files are authorized.
|
|
50
|
+
- Criteria and applicable states have implementation and evidence.
|
|
51
|
+
- Required Mock-backed behavior passed; any generated Mock-specific verification also
|
|
52
|
+
passed; Mock is not enabled by default in production. For default-auto skipped
|
|
53
|
+
Mock, the real request remains default and the Real Integration Gap is preserved.
|
|
54
|
+
- Optional unavailable knowledge/browser/visual/manual checks remain explicit risks.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./mermaid.core-CQA4Nzmo.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-D9UA7hUb.js";import{_ as i}from"./mermaid.core-CQA4Nzmo.js";import"./chunk-5VM5RSS4-DGdvrNm8.js";import"./chunk-XXDRQBXY-CScR6mDD.js";import"./chunk-KBJHAD2P-BmuEOIh7.js";import"./chunk-2GRJ4B5K-CoviemSL.js";import"./index-wXlQohNs.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-GF5L2VYU-D9UA7hUb.js";import{_ as i}from"./mermaid.core-CQA4Nzmo.js";import"./chunk-5VM5RSS4-DGdvrNm8.js";import"./chunk-XXDRQBXY-CScR6mDD.js";import"./chunk-KBJHAD2P-BmuEOIh7.js";import"./chunk-2GRJ4B5K-CoviemSL.js";import"./index-wXlQohNs.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|