ChatWell Gen-5 System atlas
P3

Tasks

THREE SEPARATE QUESTIONS·and two different authorities
ONE TASK · THREE ANSWERS · CHANGING ONE NEVER CHANGES ANOTHER
Lifecycle
Taskone of six states
A task is always in one of six states:
TK-LC-1TK-DIM-1
Assignment
Taskone assignee, or none
The assignee is the person responsible for doing the work.
TK-ASG-1TK-DIM-1
Review
Taska reviewer, chosen per task
The reviewer is chosen for each task.
TK-REV-1TK-DIM-1
TWO AUTHORITIES · moving a task is not choosing who reviews it
Move among active states, or into review
Choose the reviewer entering review
may
may not
may
may
Project AdminTK-MX-1TK-REV-7
may
may
Workspace OwnerTK-MX-1TK-REV-7
may
may
Positions add up; they never cancel each other out.TK-REV-8
If no reviewer is in place and nobody with the authority has named one, the handoff to review does not happen.TK-REV-11
ONE INVARIANT
Assigneeis neverReviewerof the same task
The person a task is assigned to is never the person who reviews it.TK-REV-9
still possibleCreating a task and reviewing it are not in conflict.TK-REV-10

Derived from the published System Guide. Every row cites the claim groups it renders, and every rule on it is quoted from one of them.

ShowFiltering hides nothing permanently; everything is present in the page.

You are in: Tasks. This assumes only the core model (T1).

P3.1Three separate questionsPermalink

TK-WHAT-1A task is one piece of work inside one project.

Everyone who currently has access to the project can see all of its tasks.

Why is this true?
ClaimTK-WHAT-1
CoversWhat a task is
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesGen-5 task implementation specificationTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.1 The frozen matrix — list reads for anyone with project access
lines 596
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§4.2 Client presentation
lines 1039-1045
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.list_active_tasks; 1of4 task.project_id not null
lines 2033; 756-758
TK-DIM-1Every task answers three questions, independently:

what state it is in (its lifecycle), who is responsible for doing it (its assignee), and who checks the result (its reviewer). Changing the answer to one never changes the other two. Independent does not mean unconstrained: the last two answers may not name the same person (P3.4).

Why is this true?
ClaimTK-DIM-1
CoversThree independent questions
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§0 Three independent dimensions
lines 22-37
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§4 assign_task()
lines 538-539
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.assign_task header
lines 1248-1249
TK-DIM-2Assignment is not a state.

There is no "assigned" state, and no step in which an assignee accepts or declines a task.

Why is this true?
ClaimTK-DIM-2
CoversNo assignment state
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§0.1 No assignment status exists; §1.1 Final state list
lines 43-48, 67-71, 98-100
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 task status type replacement
lines 250-257
TK-CRE-1Anyone with access to a project can create a task in it, and every new task starts as Open.

A member may name only themselves as its assignee; the owner or a project admin may name anyone with access to the project. Whoever creates the task may also name its reviewer: anyone with access to the project, except the person they named as its assignee (P3.4).

Why is this true?
ClaimTK-CRE-1
CoversCreating a task
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask operation contractGen-5 task implementation specificationAccepted Gen-5 implementationTask reviewer authority decisionAccepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§1 create_task() — permissions; server does
lines 414-418
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.1 The frozen matrix
lines 585
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.create_task — assignee rule; a named reviewer is validated for identity and project access
lines 258, 270-284
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-02 operation table — create_task(): the resolved reviewer, supplied or defaulted, must not be the supplied assignee; Task creation is unaffected by the first limb because the caller is the Creator
lines 196; 130-134
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§0.3 — a reviewer-selection path that would make the task's current assignee its reviewer is VALIDATION_FAILED, create_task() on the resolved value included
lines 158, 164
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260911102001 public.create_task (last definition) — refuses a resolved reviewer equal to the supplied assignee
lines 298
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-8 create_task refuses assignee = reviewer

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

P3.2LifecyclePermalink

TK-LC-1A task is always in one of six states:

Open, In Progress, Blocked, Ready for Review, Complete, Canceled. The first four are active; Complete and Canceled are finished.

Why is this true?
ClaimTK-LC-1
CoversSix states
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.1 Final state list and UI labels; §4.2 Client presentation ('Rendering a status — its label, pill, colour — remains a client concern.')
lines 67-76, 87-96, 1051-1053
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 task status type
lines 250-257
TK-LC-2What the states mean.

Open: work has not started, or must restart from the beginning. In Progress: being worked on. Blocked: work started, but something prevents it from continuing. Ready for Review: a review stage, not an execution stage — the work awaits review. Complete: finished. Canceled: no longer relevant.

Why is this true?
ClaimTK-LC-2
CoversWhat the states mean
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment model
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.2 Blocked vs Open; §1.3-§1.7 state definitions
lines 102-179
TK-LC-3How a task moves.

A task that is not finished can move to any other state except the one it is already in, and it can enter Ready for Review only with a reviewer (P3.4). A finished task never moves again. A person who moves a task to Blocked, or cancels it, must add a comment.

