@tea-agent/loop-agent 0.44.0-next.12 → 0.44.0-next.14

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 (188) hide show
  1. package/CHANGELOG.md +27 -2
  2. package/README.md +12 -12
  3. package/dist/adapters/loop-agent.js +34 -0
  4. package/dist/build-stamp.json +3 -3
  5. package/dist/cli/command-definitions.js +5 -5
  6. package/dist/cli/program.js +1 -4
  7. package/dist/commands/init-legacy-audit.js +330 -0
  8. package/dist/commands/init-upgrade.js +644 -104
  9. package/dist/commands/init.js +686 -330
  10. package/dist/commands/operator-guide.js +99 -0
  11. package/dist/commands/operator.js +16 -3
  12. package/dist/executors/dag-pi-executor.js +11 -6
  13. package/dist/executors/pi-sdk-executor.js +3 -1
  14. package/dist/executors/pi-writer-tool-policy.js +60 -4
  15. package/dist/executors/playwright-cli-launcher.js +31 -45
  16. package/dist/executors/shell-write-guard.js +24 -67
  17. package/dist/governance/exec-plans.js +10 -1
  18. package/dist/governance/harness.js +2 -7
  19. package/dist/governance/manifest-types.js +28 -9
  20. package/dist/governance/project-capability-scanner.js +263 -0
  21. package/dist/governance/project-config.js +96 -0
  22. package/dist/governance/resource-catalog.js +151 -0
  23. package/dist/infrastructure/console/app-data.js +6 -2
  24. package/dist/shared/operator/capabilities.js +2 -2
  25. package/dist/shared/package-metadata.js +23 -7
  26. package/dist/shared/pi-context-pressure/extension.js +23 -0
  27. package/dist/shared/pi-context-pressure/index.js +1 -0
  28. package/dist/shared/pi-context-pressure/telemetry.js +4 -0
  29. package/dist/shared/pi-context-pressure/tool-result-pruner.js +98 -0
  30. package/dist/shared/update/npm-client.js +49 -1
  31. package/dist/task/config-types.js +4 -2
  32. package/dist/task/source-prepare/build-draft.js +1 -0
  33. package/dist/task/source-prepare/path-policy.js +17 -7
  34. package/dist/worker/cli.js +3 -5
  35. package/dist/worker/console/chat/browser-automation.js +455 -41
  36. package/dist/worker/console/chat/browser-content.js +74 -0
  37. package/dist/worker/console/chat/browser-diagnostics.js +250 -0
  38. package/dist/worker/console/chat/browser-evaluation.js +58 -0
  39. package/dist/worker/console/chat/browser-operation-queue.js +19 -0
  40. package/dist/worker/console/chat/browser-pick.js +113 -0
  41. package/dist/worker/console/chat/browser-routes.js +54 -5
  42. package/dist/worker/console/chat/browser-screenshot-result.js +47 -0
  43. package/dist/worker/console/chat/browser-storage.js +89 -0
  44. package/dist/worker/console/chat/chat-event-store.js +7 -6
  45. package/dist/worker/console/chat/context-insights.js +84 -19
  46. package/dist/worker/console/chat/pet/pet-affinity.js +169 -0
  47. package/dist/worker/console/chat/pet/pet-persist.js +109 -0
  48. package/dist/worker/console/chat/pet/pet-registry.js +142 -0
  49. package/dist/worker/console/chat/pet/pet-remarks.js +48 -0
  50. package/dist/worker/console/chat/pet/pet-routes.js +125 -0
  51. package/dist/worker/console/chat/pet/pet-service.js +262 -0
  52. package/dist/worker/console/chat/pet/pet-state.js +99 -0
  53. package/dist/worker/console/chat/pi-mode-loop-isolation.js +17 -2
  54. package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +125 -174
  55. package/dist/worker/console/chat/pi-runtime.js +8 -3
  56. package/dist/worker/console/chat/repo-browser.js +80 -2
  57. package/dist/worker/console/chat/repo-preview-kind.js +155 -0
  58. package/dist/worker/console/chat/routes.js +43 -7
  59. package/dist/worker/console/chat/scheduled-goal-request.js +14 -6
  60. package/dist/worker/console/chat/session-mode.js +1 -1
  61. package/dist/worker/console/chat/session-store.js +24 -5
  62. package/dist/worker/console/chat/tools.js +12 -0
  63. package/dist/worker/console/console-shutdown.js +34 -0
  64. package/dist/worker/console/server.js +2 -1
  65. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-r1NAPU_5.js → abnfDiagram-N423BO3Z-DASc69AM.js} +1 -1
  66. package/dist/worker/console/static/assets/{arc-dT5T4sVL.js → arc-h09p-LAc.js} +1 -1
  67. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-CP_cOq46.js → architectureDiagram-T3A2C74G-CZ3dtLkh.js} +1 -1
  68. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-sToEZxEf.js → blockDiagram-VBNYF7ZC-DMrRhMXG.js} +1 -1
  69. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-DSxwwi2m.js → c4Diagram-5PPSVZJV-DQxisHV6.js} +1 -1
  70. package/dist/worker/console/static/assets/channel-D1zgKZfg.js +1 -0
  71. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-B9fh0IkF.js → chunk-2GRJ4B5K-CefVN9zh.js} +1 -1
  72. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-CAUNl-A6.js → chunk-2Q5K7J3B-DmR1Koq2.js} +1 -1
  73. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-BomeqbNX.js → chunk-5RXB4S5H-NlzrSW7L.js} +1 -1
  74. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-BNAuTOLE.js → chunk-5VM5RSS4-DfelJv-0.js} +1 -1
  75. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DfzjRD5y.js → chunk-6Q2QTUOP-BK6RFy58.js} +1 -1
  76. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C3uE-yc2.js → chunk-GF5L2VYU-BAeh9lz4.js} +1 -1
  77. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-C3sQMMYr.js → chunk-JWPE2WC7-ChPS5WzG.js} +1 -1
  78. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D_AtEYQL.js → chunk-KBJHAD2P-BoVe5IM6.js} +1 -1
  79. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DW4TwhKv.js → chunk-RYQCIY6F-C4q_0Lw9.js} +1 -1
  80. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CTQDmJcp.js → chunk-XXDRQBXY-Bb9TvjeY.js} +1 -1
  81. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-CXNNsY2M.js +1 -0
  82. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-CXNNsY2M.js +1 -0
  83. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-iMqPuBsL.js → cose-bilkent-JH36ORCC-DmNnL8Ff.js} +1 -1
  84. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-DktIuDWs.js → cynefin-VYW2F7L2-Contvx58.js} +1 -1
  85. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BgVnjyEs.js → cynefinDiagram-MW4NZA55-Cigq7cjk.js} +1 -1
  86. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CR25E4bu.js → dagre-VZM6K2ZE-dEbC0nxb.js} +1 -1
  87. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CPM2h5HY.js → diagram-7IWD3JNH-CzIztESV.js} +1 -1
  88. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DqF0x2g1.js → diagram-B4RE2ZJO-Bo14zbaY.js} +1 -1
  89. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-G8BYp2eb.js → diagram-LBJQPF4R-C4xUyil6.js} +1 -1
  90. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BbC4kT_D.js → diagram-Q27KOJAE-CaBY_uYa.js} +1 -1
  91. package/dist/worker/console/static/assets/{diagram-UB23O5K3-CKZwZ-G5.js → diagram-UB23O5K3-ClUXUeiu.js} +1 -1
  92. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-kJDmheia.js → ebnfDiagram-BXEA7PRR-BbGCgjC6.js} +1 -1
  93. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DFTVHyxB.js → erDiagram-JOGREHBK-Dr-AcwSl.js} +1 -1
  94. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BqdN5_os.js → flowDiagram-UKHOOZJN-BG8Gcfyc.js} +1 -1
  95. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-SYDjVakh.js → ganttDiagram-PKOTCBZU-CFVaPs5r.js} +1 -1
  96. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Bf8bNpGA.js → gitGraphDiagram-DS77QQ5N-ChJ8pm-O.js} +1 -1
  97. package/dist/worker/console/static/assets/index-B_5GhVIO.js +488 -0
  98. package/dist/worker/console/static/assets/index-C7YMBluX.css +1 -0
  99. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DIeAmJ45.js → infoDiagram-6WML65LV-C5J9-uCZ.js} +1 -1
  100. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-oikqUAlo.js → ishikawaDiagram-WSZJBQD7-BcfjqzDv.js} +1 -1
  101. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-mKEF_xYT.js → journeyDiagram-NVQOT4AX-BzzCO-rD.js} +1 -1
  102. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-BdWJHPnN.js → kanban-definition-27J2QSJJ-NCHUZ46h.js} +1 -1
  103. package/dist/worker/console/static/assets/{linear-DGRlieMH.js → linear-BKZlWCUU.js} +1 -1
  104. package/dist/worker/console/static/assets/{mermaid.core-4P9yPC9c.js → mermaid.core-DbTaQjFE.js} +5 -5
  105. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-5PTSkos6.js → mindmap-definition-FAOFIHXS-CroYl5xQ.js} +1 -1
  106. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DONIFpG5.js → pegDiagram-VL7TDLO6-DgMBx-9k.js} +1 -1
  107. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-D_Z4S70M.js → pieDiagram-7S7Q4E2Y-CyWDmbq1.js} +1 -1
  108. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CAsjh8iY.js → quadrantDiagram-CIZ2JOQS-BgGEOqSP.js} +1 -1
  109. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-Cx4Dd6ac.js → railroadDiagram-AXF67PYL-BMZ7oeeV.js} +1 -1
  110. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-cQb7mwyH.js → requirementDiagram-LRYGKXZP-DxqyGhcc.js} +1 -1
  111. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Cd-DhUdf.js → sankeyDiagram-W5VNT64P-DnSvNCG8.js} +1 -1
  112. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-AlKYRgIk.js → sequenceDiagram-SI44F4Z6-BiZh6f-R.js} +1 -1
  113. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-CUy_ET4e.js → sizeCapture-X5ZJPWSS-BKXSI8WB.js} +1 -1
  114. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-CTuVe6Sa.js → stateDiagram-OKZ733FA-CfSgoYFm.js} +1 -1
  115. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DgHi3vjb.js +1 -0
  116. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-ChFLJb-v.js → swimlanes-SLNWSIFB-CyGADcHe.js} +2 -2
  117. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bgvdt1Y0.js +8 -0
  118. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DZZeiAPr.js → timeline-definition-Z64GVDOM-HmPaSPOK.js} +1 -1
  119. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-t4O91cZU.js → vennDiagram-T6HMQDX7-VA2VBbez.js} +1 -1
  120. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-CV5qGHZu.js → wardleyDiagram-T6FBY63Y-BxjiBPZa.js} +1 -1
  121. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DyXbytUI.js → xychartDiagram-ELKLHX3M--hUY-qFj.js} +1 -1
  122. package/dist/worker/console/static/index.html +2 -2
  123. package/dist/worker/console/static/pets/ember/pet.json +167 -0
  124. package/dist/worker/console/static/pets/ember/spritesheet.png +0 -0
  125. package/dist/worker/console/static-src/operator-chat/details-rail-surfaces.js +4 -3
  126. package/dist/worker/console/static-src/operator-chat/open-preview-in-browser.js +57 -9
  127. package/dist/worker/console/static-src/operator-chat/use-stat-dialog.js +95 -0
  128. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +6 -0
  129. package/dist/worker/console/workspace-context.js +15 -0
  130. package/dist/worker/console/workspace-initialization.js +25 -16
  131. package/dist/worker/delivery/package.js +4 -1
  132. package/dist/worker/materialize/harness-task-lineage.js +4 -2
  133. package/dist/worker/observe/static/console-theme.css +33 -29
  134. package/dist/worker/observe/static/operator-chrome.js +1 -42
  135. package/dist/workflows/dag/backend-test-case-coverage-analysis.js +3 -1
  136. package/dist/workflows/dag/backend-test-layout.js +27 -7
  137. package/dist/workflows/dag/backend-test-markdown-workflow.js +3 -1
  138. package/dist/workflows/dag/backend-test-pytest-collection.js +4 -1
  139. package/dist/workflows/dag/final-verification.js +45 -10
  140. package/dist/workflows/dag/frontend-test-case-checklist.js +12 -3
  141. package/dist/workflows/dag/frontend-test-environment-probe.js +0 -2
  142. package/dist/workflows/dag/frontend-test-layout.js +41 -12
  143. package/dist/workflows/dag/hybrid/sources.js +35 -16
  144. package/dist/workflows/dag/hybrid/templates/backend-test.js +70 -55
  145. package/dist/workflows/dag/hybrid/templates/frontend-test.js +62 -41
  146. package/dist/workflows/dag/hybrid/templates/kg-bootstrap.js +6 -6
  147. package/dist/workflows/dag/hybrid/templates/knowledge-sync.js +5 -5
  148. package/dist/workflows/dag/skill-instructions.js +102 -32
  149. package/dist/workflows/dag/skill-snapshot.js +3 -0
  150. package/dist/workflows/dag/skills.js +7 -7
  151. package/dist/workflows/dag/test-artifact-namespace.js +73 -0
  152. package/dist/workflows/dag/validate.js +24 -5
  153. package/dist/workflows/dag/workspace-checkpoint.js +13 -1
  154. package/docs/architecture/runtime-boundaries.md +28 -22
  155. package/docs/init-surface.manifest.json +43 -295
  156. package/docs/templates/README.md +4 -4
  157. package/docs/templates/agent-dag.base.json +9 -9
  158. package/docs/templates/agent-dag.final-verification.json +6 -6
  159. package/docs/templates/agent-dag.supervised-implementation.json +12 -12
  160. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +3 -3
  161. package/docs/templates/backend-test-dag.json +708 -708
  162. package/docs/templates/backend-test-dag.review-cases.prompt.md +3 -3
  163. package/docs/templates/frontend-implementation-dag.json +2 -2
  164. package/docs/templates/frontend-test-case-checklist.md +2 -2
  165. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +7 -7
  166. package/docs/templates/frontend-test-dag.json +48 -39
  167. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +2 -2
  168. package/docs/templates/frontend-test-dag.retrospect.prompt.md +1 -1
  169. package/docs/templates/frontend-test-dag.review-cases.prompt.md +1 -1
  170. package/docs/templates/hybrid-dag.json +9 -9
  171. package/docs/templates/knowledge-sync-dag.json +8 -8
  172. package/package.json +12 -3
  173. package/resource-catalog.v1.json +1973 -0
  174. package/resources/agent-bridge/loop-agent/SKILL.md +40 -0
  175. package/resources/init-history/legacy-surface.v1.json +33 -0
  176. package/skills/fe-test-ui-scout/SKILL.md +4 -4
  177. package/skills/fe-test-ui-scout/references/ledger-schema.md +1 -1
  178. package/skills/init-update/SKILL.md +34 -0
  179. package/skills/init-update/agents/openai.yaml +6 -0
  180. package/skills/playwright-cli/SKILL.md +1 -1
  181. package/skills/playwright-cli-case-generator/SKILL.md +4 -4
  182. package/dist/worker/console/static/assets/channel-CyBY_yGk.js +0 -1
  183. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D5lN4E_E.js +0 -1
  184. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D5lN4E_E.js +0 -1
  185. package/dist/worker/console/static/assets/index-B28Onmfy.css +0 -1
  186. package/dist/worker/console/static/assets/index-CTMZsDmh.js +0 -486
  187. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BsWhs8O7.js +0 -1
  188. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CJcioYGH.js +0 -8
