@tea-agent/loop-agent 0.43.0-next.10 → 0.43.0-next.12

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 (101) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/commands/client-recovery.js +20 -55
  4. package/dist/executors/dag-pi-executor.js +27 -6
  5. package/dist/executors/shell-executor.js +3 -2
  6. package/dist/shared/pi-context-pressure/extension.js +26 -16
  7. package/dist/shared/pi-provider-recovery.js +182 -0
  8. package/dist/shared/pi-retry-settings.js +40 -0
  9. package/dist/worker/console/chat/browser-policy.js +6 -36
  10. package/dist/worker/console/chat/browser-routes.js +3 -11
  11. package/dist/worker/console/chat/pi-runtime/custom-tools/goal-tools.js +2 -1
  12. package/dist/worker/console/chat/pi-runtime.js +11 -12
  13. package/dist/worker/console/chat/routes.js +1 -5
  14. package/dist/worker/console/chat/session-mode-view.js +5 -4
  15. package/dist/worker/console/chat/session-mode.js +11 -10
  16. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-D_fNbWc_.js → abnfDiagram-N423BO3Z-BEg5712w.js} +1 -1
  17. package/dist/worker/console/static/assets/{arc-_HuqLW6m.js → arc-CkQvaBGZ.js} +1 -1
  18. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-Djy2qY1m.js → architectureDiagram-T3A2C74G-BrdwFNJ7.js} +1 -1
  19. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-bB-1TSyY.js → blockDiagram-VBNYF7ZC-M_LjP2kx.js} +1 -1
  20. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-C5Hmghrz.js → c4Diagram-5PPSVZJV-Bwr5Dtjc.js} +1 -1
  21. package/dist/worker/console/static/assets/channel-CKmyKgY-.js +1 -0
  22. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-Duyl39oy.js → chunk-2GRJ4B5K-CDc44stW.js} +1 -1
  23. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-x6mdnSyf.js → chunk-2Q5K7J3B-DZELwsTt.js} +1 -1
  24. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-WlBuFj7W.js → chunk-5RXB4S5H-D7YI6SWX.js} +1 -1
  25. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-CTF429HX.js → chunk-5VM5RSS4-Bc46bEyj.js} +1 -1
  26. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-Dwd6r-SF.js → chunk-6Q2QTUOP-Bj4vc-Dp.js} +1 -1
  27. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C-Br82D1.js → chunk-GF5L2VYU-DRi-0nDX.js} +1 -1
  28. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CuGp0DeE.js → chunk-JWPE2WC7-Dr-wFY60.js} +1 -1
  29. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-CJhFX6Lh.js → chunk-KBJHAD2P-CqIHE_D7.js} +1 -1
  30. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DpGOa_jT.js → chunk-RYQCIY6F-C-Dl8wzk.js} +1 -1
  31. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-DXJaTynd.js → chunk-XXDRQBXY-CV4Mydz3.js} +1 -1
  32. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D8Wc3jJP.js +1 -0
  33. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D8Wc3jJP.js +1 -0
  34. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CRBZWjE4.js → cose-bilkent-JH36ORCC-C3MamSMJ.js} +1 -1
  35. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BdXcxtlb.js → cynefin-VYW2F7L2-zo_Jy2sf.js} +1 -1
  36. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-07UKsOts.js → cynefinDiagram-MW4NZA55-BB2PN1AG.js} +1 -1
  37. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-D38p9__S.js → dagre-VZM6K2ZE-BimYueoi.js} +1 -1
  38. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-nSiBNNjH.js → diagram-7IWD3JNH-Di1ObJRS.js} +1 -1
  39. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-BFOTot5D.js → diagram-B4RE2ZJO-C83l-IJx.js} +1 -1
  40. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-DypKaZ6k.js → diagram-LBJQPF4R-B3S3fOpm.js} +1 -1
  41. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-B6yoOQeW.js → diagram-Q27KOJAE-urW_Zhe7.js} +1 -1
  42. package/dist/worker/console/static/assets/{diagram-UB23O5K3-BHYS6viX.js → diagram-UB23O5K3-nvIbCwF6.js} +1 -1
  43. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-D2VD5Snj.js → ebnfDiagram-BXEA7PRR-DG6O3KpP.js} +1 -1
  44. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-E98mWxN1.js → erDiagram-JOGREHBK-DpXdtdsj.js} +1 -1
  45. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-CT1zxhqP.js → flowDiagram-UKHOOZJN-DvXWHrND.js} +1 -1
  46. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-6GcngNcy.js → ganttDiagram-PKOTCBZU-6F7SbvUS.js} +1 -1
  47. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DCL6NvKe.js → gitGraphDiagram-DS77QQ5N-D1tZnFec.js} +1 -1
  48. package/dist/worker/console/static/assets/{index-24jp3aBh.js → index-CWarwRqc.js} +94 -94
  49. package/dist/worker/console/static/assets/{index-CY6y6I8M.css → index-SAANIK8g.css} +1 -1
  50. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-C0627e-9.js → infoDiagram-6WML65LV-HN4qwJ2M.js} +1 -1
  51. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-C_u3P6Ik.js → ishikawaDiagram-WSZJBQD7-OJ4qwDRo.js} +1 -1
  52. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DPDPv9HL.js → journeyDiagram-NVQOT4AX-CJZ6giQk.js} +1 -1
  53. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-D3OHdWiO.js → kanban-definition-27J2QSJJ-co60m19S.js} +1 -1
  54. package/dist/worker/console/static/assets/{linear-DI88zD7n.js → linear-D1KeFqZY.js} +1 -1
  55. package/dist/worker/console/static/assets/{mermaid.core-p2l8IrWY.js → mermaid.core-i7dDGqov.js} +5 -5
  56. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-B1bAX-oS.js → mindmap-definition-FAOFIHXS-1SkQxBh1.js} +1 -1
  57. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DwOnWxdD.js → pegDiagram-VL7TDLO6-B10dhI-Y.js} +1 -1
  58. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-xRkTXnJC.js → pieDiagram-7S7Q4E2Y-CiUKUo6j.js} +1 -1
  59. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-_9UC5Zio.js → quadrantDiagram-CIZ2JOQS-C5vH4LXZ.js} +1 -1
  60. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-CgEUirWJ.js → railroadDiagram-AXF67PYL-5nlWOCEj.js} +1 -1
  61. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-Czbpwiyz.js → requirementDiagram-LRYGKXZP-CILd6QS3.js} +1 -1
  62. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-_j7_KiqY.js → sankeyDiagram-W5VNT64P-Dfp18ZO2.js} +1 -1
  63. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BNJa6Hyi.js → sequenceDiagram-SI44F4Z6-B9pkswBi.js} +1 -1
  64. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-DedpKtOc.js → sizeCapture-X5ZJPWSS-C1-eSgx4.js} +1 -1
  65. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-BBvthr7c.js → stateDiagram-OKZ733FA-COJsOoAF.js} +1 -1
  66. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Bpfb0q5s.js +1 -0
  67. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Ds7umgEM.js → swimlanes-SLNWSIFB-Dv5NXJUM.js} +2 -2
  68. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-BEwGGabW.js +8 -0
  69. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CKa-p1nF.js → timeline-definition-Z64GVDOM-DRdrZ7eR.js} +1 -1
  70. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-LoUNR56o.js → vennDiagram-T6HMQDX7-0-2TlwCj.js} +1 -1
  71. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-Bqbl6ym7.js → wardleyDiagram-T6FBY63Y-3-o3q92P.js} +1 -1
  72. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-B8dUg4lf.js → xychartDiagram-ELKLHX3M-DSgOgdUi.js} +1 -1
  73. package/dist/worker/console/static/index.html +2 -2
  74. package/dist/worker/console/static-src/operator-chat/composer-session-ledger.js +192 -0
  75. package/dist/worker/console/static-src/operator-chat/pending-user-message.js +9 -1
  76. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +78 -35
  77. package/dist/worker/console/static-src/operator-chat/useChatStream.js +145 -70
  78. package/dist/worker/console/static-src/operator-chat/useComposer.js +182 -69
  79. package/dist/workflows/dag/frontend-closeout.js +1 -1
  80. package/dist/workflows/dag/frontend-prewrite-gate.js +3 -3
  81. package/dist/workflows/dag/frontend-review-context.js +2 -1
  82. package/dist/workflows/dag/frontend-review-scopes.js +2 -2
  83. package/dist/workflows/dag/frontend-verification-trace.js +1 -1
  84. package/dist/workflows/dag/init-hybrid.js +51 -159
  85. package/docs/architecture/runtime-boundaries.md +3 -3
  86. package/docs/templates/frontend-implementation-dag.json +9 -8
  87. package/package.json +1 -1
  88. package/skills/frontend-bounded-implement/SKILL.md +3 -3
  89. package/skills/frontend-bounded-implement/references/code-standards.md +3 -3
  90. package/skills/frontend-contract/references/contract-protocol.md +3 -1
  91. package/skills/frontend-design-review/SKILL.md +12 -7
  92. package/skills/frontend-design-review/references/review-checklist.md +7 -7
  93. package/skills/frontend-plan/SKILL.md +12 -0
  94. package/skills/frontend-plan/references/decision-contract.md +25 -19
  95. package/skills/frontend-review/SKILL.md +12 -18
  96. package/skills/frontend-review/references/review-findings.md +24 -43
  97. package/dist/worker/console/static/assets/channel-C0A6UEIa.js +0 -1
  98. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DzguNppy.js +0 -1
  99. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DzguNppy.js +0 -1
  100. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BABVQnfM.js +0 -1
  101. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D0qsLaxR.js +0 -8