Why is this true?
ClaimTK-LC-3
CoversHow a task moves
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementationAccepted runtime evidence (Gate-25)Accepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.8 No self-transitions; §1.9 Final transition matrix; §1.11 comment requirements
lines 188-207, 277-288
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.transition_task_status (last definition) — terminal refusal, permission classes, reviewer on entry
lines 442, 503-506, 535-537
runtime-evidenceAccepted runtime evidence (Gate-25)R-G25-R4
ChatWellApp/chatwell-gate25-evidence · R4_EXEC_RESULTS.txt@36f677371437
G25-R4-EXEC — TERMINAL TASK IMMUTABILITY RUNTIME ACCEPTANCE; R4-1 transition_task_status refused with TASK_TERMINAL
lines 1, 25

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-2 assignee-only MAY enter review (lifecycle intact); R3-3 no reviewer resolvable -> REVIEWER_REQUIRED

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

TK-LC-4Who may move it before review.

The owner, a project admin, the task's creator and its assignee can move it between Open, In Progress and Blocked, and send it to review — though someone who is only the assignee sends it to review without choosing who reviews it (P3.4). The owner, a project admin or the creator can mark it Complete or Canceled; being its assignee does not by itself allow this. A person who holds several positions on a task has the powers of all of them — except that assignee and reviewer are never held together (P3.4). In review, see P3.4.

Why is this true?
ClaimTK-LC-4
CoversWho moves it before review
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.9 Permission classes; §6 implementation note (capacities combine)
lines 209-223, 1302-1305
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.1 The frozen matrix
lines 587-590
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.transition_task_status capacity set and classes
lines 495-506
TK-LC-5Finished tasks are frozen and listed as archived.

Complete and Canceled tasks move to the project's archived task list, which ChatWell works out from their state. People with access to the project can still read them; nobody can change them, reassign them or comment on them.

Why is this true?
ClaimTK-LC-5
CoversFinished tasks are frozen
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§4 Archive; §4.0; §3.0 immutability
lines 968-989, 366, 386-388
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§7 Read layer
lines 699-707
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.list_archived_tasks
lines 2104
TK-DEL-1Tasks are not deleted.Partly defined

There is no way to delete a task today. Partly defined.

Why is this true?
ClaimTK-DEL-1
CoversNo task deletion
StateWorks today
CoveragePartly defineda fact about the sources, not a reader label
SourcesAccepted Gen-5 implementationGen-5 task implementation specification
Exact identity
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
no task-delete operation in the chain; 3of4 SECTION 6 — authenticated holds no DELETE
lines 1299-1302
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AK Explicitly deferred items, item 10
lines 4300
TK-DEL-2Not decided. Whether a task can ever be deleted or restored.Not decided
Why is this true?
ClaimTK-DEL-2
CoversWhether deletion will exist
StateNot decided
CoveragePartly defineda fact about the sources, not a reader label
SourcesGen-5 task implementation specificationWorkspace & project lifecycle model
Exact identity
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AK item 10 ('No authority defines delete semantics')
lines 4300
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§1 Workspace status — physical deletion of business history is prohibited through the normal lifecycle
lines 35-37
TK-CONT-1Not decided. Whether a finished task can be continued, or copied into a new task.Not decided
Why is this true?
ClaimTK-CONT-1
CoversContinuing a finished task
StateNot decided
CoverageGapa fact about the sources, not a reader label
SourcesGen-5 task implementation specificationTask lifecycle & assignment model
Exact identity
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AK Explicitly deferred items, item 1 — Continue Task: deferred product decision; no canonical authority defines it
lines 4291
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.7 Continue Task note; §4.0 permitted after archive: read · history · future clone
lines 181-186, 989
FIG-P3-2Six states; finished states have no way outcurrent behaviour only
OpenIn ProgressBlockedReady for ReviewCompleteCanceled
FromToWhat happensMade by
OpenIn Progressstart workperson
OpenBlockedcomment requiredperson
OpenReady for Reviewneeds a reviewer — already on the task, or named on the way in by someone who may choose oneperson
OpenCompletefinishperson
OpenCanceledcomment requiredperson
OpenCanceledthe project is archivedsystem
In ProgressOpenback to the startperson
In ProgressBlockedcomment requiredperson
In ProgressReady for Reviewneeds a reviewer — already on the task, or named on the way in by someone who may choose oneperson
In ProgressCompletefinishperson
In ProgressCanceledcomment requiredperson
In ProgressCanceledthe project is archivedsystem
BlockedOpenback to the startperson
BlockedIn Progressresumeperson
BlockedReady for Reviewneeds a reviewer — already on the task, or named on the way in by someone who may choose oneperson
BlockedCompletefinishperson
BlockedCanceledcomment requiredperson
BlockedCanceledthe project is archivedsystem
Ready for ReviewOpenrestart from the beginningperson
Ready for ReviewIn Progressback to active workperson
Ready for ReviewBlockedback for corrections, comment requiredperson
Ready for ReviewCompleteclose-out by the owner, an admin or the reviewerperson
Ready for ReviewCanceledclose-out by the owner, an admin or the reviewer, comment requiredperson
Ready for ReviewCanceledthe project is archivedsystem
Completeno outgoing move
Canceledno outgoing move