@@ -1,284 +1,27 @@
1
1
  {
2
- "version": 1,
3
- "description": "Machine-checked contract for files that must remain available through npm packaging and target-project initialization.",
2
+ "version": 2,
3
+ "description": "Machine-checked contract for package resources and the minimal target-project initialization surface.",
4
+ "resourceCatalog": "resource-catalog.v1.json",
4
5
  "packageRequired": [
5
6
  "AGENTS.md",
6
7
  "CHANGELOG.md",
7
8
  "README.md",
8
9
  "harness.json",
9
10
  "bin/loop-agent.js",
10
- "docs/README.md",
11
- "docs/governance/harness-methodology-tdd.md",
12
- "docs/governance/harness-methodology-verification.md",
13
- "docs/governance/harness-methodology-debugging.md",
14
- "docs/operations/local-development-environment.md",
11
+ "bin/agent-worker.js",
15
12
  "docs/init-surface.manifest.json",
16
13
  "docs/architecture/runtime-boundaries.md",
17
- "docs/architecture/README.md",
18
- "docs/architecture/system-overview.md",
19
- "docs/architecture/dag-execution.md",
20
- "docs/architecture/worker-and-feature.md",
21
- "docs/architecture/facts-and-state.md",
22
- "docs/architecture/evolution.md",
23
- "docs/skills/README.md",
24
- "docs/skills/vetted-skill-registry.md",
25
- "docs/templates/README.md",
26
- "docs/templates/init-managed-agents.md",
27
- "docs/templates/init-evolution-review.md",
28
- "docs/templates/exec-plan.md",
29
- "docs/templates/production-readiness-checklist.md",
30
- "docs/templates/frontend-task-requirement.md",
31
- "docs/templates/frontend-task-constraints.md",
32
- "docs/templates/frontend-design-contract.md",
33
- "docs/templates/frontend-implementation-contract.schema.json",
34
- "docs/templates/worker-dogfood-setup.md",
35
- "docs/templates/worker-dogfood-evidence.md",
36
14
  "docs/templates/harness.schema.json",
37
- "docs/templates/spec-registry.schema.json",
38
- "docs/templates/interactive-ui-round2-experiment.md",
39
- "docs/templates/product-line/README.md",
40
- "docs/templates/product-line/AGENTS.md",
41
- "docs/templates/product-line/requirement.md",
42
- "docs/templates/product-line/acceptance.yaml",
43
- "docs/templates/product-line/design.md",
44
- "docs/templates/product-line/test-plan.md",
45
- "docs/templates/product-line/task-graph.yaml",
46
- "docs/templates/product-line/task.yaml",
47
- "docs/templates/product-line/feature.yaml",
48
- "docs/templates/product-line/closeout.yaml",
49
- "docs/templates/product-line/links.md",
50
- "scripts/kb-bootstrap-init-skeleton.sh",
51
- "scripts/kb-query.mjs",
52
- "scripts/kb-graph-materialize.mjs",
53
- "scripts/kb-graph-promote.mjs",
54
- "scripts/kb-graph-incremental-prepare.mjs",
55
- "scripts/next-info.mjs",
56
- "scripts/next-publish-gate.mjs",
57
- "scripts/release-source-binding.mjs",
58
- "docs/templates/agent-dag.schema.json",
59
- "examples/example-dag.json",
15
+ "resource-catalog.v1.json",
16
+ "resources/agent-bridge/loop-agent/SKILL.md",
60
17
  "skills/agent-worker/SKILL.md",
61
- "skills/agent-worker/references/agent-worker-operator.md",
62
- "skills/loop-agent/SKILL.md",
63
- "skills/loop-agent/references/command-reference.md",
64
- "skills/loop-agent/references/hybrid-dag.md",
65
- "skills/loop-agent/references/source-and-plan-practice.md",
66
- "skills/loop-agent/references/docs-converge.md",
67
- "skills/ai-engineering-context/SKILL.md",
68
- "skills/verification-before-completion/SKILL.md",
69
- "skills/systematic-debugging/SKILL.md",
70
- "skills/requesting-code-review/SKILL.md",
71
- "skills/codebase-scout/SKILL.md",
72
- "skills/test-driven-development/SKILL.md",
73
- "skills/code-review-core/SKILL.md",
74
- "skills/init-capability-evolution/SKILL.md",
75
- "skills/grill-with-docs/SKILL.md",
76
- "skills/grill-with-docs/context-format.md",
77
- "skills/grill-with-docs/adr-format.md",
78
- "skills/webapp-testing/SKILL.md",
79
- "skills/playwright-cli/SKILL.md",
80
- "skills/playwright-cli-case-generator/SKILL.md",
81
- "skills/frontend-contract/SKILL.md",
82
- "skills/frontend-contract/references/contract-protocol.md",
83
- "skills/frontend-scout/SKILL.md",
84
- "skills/frontend-scout/references/scout-evidence.md",
85
- "skills/frontend-scout/references/design-evidence.md",
86
- "skills/frontend-plan/SKILL.md",
87
- "skills/frontend-plan/references/decision-contract.md",
88
- "skills/frontend-plan/references/design-decisions.md",
89
- "skills/frontend-bounded-implement/SKILL.md",
90
- "skills/frontend-bounded-implement/references/code-standards.md",
91
- "skills/frontend-design-review/SKILL.md",
92
- "skills/frontend-design-review/references/review-checklist.md",
93
- "skills/frontend-review/SKILL.md",
94
- "skills/frontend-review/references/review-findings.md",
95
- "skills/frontend-verification/SKILL.md",
96
- "skills/frontend-verification/references/verification-checklist.md",
97
- "docs/templates/backend-test-analysis.schema.json",
98
- "docs/templates/backend-test-execution.schema.json",
99
- "docs/templates/backend-test-result.schema.json",
100
- "docs/templates/backend-test-case-manifest.schema.json"
101
- ],
102
- "initFullRequired": [
103
- "README.md",
104
- "AGENTS.md",
105
- ".gitignore",
106
- "harness.json",
107
- "docs/README.md",
108
- "docs/development-principles.md",
109
- "docs/feature-workflow.md",
110
- "docs/verification-matrix.md",
111
- "docs/loop-agent-harness.md",
112
- "docs/spec-registry.json",
113
- "docs/harness-methodology-tdd.md",
114
- "docs/harness-methodology-verification.md",
115
- "docs/harness-methodology-debugging.md",
116
- "docs/templates/README.md",
117
- "docs/templates/init-evolution-review.md",
118
- "docs/templates/production-readiness-checklist.md",
119
- "docs/templates/frontend-task-requirement.md",
120
- "docs/templates/frontend-task-constraints.md",
121
- "docs/templates/frontend-design-contract.md",
122
- "docs/templates/worker-dogfood-setup.md",
123
- "docs/templates/worker-dogfood-evidence.md",
124
- "docs/templates/harness.schema.json",
125
- "docs/templates/interactive-ui-round2-experiment.md",
126
- "docs/templates/product-line/README.md",
127
- "docs/templates/product-line/AGENTS.md",
128
- "docs/templates/product-line/requirement.md",
129
- "docs/templates/product-line/acceptance.yaml",
130
- "docs/templates/product-line/design.md",
131
- "docs/templates/product-line/test-plan.md",
132
- "docs/templates/product-line/task-graph.yaml",
133
- "docs/templates/product-line/task.yaml",
134
- "docs/templates/product-line/feature.yaml",
135
- "docs/templates/product-line/closeout.yaml",
136
- "docs/templates/product-line/links.md",
137
- "scripts/check-skill-entry.sh",
138
- "scripts/check-product-line-docs.sh",
139
- "scripts/check-repo.sh",
140
- "scripts/ci-governance.sh",
141
- "scripts/ci-tests.sh",
142
- "scripts/ci.sh",
143
- ".harness/prompts/analyze.md",
144
- ".harness/tasks",
145
- ".harness/dag-runs/active",
146
- ".agents/skills/agent-worker/SKILL.md",
147
- ".agents/skills/agent-worker/references/agent-worker-operator.md",
148
- ".agents/skills/loop-agent/SKILL.md",
149
- ".agents/skills/loop-agent/references/command-reference.md",
150
- ".agents/skills/loop-agent/references/hybrid-dag.md",
151
- ".agents/skills/loop-agent/references/source-and-plan-practice.md",
152
- ".agents/skills/loop-agent/references/docs-converge.md",
153
- ".agents/skills/ai-engineering-context/SKILL.md",
154
- ".agents/skills/verification-before-completion/SKILL.md",
155
- ".agents/skills/systematic-debugging/SKILL.md",
156
- ".agents/skills/requesting-code-review/SKILL.md",
157
- ".agents/skills/codebase-scout/SKILL.md",
158
- ".agents/skills/test-driven-development/SKILL.md",
159
- ".agents/skills/code-review-core/SKILL.md",
160
- ".agents/skills/init-capability-evolution/SKILL.md",
161
- ".agents/skills/grill-with-docs/SKILL.md",
162
- ".agents/skills/grill-with-docs/context-format.md",
163
- ".agents/skills/grill-with-docs/adr-format.md",
164
- ".agents/skills/webapp-testing/SKILL.md",
165
- ".agents/skills/playwright-cli/SKILL.md",
166
- ".agents/skills/playwright-cli-case-generator/SKILL.md",
167
- ".agents/skills/frontend-contract/SKILL.md",
168
- ".agents/skills/frontend-contract/references/contract-protocol.md",
169
- ".agents/skills/frontend-scout/SKILL.md",
170
- ".agents/skills/frontend-scout/references/scout-evidence.md",
171
- ".agents/skills/frontend-scout/references/design-evidence.md",
172
- ".agents/skills/frontend-plan/SKILL.md",
173
- ".agents/skills/frontend-plan/references/decision-contract.md",
174
- ".agents/skills/frontend-plan/references/design-decisions.md",
175
- ".agents/skills/frontend-bounded-implement/SKILL.md",
176
- ".agents/skills/frontend-bounded-implement/references/code-standards.md",
177
- ".agents/skills/frontend-design-review/SKILL.md",
178
- ".agents/skills/frontend-design-review/references/review-checklist.md",
179
- ".agents/skills/frontend-review/SKILL.md",
180
- ".agents/skills/frontend-review/references/review-findings.md",
181
- ".agents/skills/frontend-verification/SKILL.md",
182
- ".agents/skills/frontend-verification/references/verification-checklist.md",
183
- "docs/templates/backend-test-analysis.schema.json",
184
- "docs/templates/backend-test-execution.schema.json",
185
- "docs/templates/backend-test-result.schema.json",
186
- "docs/templates/backend-test-case-manifest.schema.json",
187
- ".opencode/plugins/loop-agent-transient-retry.js",
188
- ".opencode/plugins/loop-agent-context-overflow-compact.js",
189
- ".pi/extensions/loop-agent-context-overflow.js",
190
- ".pi/settings.json"
18
+ "skills/loop-agent/SKILL.md"
191
19
  ],
192
20
  "initSurface": {
193
- "docs/spec-registry.json": "generated",
194
- "README.md": "managed-block",
195
- "AGENTS.md": "managed-block",
196
21
  ".gitignore": "managed-block",
197
22
  "harness.json": "generated",
198
- "docs/README.md": "generated",
199
- "docs/development-principles.md": "generated",
200
- "docs/feature-workflow.md": "generated",
201
- "docs/verification-matrix.md": "generated",
202
- "docs/loop-agent-harness.md": "generated",
203
- "docs/harness-methodology-tdd.md": "copied",
204
- "docs/harness-methodology-verification.md": "copied",
205
- "docs/harness-methodology-debugging.md": "copied",
206
- "docs/templates/README.md": "copied",
207
- "docs/templates/init-evolution-review.md": "copied",
208
- "docs/templates/production-readiness-checklist.md": "copied",
209
- "docs/templates/frontend-task-requirement.md": "copied",
210
- "docs/templates/frontend-task-constraints.md": "copied",
211
- "docs/templates/frontend-design-contract.md": "copied",
212
- "docs/templates/worker-dogfood-setup.md": "copied",
213
- "docs/templates/worker-dogfood-evidence.md": "copied",
214
- "docs/templates/harness.schema.json": "copied",
215
- "docs/templates/interactive-ui-round2-experiment.md": "copied",
216
- "docs/templates/product-line/README.md": "copied",
217
- "docs/templates/product-line/AGENTS.md": "copied",
218
- "docs/templates/product-line/requirement.md": "copied",
219
- "docs/templates/product-line/acceptance.yaml": "copied",
220
- "docs/templates/product-line/design.md": "copied",
221
- "docs/templates/product-line/test-plan.md": "copied",
222
- "docs/templates/product-line/task-graph.yaml": "copied",
223
- "docs/templates/product-line/task.yaml": "copied",
224
- "docs/templates/product-line/feature.yaml": "copied",
225
- "docs/templates/product-line/closeout.yaml": "copied",
226
- "docs/templates/product-line/links.md": "copied",
227
- "scripts/check-skill-entry.sh": "generated",
228
- "scripts/check-product-line-docs.sh": "generated",
229
- "scripts/check-repo.sh": "generated",
230
- "scripts/ci-governance.sh": "generated",
231
- "scripts/ci-tests.sh": "generated",
232
- "scripts/ci.sh": "generated",
233
- ".harness/prompts/analyze.md": "generated",
234
- ".harness/tasks": "directory",
235
- ".harness/dag-runs/active": "directory",
236
- ".harness/init-surface.json": "state",
237
- ".agents/skills/agent-worker/SKILL.md": "copied",
238
- ".agents/skills/agent-worker/references/agent-worker-operator.md": "copied",
239
23
  ".agents/skills/loop-agent/SKILL.md": "copied",
240
- ".agents/skills/loop-agent/references/command-reference.md": "copied",
241
- ".agents/skills/loop-agent/references/hybrid-dag.md": "copied",
242
- ".agents/skills/loop-agent/references/source-and-plan-practice.md": "copied",
243
- ".agents/skills/loop-agent/references/docs-converge.md": "copied",
244
- ".agents/skills/ai-engineering-context/SKILL.md": "copied",
245
- ".agents/skills/verification-before-completion/SKILL.md": "copied",
246
- ".agents/skills/systematic-debugging/SKILL.md": "copied",
247
- ".agents/skills/requesting-code-review/SKILL.md": "copied",
248
- ".agents/skills/codebase-scout/SKILL.md": "copied",
249
- ".agents/skills/test-driven-development/SKILL.md": "copied",
250
- ".agents/skills/code-review-core/SKILL.md": "copied",
251
- ".agents/skills/init-capability-evolution/SKILL.md": "copied",
252
- ".agents/skills/grill-with-docs/SKILL.md": "copied",
253
- ".agents/skills/grill-with-docs/context-format.md": "copied",
254
- ".agents/skills/grill-with-docs/adr-format.md": "copied",
255
- ".agents/skills/webapp-testing/SKILL.md": "copied",
256
- ".agents/skills/playwright-cli/SKILL.md": "copied",
257
- ".agents/skills/playwright-cli-case-generator/SKILL.md": "copied",
258
- ".agents/skills/frontend-contract/SKILL.md": "copied",
259
- ".agents/skills/frontend-contract/references/contract-protocol.md": "copied",
260
- ".agents/skills/frontend-scout/SKILL.md": "copied",
261
- ".agents/skills/frontend-scout/references/scout-evidence.md": "copied",
262
- ".agents/skills/frontend-scout/references/design-evidence.md": "copied",
263
- ".agents/skills/frontend-plan/SKILL.md": "copied",
264
- ".agents/skills/frontend-plan/references/decision-contract.md": "copied",
265
- ".agents/skills/frontend-plan/references/design-decisions.md": "copied",
266
- ".agents/skills/frontend-bounded-implement/SKILL.md": "copied",
267
- ".agents/skills/frontend-bounded-implement/references/code-standards.md": "copied",
268
- ".agents/skills/frontend-design-review/SKILL.md": "copied",
269
- ".agents/skills/frontend-design-review/references/review-checklist.md": "copied",
270
- ".agents/skills/frontend-review/SKILL.md": "copied",
271
- ".agents/skills/frontend-review/references/review-findings.md": "copied",
272
- ".agents/skills/frontend-verification/SKILL.md": "copied",
273
- ".agents/skills/frontend-verification/references/verification-checklist.md": "copied",
274
- "docs/templates/backend-test-analysis.schema.json": "copied",
275
- "docs/templates/backend-test-execution.schema.json": "copied",
276
- "docs/templates/backend-test-result.schema.json": "copied",
277
- "docs/templates/backend-test-case-manifest.schema.json": "copied",
278
- ".opencode/plugins/loop-agent-transient-retry.js": "generated",
279
- ".opencode/plugins/loop-agent-context-overflow-compact.js": "generated",
280
- ".pi/extensions/loop-agent-context-overflow.js": "generated",
281
- ".pi/settings.json": "generated"
24
+ ".harness/init-surface.json": "state"
282
25
  },
283
26
  "packageExcluded": [
284
27
  "docs/progress/20*.md",
@@ -288,9 +31,18 @@
288
31
  "docs/exec-plans/completed/20*.md"
289
32
  ],
290
33
  "initExcluded": [
291
- "examples/example-dag.json",
292
- "docs/skills/vetted-skill-registry.md",
293
- "docs/templates/init-managed-agents.md"
34
+ "README.md",
35
+ "AGENTS.md",
36
+ "ai_workspace/loop-agent",
37
+ "scripts",
38
+ ".harness/prompts",
39
+ ".harness/tasks",
40
+ ".harness/dag-runs",
41
+ ".agents/skills/agent-worker",
42
+ ".opencode/plugins/loop-agent-transient-retry.js",
43
+ ".opencode/plugins/loop-agent-context-overflow-compact.js",
44
+ ".pi/extensions/loop-agent-context-overflow.js",
45
+ ".pi/settings.json"
294
46
  ],
295
47
  "reviewTriggers": [
296
48
  "AGENTS.md",
@@ -298,19 +50,16 @@
298
50
  "CHANGELOG.md",
299
51
  "harness.json",
300
52
  "package.json",
53
+ "resource-catalog.v1.json",
54
+ "resources/**",
301
55
  "src/commands/init.ts",
302
- "src/commands/init-model-catalog.ts",
303
- "src/commands/client-recovery.ts",
304
56
  "src/commands/init-upgrade.ts",
305
- "src/cli.ts",
306
- "src/cli/update/init-surface-notifier.ts",
307
- "src/cli/update/policy.ts",
308
- "src/cli/update/runtime-activity.ts",
57
+ "src/governance/project-config.ts",
58
+ "src/governance/project-capability-scanner.ts",
59
+ "src/governance/resource-catalog.ts",
309
60
  "src/workflows/dag/skills.ts",
310
- "src/workflows/dag/init-hybrid.ts",
311
61
  "src/workflows/dag/skill-instructions.ts",
312
62
  "docs/templates/**",
313
- "docs/skills/**",
314
63
  "skills/**",
315
64
  "scripts/**"
316
65
  ],
@@ -322,25 +71,23 @@
322
71
  "name": "model-review",
323
72
  "severity": "high",
324
73
  "strictRequiresReport": true,
325
- "description": "Changes that may alter target-project initialization behavior, default DAG role skills, skill resolution, or package/init contracts.",
74
+ "description": "Changes that may alter minimal initialization, migration ownership, normalized project context, package resources, or DAG Skill resolution.",
326
75
  "patterns": [
327
76
  "src/commands/init.ts",
328
- "src/commands/init-model-catalog.ts",
329
- "src/commands/client-recovery.ts",
330
77
  "src/commands/init-upgrade.ts",
331
- "src/cli.ts",
332
78
  "src/cli/update/init-surface-notifier.ts",
333
79
  "src/cli/update/policy.ts",
334
- "src/cli/update/runtime-activity.ts",
80
+ "src/shared/runtime-activity.ts",
81
+ "src/governance/project-config.ts",
82
+ "src/governance/project-capability-scanner.ts",
83
+ "src/governance/resource-catalog.ts",
335
84
  "src/workflows/dag/skills.ts",
336
- "src/workflows/dag/init-hybrid.ts",
337
85
  "src/workflows/dag/skill-instructions.ts",
338
- "src/workflows/dag/prompt.ts",
339
- "src/workflows/dag/node-execution.ts",
340
86
  "docs/init-surface.manifest.json",
87
+ "resource-catalog.v1.json",
88
+ "resources/**",
341
89
  "package.json",
342
90
  "harness.json",
343
- "AGENTS.md",
344
91
  "README.md"
345
92
  ]
346
93
  },