@@ -4,16 +4,16 @@ Apply the canonical contract and the conventions visible in target files and the
4
4
  direct local dependencies. Do not reopen task sources, OpenSpec, `ai_workspace`, or
5
5
  unrelated repository areas to discover new rules or redesign approved decisions.
6
6
 
7
- - Work test-first when behavior changes and preserve unrelated behavior.
7
+ - Implement requirement coverage and preserve existing tests and unrelated behavior.
8
8
  - Reuse existing public helpers, APIs, components, tokens, schemas, and test
9
9
  patterns that are directly available from the bounded target surface.
10
10
  - Keep rendering, transitions, validation, request lifecycle, errors, and side
11
- effects testable; cover relevant races and boundaries.
11
+ effects clear; defer race and boundary tests to frontend-test.
12
12
  - Keep real API behavior enabled by default. Mock activation must follow the
13
13
  approved strategy, remain explicit and dev/test-only, and never import test mocks
14
14
  into production code.
15
15
  - Trace fixtures to the approved API/schema evidence and never store secrets.
16
16
  - Do not add unapproved dependencies, relax lint/type/test/build configuration,
17
17
  add `.skip`/`.only`, comment out real requests, or write outside `writeSet`.
18
- - Run only frozen focused checks and report their real status. Downstream shell
18
+ - Run only npm run build and report its real status. Downstream shell
19
19
  verification remains authoritative.
