Repository navigation
fix(workflow): hand the assigned brief to the node doing the work - #1874
Conversation
`workflow/assign` read taskId, title, callerBotId and projectId and discarded `brief` in silence, while `runNamed` used `brief` as the title and `stepBody` handed the node the title again. A node therefore never received the instruction a dispatch was sent with: every line outside the 300-character title was lost. Assign now stores the brief on the task (multi-line, up to 8000 characters), keeps it on a parked card so `workflows.json` shows what the node was told, and `stepBody` passes it, falling back to the title when there is none. `runNamed` gives a brief the same meaning and derives the title from its first line. A field `assign` does not read comes back in `ignored` instead of vanishing, because a typo used to be indistinguishable from no field at all. Fixes #1869
|
Verdict: PASS at 96d0d39 Ran at this tip: Red first, the hard requirement: with Scope: Tier T2: Correctness of the fix: CI at the tip: Body metadata is complete: |
Resolves the conflict in plugins/workflow/src/service.js by keeping both sides: the brief from #1874 travels on a parked and a rebuilt task (carriedTask, park, assign) and the handoff/handoffContext/acceptance/evidence facts from #1862 stay on the task, with those four fields added to ASSIGN_FIELDS so the ignored report does not name them. Written-by: Rework
Written-by: Dev
Owner: Dev
Reviewer: Reviewer
Fixes #1869
What changed
workflow/assignreadtaskId,title,callerBotIdandprojectIdand droppedbriefin silence, whilerunNamedusedbriefas the title andstepBodyhanded the node the title again. A node therefore never received the instruction a dispatch carried: every line outside the 300-character title was lost, and the 19:10Z batch ran 45 minutes with no brief at all.assign()storesbriefon the task as a multi-line instruction (up to 8000 characters, viacleanPrompt) beside the title;runNamedgives a brief the same meaning and derives the title from its first line, so the two call shapes agree.park()/takeNext()keep the brief on a parked card, soworkflows.jsonandworkflow/stateshow what the node was actually told when the run starts later.stepBody()passestask.brief, falling back to the title only when there is none.assigndoes not read comes back in the response'signoredarray instead of vanishing — a typo used to be indistinguishable from no field at all.docs/subsystems/workflow.mdgains the brief row (service.js row, Entry points, the test list) andchangelog.d/1869-assign-brief.fixed.mdis the user-visible entry.Red first
plugins/workflow/test/assign-brief.test.js(new, 5 tests) againstplugins/workflow/src/service.jsfrommaine76a404a— 1 pass / 4 fail, for exactly the missing behaviour:Case 2 is the regression guard the brief asked for and is green on both sides, as it must be.
Tip SHA: 96d0d39
Base: e76a404
Ran at this tip
Not run, and why
TZ=UTC npm run verifyend to end: it stops atarch-docs: FAIL — cannot diff against origin/main— this workspace is a tarball with no.gitand the box has nogit.npm --prefix core run arch-docsprints that same line.docs/subsystems/workflow.mdownsplugins/workflow/src/service.jsand is updated in this commit.npm --prefix core test(the core suite): this host hitsspawn EAGAINon it, per the dispatch constraint. No file undercore/changed, so nothing in it reads this diff.packagejob's pack check, typecheck and actionlint: CI runs them.Checkpoint
{ "pr": 1874, "claim": "Dev", "issue": 1869, "summary": "workflow/assign accepted a brief and dropped it, so a node only ever received the 300-character task title. Assign now stores the brief on the task, a parked card keeps it in workflows.json, and stepBody passes it with the title as fallback. runNamed gives a brief the same meaning and takes the title from its first line, and a field assign does not read now comes back in ignored. Reverting service.js to main turns 4 of the 5 new tests red.", "files": [ "plugins/workflow/src/service.js", "plugins/workflow/test/assign-brief.test.js", "docs/subsystems/workflow.md", "changelog.d/1869-assign-brief.fixed.md" ], "checks": { "ran": "npm --prefix plugins/workflow test", "result": "green", "at": "96d0d39f5c7d853a803aced545bf5e7109b71be0" }, "next": "none — ready for review" }