@tea-agent/loop-agent 0.42.0-next.9 → 0.42.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.
- package/CHANGELOG.md +111 -45
- package/dist/application/dag/run-dag.js +8 -2
- package/dist/application/evaluation/budget.js +19 -1
- package/dist/application/task-lifecycle/advance.js +26 -8
- package/dist/application/task-lifecycle/observe.js +43 -29
- package/dist/application/task-lifecycle/plan-transitions.js +5 -4
- package/dist/build-stamp.json +3 -3
- package/dist/cli/program.js +1 -1
- package/dist/commands/dag-rerun-task.js +2 -0
- package/dist/commands/task-source-prepare.js +3 -1
- package/dist/executors/dag-pi-executor.js +2584 -600
- package/dist/executors/pi-executor.js +22 -1
- package/dist/executors/pi-extension-resolver.js +14 -2
- package/dist/executors/pi-sdk-executor.js +140 -39
- package/dist/executors/shell-executor.js +135 -55
- package/dist/shared/dag-failure-category.js +6 -0
- package/dist/shared/frontend-execution-policy.js +23 -0
- package/dist/task/config-types.js +4 -0
- package/dist/task/contract/apply.js +36 -2
- package/dist/task/source-prepare/ledger-reconciliation.js +2 -2
- package/dist/task/source-prepare/ledger-review.js +6 -9
- package/dist/task/source-prepare/parse-intent.js +7 -0
- package/dist/task/source-prepare/semantic-intake.js +16 -26
- package/dist/task/source-prepare/source-fidelity-pi.js +28 -9
- package/dist/task/source-references.js +48 -23
- package/dist/worker/console/chat/assistant-content.js +23 -2
- package/dist/worker/console/chat/browser-policy.js +143 -0
- package/dist/worker/console/chat/browser-routes.js +148 -0
- package/dist/worker/console/chat/chat-event-store.js +4 -2
- package/dist/worker/console/chat/explore-tools.js +13 -0
- package/dist/worker/console/chat/pi-runtime.js +173 -94
- package/dist/worker/console/chat/resource-loader.js +4 -1
- package/dist/worker/console/chat/routes.js +208 -66
- package/dist/worker/console/chat/scm-routes.js +217 -0
- package/dist/worker/console/chat/scm-service.js +283 -0
- package/dist/worker/console/chat/scm-tools.js +111 -0
- package/dist/worker/console/chat/sdd-data-alignment.js +78 -11
- package/dist/worker/console/chat/session-catalog.js +32 -0
- package/dist/worker/console/chat/session-mode-view.js +48 -0
- package/dist/worker/console/chat/session-mode.js +218 -0
- package/dist/worker/console/chat/session-store.js +27 -7
- package/dist/worker/console/chat/shortcuts.js +6 -0
- package/dist/worker/console/chat/subagents/agent-tool.js +62 -0
- package/dist/worker/console/chat/subagents/explore-agent.js +169 -0
- package/dist/worker/console/chat/subagents/index.js +5 -0
- package/dist/worker/console/chat/subagents/orchestrator.js +273 -0
- package/dist/worker/console/chat/subagents/tool-policy.js +53 -0
- package/dist/worker/console/chat/subagents/types.js +13 -0
- package/dist/worker/console/chat/terminal-routes.js +216 -0
- package/dist/worker/console/chat/terminal-sessions.js +284 -0
- package/dist/worker/console/chat/terminal-tools.js +199 -0
- package/dist/worker/console/chat/tool-preview.js +21 -0
- package/dist/worker/console/chat/tools.js +13 -1
- package/dist/worker/console/chat/turn-process.js +1 -0
- package/dist/worker/console/interview/tools.js +1 -0
- package/dist/worker/console/server.js +2 -28
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-C6n9_m0P.js → abnfDiagram-N423BO3Z-C9eI7nEo.js} +1 -1
- package/dist/worker/console/static/assets/{arc-DQh-IfZ1.js → arc-VJWsxWhB.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-54NnrwUC.js → architectureDiagram-T3A2C74G-BGcyiMSo.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-pivRALGK.js → blockDiagram-VBNYF7ZC-BScnFwyi.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-BR7OV2NJ.js → c4Diagram-5PPSVZJV-Bl9_BsLi.js} +1 -1
- package/dist/worker/console/static/assets/channel-B6sQYuOE.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-B1Aq6BcK.js → chunk-2GRJ4B5K-F1uKxiUt.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-CbdU0rjo.js → chunk-2Q5K7J3B-rSRMynVu.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-Dqi2GJeD.js → chunk-5RXB4S5H-DAsJm1WD.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-BYn1Hu4R.js → chunk-5VM5RSS4-DQIdVI0a.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DRLjDL0k.js → chunk-6Q2QTUOP-4A_8rJ-Q.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-CY9Xx2jV.js → chunk-GF5L2VYU-BHnT-vjh.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-BNCZs7_z.js → chunk-JWPE2WC7-Rq7QKBkn.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-DZ8AStLL.js → chunk-KBJHAD2P-BXh-AI2u.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DsxjYrzz.js → chunk-RYQCIY6F-BblcLy8m.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-Ddx1KC1l.js → chunk-XXDRQBXY-zHZmVnB6.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Z6s5QoeI.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Z6s5QoeI.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-W9TveCnK.js → cose-bilkent-JH36ORCC-Cmwz0Wi4.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-l9j_ztZH.js → cynefin-VYW2F7L2-Dq76MHQU.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BMJMKi4G.js → cynefinDiagram-MW4NZA55-zPahV1fM.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-Bb4mG9pH.js → dagre-VZM6K2ZE-DQJ3xPc_.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-BMgL_Qv0.js → diagram-7IWD3JNH-BwX7u6fv.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-Bvo2T4OQ.js → diagram-B4RE2ZJO-CodnDCco.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-_5kWRN9c.js → diagram-LBJQPF4R-gAjtWkxG.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-DqdMrltM.js → diagram-Q27KOJAE-CGCqz0cS.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-CDDYsNkp.js → diagram-UB23O5K3-RHwYEywd.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-c4nfnZUV.js → ebnfDiagram-BXEA7PRR-B6seb_p_.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DnkUcNMs.js → erDiagram-JOGREHBK-CmwCKYe8.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-Dz0KGLZE.js → flowDiagram-UKHOOZJN-BfNsaZ0V.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-Cj1t1uka.js → ganttDiagram-PKOTCBZU-zmYgi_Z3.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-tp2FrBHd.js → gitGraphDiagram-DS77QQ5N-BDEzzSKF.js} +1 -1
- package/dist/worker/console/static/assets/index-DgenUAfc.js +468 -0
- package/dist/worker/console/static/assets/index-aF4u-Y__.css +1 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DQwJS8DH.js → infoDiagram-6WML65LV-DeSz8l42.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-eimCQWD4.js → ishikawaDiagram-WSZJBQD7-B1LV29aH.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-Dd9Gbwgv.js → journeyDiagram-NVQOT4AX-CCw4W2oU.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-Qve3cyft.js → kanban-definition-27J2QSJJ-BozaMoRJ.js} +1 -1
- package/dist/worker/console/static/assets/{linear-UXKSe36Z.js → linear-G1JR40SX.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-CWhj4JXN.js → mermaid.core-CCgPF0oA.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-yTcwf4SJ.js → mindmap-definition-FAOFIHXS-CEqnCHnD.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-_7qToaZP.js → pegDiagram-VL7TDLO6-DpmQPKuI.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-CXmrKmDm.js → pieDiagram-7S7Q4E2Y-BP501AxR.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-hMmrJyaS.js → quadrantDiagram-CIZ2JOQS-D1dBhl_A.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BXw8tCBe.js → railroadDiagram-AXF67PYL-DgZDS5pY.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-BmjgnLZl.js → requirementDiagram-LRYGKXZP-BzB3pyIq.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Bj77SPpN.js → sankeyDiagram-W5VNT64P-B9ZprFFP.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-B2FDVysL.js → sequenceDiagram-SI44F4Z6-CC2-_XrA.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-UChNY9ZZ.js → sizeCapture-X5ZJPWSS-UVtAUqgB.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-wbAEkbd7.js → stateDiagram-OKZ733FA-CWcS5JYG.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BooX8u1Q.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-DCEkU8HR.js → swimlanes-SLNWSIFB-C4p-dn06.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D64_eqqE.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-BGp7H06U.js → timeline-definition-Z64GVDOM-Dnz52OHX.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-DsCIQuWR.js → vennDiagram-T6HMQDX7-CzTE0Nfu.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-cRZLP4Xe.js → wardleyDiagram-T6FBY63Y-NAR9cjQQ.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CP0xLR9Y.js → xychartDiagram-ELKLHX3M-DVMk8413.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/chat-view-types.js +1 -1
- package/dist/worker/console/static-src/operator-chat/chat-link.js +94 -0
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +142 -7
- package/dist/worker/console/static-src/operator-chat/pending-user-message.js +44 -0
- package/dist/worker/console/static-src/operator-chat/process-label.js +41 -0
- package/dist/worker/console/static-src/operator-chat/tools-catalog.js +21 -2
- package/dist/worker/console/static-src/operator-chat/turn-group-equality.js +13 -0
- package/dist/worker/console/static-src/operator-chat/turn-stream-controller.js +2 -0
- package/dist/worker/console/static-src/operator-chat/use-searchable-hidden.js +51 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +33 -18
- package/dist/worker/console/static-src/operator-chat/useChatStream.js +48 -16
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +170 -7
- package/dist/worker/console/static-src/operator-chat/useComposer.js +13 -7
- package/dist/worker/console/static-src/operator-chat/user-turn-anchor-equality.js +21 -0
- package/dist/worker/console/static-src/shell/workspace-route.js +4 -0
- package/dist/worker/console/workspace-context.js +15 -1
- package/dist/worker/observe/node-transparency.js +81 -72
- package/dist/worker/observe/routes.js +20 -1
- package/dist/worker/observe/static/constants.js +22 -22
- package/dist/worker/observe/static/dag-context-reason-labels.js +19 -0
- package/dist/worker/observe/static/dag-history-labels.js +1 -0
- package/dist/worker/observe/static/dag-inspector-humanize.d.ts +16 -0
- package/dist/worker/observe/static/dag-inspector-humanize.js +342 -0
- package/dist/worker/observe/static/dag-node-purpose.js +10 -10
- package/dist/worker/observe/static/dom.js +20 -1
- package/dist/worker/observe/static/format-pool.d.ts +2 -0
- package/dist/worker/observe/static/format-pool.js +6 -0
- package/dist/worker/observe/static/format.js +7 -0
- package/dist/worker/observe/static/index.html +4 -4
- package/dist/worker/observe/static/inspect-workspace.js +34 -7
- package/dist/worker/observe/static/inspector-submission.js +32 -0
- package/dist/worker/observe/static/kpi.js +1 -0
- package/dist/worker/observe/static/prompt-restart-candidates.js +4 -2
- package/dist/worker/observe/static/relations.js +7 -5
- package/dist/worker/observe/static/router.js +13 -0
- package/dist/worker/observe/static/run-processing.js +2 -0
- package/dist/worker/observe/static/shell-chrome.js +36 -3
- package/dist/worker/observe/static/state.js +35 -2
- package/dist/worker/observe/static/styles.css +431 -39
- package/dist/worker/observe/static/task-failure-labels.d.ts +4 -0
- package/dist/worker/observe/static/task-failure-labels.js +67 -0
- package/dist/worker/observe/static/task-history.js +12 -0
- package/dist/worker/observe/static/views/batch.js +6 -13
- package/dist/worker/observe/static/views/dag-graph.js +51 -4
- package/dist/worker/observe/static/views/dag-inspector.js +1069 -426
- package/dist/worker/observe/static/views/dag-trajectory.js +3 -0
- package/dist/worker/observe/static/views/dag.d.ts +6 -0
- package/dist/worker/observe/static/views/dag.js +64 -22
- package/dist/worker/observe/static/views/dags.js +2 -0
- package/dist/worker/observe/static/views/dashboard.js +21 -12
- package/dist/worker/observe/static/views/failures.js +21 -11
- package/dist/worker/observe/static/views/feature.js +11 -29
- package/dist/worker/observe/static/views/pool.js +37 -28
- package/dist/worker/observe/static/views/run.js +48 -5
- package/dist/worker/observe/static/views/session-timeline.js +194 -243
- package/dist/worker/observe/static/views/task.js +81 -62
- package/dist/workflows/dag/backend-test-plan-protocol.js +104 -0
- package/dist/workflows/dag/budget-enforcement.js +53 -3
- package/dist/workflows/dag/dag-retry-schema.js +3 -0
- package/dist/workflows/dag/frontend-capacity.js +9 -0
- package/dist/workflows/dag/frontend-contract-facts.js +130 -0
- package/dist/workflows/dag/frontend-design-policy.js +103 -17
- package/dist/workflows/dag/frontend-durable-tools.js +193 -0
- package/dist/workflows/dag/frontend-execution-groups.js +24 -0
- package/dist/workflows/dag/frontend-implementation-contract.js +423 -41
- package/dist/workflows/dag/frontend-input-projection.js +76 -0
- package/dist/workflows/dag/frontend-plan-completeness.js +186 -0
- package/dist/workflows/dag/frontend-plan-recovery-policy.js +18 -0
- package/dist/workflows/dag/frontend-plan-render.js +21 -3
- package/dist/workflows/dag/frontend-prewrite-gate.js +1 -1
- package/dist/workflows/dag/frontend-recovery-controller.js +32 -8
- package/dist/workflows/dag/frontend-recovery-lineage.js +13 -0
- package/dist/workflows/dag/frontend-recovery-plan.js +4 -1
- package/dist/workflows/dag/frontend-recovery-run.js +146 -16
- package/dist/workflows/dag/frontend-review-scopes.js +139 -0
- package/dist/workflows/dag/frontend-risk.js +2 -0
- package/dist/workflows/dag/frontend-session-budget.js +249 -0
- package/dist/workflows/dag/frontend-shadow-dual-write.js +37 -3
- package/dist/workflows/dag/frontend-shape-facts.js +12 -2
- package/dist/workflows/dag/frontend-shape.js +46 -7
- package/dist/workflows/dag/frontend-test-execution-evidence.js +49 -0
- package/dist/workflows/dag/frontend-typed-event-store.js +14 -0
- package/dist/workflows/dag/frontend-verification-trace.js +38 -4
- package/dist/workflows/dag/frontend-writer-admission.js +2 -2
- package/dist/workflows/dag/init-hybrid.js +70 -35
- package/dist/workflows/dag/node-execution.js +225 -226
- package/dist/workflows/dag/prompt.js +4 -0
- package/dist/workflows/dag/recovery-lease.js +106 -16
- package/dist/workflows/dag/rerun-feedback.js +1 -0
- package/dist/workflows/dag/rerun-plan.js +96 -4
- package/dist/workflows/dag/rerun-run.js +28 -6
- package/dist/workflows/dag/rerun-task.js +221 -18
- package/dist/workflows/dag/retry-policy.js +27 -10
- package/dist/workflows/dag/runner-exit-diagnostics.js +125 -0
- package/dist/workflows/dag/runner.js +246 -19
- package/dist/workflows/dag/structured-output-repair.js +4 -1
- package/dist/workflows/dag/types.js +10 -3
- package/dist/workflows/dag/validate.js +10 -8
- package/dist/workflows/dag/workspace-checkpoint.js +66 -0
- package/docs/operations/README.md +2 -0
- package/docs/templates/agent-dag.schema.json +2 -2
- package/docs/templates/backend-test-dag.json +6 -4
- package/docs/templates/frontend-design-contract.md +4 -4
- package/docs/templates/frontend-implementation-contract.schema.json +68 -4
- package/docs/templates/frontend-implementation-dag.json +5 -5
- package/harness.json +1 -1
- package/package.json +8 -6
- package/skills/frontend-contract/SKILL.md +2 -1
- package/skills/frontend-contract/references/contract-protocol.md +19 -3
- package/skills/frontend-design-review/SKILL.md +12 -11
- package/skills/frontend-plan/SKILL.md +22 -2
- package/skills/frontend-plan/references/decision-contract.md +114 -5
- package/skills/frontend-plan/references/design-decisions.md +32 -0
- package/skills/frontend-review/SKILL.md +10 -11
- package/skills/frontend-scout/references/scout-evidence.md +4 -0
- package/dist/worker/console/static/assets/channel-DsZxrgqe.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-CuToPeGV.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-CuToPeGV.js +0 -1
- package/dist/worker/console/static/assets/index-D9Sc0f0y.js +0 -449
- package/dist/worker/console/static/assets/index-DDQc5a50.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-yPoT19ft.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-VWdarchG.js +0 -8
|
@@ -14,11 +14,103 @@
|
|
|
14
14
|
- Static targets are for project-wide commands and are traced by file and command
|
|
15
15
|
only.
|
|
16
16
|
|
|
17
|
+
### Behavior target shape (canonical example)
|
|
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.
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"id": "VT-COUNTER-LOCAL-CONSTRAINTS",
|
|
26
|
+
"file": "src/App.test.tsx",
|
|
27
|
+
"requirementIds": ["AC-FE-001", "AC-FE-005"],
|
|
28
|
+
"uiStates": ["disabled-minus", "default"]
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`stylingStrategy` describes how the frozen look is achieved; it must stay inside
|
|
33
|
+
the task's declared scope. Capabilities the task source lists as non-goals (e.g.
|
|
34
|
+
responsive/mobile layout, animations) must not be promised here, and themes or
|
|
35
|
+
CSS conventions must not be claimed without a Scout-confirmed repository fact.
|
|
36
|
+
|
|
37
|
+
### UI state declaration shape (canonical example)
|
|
38
|
+
|
|
39
|
+
Use the exact state names referenced by behavior targets. Each applicable state
|
|
40
|
+
carries behavior, implementation targets, and verification target ids:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"uiStates": [
|
|
45
|
+
{
|
|
46
|
+
"name": "disabled-minus",
|
|
47
|
+
"applicable": true,
|
|
48
|
+
"expectedBehavior": "minus button disabled at count 0",
|
|
49
|
+
"implementationTargets": ["src/components/SmokeCounter.tsx"],
|
|
50
|
+
"verificationTargetIds": ["VT-COUNTER-LOCAL-CONSTRAINTS"]
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"interactions": [
|
|
54
|
+
{
|
|
55
|
+
"name": "refresh",
|
|
56
|
+
"trigger": "User clicks refresh",
|
|
57
|
+
"expectedBehavior": "reloads runs",
|
|
58
|
+
"implementationTargets": ["src/App.tsx"],
|
|
59
|
+
"verificationTargetIds": ["VT-SMOKE-COUNTER-BEHAVIOR"]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Implementation target coverage (canonical example)
|
|
66
|
+
|
|
67
|
+
`targets.files` is the union of every requirement's `implementationTargets`; list
|
|
68
|
+
each required component, integration point, and sibling source. Admission adds
|
|
69
|
+
non-static verification target files to the writer writeSet separately.
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"id": "AC-FE-001",
|
|
74
|
+
"implementationTargets": [
|
|
75
|
+
"src/components/SmokeCounter.tsx",
|
|
76
|
+
"src/App.tsx"
|
|
77
|
+
],
|
|
78
|
+
"verificationTargetIds": [
|
|
79
|
+
"VT-SMOKE-COUNTER-BEHAVIOR",
|
|
80
|
+
"VT-COUNTER-LOCAL-CONSTRAINTS"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Bidirectional VT cross-reference invariant
|
|
86
|
+
|
|
87
|
+
Every requirement → VT citation must close in both directions: the cited VT's
|
|
88
|
+
`requirementIds` must list the citing requirement back. The checker reports the
|
|
89
|
+
missing direction; fix it in-node by re-submitting the corrected VT entry with
|
|
90
|
+
the same id and `replace=true`. `replace` is a full replacement: the latest
|
|
91
|
+
submission under an id becomes the authoritative entry (a subset re-submission
|
|
92
|
+
is the new rule). A `duplicate` receipt is a correction invitation, not a
|
|
93
|
+
prohibition, and a reverse-reference backfill is not "re-deriving committed
|
|
94
|
+
facts".
|
|
95
|
+
|
|
96
|
+
## UX vocabulary (registry first)
|
|
97
|
+
|
|
98
|
+
- Record `record_state_registry` BEFORE any `record_state_flow`: one compact
|
|
99
|
+
global vocabulary of UI-state and interaction names. Details use complete execution
|
|
100
|
+
group scopes; reuse shared names across scopes, never one name per AC or a
|
|
101
|
+
rename of an already-recorded concept (kebab-case behavior-domain names, e.g.
|
|
102
|
+
`planner-task-edit`, `focus-queue-move`).
|
|
103
|
+
- UI states use the contract's declared authoritative ids (`declaredUiStates`
|
|
104
|
+
in the plan input) when the source declares a state table.
|
|
105
|
+
- Retry slices see `committedUx` in the plan input: reuse those exact names.
|
|
106
|
+
|
|
17
107
|
## Global decisions
|
|
18
108
|
|
|
19
109
|
Keep route/component placement, Mock/data strategy, and dependency/deviation policy
|
|
20
|
-
|
|
21
|
-
|
|
110
|
+
global. Use only frozen command labels and Scout-confirmed paths.
|
|
111
|
+
|
|
112
|
+
One component choice may cover many states/interactions via `covers`.
|
|
113
|
+
`reuse-existing` requires an existing-file `evidencePath`; greenfield uses `new`.
|
|
22
114
|
|
|
23
115
|
For Mock/API, keep the real request path enabled by default. Select only a strategy
|
|
24
116
|
allowed by the frozen task capability. Active Mock requires deterministic Mock-backed
|
|
@@ -32,6 +124,23 @@ widen the write set.
|
|
|
32
124
|
## Runtime-owned fields and terminal
|
|
33
125
|
|
|
34
126
|
The runtime owns `schemaVersion`, `sourceBinding`, risk, canonical target files,
|
|
35
|
-
aliases, command allowlisting, path containment, and final
|
|
36
|
-
editable decision facts, then call `finalize_plan
|
|
37
|
-
design policy materializes the canonical implementation
|
|
127
|
+
`requiredDeliverables`, aliases, command allowlisting, path containment, and final
|
|
128
|
+
validation. Submit editable decision facts, then call `finalize_plan`; correct
|
|
129
|
+
rejected facts and retry until one successful terminal commit. The deterministic design policy materializes the canonical implementation
|
|
130
|
+
contract: every file in the Contract's explicit source-bound delivery inventory
|
|
131
|
+
must be planned (`requiredDeliverables` gate). Permissions, prohibitions, examples
|
|
132
|
+
and read-only references do not create delivery obligations. Plan receives this
|
|
133
|
+
inventory as `requiredDeliverables`; it cannot add, remove or reinterpret it.
|
|
134
|
+
Missing files and UX name collisions are reported by finalize_plan before commit
|
|
135
|
+
and checked again by the policy shell.
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
Use `record_plan_group_coverage` for a complete declared execution group with shared
|
|
139
|
+
targets/VTs; runtime expands to all canonical members. Submit individual coverage
|
|
140
|
+
for differences. Constraints/exclusions create no invented UI or tests; keep genuine
|
|
141
|
+
evidence gaps, and never weaken behavior evidence required by the source.
|
|
142
|
+
|
|
143
|
+
Submit Mock policy with `record_mock_api` and empty endpoints, then one endpoint per
|
|
144
|
+
`record_mock_endpoint`. Use `replace:true` for revisions, plus `remove:true` to
|
|
145
|
+
withdraw an endpoint. Use stable finding/fact identities; successful receipts mean
|
|
146
|
+
durable commits. Resume missing work instead of regenerating full JSON or history.
|
|
@@ -15,3 +15,35 @@ Contract. Do not search specification roots or nearby code from Plan.
|
|
|
15
15
|
responsive, and accessibility behavior; use not-applicable only with a reason.
|
|
16
16
|
- Record styling strategy, deviations, conflicts, and unresolved gaps explicitly.
|
|
17
17
|
Never silently replace a spec-defined component or claim unread evidence.
|
|
18
|
+
|
|
19
|
+
### Component choice shape (canonical example)
|
|
20
|
+
|
|
21
|
+
`purpose` must exactly match a declared UI state or interaction name — it is the
|
|
22
|
+
coverage key the deterministic policy checks. Do not invent synonyms, and never
|
|
23
|
+
swap a task-mandated component for another name without recording a deviation.
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
[
|
|
27
|
+
{
|
|
28
|
+
"purpose": "disabled-minus",
|
|
29
|
+
"component": "SmokeCounter",
|
|
30
|
+
"decision": "new",
|
|
31
|
+
"sourceRequirementIds": ["AC-FE-001"],
|
|
32
|
+
"sourceFragmentId": "REQ-SRC-AC-FE-001",
|
|
33
|
+
"rationale": "task mandates a new SmokeCounter card on the home surface"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"purpose": "refresh",
|
|
37
|
+
"component": "RunFilterBar",
|
|
38
|
+
"decision": "reuse-existing",
|
|
39
|
+
"rationale": "reuses the Scout-confirmed filter bar for the refresh interaction"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
For `decision: "new"`, pass `sourceRequirementIds` + `sourceFragmentId` and let
|
|
45
|
+
the runtime derive the exact task-source citation — never hand-write a
|
|
46
|
+
`specReference`. A `reuse-existing` choice covers behavioural interactions
|
|
47
|
+
without one row per interaction; each applicable visual UI state still needs its
|
|
48
|
+
own `purpose` match (or an explicitly scoped stylingStrategy covering the visual
|
|
49
|
+
dimension).
|
|
@@ -9,25 +9,24 @@ references:
|
|
|
9
9
|
|
|
10
10
|
# Frontend Review
|
|
11
11
|
|
|
12
|
-
Use
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
design-review prose, OpenSpec, or `ai_workspace/`; the bound context is authoritative.
|
|
12
|
+
Use `contracts/frontend-review-context.json`, its hash-bound contract index and diff,
|
|
13
|
+
and only files named by the diff. Read the findings guide and capacity diagnostic;
|
|
14
|
+
use indexed sections when advised. Do not reopen task sources, plans, OpenSpec,
|
|
15
|
+
design-review prose or `ai_workspace/`.
|
|
17
16
|
|
|
18
17
|
## Authoritative Terminal
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
Submit findings one at a time with `record_review_finding` using stable IDs.
|
|
20
|
+
Use `replace:true` for revisions. The terminal automatically includes saved findings;
|
|
21
|
+
do not repeat their array. Correct rejected calls, then commit one successful terminal:
|
|
21
22
|
|
|
22
23
|
- `approve_review` when no Critical/Important finding remains;
|
|
23
24
|
- `request_review_changes` for a defect, missing required evidence, forbidden
|
|
24
25
|
write, or unmet acceptance criterion. It must include a typed `issueCategory`,
|
|
25
|
-
at least one `evidenceRef`, and non-empty findings.
|
|
26
|
+
at least one `evidenceRef`, and non-empty findings (saved or supplied).
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this run and is handled by the recovery controller rather than a same-run repair
|
|
30
|
-
branch.
|
|
28
|
+
Only the typed terminal controls the outcome; no `VERDICT:` line or JSON verdict.
|
|
29
|
+
Requested changes end this run; the recovery controller owns follow-up.
|
|
31
30
|
|
|
32
31
|
## Review Scope
|
|
33
32
|
|
|
@@ -21,3 +21,7 @@ the exact evidence. Do not recursively inspect unrelated directories.
|
|
|
21
21
|
Commit `complete` only when the target surface is sufficiently proven for Plan to
|
|
22
22
|
reuse without repository discovery. Otherwise commit `blocked` and list every
|
|
23
23
|
unresolved path or ownership question. Do not shift discovery work into Plan.
|
|
24
|
+
|
|
25
|
+
A successful typed receipt is durable. Reuse only facts bound to the same source
|
|
26
|
+
and fresh file evidence; changed or missing evidence requires Scout refresh. Do
|
|
27
|
+
not replay stale success or repeat complete discovery merely because a reply was lost.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./mermaid.core-CWhj4JXN.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-CY9Xx2jV.js";import{_ as i}from"./mermaid.core-CWhj4JXN.js";import"./chunk-5VM5RSS4-BYn1Hu4R.js";import"./chunk-XXDRQBXY-Ddx1KC1l.js";import"./chunk-KBJHAD2P-DZ8AStLL.js";import"./chunk-2GRJ4B5K-B1Aq6BcK.js";import"./index-D9Sc0f0y.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-CY9Xx2jV.js";import{_ as i}from"./mermaid.core-CWhj4JXN.js";import"./chunk-5VM5RSS4-BYn1Hu4R.js";import"./chunk-XXDRQBXY-Ddx1KC1l.js";import"./chunk-KBJHAD2P-DZ8AStLL.js";import"./chunk-2GRJ4B5K-B1Aq6BcK.js";import"./index-D9Sc0f0y.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};
|