@@ -15,7 +15,9 @@
15
15
 
16
16
  - Register static, behavior, Mock, and real-integration evidence expectations as
17
17
  required, optional, or not-applicable. The classification follows the source and
18
- risk; it is not selected for model convenience.
18
+ risk; it is not selected for model convenience. These are source expectations
19
+ for the non-blocking frontend-test handoff, not implementation test gates.
20
+ This implementation workflow executes only npm run build.
19
21
  - Register a non-blocking frontend-test handoff for UI-visible or interactive work.
20
22
  - Preserve exact command labels and referenced paths. Do not invent evidence,
21
23
  connector results, APIs, or verification commands.
@@ -28,18 +28,17 @@ The typed terminal is the only authoritative outcome. Do not require or emit a
28
28
  verdict. Requested changes end this run; recovery owns the bounded follow-up.
29
29
 
30
30
  Check every execution group against its members' complete outcomes. Permissions,
31
- thresholds and error paths remain independent ACs; a shared VT must prove them all.
32
- Constraint/exclusion labels never waive source-required behavior evidence.
31
+ thresholds and error paths remain independent ACs with corresponding planned implementation.
32
+ The shared static build target checks buildability only.
33
33
 
34
34
  ## Blocking Conditions
35
35
 
36
- - Any criterion lacks implementation/verification; UI states lack reasons; a
36
+ - Any criterion lacks planned implementation; UI states lack reasons; a
37
37
  dependency lacks permission; confirmed primitives/rules are ignored; design claims
