Skip to content

Record a group's overall task and per-Bot subtasks - #1100

Merged
Birfy merged 1 commit into
mainfrom
issue-1099-group-task-subtasks
Oct 25, 2026
Merged

Birfy merged 1 commit into
mainfrom
issue-1099-group-task-subtasks

Conversation

@Birfy

@Birfy Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Written-by: Dev

Owner: Dev
Reviewer: Reviewer

Fixes #1099

What changed

A group now has one overall task and a subtask per Bot. The Tasks board nests those subtasks under the overall task in group scope. track_tasks records that plan, names the highest-priority unfinished task to continue, and marks a task waiting when the Bot passes a question. A room that never grew participants still lists its members' tasks.

Before: each Bot had a flat list, a group view was a lane of cards, and a classic room returned no tasks. After: the admin records one overall task and linked subtasks, the board shows that hierarchy, and a blocked question is stored on the task the inbox already shows.

Verification at the tip

Tip SHA: eb4329295911df0b50fa48679dbd3b13e21c146f

Ran:

  • Red at base e109361 (before the fix): node --import ./test/harness-resolve.mjs --test test/bot-tasks.test.js test/prompt.test.js test/kanban.test.js — 4 failed. The tool schema rejected overall / parent / assignee, columnTree was missing, and the prompt had no overall: true.
  • node .github/scripts/changelog.mjs check — 26 fragments well formed.
  • TZ=UTC npm run verify — pass (core lint, plugin lint, build-client.mjs --check, ds-bot-patches.mjs check, core tests, social / tree / timeline tests, .github/scripts tests, interop lint and tests, live-e2e lint and tests).

Not run: the smoke bench (core/dev/bench.sh). This environment has no ../deepseek-harness checkout. The change is task records, the Tasks dialog, and prompt text; turn routing is unchanged.

Open in Web Open in Cursor 

The board only showed a flat list, and a classic room with no participants
array hid every group task. track_tasks now keeps one overall task plus
linked subtasks, continues the highest-priority unfinished task, and asks
when a task is waiting on an answer.

Fixes #1099

Co-authored-by: Danyang Chen <birfychen@gmail.com>
@Birfy Birfy added the agent-pr Pull request opened by an agent label Oct 25, 2026 — with Cursor
@Birfy Birfy self-assigned this Oct 25, 2026

Birfy commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator Author

Verdict: PASS at eb43292
Written-by: Reviewer

Ran:

  • git fetch origin main issue-1099-group-task-subtasks && git rev-parse HEAD && git diff origin/main...HEAD --stat → tip eb43292, unchanged at post time; the stat lists only this pull request's files
  • node .github/scripts/risk-gate.mjs --pr 1100 --repo ThinkFlowLab/FlyBot → pass (report only). risk-tier: T3; basis: core/src/shared/task-board.js=T3, core/src/host/groups.js=T2, core/src/host/prompt.js=T2, core/src/host/tasks.js=T2, core/src/host/tools.js=T2, changelog.d/1099-group-task-subtasks.added.md=T1, core/client.js=T1, core/src/client/i18n.js=T1, core/src/client/kanban.js=T1, core/test/bot-tasks.test.js=T1, +13 more
  • TZ=UTC npm run verify → pass on Node v22.23.4. Core lint (oxlint + arch-docs), plugin lint, build-client.mjs --check, ds-bot-patches.mjs check, core tests 1442 pass, social 476, tree 125, timeline 125, .github/scripts 417, interop 37, live-e2e 16. New tests passed: overall task and per-Bot subtasks, classic room without participants, group column nest.

Not run:

  • Smoke bench (core/dev/bench.sh) — this environment has no ../deepseek-harness checkout. src/host/ changed (tasks, tools, prompt, groups); turn routing was not exercised here.
  • Desktop app, a real-model turn, and a browser pass through the Tasks dialog. The kanban unit test renders the nest and the Part of line.
  • The red run at base e109361. The new tests assert kind group, parentId, columnTree, and overall: true in the prompt, which the base implementation does not provide. That red run is the implementer's claim; I did not repeat it.

Findings:
No actionable defects.

#1099 is met at this tip. A group has one open overall task (kind group) recorded by the room admin or a Main Bot in the group, plus subtasks with parentId. A member cannot record the overall task or assign a subtask. The requester of an assigned subtask stays that Bot's owner, and the classic-room test shows the other owner cannot move the card (task-update returns bot/forbidden). track_tasks with no tasks names the next unfinished task by priority, then in-progress. ask and answer use the existing input wait (waitingFor input), the group board nests same-column children under the overall task and labels a child in another column, and a room with no participants array is listed through deriveParticipants.

liveParticipants follows currentParticipants when participants is an array, including an empty array. When the field is absent, the derived human role is member, so a group read still requires owning room.admin. Remote participants are excluded from assignee. A face-to-face room rejects overall, parent, and assignee.

docs/subsystems/core-host.md and docs/subsystems/core-client.md describe the new behavior. The changelog fragment is present. client.js and patches/ds-bot/ matched the generate check inside verify.

Residual, not a merge block: in one track_tasks call, a subtask whose parent is the overall title returns "No overall task …" until that overall item has already been recorded earlier in the same list. The tested call records the overall task first. A later assign of an existing child by the planning Bot is left unchanged, so the assignee's owner keeps the card.

Security fence / display names:
This diff does not add or strip an untrusted-message or untrusted-file fence. Titles, notes, and ask/answer text go through oneLine (controls and newlines collapsed, 300 characters) before they are stored or returned on the tool. The board renders them as text children, the same path as the existing title and note. Assignee is an exact local Bot name. This is not a fence-escape fix, and it does not add a reconstitution test.

Correction from Reviewer: any earlier cursor[bot] report at this tip is not a conclusion. This Birfy-posted report is the Verifier conclusion for the tip.

This comment is not merge authority. It does not enqueue the pull request.

@Birfy
Birfy added this pull request to the merge queue Oct 25, 2026
@github-actions github-actions Bot added the pass label Oct 25, 2026
Merged via the queue into main with commit b77f744 Oct 25, 2026
12 of 13 checks passed
@Birfy
Birfy deleted the issue-1099-group-task-subtasks branch October 25, 2026 04:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-pr Pull request opened by an agent pass

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Task board drives Bot planning: group overall tasks + per-Bot subtasks

2 participants