@@ -348,20 +95,22 @@
348
95
  "name": "surface-check",
349
96
  "severity": "medium",
350
97
  "strictRequiresReport": false,
351
- "description": "Asset surface changes that usually need deterministic package/init smoke checks but not a model review when the checks pass.",
98
+ "description": "Package resource and bridge changes that require deterministic catalog, package, and minimal-init checks.",
352
99
  "patterns": [
353
100
  "skills/**",
354
101
  "docs/templates/**",
355
- "docs/skills/**",
102
+ "resources/**",
103
+ "resource-catalog.v1.json",
356
104
  "scripts/check-init-surface.sh",
357
- "scripts/check-repo.sh"
105
+ "scripts/check-skill-entry.sh",
106
+ "scripts/generate-resource-catalog.mjs"
358
107
  ]
359
108
  },
360
109
  {
361
110
  "name": "advisory",
362
111
  "severity": "low",
363
112
  "strictRequiresReport": false,
364
- "description": "Documentation and user-facing guidance changes that should be considered but should not slow normal iteration.",
113
+ "description": "User-facing guidance changes that should be reviewed without slowing normal iteration.",
365
114
  "patterns": [
366
115
  "CHANGELOG.md",
367
116
  "CHANGELOG/**",
@@ -372,12 +121,11 @@
372
121
  }
373
122
  ],