Complete and Canceled have no outgoing move. Who may take each move is set out in TK-LC-4 and TK-REV-4; who may choose the reviewer the move into review requires is a separate question (TK-REV-7). The four archival moves are made by the archive action itself, not by someone moving each task; whom their history entries name as having acted is a Sources disagree question (SD-2, P2.3).

Illustrates TK-LC-1

P3.3AssignmentPermalink

TK-ASG-1The assignee is the person responsible for doing the work.

A task has one assignee or none, and needs none in any state.

Why is this true?
ClaimTK-ASG-1
CoversThe assignee
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§2 Assignment ('optional in every lifecycle status'); §0
lines 292-295, 27
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
1of4 create table public.task — assigned_to_account_id uuid (nullable): one assignee or none
lines 756-763
TK-ASG-2Who may assign.

The owner or a project admin can assign a task to anyone with access to the project, or clear its assignee. A member can make themselves the assignee of a task they created — and nothing more: not someone else, and not clearing it. Whoever assigns, and whatever their standing, the person assigned cannot be the one currently reviewing the task (P3.4).

Why is this true?
ClaimTK-ASG-2
CoversWho may assign
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§2.1 Who may assign
lines 297-302
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§4 assign_task() — input, permissions, validation
lines 532-534
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.assign_task — member: own task, self only; no clearing
lines 1352-1356
TK-ASG-3Only someone with access to the project can be its assignee — and never the person currently reviewing it (P3.4).
Why is this true?
ClaimTK-ASG-3
CoversAssignee needs access
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask operation contractTask reviewer authority decisionAccepted runtime evidence (R1–R4)Accepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§4 assign_task() Validation — the incoming assignee is not the task's current reviewer; Errors gains VALIDATION_FAILED
lines 534, 536
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-02 operation table — assign_task(): the resulting assignee must not be the task's current reviewer; §2.1's assignment authority is unchanged
lines 198
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-10 assign_task refuses assigning the reviewer

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.assign_task; 20260907070001 public.create_task
lines 1370; 263
TK-ASG-4Assigning does not start the work.

Assigning or changing the assignee leaves the state as it is, and moving the task leaves the assignee as it is. Once a task is finished, its assignee no longer changes.

Why is this true?
ClaimTK-ASG-4
CoversAssignment and state are independent
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§0 Three independent dimensions; §2.2 Interaction with lifecycle
lines 35-36, 308-317
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.assign_task — frozen check
lines 1314, 1324-1327

P3.4ReviewPermalink

TK-REV-1The reviewer is chosen for each task.

Being a task's reviewer is a responsibility on that task — not a membership role, and not a rank. It is a different position from the assignee: the assignee does the work, the reviewer checks it, and on any one task those are never the same person (TK-REV-9). Other positions do combine — a reviewer who is also the task's creator has the powers of both.

Why is this true?
ClaimTK-REV-1
CoversReviewer is per task
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelWorkspace & project lifecycle modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§0 (assignee is responsible, reviewer validates); §1.10 (the Creator row — exception still reachable; the Assignee row beside it was superseded in place on 2026-09-11 and its exception is now unreachable); §3.1; §6.3 Review permissions ('a task-level resource permission, not a role')
lines 27-37, 246-247, 416, 1281-1285
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§6.3a Stored role values
lines 545
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 task.reviewer_account_id
lines 307
TK-REV-2A reviewer must have access to the project when chosen, and again at the moment they act.

A recorded reviewer is a record, not a grant: on a finished task, or on any task in an archived project, the reviewer stays as recorded after their access ends, and nothing ever replaces a reviewer on its own. When an owner or admin removes someone who reviews active tasks, they name a replacement as part of the removal — one person for the whole project, and never someone already responsible for one of those tasks (P1.3).

Why is this true?
ClaimTK-REV-2
CoversReviewer access; a record, not a grant
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask reviewer authority decisionTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.0 reviewer on a frozen task is a historical fact, not an access field; §3.1 assignment is not entitlement; §3.5 a departure rule, not a standing invariant, and the removal Trigger; §3.5a automatic reassignment forbidden
lines 393-408, 428-429, 697-704, 815-826, 746-757
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-02 — the invariant adds one constraint on who may be selected; it changes no predicate, revalidates no stored reference and creates no automatic reassignment
lines 348-353
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§5 change_reviewer() Validation; §6A.1 remove_* replace atomically
lines 549, 622-623
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.change_reviewer; 20260905202219 public.remove_project_member; 20260907173509 public.remove_workspace_member — replacement required and written per affected task
lines 1449-1453, 1575; 787-874; 365-465
points toSD-1

Sources disagree. What happens when a reviewer of active tasks leaves on their own — see SD-1 below.

TK-REV-3A task enters Ready for Review only with a reviewer.

Someone who may choose reviewers can name one as part of the handoff; someone who may not — an assignee with no other position on the task — can only send on a task that already has one (TK-REV-7). Whoever that reviewer is, they must have access to the project. Before review, no one switches a task's reviewer directly: it is set when the task is created, or by someone with that authority as the task goes into review, or replaced when an owner or admin removes the reviewer (P1.3).

