@tea-agent/loop-agent 0.42.0-next.1 → 0.42.0-next.10
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 +319 -1
- package/dist/application/dag/generate-task-dag.js +75 -19
- package/dist/application/dag/run-dag.js +41 -0
- package/dist/application/task-lifecycle/advance.js +24 -5
- package/dist/application/task-lifecycle/observe.js +171 -17
- package/dist/application/task-lifecycle/plan-transitions.js +42 -7
- package/dist/application/task-lifecycle/recommendations.js +13 -2
- package/dist/build-stamp.json +3 -3
- package/dist/cli/command-definitions.js +7 -0
- package/dist/cli/program.js +6 -1
- package/dist/commands/client-recovery.js +3 -0
- package/dist/commands/dag-follow-up.js +138 -0
- package/dist/commands/dag-rerun-task.js +2 -0
- package/dist/commands/init.js +27 -1
- package/dist/commands/task-advance.js +19 -0
- package/dist/executors/dag-pi-executor.js +3976 -76
- package/dist/executors/pi-executor.js +15 -4
- package/dist/executors/pi-read-budget-policy.js +239 -0
- package/dist/executors/shell-executor.js +978 -188
- package/dist/executors/shell-write-guard.js +7 -0
- package/dist/infrastructure/console/operation-store.js +226 -6
- package/dist/shared/dag-failure-category.js +12 -0
- package/dist/shared/openspec-spec.js +70 -4
- package/dist/shared/operator/capabilities.js +7 -0
- package/dist/task/config-types.js +105 -5
- package/dist/task/contract/adopt.js +4 -0
- package/dist/task/contract/import-revision.js +4 -0
- package/dist/task/contract/project.js +3 -0
- package/dist/task/contract/schema.js +2 -1
- package/dist/task/frontend-project-capability.js +203 -20
- package/dist/task/runtime.js +5 -2
- package/dist/task/source-prepare/build-draft.js +3 -3
- package/dist/task/source-prepare/fragment-inventory.js +64 -25
- package/dist/task/source-prepare/prepare.js +126 -21
- package/dist/task/source-prepare/semantic-intake.js +6 -2
- package/dist/task/source-references.js +22 -1
- package/dist/worker/console/chat/chat-ui-policy.js +4 -2
- package/dist/worker/console/chat/model-resolver.js +7 -4
- package/dist/worker/console/chat/pi-runtime.js +258 -11
- package/dist/worker/console/chat/repo-browser.js +10 -3
- package/dist/worker/console/chat/routes.js +165 -71
- package/dist/worker/console/chat/sdd-data-alignment.js +222 -0
- package/dist/worker/console/chat/session-catalog.js +2 -0
- package/dist/worker/console/chat/session-store.js +159 -70
- package/dist/worker/console/chat/shortcuts.js +19 -3
- package/dist/worker/console/chat/turn-process.js +111 -56
- package/dist/worker/console/frontend-human-decision-adapter.js +19 -0
- package/dist/worker/console/frontend-split-operation-adapter.js +20 -0
- package/dist/worker/console/index.js +3 -0
- package/dist/worker/console/operator-actions.js +169 -7
- package/dist/worker/console/pi-readiness.js +3 -2
- package/dist/worker/console/server.js +23 -1
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-DZZ8m3PO.js → abnfDiagram-N423BO3Z-CcS17TBr.js} +1 -1
- package/dist/worker/console/static/assets/{arc-D6PvaVd-.js → arc-COptKq2S.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-B_OTOiI8.js → architectureDiagram-T3A2C74G-h4LKMHjP.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-Bv6rqHBg.js → blockDiagram-VBNYF7ZC-COA1MOH0.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-B8eHr0oz.js → c4Diagram-5PPSVZJV-DJUf0QPm.js} +1 -1
- package/dist/worker/console/static/assets/channel-DdBCaOJ6.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-DYwR0im2.js → chunk-2GRJ4B5K-mtWfKrUX.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-D2WPGqXt.js → chunk-2Q5K7J3B-B8pXsxDQ.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-CQISJ_I7.js → chunk-5RXB4S5H-ipKzByl1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-C0o2Du1e.js → chunk-5VM5RSS4-DYi3Ald_.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-4f8kr-U7.js → chunk-6Q2QTUOP-DQtGYoty.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-D_OWvXzX.js → chunk-GF5L2VYU-BU0qS2YV.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CasdPz5X.js → chunk-JWPE2WC7-DVH9dIGE.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-Cj8lRrla.js → chunk-KBJHAD2P-Dt60SmgM.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-CUvD1FSd.js → chunk-RYQCIY6F-BoaUGuEY.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CqLw_eqB.js → chunk-XXDRQBXY-_WHFDTp2.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DZFra1GO.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DZFra1GO.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-ku-WqJPx.js → cose-bilkent-JH36ORCC-BxkbTIRd.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-Bq_PYDhl.js → cynefin-VYW2F7L2-Bf2UVnoG.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BiGZV641.js → cynefinDiagram-MW4NZA55-Bo23q1J_.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-C4JRlglF.js → dagre-VZM6K2ZE-Dd_UU49i.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-B0dNeWYG.js → diagram-7IWD3JNH-ebUa1a9y.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-Cj35YvYM.js → diagram-B4RE2ZJO-BucthU8r.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-uzQoJ2-8.js → diagram-LBJQPF4R-BgqNpAkm.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-D1a-Buoz.js → diagram-Q27KOJAE-DC4q5NGa.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-XjRrLRSs.js → diagram-UB23O5K3-CBqCaMeb.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Da_O24cW.js → ebnfDiagram-BXEA7PRR-CGtnbQ3-.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-BLJ8jrYU.js → erDiagram-JOGREHBK-CG3LUao5.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-B9GrLjM0.js → flowDiagram-UKHOOZJN-D2ZVgoFS.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-CeJ0TqiK.js → ganttDiagram-PKOTCBZU-DoYFZiKt.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Bm2eNNFX.js → gitGraphDiagram-DS77QQ5N-CKoP1s6j.js} +1 -1
- package/dist/worker/console/static/assets/index-CAZ2fC_X.css +1 -0
- package/dist/worker/console/static/assets/index-vbTcFnFs.js +449 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DB26i3d8.js → infoDiagram-6WML65LV-Duofv8p2.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-BOGRyeZT.js → ishikawaDiagram-WSZJBQD7-D2nlCkA1.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CZRoBO_6.js → journeyDiagram-NVQOT4AX-Dd4IHdus.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-qlWhJyoB.js → kanban-definition-27J2QSJJ-Bi20AOdt.js} +1 -1
- package/dist/worker/console/static/assets/{linear-CfUiDDB3.js → linear-D59YJ9kB.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-BQe6fpqj.js → mermaid.core-Bl13LpNa.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-zFzWHw64.js → mindmap-definition-FAOFIHXS-C6DLP5eY.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DFGUqjZO.js → pegDiagram-VL7TDLO6-BjO4cy64.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-BB5i0l8Z.js → pieDiagram-7S7Q4E2Y-D7i2qZTG.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-obbVZ_X5.js → quadrantDiagram-CIZ2JOQS-Dx8o_h0y.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BwdaNzc1.js → railroadDiagram-AXF67PYL-B55orI_t.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-CkTJaugh.js → requirementDiagram-LRYGKXZP-zWaehp6f.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-BwJ-hIgq.js → sankeyDiagram-W5VNT64P-CcA-pjvD.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BzSgmm7w.js → sequenceDiagram-SI44F4Z6-BOFbzNHI.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-Bn3oj5Q1.js → sizeCapture-X5ZJPWSS-BjAejah1.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-dxhGtL8K.js → stateDiagram-OKZ733FA-DXYwxJwZ.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Clg3V9t1.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-BLpEInya.js → swimlanes-SLNWSIFB-OYiOch8n.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DX1dxAAW.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-ChJGYcXy.js → timeline-definition-Z64GVDOM-cZfH3nmU.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-DK-qjRer.js → vennDiagram-T6HMQDX7-BDE7b3E1.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-3qeaWAg-.js → wardleyDiagram-T6FBY63Y-kyyGy9WJ.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CootlyP9.js → xychartDiagram-ELKLHX3M-CJj6VTog.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/active-run-badge.js +17 -0
- package/dist/worker/console/static-src/app/useRecoveryConsole.js +5 -5
- package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +19 -8
- package/dist/worker/console/static-src/operator-chat/input-history.js +8 -6
- package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +15 -7
- package/dist/worker/console/static-src/operator-chat/runtime-snapshot-store.js +10 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +258 -23
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +112 -4
- package/dist/worker/console/static-src/operator-chat/useComposer.js +13 -4
- package/dist/worker/console/static-src/operator-chat/useRuntimeControls.js +29 -6
- package/dist/worker/console/static-src/operator-chat/useRuntimeSnapshot.js +8 -2
- package/dist/worker/console/static-src/shell/console-update-reload.js +36 -9
- package/dist/worker/console/static-src/shell/workspace-route.js +11 -0
- package/dist/worker/console/workspace-context.js +115 -1
- package/dist/worker/materialize/frontend-split-task-materializer.js +72 -0
- package/dist/worker/observe/routes.js +4 -0
- package/dist/worker/observe/static/dag-helpers.js +4 -2
- package/dist/worker/observe/static/dag-node-purpose.js +5 -0
- package/dist/worker/observe/static/inspect-workspace.js +23 -0
- package/dist/worker/observe/static/kpi.js +2 -2
- package/dist/worker/observe/static/operator-chrome.d.ts +10 -2
- package/dist/worker/observe/static/operator-chrome.js +37 -23
- package/dist/worker/observe/static/relations.js +2 -2
- package/dist/worker/observe/static/router.d.ts +12 -1
- package/dist/worker/observe/static/router.js +48 -6
- package/dist/worker/observe/static/run-processing.js +4 -2
- package/dist/worker/observe/static/shell-chrome.js +2 -2
- package/dist/worker/observe/static/state.js +5 -0
- package/dist/worker/observe/static/styles.css +95 -0
- package/dist/worker/observe/static/views/dag-inspector.js +14 -7
- package/dist/worker/observe/static/views/dag.js +10 -2
- package/dist/worker/observe/static/views/dags.js +3 -1
- package/dist/worker/observe/static/views/dashboard.js +14 -6
- package/dist/worker/observe/static/views/pool.js +7 -2
- package/dist/worker/observe/static/views/run.js +12 -3
- package/dist/worker/observe/static/views/session-timeline.js +69 -10
- package/dist/worker/observe/static/views/task.js +7 -2
- package/dist/workflows/dag/backend-test-case-coverage-analysis.js +215 -28
- package/dist/workflows/dag/backend-test-markdown-workflow.js +13 -1
- package/dist/workflows/dag/backend-test-plan-protocol.js +106 -0
- package/dist/workflows/dag/backend-test-scenario-param.js +172 -25
- package/dist/workflows/dag/backend-test-scenario-partitions.js +62 -1
- package/dist/workflows/dag/backend-test-writer-completeness.js +104 -12
- package/dist/workflows/dag/contract-validator-registrations.js +1 -2
- package/dist/workflows/dag/dag-retry-schema.js +138 -0
- package/dist/workflows/dag/frontend-closeout.js +221 -0
- package/dist/workflows/dag/frontend-design-policy.js +400 -0
- package/dist/workflows/dag/frontend-human-decision.js +182 -0
- package/dist/workflows/dag/frontend-implementation-contract.js +1237 -192
- package/dist/workflows/dag/frontend-plan-render.js +2 -1
- package/dist/workflows/dag/frontend-prewrite-gate.js +256 -350
- package/dist/workflows/dag/frontend-provider-capability-matrix.js +159 -0
- package/dist/workflows/dag/frontend-recovery-capsule.js +455 -0
- package/dist/workflows/dag/frontend-recovery-controller.js +226 -0
- package/dist/workflows/dag/frontend-recovery-lineage.js +178 -0
- package/dist/workflows/dag/frontend-recovery-plan.js +21 -10
- package/dist/workflows/dag/frontend-recovery-run.js +166 -34
- package/dist/workflows/dag/frontend-repair.js +1 -432
- package/dist/workflows/dag/frontend-review-context.js +261 -15
- package/dist/workflows/dag/frontend-review-findings.js +270 -0
- package/dist/workflows/dag/frontend-shadow-dual-write.js +941 -0
- package/dist/workflows/dag/frontend-shape-capsule-store.js +191 -0
- package/dist/workflows/dag/frontend-shape-facts.js +419 -0
- package/dist/workflows/dag/frontend-shape.js +435 -0
- package/dist/workflows/dag/frontend-source-fidelity-ledger.js +108 -0
- package/dist/workflows/dag/frontend-split-application-service.js +203 -0
- package/dist/workflows/dag/frontend-split-orchestrator.js +899 -0
- package/dist/workflows/dag/frontend-typed-event-store.js +452 -0
- package/dist/workflows/dag/frontend-typed-event-transaction.js +180 -0
- package/dist/workflows/dag/frontend-verification-trace.js +252 -25
- package/dist/workflows/dag/frontend-worktree-diff.js +250 -17
- package/dist/workflows/dag/frontend-writer-admission.js +319 -0
- package/dist/workflows/dag/frontend-writer-status.js +256 -0
- package/dist/workflows/dag/init-hybrid.js +1028 -562
- package/dist/workflows/dag/interrupt-request.js +7 -0
- package/dist/workflows/dag/node-execution.js +828 -4
- package/dist/workflows/dag/prompt.js +70 -3
- package/dist/workflows/dag/recovery-lease.js +170 -0
- package/dist/workflows/dag/report.js +37 -1
- package/dist/workflows/dag/rerun-feedback.js +315 -1
- package/dist/workflows/dag/rerun-plan.js +17 -6
- package/dist/workflows/dag/rerun-run.js +44 -6
- package/dist/workflows/dag/rerun-task.js +251 -13
- package/dist/workflows/dag/retry-policy.js +219 -104
- package/dist/workflows/dag/runner.js +580 -124
- package/dist/workflows/dag/scheduler.js +133 -20
- package/dist/workflows/dag/types.js +244 -16
- package/dist/workflows/dag/validate.js +28 -12
- package/docs/examples/README.md +5 -0
- package/docs/init-surface.manifest.json +30 -12
- package/docs/skills/vetted-skill-registry.md +4 -2
- package/docs/templates/README.md +2 -0
- package/docs/templates/agent-dag-report.schema.json +8 -2
- package/docs/templates/agent-dag.schema.json +1 -1
- package/docs/templates/backend-test-dag.json +23 -20
- package/docs/templates/frontend-implementation-contract.schema.json +4 -1
- package/docs/templates/frontend-implementation-dag.json +89 -0
- package/docs/templates/spec-registry.schema.json +45 -0
- package/harness.json +1 -1
- package/package.json +4 -3
- package/skills/frontend-bounded-implement/SKILL.md +15 -14
- package/skills/frontend-bounded-implement/references/code-standards.md +19 -0
- package/skills/frontend-contract/SKILL.md +23 -0
- package/skills/frontend-contract/references/contract-protocol.md +34 -0
- package/skills/frontend-design-review/SKILL.md +22 -41
- package/skills/frontend-plan/SKILL.md +26 -0
- package/skills/frontend-plan/references/decision-contract.md +37 -0
- package/skills/frontend-plan/references/design-decisions.md +17 -0
- package/skills/frontend-review/SKILL.md +20 -15
- package/skills/frontend-review/references/review-findings.md +6 -7
- package/skills/frontend-scout/SKILL.md +25 -0
- package/skills/frontend-scout/references/design-evidence.md +16 -0
- package/skills/frontend-scout/references/scout-evidence.md +23 -0
- package/skills/frontend-verification/SKILL.md +1 -1
- package/skills/loop-agent/references/command-reference.md +1 -0
- package/skills/loop-agent/references/hybrid-dag.md +2 -2
- package/dist/worker/console/static/assets/channel-BU5gOilw.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DIzKJGHr.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DIzKJGHr.js +0 -1
- package/dist/worker/console/static/assets/index-H9rFJiGL.css +0 -1
- package/dist/worker/console/static/assets/index-xwu9GxEc.js +0 -451
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Cld2qK9v.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-TIHpiT7w.js +0 -8
- package/skills/frontend-implementation/SKILL.md +0 -52
- package/skills/frontend-implementation/references/code-standards.md +0 -33
- package/skills/frontend-implementation/references/design-spec.md +0 -56
- package/skills/frontend-implementation/references/node-contracts.md +0 -31
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-bounded-implement
|
|
3
3
|
description: >-
|
|
4
|
-
Use only for frontend implementation
|
|
4
|
+
Use only for frontend implementation writers after the canonical
|
|
5
5
|
contract gate has authorized a bounded write set.
|
|
6
|
+
references:
|
|
7
|
+
- path: references/code-standards.md
|
|
8
|
+
required: true
|
|
9
|
+
maxChars: 2600
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# Frontend Bounded Implement
|
|
9
13
|
|
|
14
|
+
Read the bounded code standards before editing. They apply only inside the
|
|
15
|
+
canonical targets and do not authorize additional discovery.
|
|
16
|
+
|
|
10
17
|
## Authoritative Inputs
|
|
11
18
|
|
|
12
19
|
- For implementation, use the run-owned
|
|
13
20
|
`contracts/frontend-implementation-contract.json`.
|
|
14
|
-
- For repair, also use `contracts/frontend-repair-assessment.json`.
|
|
15
21
|
- Treat requirement `expectedOutcome`, interaction `trigger` /
|
|
16
22
|
`expectedBehavior`, target files, UI states, Mock/API strategy, and verification
|
|
17
23
|
targets as closed decisions. Do not rediscover or reinterpret them.
|
|
@@ -25,7 +31,7 @@ description: >-
|
|
|
25
31
|
- Start the bounded edit after confirming the contract and targets. Optional
|
|
26
32
|
context is not a reason to postpone implementation.
|
|
27
33
|
- If behavior is still ambiguous or a required target is outside `writeSet`, stop
|
|
28
|
-
|
|
34
|
+
without writing and explain the blocker; do not compensate with broader scouting.
|
|
29
35
|
|
|
30
36
|
## Implementation Discipline
|
|
31
37
|
|
|
@@ -39,15 +45,10 @@ description: >-
|
|
|
39
45
|
- Run only the focused checks already frozen by the task. Leave full verification
|
|
40
46
|
to downstream deterministic nodes.
|
|
41
47
|
|
|
42
|
-
##
|
|
43
|
-
|
|
44
|
-
The first non-empty response line must be exactly one of:
|
|
45
|
-
|
|
46
|
-
- `IMPLEMENTATION_OUTCOME: changed` — a non-empty bounded diff was produced.
|
|
47
|
-
- `IMPLEMENTATION_OUTCOME: already-satisfied` — the contract was already met and
|
|
48
|
-
no file changed.
|
|
49
|
-
- `IMPLEMENTATION_OUTCOME: blocked` — implementation cannot proceed without
|
|
50
|
-
guessing or exceeding the write boundary.
|
|
48
|
+
## Completion Summary
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
Briefly report changed files, implemented requirements/interactions, focused checks
|
|
51
|
+
attempted, blockers, and residual risks. This summary is human-readable only: the
|
|
52
|
+
runtime derives implementation state from persisted write events, run delta, write
|
|
53
|
+
guard, requirement coverage, and focused checks. Do not use a mandatory
|
|
54
|
+
`IMPLEMENTATION_OUTCOME:` response-text protocol.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Bounded Frontend Code Standards
|
|
2
|
+
|
|
3
|
+
Apply the canonical contract and the conventions visible in target files and their
|
|
4
|
+
direct local dependencies. Do not reopen task sources, OpenSpec, `ai_workspace`, or
|
|
5
|
+
unrelated repository areas to discover new rules or redesign approved decisions.
|
|
6
|
+
|
|
7
|
+
- Work test-first when behavior changes and preserve unrelated behavior.
|
|
8
|
+
- Reuse existing public helpers, APIs, components, tokens, schemas, and test
|
|
9
|
+
patterns that are directly available from the bounded target surface.
|
|
10
|
+
- Keep rendering, transitions, validation, request lifecycle, errors, and side
|
|
11
|
+
effects testable; cover relevant races and boundaries.
|
|
12
|
+
- Keep real API behavior enabled by default. Mock activation must follow the
|
|
13
|
+
approved strategy, remain explicit and dev/test-only, and never import test mocks
|
|
14
|
+
into production code.
|
|
15
|
+
- Trace fixtures to the approved API/schema evidence and never store secrets.
|
|
16
|
+
- Do not add unapproved dependencies, relax lint/type/test/build configuration,
|
|
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
|
|
19
|
+
verification remains authoritative.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-contract
|
|
3
|
+
description: Use only for the read-only frontend requirement contract node.
|
|
4
|
+
references:
|
|
5
|
+
- path: references/contract-protocol.md
|
|
6
|
+
required: true
|
|
7
|
+
maxChars: 4200
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Frontend Contract
|
|
11
|
+
|
|
12
|
+
Use task sources, explicit references, constraints, and the frozen source-fidelity
|
|
13
|
+
ledger. Preserve canonical requirement IDs, source fragments, commands, paths, and
|
|
14
|
+
language. Do not inspect implementation files or choose components, routes, Mock
|
|
15
|
+
mechanisms, dependencies, or target code as requirement facts.
|
|
16
|
+
|
|
17
|
+
Submit confirmed facts incrementally with the contract `record_*` tools and finish
|
|
18
|
+
with exactly one `finalize_contract`. Start recording as soon as a requirement or
|
|
19
|
+
constraint is confirmed; do not accumulate the whole contract in one response.
|
|
20
|
+
|
|
21
|
+
Missing product semantics may be explicit assumptions only when they do not change
|
|
22
|
+
observable behavior. Otherwise record a blocking question or a split proposal.
|
|
23
|
+
This node is read-only.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Frontend Contract Protocol
|
|
2
|
+
|
|
3
|
+
## Requirement fidelity
|
|
4
|
+
|
|
5
|
+
- Use the frozen canonical requirement ID for every requirement. Never invent a
|
|
6
|
+
replacement REQ/BR/AC ID.
|
|
7
|
+
- Bind every requirement to exactly the source fragment IDs supplied by the
|
|
8
|
+
source-fidelity ledger. Do not infer fragment IDs from prose.
|
|
9
|
+
- Record observable outcomes, applicable UI states, runtime/environment constraints,
|
|
10
|
+
non-goals, risks, and verification expectations without choosing implementation.
|
|
11
|
+
- Classify each requirement as `explicit`, `repository-resolvable`, `assumption`, or
|
|
12
|
+
`blocking`. Blocking facts name their owner and evidence.
|
|
13
|
+
|
|
14
|
+
## Evidence and handoff
|
|
15
|
+
|
|
16
|
+
- Register static, behavior, Mock, and real-integration evidence expectations as
|
|
17
|
+
required, optional, or not-applicable. The classification follows the source and
|
|
18
|
+
risk; it is not selected for model convenience.
|
|
19
|
+
- Register a non-blocking frontend-test handoff for UI-visible or interactive work.
|
|
20
|
+
- Preserve exact command labels and referenced paths. Do not invent evidence,
|
|
21
|
+
connector results, APIs, or verification commands.
|
|
22
|
+
|
|
23
|
+
## OpenSpec selection
|
|
24
|
+
|
|
25
|
+
When the frozen task exposes OpenSpec candidates, record only candidates actually
|
|
26
|
+
used by the contract as `required` or `relevant`. Explicit required paths and task
|
|
27
|
+
source citations remain required. Unmentioned candidates are irrelevant; do not
|
|
28
|
+
enumerate or downgrade them.
|
|
29
|
+
|
|
30
|
+
## Terminal
|
|
31
|
+
|
|
32
|
+
Commit facts in small batches and call `finalize_contract` exactly once with
|
|
33
|
+
`ready`, `ready-with-assumptions`, or `blocked`. If the task is too large for one
|
|
34
|
+
bounded writer, record a split proposal instead of broadening the contract.
|
|
@@ -9,31 +9,26 @@ references:
|
|
|
9
9
|
|
|
10
10
|
# Frontend Design Review
|
|
11
11
|
|
|
12
|
-
For frontend design review nodes. Read the checklist
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
For frontend design review nodes. Read the checklist and the non-blocking contract
|
|
13
|
+
capacity diagnostic first. Audit either the canonical contract or, when the
|
|
14
|
+
diagnostic recommends indexed reading, its hash-bound field sections. Check the
|
|
15
|
+
bound Mock strategy, task bounds, and traceable design evidence supplied by the
|
|
16
|
+
upstream context. Do not rediscover task sources, search specification roots, or
|
|
17
|
+
replace frozen evidence with nearby-code conventions. Use only exact, bound evidence
|
|
18
|
+
paths when additional reading is necessary; never invent connector results.
|
|
18
19
|
|
|
19
|
-
##
|
|
20
|
+
## Authoritative Terminal
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
Any blocker requires request-revision. An initial pass is the effective verdict;
|
|
23
|
-
there is no intermediate first-design shell gate.
|
|
22
|
+
Complete the review with exactly one committed typed tool call:
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
`
|
|
27
|
-
|
|
28
|
-
the original plan and skips both conditional nodes.
|
|
24
|
+
- `approve_design` when no blocking design defect remains;
|
|
25
|
+
- `request_design_changes` when a blocker exists. It must include a typed
|
|
26
|
+
`issueCategory`, at least one `evidenceRef`, and non-empty findings.
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
`
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
The deterministic gate prefers final-review output and falls back to initial review
|
|
35
|
-
only when no current-run final output exists. Existing malformed/non-pass primary
|
|
36
|
-
output fails closed.
|
|
28
|
+
The typed terminal is the only authoritative outcome. Do not require or emit a
|
|
29
|
+
`VERDICT:` line, JSON verdict, revision patch, or a second final-design-review
|
|
30
|
+
verdict. A requested design change ends this run; the recovery controller creates
|
|
31
|
+
any bounded follow-up run from the appropriate phase.
|
|
37
32
|
|
|
38
33
|
## Blocking Conditions
|
|
39
34
|
|
|
@@ -51,29 +46,15 @@ Knowledge-base absence is advisory if relevant rules from either openspec
|
|
|
51
46
|
specification directory were read and applied. Block skipped fallback, unresolved
|
|
52
47
|
conflict, or unresolved UI decisions.
|
|
53
48
|
|
|
54
|
-
## Method And Output
|
|
49
|
+
## Method And Human-readable Output
|
|
55
50
|
|
|
56
51
|
Map criteria to steps/files/states/checks, audit paths/evidence, classify Blocking
|
|
57
52
|
or Advisory, and never edit files.
|
|
58
53
|
|
|
59
54
|
### Spec Evidence Rules
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
```markdown
|
|
67
|
-
VERDICT: pass
|
|
68
|
-
|
|
69
|
-
## Findings
|
|
70
|
-
- None blocking.
|
|
71
|
-
|
|
72
|
-
## Required Plan Corrections
|
|
73
|
-
- None.
|
|
74
|
-
|
|
75
|
-
## Checked Items
|
|
76
|
-
- ...
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Each correction names its criterion/section, gap, and exact plan change.
|
|
56
|
+
Read only the canonical contract (or its indexed, hash-bound sections) and any exact
|
|
57
|
+
evidence paths bound in its upstream context. Successful paired reads are the only proof that a specification was read;
|
|
58
|
+
summaries do not substitute for them. A concise human-readable summary may list
|
|
59
|
+
checked items and findings, but it is never a control protocol. Each requested
|
|
60
|
+
change names its criterion/section, gap, and required plan change.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-plan
|
|
3
|
+
description: Use only for the tool-only frontend decision planning node.
|
|
4
|
+
references:
|
|
5
|
+
- path: references/decision-contract.md
|
|
6
|
+
required: true
|
|
7
|
+
maxChars: 5200
|
|
8
|
+
- path: references/design-decisions.md
|
|
9
|
+
required: true
|
|
10
|
+
maxChars: 3400
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Frontend Plan
|
|
14
|
+
|
|
15
|
+
Plan only the delta between frozen Contract facts and the Scout target surface.
|
|
16
|
+
Do not reread task sources, Contract/Scout prose, or target files, and do not repeat
|
|
17
|
+
requirements or repository discovery.
|
|
18
|
+
|
|
19
|
+
Commit the smallest necessary typed decisions through the plan `record_*` tools:
|
|
20
|
+
requirement coverage, component/styling choices, applicable states and interactions,
|
|
21
|
+
data/Mock strategy, deviations, and dependency policy. Process a bounded requirement
|
|
22
|
+
slice and record facts immediately rather than reasoning over the whole task first.
|
|
23
|
+
|
|
24
|
+
The runtime owns protected skeleton fields, path/command validation, materialization,
|
|
25
|
+
and final schema checks. Finish with exactly one `finalize_plan`; return no Markdown
|
|
26
|
+
narrative. Record a genuine evidence gap when frozen facts are insufficient.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Frontend Plan Decision Contract
|
|
2
|
+
|
|
3
|
+
## Requirement-local decisions
|
|
4
|
+
|
|
5
|
+
- Cover each frozen requirement exactly once and map it to Scout-confirmed
|
|
6
|
+
implementation paths and verification target IDs.
|
|
7
|
+
- Record observable state and interaction behavior, including trigger and expected
|
|
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.
|
|
14
|
+
- Static targets are for project-wide commands and are traced by file and command
|
|
15
|
+
only.
|
|
16
|
+
|
|
17
|
+
## Global decisions
|
|
18
|
+
|
|
19
|
+
Keep route/component placement, Mock/data strategy, and dependency/deviation policy
|
|
20
|
+
as explicit global decisions rather than duplicating them across each requirement.
|
|
21
|
+
Use only frozen command labels and Scout-confirmed paths.
|
|
22
|
+
|
|
23
|
+
For Mock/API, keep the real request path enabled by default. Select only a strategy
|
|
24
|
+
allowed by the frozen task capability. Active Mock requires deterministic Mock-backed
|
|
25
|
+
verification and production-default-off activation. `not-needed` requires positive
|
|
26
|
+
real/no-remote evidence or records a real-integration gap.
|
|
27
|
+
|
|
28
|
+
Add dependencies only when authorized. Record unsupported dependency, path, API,
|
|
29
|
+
design, or verification needs as blocking evidence gaps; never invent a command or
|
|
30
|
+
widen the write set.
|
|
31
|
+
|
|
32
|
+
## Runtime-owned fields and terminal
|
|
33
|
+
|
|
34
|
+
The runtime owns `schemaVersion`, `sourceBinding`, risk, canonical target files,
|
|
35
|
+
aliases, command allowlisting, path containment, and final validation. Submit only
|
|
36
|
+
editable decision facts, then call `finalize_plan` exactly once. The deterministic
|
|
37
|
+
design policy materializes the canonical implementation contract.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Frontend Design Decisions
|
|
2
|
+
|
|
3
|
+
Use only design evidence already committed by Scout and frozen selections from
|
|
4
|
+
Contract. Do not search specification roots or nearby code from Plan.
|
|
5
|
+
|
|
6
|
+
- Reuse confirmed components, variants, tokens, helpers, and state patterns unless
|
|
7
|
+
the task authorizes a new pattern.
|
|
8
|
+
- Record `uiComponentChoices` per UI purpose. `purpose` is the stable coverage key
|
|
9
|
+
matching an interaction or UI state; behavior remains in the corresponding
|
|
10
|
+
expected behavior and rationale.
|
|
11
|
+
- `specified` requires an exact bound OpenSpec reference. `reuse-existing` identifies
|
|
12
|
+
the proven existing component/path. Task-mandated `new` choices bind the frozen
|
|
13
|
+
source requirement/fragment so the runtime can derive the PRD citation.
|
|
14
|
+
- Define applicable success, loading, empty, error, permission, disabled, boundary,
|
|
15
|
+
responsive, and accessibility behavior; use not-applicable only with a reason.
|
|
16
|
+
- Record styling strategy, deviations, conflicts, and unresolved gaps explicitly.
|
|
17
|
+
Never silently replace a spec-defined component or claim unread evidence.
|
|
@@ -9,17 +9,25 @@ references:
|
|
|
9
9
|
|
|
10
10
|
# Frontend Review
|
|
11
11
|
|
|
12
|
-
Use for `frontend-review-pi`; read the findings guide
|
|
13
|
-
|
|
14
|
-
and
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
Use for `frontend-review-pi`; read the findings guide and capacity diagnostic first.
|
|
13
|
+
Inputs are `contracts/frontend-review-context.json`, its hash-bound contract
|
|
14
|
+
reference/index and diff fragments, and only source files named by that diff. Use
|
|
15
|
+
indexed contract sections when recommended. Do not reopen task sources, plans,
|
|
16
|
+
design-review prose, OpenSpec, or `ai_workspace/`; the bound context is authoritative.
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Authoritative Terminal
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
Complete the review with exactly one committed typed tool call:
|
|
21
|
+
|
|
22
|
+
- `approve_review` when no Critical/Important finding remains;
|
|
23
|
+
- `request_review_changes` for a defect, missing required evidence, forbidden
|
|
24
|
+
write, or unmet acceptance criterion. It must include a typed `issueCategory`,
|
|
25
|
+
at least one `evidenceRef`, and non-empty findings.
|
|
26
|
+
|
|
27
|
+
The typed terminal is the only authoritative outcome. Do not require or emit a
|
|
28
|
+
`VERDICT:` line or response-text JSON verdict. A request for review changes ends
|
|
29
|
+
this run and is handled by the recovery controller rather than a same-run repair
|
|
30
|
+
branch.
|
|
23
31
|
|
|
24
32
|
## Review Scope
|
|
25
33
|
|
|
@@ -27,7 +35,7 @@ required check, forbidden write, or unmet acceptance criterion forces revision.
|
|
|
27
35
|
- Inspect every changed file against allowed, forbidden, and approved write scope.
|
|
28
36
|
- Map criteria to behavior, applicable UI states, tests, and shell evidence.
|
|
29
37
|
- Review state/data flow, validation, async/error behavior, design, responsive/a11y,
|
|
30
|
-
dependencies,
|
|
38
|
+
dependencies, and regression risk when applicable.
|
|
31
39
|
- Inspect static, behavior, and available Mock-specific artifacts directly. For Mock
|
|
32
40
|
strategies, compare the endpoint matrix, handler/fixture/adapter and consumer diff;
|
|
33
41
|
require the real request as default, contract-aligned fixtures, production isolation,
|
|
@@ -38,11 +46,8 @@ required check, forbidden write, or unmet acceptance criterion forces revision.
|
|
|
38
46
|
baseline-matched diagnostics on unchanged files, and none on writer-changed files.
|
|
39
47
|
Report debt, never `lint passed`; `failed`/`unavailable` blocks. Typecheck, build,
|
|
40
48
|
and test still require successful final exits.
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
`<repoRoot>/openspec/schemas/`, `<repoRoot>/openspec/project-specs/`, and `<repoRoot>/ai_workspace/`.
|
|
44
|
-
Connector format is TODO; never invent evidence. Only successful `read` calls are
|
|
45
|
-
observable as "已读取规范文件".
|
|
49
|
+
- Evaluate component/design claims against bound evidence; do not replace it with a
|
|
50
|
+
repository-wide search or connector query.
|
|
46
51
|
- Treat shell exit status as authoritative. Do not edit files.
|
|
47
52
|
|
|
48
53
|
## Evidence And Output
|
|
@@ -14,24 +14,23 @@
|
|
|
14
14
|
`baseline-debt` only with a valid `frontend-lint-assessment-v1`; this is not a
|
|
15
15
|
passed lint result. A changed-file lint diagnostic, new unmatched diagnostic,
|
|
16
16
|
command drift, missing baseline, timeout, or unparseable output is Important.
|
|
17
|
-
- Treat
|
|
18
|
-
|
|
19
|
-
|
|
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.
|
|
20
21
|
|
|
21
22
|
## Review Sequence
|
|
22
23
|
|
|
23
24
|
1. Establish changed-file inventory and write boundaries.
|
|
24
|
-
2. Compare
|
|
25
|
+
2. Compare the bound contract with the approved constraints and cumulative diff.
|
|
25
26
|
3. Map each criterion to code, states, tests, and evidence.
|
|
26
27
|
4. Inspect interactions, state/data/API behavior, failure paths, and regressions.
|
|
27
28
|
5. Check mock selection, contract-to-fixture mapping, activation/default path,
|
|
28
29
|
handler/fixture/adapter and consumer diff, verification, production imports, and
|
|
29
30
|
the real-integration gap.
|
|
30
|
-
6. Check design evidence, responsive/a11y behavior, dependencies, and maintenance.
|
|
31
|
+
6. Check bound design evidence, responsive/a11y behavior, dependencies, and maintenance.
|
|
31
32
|
7. Classify findings and derive the verdict mechanically.
|
|
32
33
|
|
|
33
|
-
Skipping either directory is Important when design compliance affects acceptance.
|
|
34
|
-
|
|
35
34
|
```text
|
|
36
35
|
- [Critical|Important|Minor] path:line — Problem; impact; required correction; evidence.
|
|
37
36
|
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-scout
|
|
3
|
+
description: Use only for read-only frontend target-surface and design-evidence scouting.
|
|
4
|
+
references:
|
|
5
|
+
- path: references/scout-evidence.md
|
|
6
|
+
required: true
|
|
7
|
+
maxChars: 4200
|
|
8
|
+
- path: references/design-evidence.md
|
|
9
|
+
required: true
|
|
10
|
+
maxChars: 3600
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Frontend Scout
|
|
14
|
+
|
|
15
|
+
Inspect only enough repository evidence to prove the target surface and applicable
|
|
16
|
+
design rules. Separate facts, inferences, and unresolved gaps. Reuse the frozen
|
|
17
|
+
capability context and contract selections before running bounded task-term searches.
|
|
18
|
+
|
|
19
|
+
Submit findings incrementally through `record_target_surface` and
|
|
20
|
+
`record_design_evidence`. A complete surface names proven entrypoints, routes or
|
|
21
|
+
mounts, implementation paths, test paths, data sources, and any allowed-path
|
|
22
|
+
conflicts. If ownership remains unresolved, commit `completeness=blocked` with the
|
|
23
|
+
specific gaps rather than guessing.
|
|
24
|
+
|
|
25
|
+
This node is read-only and does not make plan decisions.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Frontend Design Evidence
|
|
2
|
+
|
|
3
|
+
Use the generation-frozen component/design capability context and cited candidate
|
|
4
|
+
set. When a connector is available, query the configured knowledge base; regardless
|
|
5
|
+
of its result, inspect relevant frozen OpenSpec or `ai_workspace` candidates. Search
|
|
6
|
+
local specification roots only for unresolved task terms and never recursively read
|
|
7
|
+
all supported files.
|
|
8
|
+
|
|
9
|
+
Record evidence as `knowledge-base`, `openspec fallback`, `repository fallback`, or
|
|
10
|
+
`unavailable`. Include query/search terms, paths, headings or tight line ranges,
|
|
11
|
+
applied rules, and conflicts. Filename-only and unread search matches are not rules.
|
|
12
|
+
|
|
13
|
+
Look for components, variants, composition, tokens, layout, responsive behavior,
|
|
14
|
+
accessibility, state patterns, data/Mock conventions, deprecations, exceptions, and
|
|
15
|
+
forbidden patterns. Explicit task requirements remain authoritative; report source
|
|
16
|
+
conflicts instead of merging them silently.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Frontend Scout Evidence
|
|
2
|
+
|
|
3
|
+
## Target surface
|
|
4
|
+
|
|
5
|
+
Prove the current frontend stack and the files that own the requested behavior:
|
|
6
|
+
|
|
7
|
+
- entrypoint, route or mount;
|
|
8
|
+
- page/component/style implementation paths;
|
|
9
|
+
- state and data/API/Mock flow;
|
|
10
|
+
- supported scripts and test entrypoints;
|
|
11
|
+
- reusable components, tokens, helpers, fixtures, and assets;
|
|
12
|
+
- paths discovered outside task `allowedPaths`;
|
|
13
|
+
- unresolved ownership or missing evidence.
|
|
14
|
+
|
|
15
|
+
Use repository-relative POSIX paths. A search hit, lockfile, fixture, or filename is
|
|
16
|
+
not proof by itself. Read the relevant surrounding code or configuration and report
|
|
17
|
+
the exact evidence. Do not recursively inspect unrelated directories.
|
|
18
|
+
|
|
19
|
+
## Completeness
|
|
20
|
+
|
|
21
|
+
Commit `complete` only when the target surface is sufficiently proven for Plan to
|
|
22
|
+
reuse without repository discovery. Otherwise commit `blocked` and list every
|
|
23
|
+
unresolved path or ownership question. Do not shift discovery work into Plan.
|
|
@@ -30,7 +30,7 @@ verdict/findings, and required browser, visual, manual, or knowledge evidence.
|
|
|
30
30
|
`frontend-lint-assessment-v1` proving only pre-writer diagnostics on unchanged
|
|
31
31
|
files. Report debt count, changed files, and raw evidence. Typecheck/build/test do
|
|
32
32
|
not support debt.
|
|
33
|
-
- Use design and requirement evidence
|
|
33
|
+
- Use design and requirement evidence referenced and hash-bound by
|
|
34
34
|
`contracts/frontend-review-context.json`. Closeout must not query connectors,
|
|
35
35
|
re-open task sources, OpenSpec, AI workspace, upstream model prose, or start new
|
|
36
36
|
repository research.
|
|
@@ -354,6 +354,7 @@ loop-agent dag artifact revision stage --run-id <run-id> --node-id <producer> --
|
|
|
354
354
|
loop-agent dag artifact revision discard --revision-id <revision-id> --request-id <key> --json
|
|
355
355
|
loop-agent dag rerun --run-id <run-id> --artifact-revision <revision-id> --plan [--json] # 单产物影响闭包预检
|
|
356
356
|
loop-agent dag rerun-task --run-id <run-id> --reason "..." --request-id <key> [--profile auto] [--task-id <id>] [--json] # standalone 完整任务重跑
|
|
357
|
+
loop-agent dag follow-up <parent-run-id> [--task-id <id>] [--execute] [--profile auto|minimal|standard|reviewed|supervised] # 将 frontend review 的 request_review_changes findings 物化为下游 frontend task;默认只创建并返回 task advance 命令
|
|
357
358
|
loop-agent dag request-interrupt --run-id <run-id> --request-id <key> --target-operation-id <op-id> --reason-code <code> --reason "..." --expected-runner-pid <pid> --expected-runner-hostname <host> --expected-runner-started-at <ts> --expected-controller-fingerprint <fingerprint> # 协作式中止:经 Human Gate 登记 interrupt.json,runner 等当前节点安全收敛后再停调度,不直接 SIGKILL
|
|
358
359
|
loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
|
|
359
360
|
loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
对于默认 `standard` 任务,生成器先读取 `source/需求.md` 中的结构化任务类型,再结合 `allowedPaths` 与 React/Next/Vue 强工程证据做确定性分类。确认是前端项目且任务不是明确后端、前后端混合、排除前端或仅文档/测试范围时,默认选择 `frontend-implementation` DAG,不依赖需求关键词。分类不会把普通后端实现路由到 `backend-test`;显式 profile、`workflowPolicy` 或 supervised quality gate 只记录治理强度,不把已识别的前端业务 workflow 换回通用模板。
|
|
18
18
|
|
|
19
|
-
前端专用链保留独立 contract/scout;plan
|
|
19
|
+
前端专用链保留独立 contract/scout;plan 通过增量 typed `record_*` 工具提交决策账本并以唯一 `finalize_plan` 收口(无 fenced JSON 文本协议)。写授权由 `frontend-design-policy-shell`(确定性设计检查 + 物化唯一 authoritative `frontend-implementation-contract-v1`)与 `frontend-writer-admission-shell`(唯一写入授权:派生并冻结 writeSet、pre-writer baseline、admission digest,`admitted` 才放行 writer)承接;design review 与 final review 的权威终态是 committed typed tool(`approve_design|request_design_changes`、`approve_review|request_review_changes`)。实现后 `frontend-verify-shell` 合并 lint/Mock/static/behavior/trace;任何验证失败都是 terminal,物化 `frontend-verify-failure-v1` 供 recovery 路由,无同 run repair。`frontend-review-context-shell` 绑定真实 diff 与有效验证证据后再 review/closeout。拓扑按 shape 路由:Micro 7 / Small 10 / Standard-High 11 个顶层节点;Standard/High 完整主链为 `frontend-contract-pi` → `frontend-scout-pi` → `frontend-plan-pi` → `frontend-design-policy-shell` → `frontend-design-review-pi` → `frontend-writer-admission-shell` → `frontend-implement-pi` → `frontend-verify-shell` → `frontend-review-context-shell` → `frontend-review-pi` → `frontend-closeout-shell`,Small 去掉独立 `frontend-design-review-pi`,Micro 为 `frontend-contract-import-shell` → `frontend-writer-admission-shell` → `frontend-implement-pi` → `frontend-verify-shell` → `frontend-review-context-shell` → `frontend-review-pi` → `frontend-closeout-shell`。生成期 blocked Mock 只生成一个确定性阻塞节点且没有 writer。
|
|
20
20
|
|
|
21
21
|
> Backend-test Markdown-first:先由确定性环境 Shell 检查 clean env 中 Python/pytest、常见配置、conftest/fixture、test root、server entry 和 HTML renderer,失败时不消耗模型调用。随后 Pi 生成中文 README 索引与模块用例卡片并独立 Review `testcase/md/**`。第 4 节点只把前置条件、操作步骤、预期结果作为必选章节,并检查 Case ID、业务 AC、步骤/预期和占位措辞;不校验需求来源引用有效性或 Markdown sensitive-shaped 内容。pytest writer 为每次真实接口调用记录脱敏、有界的请求 method/URL/参数摘要和响应 status/body 摘要。第 6 节点只扫描每条 Case 明确映射的 pytest 脚本,同时支持模块级函数和 pytest class 方法,并把缺少请求/响应日志、递归脱敏或有界截断证据记录为 advisory。第 4/6 节点均写 PASS/FAIL findings 而不阻断后续;pytest 仍只运行一次,生成 JUnit,并把 Markdown 名称/场景/脚本映射与同一 JUnit 合成为按测试概览、质量校验、失败概览、用例执行明细和技术证据组织的中文 self-contained HTML 与 Markdown facts。最终 Pi 按固定简洁结构汇总 advisory 状态、执行事实和 L-5 结论。active 流程不要求模型生成 backend-test 业务 JSON。
|
|
22
22
|
|
|
@@ -91,7 +91,7 @@ loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --init-only --canvas-pat
|
|
|
91
91
|
- **Source binding / recovery**:新生成 DAG 在顶层冻结 `sourceBinding`(任务源相对路径、SHA-256、显式 `REQ/BR/AC`)。前端计划在存在显式编号时经过 `frontend-requirement-coverage-shell`;修订计划为 primary,只在条件分支未产生输出时 fallback 到原计划。主来源存在但缺号时仍在 writer 前 fail closed。中断后重新生成完整 DAG,不要从二手摘要拼接 impl-only DAG;v3 孤立 exclusive writer 若无 `sourceBinding` 且没有只读 planner 上游,会被 strict governance 拒绝。
|
|
92
92
|
- **勿宣称 live smoke 已通过**,除非真实 `dag execute` execution 中 Pi read-only、Pi writer、显式 Cursor 或 shell node 均按 DAG 完成。
|
|
93
93
|
|
|
94
|
-
可复用 template:`docs/templates/agent-dag.base.json`(model 生成 DAG 的首选 base template)、`docs/templates/agent-dag.schema.json`(JSON Schema)、`docs/templates/agent-dag.supervised-implementation.json`(supervised implementation:writeSet audit、soft/hard verify、process supervisor、repair、review verdict gate)、`docs/templates/backend-test-dag.json`(后端测试专用模板)、`docs/templates/frontend-test-dag.json`(FE-test RAG:Markdown case manifest、串行 Playwright CLI case 子节点与逐 case 证据)、`docs/templates/agent-dag-process-supervisor.prompt.md`、`docs/templates/agent-dag-review-verdict.prompt.md`、`docs/templates/agent-dag-authority-surface-audit.prompt.md`(可选 authority surface verifier;authority signal 或显式 enablement 匹配时由 `dag init-hybrid` 插入)、`examples/hybrid-loop-agent-dag.json`、`docs/templates/hybrid-dag.json`。
|
|
94
|
+
可复用 template:`docs/templates/agent-dag.base.json`(model 生成 DAG 的首选 base template)、`docs/templates/agent-dag.schema.json`(JSON Schema)、`docs/templates/agent-dag.supervised-implementation.json`(supervised implementation:writeSet audit、soft/hard verify、process supervisor、repair、review verdict gate)、`docs/templates/frontend-implementation-dag.json`(自包含的前端实现完整默认链:contract、scout、plan、design policy/review、writer admission、implement、verify、review context/review、closeout;不依赖 runtime builder 或其他模板,执行前替换全部 `REPLACE/WITH/...` 值)、`docs/templates/backend-test-dag.json`(后端测试专用模板)、`docs/templates/frontend-test-dag.json`(FE-test RAG:Markdown case manifest、串行 Playwright CLI case 子节点与逐 case 证据)、`docs/templates/agent-dag-process-supervisor.prompt.md`、`docs/templates/agent-dag-review-verdict.prompt.md`、`docs/templates/agent-dag-authority-surface-audit.prompt.md`(可选 authority surface verifier;authority signal 或显式 enablement 匹配时由 `dag init-hybrid` 插入)、`examples/hybrid-loop-agent-dag.json`、`docs/templates/hybrid-dag.json`。
|
|
95
95
|
|
|
96
96
|
### Supervised implementation flow(减少 operator 中途介入)
|
|
97
97
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./mermaid.core-BQe6fpqj.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-D_OWvXzX.js";import{_ as i}from"./mermaid.core-BQe6fpqj.js";import"./chunk-5VM5RSS4-C0o2Du1e.js";import"./chunk-XXDRQBXY-CqLw_eqB.js";import"./chunk-KBJHAD2P-Cj8lRrla.js";import"./chunk-2GRJ4B5K-DYwR0im2.js";import"./index-xwu9GxEc.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-D_OWvXzX.js";import{_ as i}from"./mermaid.core-BQe6fpqj.js";import"./chunk-5VM5RSS4-C0o2Du1e.js";import"./chunk-XXDRQBXY-CqLw_eqB.js";import"./chunk-KBJHAD2P-Cj8lRrla.js";import"./chunk-2GRJ4B5K-DYwR0im2.js";import"./index-xwu9GxEc.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};
|