374
123
  "modelReviewQuestions": [
375
- "Does this change alter files or guidance produced by loop-agent init --profile full --merge?",
376
- "Does a new or changed skill need to be bundled, projected to target projects, or documented as optional only?",
377
- "Do target-project AGENTS.md, README managed blocks, governance docs, templates, or script matrix need updates?",
378
- "Does package.json files include every static asset required by the runtime and init projection?",
379
- "Does docs/init-surface.manifest.json still match the intended package and init surface?",
380
- "Do older initialized target projects need a migration note, manual copy guidance, or future init audit/update support?"
124
+ "Does this change alter the four-file minimal init surface or old-project migration ownership?",
125
+ "Does a runtime resource belong in the package catalog instead of the target project?",
126
+ "Can a project or user Skill shadow a builtin Skill, or can resume observe live package drift?",
127
+ "Can tracked project verification be removed or weakened by local harness settings?",
128
+ "Do package files, the resource catalog, and the init manifest describe the same shipped bytes?"
381
129
  ]
382
130
  }
383
131
  }
@@ -42,15 +42,15 @@
42
42
  - `frontend-test-dag.json` — frontend-test DAG 模板;其 deterministic checklist 会拒绝 alternative executable instructions,仅允许 allowlisted `playwright-cli` command。Pi generator/reviser 的 runtime writeSet 仅授权下列目标项目生成路径(不是本仓库文档索引目标):