38
38
  lack knowledge-base or required openspec specification evidence; paths cross
39
- write bounds; commands are missing/non-deterministic; or
40
- interaction, responsive, accessibility, data, or failure behavior requires guessing.
39
+ write bounds; the frozen npm run build command is missing.
41
40
  - `MOCK_STRATEGY: blocked`; missing permitted target paths, endpoint/schema-to-fixture
42
- mapping, fixed verification, or dev/test-only activation; a second Mock framework;
41
+ mapping or dev/test-only activation; a second Mock framework;
43
42
  inline fake data; commented real requests; Mock-on production defaults; test-only
44
43
  production imports; or Mock evidence reported as real integration.
45
44
 
@@ -49,7 +48,7 @@ conflict, or unresolved UI decisions.
49
48
 
50
49
  ## Method And Human-readable Output
51
50
 
52
- Map criteria to steps/files/states/checks, audit paths/evidence, classify Blocking
51
+ Map criteria to planned steps/files/states, audit paths/evidence, classify Blocking
53
52
  or Advisory, and never edit files.
54
53
 
55
54
  ### Spec Evidence Rules
@@ -59,3 +58,9 @@ evidence paths bound in its upstream context. Successful paired reads are the on
59
58
  summaries do not substitute for them. A concise human-readable summary may list
60
59
  checked items and findings, but it is never a control protocol. Each requested
61
60
  change names its criterion/section, gap, and required plan change.
61
+
62
+ ## Implementation workflow boundary
63
+
64
+ Plan lists what to implement and where. Only npm run build is executed. Missing
65
+ unit tests, test frameworks, test plans, or behavior evidence never block this
66
+ workflow. Existing tests are preserved; tests can be added later in frontend-test.
@@ -3,7 +3,7 @@
3
3
  ## Coverage
4
4
 
5
5
  - Route/component, non-goals, assumptions, and unresolved ambiguity are explicit.
6
- - Each acceptance criterion maps to steps, files, UI behavior, states, and verification.
6
+ - Each acceptance criterion maps to planned steps, files, UI behavior, and states.
7
7
  - Success/error/loading/empty/disabled/permission/retry/stale/boundary states are handled or N/A.
8
8
 
9
9
  ## Project Fit
@@ -20,9 +20,9 @@
20
20
 
21
21
  ## Verification
22
22
 
23
- - Static/behavior commands are exact, frozen, discoverable, and deterministic.
24
- - Tests prove changed state and flows at supported levels; browser/visual only when task/gate requires.
25
- - Missing required verification is a blocker; optional gaps are disclosed risks.
23
+ - The only frozen command is npm run build.
24
+ - Do not require test plans, test files, a test framework, or behavior evidence.
25
+ - Behavior correctness and all tests are deferred to frontend-test and non-blocking.
26
26
 
27
27
  ## Mock Safety
28
28
 
@@ -31,13 +31,13 @@
31
31
  - Prefer native mock; browser intercept only for existing e2e; request adapter only for reversible local preview.
32
32
  - Real request stays default; activation is explicit, reversible, local/test-only, and production-off.
33
33
  - Plans use only DAG-frozen shell entrypoints.
34
- - Mock strategies need default-real-path build with Mock off plus Mock-backed behavior evidence.
35
- - `not-needed` needs real/no-remote evidence, or default-auto skipped-Mock rationale with Real Integration Gap preserved when no project Mock capability exists.
34
+ - Mock strategies keep production defaults off; Mock behavior tests are deferred.
35
+ - `not-needed` records its rationale and preserves any Real Integration Gap.
36
36
  - Mock-backed checks prove frontend states only; real integration remains pending until actual backend evidence exists.
37
37
 
38
38
  ## Verdict Matrix
39
39
 
