Repository navigation
Conversation
|
Written-by: Delivery-1 Requesting the Verdict at What changed: Red first, on a clean
The two controls (an edge-side space, which After the fix: that suite Gates at this tip, verbatim:
Also green at this tip: The two |
The edge alignment check compared the edge's canonical artifact against the raw node `inputs`/`outputs` with `Array.prototype.includes`, so `text: draft` on a node and `text:draft` on its edge were refused as `edge/misaligned` even though `producersOf`, `consumersOf`, `dependencyEdges` and `enterNode` all key that fact by its canonical spec and the definition runs. Read both lists through `canonicalSpec`, the way the rest of the engine does. Fixes ThinkFlowLab#2425 Docs-not-needed: no owned path or contract changes; the check now agrees with the rule the module already documents (ThinkFlowLab#1291 debt).
Fixes #2425
Owner: Dev-4
Reviewer: Birfy
Written-by: Dev-4
Base: 90a5944
Risk tier: T3
What changed
validateWorkflowcompared the edge's canonical artifact (splitEndpointreturnsformatArtifactSpec) against the node's rawinputs/outputsarrays withArray.prototype.includes. Every other producer/consumer rule incore/src/shared/workflow.js(producersOf,consumersOf,dependencyEdges,input/without-producer,output/without-consumer, and the declaredinputs/deliverablessets) reads those lists throughcanonicalSpec, so a definition the engine can run was refused asedge/misalignedwhen one fact was spelled with a space on a node and without one on its edge — andworkflow-store.jsturns the first problem intoworkflow/invalid, so the user cannot save it.After: both lists are keyed the way the rest of the engine keys them, so
text: drafton a node andtext:drafton its edge are one fact. A fact the consumer genuinely does not take in is still refused — that direction is asserted as a control.Verification at the tip
Tip SHA: d25ccfc
Ran:
90a594471b5886737b433e116f6397aa8ca2b6f2tree carrying onlycore/test/workflow-edge-canonical-spec.test.js:# tests 4 / # pass 2 / # fail 2— bothedge/misaligned, one for a space on the producer (outputs: ['text: draft']) and one for a space on the consumer (inputs: ['text: draft']); the two controls (an edge-side space, and a fact the consumer does not take in) passed on the base by design.# tests 4 / # pass 4 / # fail 0TZ=UTC node --import ./test/harness-resolve.mjs --test "test/*.test.js":# tests 2931 / # pass 2931 / # fail 0node scripts/build-client.mjs --check: exit 0 (the module is not in the client bundle, soclient.jsis untouched)node scripts/ds-bot-patches.mjs check:ok ds-bot/ = Fei2411/DeepSeek-Bot@2b10c70 (tree 5834c00, v0.1.5),ok 10 patches apply cleanly in order,ok core/ equals ds-bot/ + patches/ds-bot/node scripts/ds-bot-patches.mjs canonical:ok patches/ds-bot/ is what generate writes (generate is a no-op)npm run lint: 81 warnings, 0 errorsnode .github/scripts/changelog.mjs check:36 fragment(s) in changelog.d/ are well formedARCH_DOCS_BASE=90a59447 node scripts/check-arch-docs.mjs:OK (5 changed file(s))patches/ds-bot/files/src/shared/workflow.jsandpatches/ds-bot/files/test/workflow-edge-canonical-spec.test.jsare whole-file mirrors written bygenerate(the file is new in FlyBot and has no.patchheader); nothing here was edited by hand.Not run: the smoke test (no
index.jsorsrc/hostbehaviour change) and CI itself.Docs-not-needed: no owned path, module or contract changes; the check now agrees with the rule the module already documents (#1291 debt).
Checkpoint
{ "pr": 2530, "claim": "Dev-4", "issue": 2425, "summary": "The edge alignment check compared the edge's canonical artifact against the raw node inputs/outputs with includes, so a definition the engine runs was refused as edge/misaligned when one fact was spelled with a space on a node and without one on its edge. Both lists are now keyed through canonicalSpec, the way producersOf, consumersOf and dependencyEdges already read them. Red first at 90a59447: 2 of 4 new tests failed, one for each side carrying the space; the two controls passed on the base.", "files": [ "core/src/shared/workflow.js", "core/test/workflow-edge-canonical-spec.test.js", "patches/ds-bot/files/src/shared/workflow.js", "patches/ds-bot/files/test/workflow-edge-canonical-spec.test.js", "changelog.d/2425-workflow-edge-canonical-spec.fixed.md" ], "checks": { "ran": "TZ=UTC node --import ./test/harness-resolve.mjs --test \"test/*.test.js\"; node scripts/build-client.mjs --check; node scripts/ds-bot-patches.mjs check; node scripts/ds-bot-patches.mjs canonical; npm run lint", "result": "green", "at": "d25ccfc4021452ffa13b8c012ea1fcf199467cff" }, "next": "ready for the Verdict at d25ccfc4021452ffa13b8c012ea1fcf199467cff" }