Why is this true?
ClaimTK-REV-3
CoversEntering review
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask reviewer authority decisionAccepted runtime evidence (R1–R4)Task operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.6 Ready for Review — the transition cannot complete without a selected reviewer; §3.3(a) as amended
lines 144-151, 582-584
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 Entry into review, for an assignee-only actor — permitted where a valid reviewer is already established, which today means one stored on the task and nothing else
lines 118-128
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-2 assignee-only MAY enter review (lifecycle intact)

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§2 transition_task_status() — reviewer present and holding project access; reviewer accepted only on entry to review
lines 458, 478-485
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.transition_task_status — reviewer on entry, current project access checked for the stored or supplied reviewer; 20260905175604 public.change_reviewer requires ready_for_review
lines 533-540, 554; 1563-1566
TK-REV-7Choosing who reviews a task takes its own authority, and doing the work is not it.

Deciding who reviews is a question of what someone is on that task, not of who happens to be moving it along. The task's creator, an admin of the project, and the workspace owner can choose the reviewer — when the task is created, and on its way into review. Once review has begun, changing it belongs to the owner or a project admin alone (TK-REV-5). Being the person the task is assigned to gives nobody that say at any of those moments.

Why is this true?
ClaimTK-REV-7
CoversReviewer selection takes its own authority
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask reviewer authority decisionTask lifecycle & assignment modelTask operation contractGen-5 task implementation specificationAccepted Gen-5 implementationAccepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 — being the Assignee does not by itself permit selecting or establishing a reviewer; the capacities that carry reviewer-selection authority are Creator, Project Admin and the current Workspace Owner through their project capacity; no new capacity and no owner role
lines 82-97
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.3a SUPERSEDED IN PLACE — selecting the reviewer requires a reviewer-selection capacity (Creator · Project Admin · Project Owner); §9.1 Ready for Review entry row; §9.3 Reviewer row
lines 582-584; 1403; 1429
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§2 transition_task_status() — supplying reviewer_account_id on the edge entering Ready for Review additionally requires a reviewer-selection capacity
lines 458
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§G.1 G-10; §P.2a corrected in place — permission to perform the edge is not the selection capacity
lines 560; 1283-1292
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260911102001 public.transition_task_status — an assignee-only caller supplying a reviewer on the into-review edge is refused
lines 566-571
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-1 assignee-only cannot SELECT a reviewer; R3-2 assignee-only MAY enter review (lifecycle intact); R3-4 AN-6 reviewer on a NON-review edge refused

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

TK-REV-8Positions add up; they never cancel each other out.

This is not a rule that assignees can never choose a reviewer. Someone who is both the assignee and the task's creator chooses as its creator; someone who is both the assignee and an admin of the project chooses as an admin. Being the assignee takes nothing away from what another position already allows.

Why is this true?
ClaimTK-REV-8
CoversPositions add up
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask reviewer authority decisionTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementationAccepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 — the rule is capacity-additive and that is the operative half; capacities union and never subtract; this record does not state and must not be read to state that assignees may never select a reviewer; Rejected alternatives — 'Encode assignees may never select a reviewer' rejected as broader than the ruling
lines 99-109; 368-373
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§6 implementation note — express authorization as a union of predicates; a principal holding two capacities receives the wider privilege
lines 1302-1305
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.2 Union of predicates — binding: a principal holding two capacities receives the wider privilege
lines 600-603
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260911102001 — the gate tests not (v_is_owner or v_is_admin or v_is_creator) and never tests whether the caller is the assignee, so another held capacity still selects
lines 50-56; 566-571
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-6 Creator+Assignee MAY select another account; R3-7 Admin+Assignee MAY select another account

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

TK-REV-9The person a task is assigned to is never the person who reviews it.

This is a fact about the task, not about who is acting: it holds however the task got that way, and it binds admins and the owner exactly as it binds everyone else. Both directions are closed — a task's reviewer cannot be set to the person it is assigned to, and a task cannot be assigned to the person reviewing it. It governs every change made from here on; nothing already recorded is rewritten or repaired to satisfy it. A task with nobody assigned to it is not affected: anyone with access to the project can be named its reviewer, including whoever is doing the choosing, and it is the later assignment that must not collide.

Why is this true?
ClaimTK-REV-9
CoversAssignee is never the reviewer
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask reviewer authority decisionTask lifecycle & assignment modelTask operation contractGen-5 task implementation specificationAccepted Gen-5 implementationAccepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-02 — a state invariant on the task, not a rule about callers; it holds whoever acts and in whatever capacity, binds Project Admins too, and binds both directions; unassigned tasks are not constrained; frozen tasks are untouched and no backfill is ordered
lines 141-185
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.6 The assignee and the reviewer are different accounts; §1.10 review-phase Assignee row, exclusion now unconditional
lines 917
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§0.3 — the collision is VALIDATION_FAILED on every path and in both directions, at step 4 of the validation order
lines 158-164
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§G.1 G-11 — validated on the resulting state at §T.1 step 4, in both directions; no CHECK constraint and no trigger
lines 561
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260911102001 — create_task (298), transition_task_status (602), assign_task (844) and change_reviewer (1045) each refuse the collision; 20260911102134 — the departure-replacement direction (261-272; 627-638)
lines 298; 602; 844; 1045
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-5 authorized selector still refused reviewer=assignee; R3-8 create_task; R3-10 assign_task; R3-11 change_reviewer; R3-13 departure replacement

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