40
- - Request revision for coverage gaps, unsafe scope, unauthorized deps, unresolved required interaction, missing required verification, skipped local specification fallback (`openspec/schemas/`, `openspec/project-specs/`, or `ai_workspace/`), unsafe/missing Mock strategy, or Mock evidence presented as real integration.
40
+ - Request revision for coverage gaps, unsafe scope, unauthorized deps, unresolved required interaction, missing build entrypoint, skipped local specification fallback (`openspec/schemas/`, `openspec/project-specs/`, or `ai_workspace/`), unsafe/missing Mock strategy, or Mock evidence presented as real integration.
41
41
  - Request revision for component selection non-conformance: spec-defined components silently replaced or self-invented without a declared deviation, `uiComponentChoices` missing for UI-visible work, or a `uiComponentChoices` `specReference.path` not cited in the `openspec-citations` block / not actually read.
42
42
  - Knowledge-base unavailable but relevant OpenSpec or `ai_workspace/` rules applied is advisory only.
43
43
  - Optional cleanup that cannot affect acceptance is advisory.
@@ -44,3 +44,15 @@ here with the same id and `replace=true` (union backfill) before finalize. A
44
44
  The runtime owns protected skeleton fields, path/command validation, materialization,
45
45
  and final schema checks. Finish with one successful `finalize_plan` (correct rejected facts and retry); return no Markdown
46
46
  narrative. Record a genuine evidence gap when frozen facts are insufficient.
47
+
48
+ ## Implementation boundary
49
+
50
+ Plan implementation actions and locations; this workflow runs only npm run build.
51
+ Missing tests or test plans never block it. Preserve existing tests; add tests
52
+ later in frontend-test.
53
+
54
+ Submit `finalize_plan({implementationSteps: [{requirementIds, action}]})`.
55
+ Cover every frozen ID, including constraints/exclusions (what to preserve/avoid).
56
+ An action may cover related IDs and must describe changes within approved paths,
57
+ not just repeat filenames or AC titles. Fix rejected missing/unknown/blank steps
58
+ and retry. Runtime renders AC-linked canonical steps; no test plan is required.
@@ -6,24 +6,21 @@
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
- - 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 machine trace token and
12
- must later appear in a real `describe` / `it` / `test` title. There is no free-form
13
- `symbol` field.
9
+ - Use a shared static build target for requirement coverage; build does not prove behavior.
10
+ - Do not create behavior test targets, require test titles, or design tests.
14
11
  - Static targets are for project-wide commands and are traced by file and command
15
12
  only.
16
13
 
17
- ### Behavior target shape (canonical example)
14
+ ### Build target mapping
18
15
 
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.
16
+ Each static build target names the requirements mapped to its implementation file.
17
+ Use the frozen build commandId. This mapping is not evidence of tested behavior.
22
18
 
23
19
  ```json
24
20
  {
25
- "id": "VT-COUNTER-LOCAL-CONSTRAINTS",
26
- "file": "src/App.test.tsx",
21
+ "id": "VT-BUILD",
22
+ "commandId": "<frozen-build-commandId>",
23
+ "file": "src/App.tsx",
27
24
  "requirementIds": ["AC-FE-001", "AC-FE-005"],
28
25
  "uiStates": ["disabled-minus", "default"]
29
26
  }
@@ -47,7 +44,7 @@ carries behavior, implementation targets, and verification target ids:
47
44
  "applicable": true,
48
45
  "expectedBehavior": "minus button disabled at count 0",
49
46
  "implementationTargets": ["src/components/SmokeCounter.tsx"],
50
- "verificationTargetIds": ["VT-COUNTER-LOCAL-CONSTRAINTS"]
47
+ "verificationTargetIds": ["VT-BUILD"]
51
48
  }
52
49
  ],
53
50
  "interactions": [
@@ -56,7 +53,7 @@ carries behavior, implementation targets, and verification target ids:
56
53
  "trigger": "User clicks refresh",
57
54
  "expectedBehavior": "reloads runs",
58
55
  "implementationTargets": ["src/App.tsx"],
59
- "verificationTargetIds": ["VT-SMOKE-COUNTER-BEHAVIOR"]
56
+ "verificationTargetIds": ["VT-BUILD"]
60
57
  }
61
58
  ]
62
59
  }
@@ -76,8 +73,7 @@ non-static verification target files to the writer writeSet separately.
76
73
  "src/App.tsx"
77
74
  ],
78
75
  "verificationTargetIds": [
79
- "VT-SMOKE-COUNTER-BEHAVIOR",
80
- "VT-COUNTER-LOCAL-CONSTRAINTS"
76
+ "VT-BUILD"
81
77
  ]
82
78
  }
83
79
  ```