43
43
 
44
44
  ~~~text
45
- testcase/frontend/cases/FE-*.md
46
- testcase/frontend/cases/index.md
47
- testcase/frontend/cases/manifest.draft.json
45
+ .harness/testcase/frontend/cases/FE-*.md
46
+ .harness/testcase/frontend/cases/index.md
47
+ .harness/testcase/frontend/cases/manifest.draft.json
48
48
  ~~~
49
49
 
50
50
  Pi writer writeSet 不包含 final manifest(文件名 manifest.json)。依赖 checklist 的 exclusive shell materializer 是 final manifest 的唯一写入者,以 temp+rename 原子生成 final,后续 map 只消费该 materializer 输出。
51
51
  - `frontend-test-dag.retrieve-context.prompt.md`、`frontend-test-dag.generate-cases.prompt.md`、`frontend-test-dag.review-cases.prompt.md`、`frontend-test-dag.review-execution.prompt.md`、`frontend-test-dag.retrospect.prompt.md` — 上下文、用例、审查、执行审查和复盘提示。
52
52
  - `frontend-test-case-checklist.md` — 前端测试用例检查清单。
53
- - `frontend-test-standard-scenarios.v1.json` — frontend-test 标准场景规范(generate 覆盖 must 场景;运行时可物化到目标项目 testcase/frontend/rag 下的 standard-scenarios.v1.json)。
53
+ - `frontend-test-standard-scenarios.v1.json` — frontend-test 标准场景规范(generate 覆盖 must 场景;运行时可物化到目标项目 .harness/testcase/frontend/rag 下的 standard-scenarios.v1.json)。
54
54
 