TK-REV-10Creating a task and reviewing it are not in conflict.

Someone can review a task they created, as long as they are not the one it is assigned to. There is no rule against it.

Why is this true?
ClaimTK-REV-10
CoversA creator may review their own task
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesAccepted Gen-5 implementationTask reviewer authority decisionTask lifecycle & assignment model
Exact identity
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
no path compares a task's creator with its reviewer; the only relational reviewer constraint added in 20260911102001 is against the assignee
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-02 — Creator and Reviewer may be the same account; no reviewer <> creator rule is created and none may be inferred; Rejected alternatives — 'Forbid reviewer = creator' rejected as not the ruling and not a defect
lines 172-177; 413-415
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.10 — the Creator row's exception stays fully reachable
lines 244-250
TK-REV-11If no reviewer is in place and nobody with the authority has named one, the handoff to review does not happen.

The person doing the work cannot resolve it themselves; someone who may choose reviewers has to name one first.

Why is this true?
ClaimTK-REV-11
CoversNo reviewer, no handoff
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask reviewer authority decisionTask lifecycle & assignment modelGen-5 task implementation specificationTask operation contractAccepted Gen-5 implementationAccepted runtime evidence (R1–R4)
Exact identity
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 Entry into review, for an assignee-only actor — permitted where a valid reviewer is already established, refused where none exists; no new refusal is created; Consequences — an assignee-only actor can now be blocked from entering review
lines 118-128; 428-432
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.6 — the transition cannot complete without a selected reviewer, unchanged
lines 144-151
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AB.1 — entering ready_for_review with no reviewer resolvable
lines 2053
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§2 transition_task_status() Errors — the reviewer-required refusal is unchanged
lines 461
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260911102001 public.transition_task_status — with no reviewer stored and none supplied by an authorized selector, the transition is refused
lines 573-575
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-3 no reviewer resolvable -> REVIEWER_REQUIRED

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

TK-REV-4Closing out a task in review.

From Ready for Review, a task can be marked Complete or Canceled by the owner, a project admin, or the task's reviewer. Its creator and its assignee, as such, cannot close it out from review — unless they are the owner or a project admin, or, for the creator, also its reviewer. For the assignee that last route does not exist at all, since a task's assignee is never its reviewer (TK-REV-9). The assignee, the creator, the owner, a project admin and the reviewer can all send it back to active work.

Why is this true?
ClaimTK-REV-4
CoversClose-out from review
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.9 classes R and A; §1.10 Ownership phases; §3.2 The reviewer gate
lines 215-216, 241-261, 486-505
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.1 The frozen matrix
lines 589
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.transition_task_status — post-review close-out and return classes
lines 505-506
TK-REV-5Changing the reviewer during review.

While a task is in Ready for Review, the owner or a project admin can switch it to a different reviewer — never to the person the task is assigned to (TK-REV-9). Being the current reviewer, or the assignee, does not by itself allow this.

Why is this true?
ClaimTK-REV-5
CoversChanging the reviewer
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask reviewer authority decisionTask operation contractAccepted runtime evidence (R1–R4)Accepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.3(b) After the task is in Ready for Review — unchanged, Owner/Admin only
lines 609-625
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 — reviewer change after review has begun is unaffected and remains Project Owner and Project Admin only
lines 136-139
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§5 change_reviewer() Validation — the incoming reviewer is not the task's current assignee; Errors gains VALIDATION_FAILED
lines 549, 551
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-11 change_reviewer refuses the assignee

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§5 change_reviewer() Permissions
lines 548
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.change_reviewer
lines 1553-1564
TK-REV-6"My tasks" means assigned to me or reviewed by me.

A person's own task list covers tasks where they are the assignee or the reviewer, across all their workspaces, in projects they can currently access. Having only created a task does not put it there.

Why is this true?
ClaimTK-REV-6
CoversMy tasks
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask operation contractGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§7 caller-scoped trio matches assignee OR reviewer; creator is not a third arm
lines 682-693
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§Q.9 Access predicate
lines 1864
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.list_my_active_tasks
lines 2831
TK-MX-1Who may act on a task.

How to read: ✓ may, — may not; a cell that says more than yes or no says it in words. Every row assumes current access to the project. A person with several positions gets all of their powers, and no one is ever both assignee and reviewer of the same task. "Owner" is the workspace owner; "Admin" is an admin of this project.

PositionEdit detailsAssignMove among active states, or into reviewChoose the reviewer entering reviewFinish before reviewFinish from reviewSend back from reviewChange reviewer in reviewComment
Owner
Admin
Creatoronly themselves, on their own task
Assignee
Reviewer
Other project member

Nobody in any row may be both the assignee and the reviewer of the same task (TK-REV-9), and a person holding several positions gets the whole of each — being the assignee subtracts nothing (TK-REV-8).

Anyone with access to the project can create a task and read every task in it.

Why is this true?
ClaimTK-MX-1
CoversWho may act on a task
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesGen-5 task implementation specificationTask reviewer authority decisionAccepted runtime evidence (R1–R4)Task lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§H.1 The frozen matrix, including its select reviewer row
lines 585-596
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
G5-TR-01 — the selection capacities; lifecycle authority and the §1.9 classes untouched, the Assignee remaining in class K and class A
lines 86-97, 111-116
ChatWellApp/chatwell-supabase · supabase/operator-runbooks/verify_gen5_r1r4_conformance.sql@3bf502a701e5
R3-1, R3-2, R3-6, R3-7 — the assignee-only and additive-capacity cells