@@ -113,9 +109,8 @@ One component choice may cover many states/interactions via `covers`.
113
109
  `reuse-existing` requires an existing-file `evidencePath`; greenfield uses `new`.
114
110
 
115
111
  For Mock/API, keep the real request path enabled by default. Select only a strategy
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.
112
+ allowed by the frozen task capability. Active Mock requires production-default-off activation; Mock tests are deferred. `not-needed` records the reason Mock is unnecessary or skipped and any real-integration gap;
113
+ no behavior test evidence is required here.
119
114
 
120
115
  Add dependencies only when authorized. Record unsupported dependency, path, API,
121
116
  design, or verification needs as blocking evidence gaps; never invent a command or
@@ -138,9 +133,20 @@ and checked again by the policy shell.
138
133
  Use `record_plan_group_coverage` for a complete declared execution group with shared
139
134
  targets/VTs; runtime expands to all canonical members. Submit individual coverage
140
135
  for differences. Constraints/exclusions create no invented UI or tests; keep genuine
141
- evidence gaps, and never weaken behavior evidence required by the source.
136
+ source expectations for a non-blocking frontend-test handoff; do not require tests here.
142
137
 
143
138
  Submit Mock policy with `record_mock_api` and empty endpoints, then one endpoint per
144
139
  `record_mock_endpoint`. Use `replace:true` for revisions, plus `remove:true` to
145
140
  withdraw an endpoint. Use stable finding/fact identities; successful receipts mean
146
141
  durable commits. Resume missing work instead of regenerating full JSON or history.
142
+
143
+ ## Implementation steps submission
144
+
145
+ Submit `finalize_plan` with `implementationSteps: [{requirementIds, action}]`.
146
+ Each action says what to change and where within the approved implementation
147
+ paths. Cover every frozen requirement ID, including constraints and exclusions
148
+ (state what to preserve or avoid). One action may cover several related IDs.
149
+ Do not merely repeat file names or AC titles. Missing, unknown or blank steps
150
+ return a correctable receipt; fix the steps and call finalize_plan again.
151
+ The runtime renders these into canonical `implementationSteps` strings with AC
152
+ references. No test plan or new tests are required by this protocol.
@@ -30,24 +30,18 @@ Requested changes end this run; the recovery controller owns follow-up.
30
30
 
31
31
  ## Review Scope
32
32
 
33
- - Compare intent, contract, plan, diff, and evidence; report altered requirements.
34
- - Inspect every changed file against allowed, forbidden, and approved write scope.
35
- - Map criteria to behavior, applicable UI states, tests, and shell evidence.
36
- - Review state/data flow, validation, async/error behavior, design, responsive/a11y,
37
- dependencies, and regression risk when applicable.
38
- - Inspect static, behavior, and available Mock-specific artifacts directly. For Mock
39
- strategies, compare the endpoint matrix, handler/fixture/adapter and consumer diff;
40
- require the real request as default, contract-aligned fixtures, production isolation,
41
- and no false real-integration claim. `not-needed` needs applicable real/no-remote
42
- evidence, or an explicit default-auto skipped-Mock rationale with the Real
43
- Integration Gap preserved when no project Mock capability is confirmed.
44
- - Inspect lint assessment directly. `baseline-debt` requires intact evidence, only
45
- baseline-matched diagnostics on unchanged files, and none on writer-changed files.
46
- Report debt, never `lint passed`; `failed`/`unavailable` blocks. Typecheck, build,
47
- and test still require successful final exits.
48
- - Evaluate component/design claims against bound evidence; do not replace it with a
49
- repository-wide search or connector query.
50
- - Treat shell exit status as authoritative. Do not edit files.
33
+ - Map every requirement to corresponding implementation in the cumulative diff
34
+ and bound target files. Report missing implementation or altered requirements.
35
+ - Check allowed paths, forbidden paths, approved dependencies and source-bound
36
+ design constraints. Preserve production Mock isolation and real-request defaults.
37
+ - Inspect the archived npm run build result; it is the only required command.
38
+ - Do not require unit tests, a test framework, test plans, lint, separate typecheck,
39
+ behavior evidence or Mock tests. Existing tests are preserved.
40
+ - Behavior correctness, edge cases and regressions belong to the non-blocking
41
+ frontend-test handoff and may be tested later. Do not expand into a correctness audit.
42
+ - Build success proves buildability only. Do not report tested behavior or real
43
+ integration without actual evidence. Treat shell exit status as authoritative.
44
+ - Do not edit files or perform repository-wide rediscovery.
51
45
 