55
55
  ## 知识同步与配置
56
56
 
@@ -30,30 +30,30 @@
30
30
  "executor": "pi",
31
31
  "contextProfile": "slim",
32
32
  "skills": [
33
- "ai-engineering-context"
33
+ "builtin:ai-engineering-context"
34
34
  ],
35
35
  "writePolicy": "read-only"
36
36
  },
37
37
  "skillsByRole": {
38
38
  "planner": [
39
- "loop-agent"
39
+ "builtin:loop-agent"
40
40
  ],
41
41
  "scout": [
42
- "ai-engineering-context"
42
+ "builtin:ai-engineering-context"
43
43
  ],
44
44
  "implementer": [
45
- "verification-before-completion"
45
+ "builtin:verification-before-completion"
46
46
  ],
47
47
  "reviewer": [
48
- "requesting-code-review"
48
+ "builtin:requesting-code-review"
49
49
  ],
50
50
  "verifier": [
51
- "verification-before-completion",
52
- "systematic-debugging"
51
+ "builtin:verification-before-completion",
52
+ "builtin:systematic-debugging"
53
53
  ],
54
54
  "closeout": [
55
- "loop-agent",
56
- "verification-before-completion"
55
+ "builtin:loop-agent",
56
+ "builtin:verification-before-completion"
57
57
  ]
58
58
  },