Runtime evidence is never an authority of its own. An accepted document says the same thing first; the evidence says only that the running system agrees.

ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.9 Permission classes; §6.1a data categories; §6.4 Comment permissions
lines 209-216, 1253-1259, 1287-1291
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 transition_task_status, update_task_details, add_task_comment; 20260905175604 change_reviewer, assign_task
lines 503-506, 772-773, 958; 1553-1554, 1352-1356

Sources disagree: when a reviewer leavesPermalink

Sources disagree SD-1

Sources disagree. What happens when a member who is the reviewer of an active task — or a project's default reviewer — in an active project leaves that project, or the workspace, on their own.

The task lifecycle & assignment model saysThe task operation contract and the Gen-5 task implementation specification say
Leaving must not leave active tasks with a reviewer whose membership has ended. The leaving person's review responsibilities pass to a replacement as part of leaving, and each affected task's history records the change.The person cannot leave while they hold such responsibilities. The attempt is refused and nothing is written. An owner or admin must first reassign them — or remove the person, naming a replacement.

This guide does not choose between them. The disagreement stands until the owners of those sources resolve it. Related, and part of the same record: the sources also differ on whether replacing a project's default reviewer during a departure is itself recorded.

Meanwhile: assume neither outcome — neither that leaving hands the reviews on, nor that leaving is refused.

Not affected: the reviewer is a responsibility on a task, not a role (TK-REV-1); who can be a reviewer, and what happens to a recorded reviewer, outside departure (TK-REV-2); who can close out a task in review (TK-REV-4); removal by an owner or admin, which names a replacement, and the entry each affected task's history then carries (WS-MEM-6) — the open recording question above is about the project's default reviewer, not about those task entries; who may be named as that replacement, and that one name covers a whole project (WS-MEM-7); that the assignee of a task is never its reviewer (TK-REV-9), which holds whichever way this question is eventually settled; ordinary workspace membership (P1.3); changing roles inside a project (PJ-ROLE-1); and workspace ownership (P1.2).

Classification is the owner-frozen 'Sources disagree' recorded in the Task authority decision record. The accepted implementation was not used to adjudicate it.

Also appears in (computed by this rendering): P1.3, P2.2, P3.4
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.4 default reviewer reassigned on leave or removal; §3.5 Reviewer departure — Applies to, Trigger, On confirmation, Flow, Audit — binding
lines 679-681, 695-727, 815-826, 841-907
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§6A.1 Departure replacement — two paths, not four
lines 613-661
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§V.3 two paths; §V.3c leave_* fail closed; §V.4a default reviewer — rewrite on removal writes no event
lines 2493-2520, 2602-2623, 2654-2667
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-gen5-task-authority-adoption.md@cbab557b1b2fadopted
Consequences — Departure handling
lines 127-131
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-task-reviewer-authority.md@cbab557b1b2fadopted
Authority — Not decided here: the reviewer-departure matters recorded as open by ADR-2026-09-gen5-task-authority-adoption are not decided, reopened or touched by this record
lines 271-280

P3.5The task's historyPermalink

TK-HIS-1Every task has a history: an ordered account of what happened to it.

It holds changes of state and the other activity on the task — being created, assigned, given a reviewer, edited and commented on. Both kinds of entry share one order, so they read as a single timeline.

Why is this true?
ClaimTK-HIS-1
CoversOne ordered history
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§5 Event model; §5.0 Two stores; §5.2 Activity; §5.6 Shared ordering key
lines 1057-1081, 1117-1129, 1215-1223
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 task_event_sequence; create table public.task_activity_event
lines 507, 523
TK-HIS-2History is only ever added to.

Entries are never edited or removed, and later changes — including later changes to someone's role — never rewrite earlier ones.

Why is this true?
ClaimTK-HIS-2
CoversHistory only grows
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§5.4 Properties (immutable, never edited or deleted); §5.5 ('Current permissions must never rewrite past events.')
lines 1160-1167, 1186
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§8.2 Event tables are append-only
lines 870-877
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 append-only immutability guard
lines 615
TK-HIS-3Each entry says who acted, and for whom.

It records the person who acted where a person did, the person it concerns where there is one, and whether the actor was the task's creator, assignee or reviewer at that moment. The cancellations written when a project is archived carry none of those three markers.

Why is this true?
ClaimTK-HIS-3
CoversWho acted, for whom
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelMembership modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§5.5 Actor context snapshots
lines 1169-1186
documentMembership modelD-MEM
ChatWellApp/chatwell-docs · architecture/membership-episodes-model.md@cbab557b1b2fcanonical
§8 Actor and subject
lines 1392
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§D.4 actor and subject; the three context flags is_creator, is_assignee, is_reviewer; §U.2c archival closure writes no actor context
lines 241-256, 314-318, 2380-2383
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.create_task and public.transition_task_status write the three flags; 20260905202219 public.archive_project cancellation rows pass NULL actor context
lines 332-334, 601; 337-349
points toSD-2