52
46
  ## Evidence And Output
53
47
 
@@ -1,49 +1,30 @@
1
1
  # Frontend Review Findings Guide
2
2
 
3
- ## Severity
3
+ ## Scope and severity
4
4
 
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.
5
+ - **Critical/Important**: missing requirement implementation, unauthorized writes
6
+ or dependencies, production Mock isolation violation, altered source requirements,
7
+ failed/missing npm run build, or a false verification/integration claim.
8
+ - **Advisory**: behavior correctness, edge cases, regression concerns and missing
9
+ tests. Record these for later frontend-test work; they do not block implementation.
8
10
 
9
11
  ## Evidence
10
12
 
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.
42
- - Lint is `passed` or evidence-backed `baseline-debt`; typecheck, build, and test are
43
- passed. Any debt count and affected unchanged files remain disclosed.
44
- - Changed files are authorized.
45
- - Criteria and applicable states have implementation and evidence.
46
- - Required Mock-backed behavior passed; any generated Mock-specific verification also
47
- passed; Mock is not enabled by default in production. For default-auto skipped
48
- Mock, the real request remains default and the Real Integration Gap is preserved.
49
- - Optional unavailable knowledge/browser/visual/manual checks remain explicit risks.
13
+ Cite the bound contract, actual cumulative diff, tight file locations and archived
14
+ build result. Never substitute an implementation summary for the diff or invent
15
+ verification results. Use only evidence supplied in the canonical review context.
16
+
17
+ ## Review sequence
18
+
19
+ 1. Establish changed files and authorized write boundaries.
20
+ 2. Map each requirement to corresponding implementation.
21
+ 3. Check source-bound design constraints, dependency permission and production Mock isolation.
22
+ 4. Confirm npm run build passed and classify findings within this scope.
23
+
24
+ ## Pass rules
25
+
26
+ All requirements have corresponding implementation, changes stay authorized,
27
+ production Mock safety is preserved, and npm run build passed. No blocking finding
28
+ within this scope remains. Missing unit tests, test frameworks, test plans, lint,
29
+ separate typecheck or behavior evidence are not blockers. Existing tests are kept.
30
+ Behavior and real integration remain unverified unless separate evidence exists.
@@ -1 +0,0 @@
1
- import{ag as o,ah as n}from"./mermaid.core-p2l8IrWY.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-C-Br82D1.js";import{_ as i}from"./mermaid.core-p2l8IrWY.js";import"./chunk-5VM5RSS4-CTF429HX.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./index-24jp3aBh.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-C-Br82D1.js";import{_ as i}from"./mermaid.core-p2l8IrWY.js";import"./chunk-5VM5RSS4-CTF429HX.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./index-24jp3aBh.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 r,b as e,a,S as s}from"./chunk-5RXB4S5H-WlBuFj7W.js";import{_ as i}from"./mermaid.core-p2l8IrWY.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./index-24jp3aBh.js";var u={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1,8 +0,0 @@
1
- import{c as r,s as e}from"./flowDiagram-UKHOOZJN-CT1zxhqP.js";import{_ as a}from"./mermaid.core-p2l8IrWY.js";import"./chunk-5VM5RSS4-CTF429HX.js";import"./chunk-XXDRQBXY-DXJaTynd.js";import"./chunk-KBJHAD2P-CJhFX6Lh.js";import"./chunk-2GRJ4B5K-Duyl39oy.js";import"./channel-C0A6UEIa.js";import"./index-24jp3aBh.js";var o=a(t=>`${e(t)}
2
- .swimlane.cluster rect {
3
- stroke: ${t.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,"getStyles"),s=o,n=r({defaultLayout:"swimlane",styles:s});export{n as diagram};