59
59
  "executorModels": {
@@ -8,7 +8,7 @@
8
8
  "static-invariant-shell uses task-scoped constraints only",
9
9
  "changeset-impact-shell can skip with an explicit reason when the repo has no changesets/release impact",
10
10
  "closeout-artifact-shell runs before final-verify-shell",
11
- "final-verify-shell uses repo manifest or task-provided commands without host-specific wrappers"
11
+ "final-verify-shell uses Task Contract, normalized project verification, or bounded capability-scan commands without host-specific wrappers"
12
12
  ],
13
13
  "globalConstraints": [
14
14
  "Do not implement Project Policy Gate",
@@ -21,7 +21,7 @@
21
21
  "contextProfile": "slim",
22
22
  "writePolicy": "read-only",
23
23
  "skills": [
24
- "ai-engineering-context"
24
+ "builtin:ai-engineering-context"
25
25
  ]
26
26
  },
27
27
  "executorModels": {
@@ -33,11 +33,11 @@
33
33
  },
34
34
  "skillsByRole": {
35
35
  "verifier": [
36
- "verification-before-completion"
36
+ "builtin:verification-before-completion"
37
37
  ],
38
38
  "closeout": [
39
- "loop-agent",
40
- "verification-before-completion"
39
+ "builtin:loop-agent",
40
+ "builtin:verification-before-completion"
41
41
  ]
42
42
  },