Sources disagree. Whom the cancellations written by archiving a project name as having acted — see SD-2 in P2.3.

TK-HIS-4Assignee and reviewer changes are their own entries, showing the previous and the new person.

A reviewer change is never shown as a change of state. The assignee and the reviewer named when a task is created get no entries of their own: creating a task writes one entry.

Why is this true?
ClaimTK-HIS-4
CoversAssignee and reviewer entries
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§3.3(b) reviewer change is an activity event; §5.3 The binding rule
lines 645-649, 1151-1158
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.create_task — one 'created' activity event; the initial assignee and reviewer are stored on public.task and write no entry of their own
lines 287-337
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.assign_task; public.change_reviewer — activity events
lines 1419; 1616
TK-HIS-5Comments belong to the history.

Discussion comments, and the comments that go with state changes, are entries in it. The owner, project admins, the creator, the assignee and the reviewer can comment on an active task, each only with current access to the project. Nobody can edit or delete a comment, and a finished task accepts no new ones.

Why is this true?
ClaimTK-HIS-5
CoversComments in the history
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelTask operation contractAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§5.5a Comments; §6.4 Comment permissions; §3.0 frozen tasks
lines 1189-1208, 1287-1294, 383
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§6 add_task_comment() — current project access required; one store
lines 584, 593-594
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260907070001 public.add_task_comment (last definition) — access check and commenter set
lines 942, 958
TK-HIS-6Not decided. Whether comments can ever be edited or deleted.Not decided
Why is this true?
ClaimTK-HIS-6
CoversEditing comments
StateNot decided
CoverageGapa fact about the sources, not a reader label
SourcesGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AK Explicitly deferred items, item 8 (comment edit/delete not defined by any authority)
lines 4298
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
no comment edit or delete operation; 20260905163747 append-only guard
lines 615
TK-HIS-7Not decided. Whether comments will have unread counts or read status.Not decided

Today they have none.

Why is this true?
ClaimTK-HIS-7
CoversUnread counts
StateNot decided
CoverageFulla fact about the sources, not a reader label
SourcesTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§5.5a ('Comment unread / read-state is retired with no replacement.')
lines 1210-1213
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§AK Explicitly deferred items, item 2
lines 4292
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905163747 — comment unread-count and mark-read operations, the comment store and the read-state store dropped with no replacement
lines 123, 127, 145-146
FIG-P3-5One task's history — every entry in one order, with who actedcurrent behaviour only
  1. Leo created the task
  2. Leo moved it from Open to In Progress
  3. Leo commented
  4. Leo moved it from In Progress to Ready for Review
  5. Anna, as reviewer, moved it from Ready for Review to Complete

Read top to bottom, in the order written. Entries are only ever added at the end.

Leo named himself assignee and Anna reviewer when creating the task; creating a task writes one entry (TK-HIS-4). Nothing above is edited later; new entries are only added at the end.

Illustrates TK-HIS-1

What this means for a prototype — TasksPermalink

Every entry names the claim groups or records it derives from. It carries no state of its own; the state shown on each chip is that of the group or record cited.

MUST PRESERVE

  • State, assignee and reviewer are three separate facts; changing one never changes another.fromTK-DIM-1TK-ASG-4
  • A task's reviewer is a responsibility on that task, never a role, and a different position from its assignee.fromTK-REV-1
  • The assignee and the reviewer of one task are never the same person, in either direction and whoever is acting.fromTK-REV-9
  • Choosing a task's reviewer is a separate authority from moving the task; the assignee has the second and not the first.fromTK-REV-7
  • Positions combine: an assignee who is also the creator, a project admin or the owner keeps everything those positions allow.fromTK-REV-8
  • Exactly six states, with the display names Open, In Progress, Blocked, Ready for Review, Complete, Canceled.fromTK-LC-1
  • Finished tasks never move again; entering Ready for Review needs a reviewer, and only someone who may choose reviewers can supply one on the way in; a person moving a task to Blocked, or canceling it, adds a comment.fromTK-LC-3TK-REV-3
  • From Ready for Review, close-out belongs to the owner, a project admin or the task's reviewer.fromTK-REV-4
  • A task's history is one ordered timeline of both kinds of entry, and entries are never edited.fromTK-HIS-1TK-HIS-2
  • "My tasks" covers tasks a person is assigned to or reviews.fromTK-REV-6

MUST NOT ASSUME

  • That "assigned" is a state, or that an assignee accepts or declines a task.fromTK-DIM-2
  • That assigning someone starts the work.fromTK-ASG-4
  • That close-out from review is reserved to the reviewer: the owner and a project admin can close it out too.fromTK-REV-4
  • That whoever may send a task to review may also choose its reviewer on the way.fromTK-REV-3TK-REV-7
  • That an assignee can always hand their work on: with no reviewer in place and nobody who may name one, the handoff does not happen.fromTK-REV-11
  • That assignees may never choose a reviewer — an assignee who is also the creator, an admin or the owner may.fromTK-REV-8
  • That a task's creator may not review it: they may, unless it is assigned to them.fromTK-REV-10
  • That the reviewer or the assignee can change a task's reviewer.fromTK-REV-5
  • That a recorded reviewer is replaced without an owner or admin naming someone.fromTK-REV-2
  • That a task's creator belongs in "my tasks" as creator.fromTK-REV-6
  • That tasks can be deleted, or comments edited, today.fromTK-DEL-1TK-HIS-5
  • That a finished task can be reopened, continued or duplicated today.fromTK-LC-3TK-CONT-1
  • That comments have unread counts.fromTK-HIS-7
  • That a project's default reviewer can be chosen today.fromDNA-11
  • That a reviewer who leaves on their own either hands their reviews on or is refused: the sources disagree.fromSD-1

