Repository navigation
feat(tasks): enforce dependencies and persist scoped collaboration context - #622
Merged
PeterGuy326 merged 2 commits intoOct 21, 2026
Conversation
Bindy-lbb
marked this pull request as ready for review
October 21, 2026 02:54
PeterGuy326
merged commit Oct 21, 2026
f1fe7c3
into
feat/619-project-task-briefings
10 checks passed
Bindy-lbb
added a commit
that referenced
this pull request
Oct 21, 2026
…cies (#620) Save the exact server-owned project task requirements and scoped collaboration snapshot used for execution. Add explicit collaborator responsibilities, validated task dependencies, authoritative human-acceptance readiness, source navigation and current-vs-execution review. Includes the phase-three changes from #622. Preserves the relay foundation merged in #618 and current main changes. Closes #619. Closes #621.
8 of 12 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Project tasks can now declare collaborators with responsibilities and direct predecessor tasks. Run stays blocked until each executed predecessor has current human acceptance (or an explicitly completed manual predecessor). Every launch saves the exact scoped collaboration data supplied to the employee; later updates remain visible separately during review.
Closes #621. Stacked on #620, base
feat/619-project-task-briefings; #618 → #620 → this PR is the merge order. Retarget after the preceding PR merges. This diff contains phase three only.Changes and acceptance
participantsanddependsOnon project work items: max eight of each, explicit contributor/reviewer responsibility, existing employees, no duplicate primary assignee, same-project references, no self edges/cycles. The complete merged graph validates under the goal edit lock. Older writers preserve omitted relationships; explicit empty arrays clear them. Referenced tasks cannot disappear silently.task-briefing.v1payload includes optionaltask-collaboration.v1: explicit collaborators, direct upstream state and filtered public deliveries with source IDs/digests/acceptance facts, plus bounded downstream references. No private history or implicit employee dispatch. Dependency excerpts are labeled untrusted data. Eight dependencies, 2-KiB excerpts and eight downstream references with explicit omission count stay within the existing 48-KiB required briefing / 64-KiB context / 256-KiB input budgets. Dependency sources share and deduplicate the existing 12-source allowance.Scope: executable project work items. Phase 2b reviewer dispatch, live negotiation (#452), automatic scheduling and other task stores are separate work. Recording a reviewer does not run them or grant acceptance authority.
Validation ledger
git diff --checkpassed.Local checks use Node 22.23.2 (supported by this repository); GitHub CI uses Node 24. Reproducible required stages are
npm run check; local server checks use the isolated environment below because this shared root container has a narrow ephemeral-port range and DAC overrides. No host sysctls or production/test assertions were changed to accommodate it:unshare --net sh -c 'ip link set lo up && setpriv --bounding-set=-dac_override,-dac_read_search node --test --test-concurrency=2 --test-timeout=120000 apps/server/dist/test/*.test.js'Behavior coverage includes API/DAG rejection, old-writer omission/explicit clearing, authoritative readiness, no group/bare bypass, failed evidence reads, running/saved/injected equality, restart, newer upstream attempt blocking retry, excerpt privacy/digest checks, shared source dedup/budgets, editor persistence, source navigation, immutable-vs-current review, events and reconnect. No coverage percentage is claimed.
Browser QA
Browser plugin unavailable; used installed Playwright/Chromium with real project components and real local HTTP/SSE control-plane routes plus a deterministic driver at 1440×1050 and 480×900. Passed edit responsibilities/dependencies → complete upstream (still blocked) → human accept (unlocks via SSE) → run downstream → verify saved payload equals actual model input → navigate exact source → disconnect/reconnect after newer failed upstream → reject API bypass → inspect original/current context during human review. Exactly the two explicitly launched employees ran; recording the reviewer triggered no execution. Narrow drawer content and scroll widths both 456 px, no horizontal overflow. No unexpected browser errors; one expected 409 and the pre-existing Ant Drawer width-deprecation warning. Screenshots captured and visually inspected for desktop/narrow editor, source conversation and changed-context review. Repeated the complete browser flow against final Vite 6.4.4 after correcting the task form's inherited checkbox-label layout; passed again. This verifies product flow, not live-provider output quality.
Compatibility and rollback
Deploy matching server/renderer/IPC. Current readers retain legacy records with no collaboration snapshot; execution-time snapshots never refresh silently. Older strict readers may reject newly extended records: use pre-upgrade backups or separate workspaces when downgrading rather than deleting history. Revert code to roll back. Filtering is best-effort; digests establish consistency, not authenticity or human approval. Independent review and passing required CI are needed before merge.
Review handoff: notified 胡奕舟 on DingTalk with the PR, dependency order, review focus and validation ledger; the send-status API confirmed
SUCCESS. Independent approval remains outstanding.