43
43
  "tasks": [
@@ -158,7 +158,7 @@
158
158
  ],
159
159
  "shell": {
160
160
  "commands": [
161
- "CHECK_REPO=$(node -e 'const fs=require(\"fs\"); const manifest=JSON.parse(fs.readFileSync(\"harness.json\",\"utf8\")); process.stdout.write((manifest.scripts&&manifest.scripts.checkRepo)||\"scripts/check-repo.sh\");'); HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash \"$CHECK_REPO\""
161
+ "REPLACE_WITH_PROJECT_VERIFICATION_COMMAND"
162
162
  ]
163
163
  },
164
164
  "outputContract": "Final verification evidence captured after closeout artifact creation.",
@@ -50,35 +50,35 @@
50
50
  "executor": "pi",
51
51
  "contextProfile": "slim",
52
52
  "skills": [
53
- "ai-engineering-context"
53
+ "builtin:ai-engineering-context"
54
54
  ],
55
55
  "writePolicy": "read-only"
56
56
  },
57
57
  "skillsByRole": {
58
58
  "planner": [
59
- "loop-agent"
59
+ "builtin:loop-agent"
60
60
  ],
61
61
  "scout": [
62
- "ai-engineering-context"
62
+ "builtin:ai-engineering-context"
63
63
  ],
64
64
  "implementer": [
65
- "verification-before-completion"
65
+ "builtin:verification-before-completion"
66
66
  ],
67
67
  "reviewer": [
68
- "requesting-code-review",
69
- "verification-before-completion"
68
+ "builtin:requesting-code-review",
69
+ "builtin:verification-before-completion"
70
70
  ],
71
71
  "supervisor": [
72
- "verification-before-completion",
73
- "loop-agent"
72
+ "builtin:verification-before-completion",
73
+ "builtin:loop-agent"
74
74
  ],
75
75
  "verifier": [
76
- "verification-before-completion",
77
- "systematic-debugging"
76
+ "builtin:verification-before-completion",
77
+ "builtin:systematic-debugging"
78
78
  ],
79
79
  "closeout": [
80
- "loop-agent",
81
- "verification-before-completion"
80
+ "builtin:loop-agent",
81
+ "builtin:verification-before-completion"
82
82
  ]
83
83
  },
84
84
  "executorModels": {
@@ -6,9 +6,9 @@
6
6
 
7
7
  ## 当前合同
8
8
 
9
- - 输入:最终 `testcase/md/**`、run-owned 环境报告与 Markdown 校验报告,以及有界的 pytest config / `conftest.py`。
9
+ - 输入:最终 `.harness/testcase/md/**`、run-owned 环境报告与 Markdown 校验报告,以及有界的 pytest config / `conftest.py`。
10
10
  - 禁止重新读取 `source/**`、新增测试场景、重新分配 AC、执行 pytest、修改生产代码/配置或输出业务 JSON。
11
- - 写入范围:`testcase/**/test_*.py`、`testcase/**/helpers/**`、`testcase/**/factories/**`。
11
+ - 写入范围:`.harness/testcase/**/test_*.py`、`.harness/testcase/**/helpers/**`、`.harness/testcase/**/factories/**`。
12
12
  - pytest 可以使用模块级 `test_*` 函数,也可以使用 pytest 测试类中的 `test_*` 方法;不得为了追溯强迫目标项目放弃现有 class-based 风格。
13
13
  - 每个最终 Markdown Case ID 必须出现在至少一个真实测试函数/方法区域中,优先同时出现在函数/方法名和 docstring:
14
14
 
@@ -26,7 +26,7 @@ class TestOrderApi:
26
26
  - 禁止 `skip` / `xfail`、吞断言、宽异常静默通过、mock 替代真实目标、删除用例或弱化断言。
27
27
  - best-effort 清理只能捕获所选 HTTP client 实际抛出的窄 transport exception,例如 `requests.RequestException` 或 `urllib.error.URLError`;禁止 `except:`、`except Exception`、`except BaseException` 后 `pass`。
28
28
  - 同一 Case ID 可以由多个 pytest 函数覆盖;额外映射会进入 traceability 报告,但不能伪造未在 Markdown 中定义的业务场景。
29
- - 生成 pytest 文件名必须与 Markdown 模块一一对应:`testcase/md/<module>.md` → `testcase/test_<module>.py`(`<module>` 为文件名去 `.md` 后小写、非字母数字转 `_`)。即使 Markdown `自动化映射` 写了别的路径,也必须写模块 stem 路径,不得额外发明 `test_be_*` 前缀。
29
+ - 生成 pytest 文件名必须与 Markdown 模块一一对应:`.harness/testcase/md/<module>.md` → `.harness/testcase/test_<module>.py`(`<module>` 为文件名去 `.md` 后小写、非字母数字转 `_`)。即使 Markdown `自动化映射` 写了别的路径,也必须写模块 stem 路径,不得额外发明 `test_be_*` 前缀。
30
30
  - 测试失败必须诚实保留,后续节点只执行一次 pytest,并从同一 pytest-html 报告生成 HTML/facts。
31
31
 
32
32
  ## 推荐输出