NOT PRESCRIBED

  • Gen-5 does not prescribe how a task's state is rendered, for example as a pill or a colour.fromTK-LC-1

Where this comes from — TasksPermalink

Where this comes from35 claim groups
Claim groupCoversStateCoverageSources
TK-WHAT-1What a task isWorks todayFullGen-5 task implementation specification · Task lifecycle & assignment model · Accepted Gen-5 implementation
TK-DIM-1Three independent questionsWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
TK-DIM-2No assignment stateWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-CRE-1Creating a taskWorks todayFullTask operation contract · Gen-5 task implementation specification · Accepted Gen-5 implementation · Task reviewer authority decision · Accepted runtime evidence (R1–R4)
TK-LC-1Six statesWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-LC-2What the states meanWorks todayFullTask lifecycle & assignment model
TK-LC-3How a task movesWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation · Accepted runtime evidence (Gate-25) · Accepted runtime evidence (R1–R4)
TK-LC-4Who moves it before reviewWorks todayFullTask lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation
TK-LC-5Finished tasks are frozenWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
TK-DEL-1No task deletionWorks todayPartly definedAccepted Gen-5 implementation · Gen-5 task implementation specification
TK-DEL-2Whether deletion will existNot decidedPartly definedGen-5 task implementation specification · Workspace & project lifecycle model
TK-CONT-1Continuing a finished taskNot decidedGapGen-5 task implementation specification · Task lifecycle & assignment model
TK-ASG-1The assigneeWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-ASG-2Who may assignWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
TK-ASG-3Assignee needs accessWorks todayFullTask operation contract · Task reviewer authority decision · Accepted runtime evidence (R1–R4) · Accepted Gen-5 implementation
TK-ASG-4Assignment and state are independentWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-REV-1Reviewer is per taskWorks todayFullTask lifecycle & assignment model · Workspace & project lifecycle model · Accepted Gen-5 implementation
TK-REV-2Reviewer access; a record, not a grantWorks todayFullTask lifecycle & assignment model · Task reviewer authority decision · Task operation contract · Accepted Gen-5 implementation
TK-REV-3Entering reviewWorks todayFullTask lifecycle & assignment model · Task reviewer authority decision · Accepted runtime evidence (R1–R4) · Task operation contract · Accepted Gen-5 implementation
TK-REV-7Reviewer selection takes its own authorityWorks todayFullTask reviewer authority decision · Task lifecycle & assignment model · Task operation contract · Gen-5 task implementation specification · Accepted Gen-5 implementation · Accepted runtime evidence (R1–R4)
TK-REV-8Positions add upWorks todayFullTask reviewer authority decision · Task lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation · Accepted runtime evidence (R1–R4)
TK-REV-9Assignee is never the reviewerWorks todayFullTask reviewer authority decision · Task lifecycle & assignment model · Task operation contract · Gen-5 task implementation specification · Accepted Gen-5 implementation · Accepted runtime evidence (R1–R4)
TK-REV-10A creator may review their own taskWorks todayFullAccepted Gen-5 implementation · Task reviewer authority decision · Task lifecycle & assignment model
TK-REV-11No reviewer, no handoffWorks todayFullTask reviewer authority decision · Task lifecycle & assignment model · Gen-5 task implementation specification · Task operation contract · Accepted Gen-5 implementation · Accepted runtime evidence (R1–R4)
TK-REV-4Close-out from reviewWorks todayFullTask lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation
TK-REV-5Changing the reviewerWorks todayFullTask lifecycle & assignment model · Task reviewer authority decision · Task operation contract · Accepted runtime evidence (R1–R4) · Accepted Gen-5 implementation
TK-REV-6My tasksWorks todayFullTask operation contract · Gen-5 task implementation specification · Accepted Gen-5 implementation
TK-MX-1Who may act on a taskWorks todayFullGen-5 task implementation specification · Task reviewer authority decision · Accepted runtime evidence (R1–R4) · Task lifecycle & assignment model · Accepted Gen-5 implementation
TK-HIS-1One ordered historyWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-HIS-2History only growsWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
TK-HIS-3Who acted, for whomWorks todayFullTask lifecycle & assignment model · Membership model · Gen-5 task implementation specification · Accepted Gen-5 implementation
TK-HIS-4Assignee and reviewer entriesWorks todayFullTask lifecycle & assignment model · Accepted Gen-5 implementation
TK-HIS-5Comments in the historyWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
TK-HIS-6Editing commentsNot decidedGapGen-5 task implementation specification · Accepted Gen-5 implementation
TK-HIS-7Unread countsNot decidedFullTask lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation

Coverage is a fact about the sources, not a reader label. Gap is not one of the five labels.