ChatWell Gen-5 System atlas
T2

How the system behaves

FIVE CONDITIONS AT ONCE·to work on a project's tasks · if any fails, nothing
ALL OF THESE, TOGETHER
  1. 1a current membership in the workspace
  2. 2an active account
  3. 3an active workspace
  4. 4a current membership in that project
  5. 5an active project
otherwiseIf any of them fails, the person cannot see or change the project's tasks.
To work on a project's tasks, several things must hold at once:XD-ACC-1
STORED, OR WORKED OUT
Stored
role · reviewer
Some facts are stored; others are worked out.
XD-DER-1
Derived
project owner · archived list
Authority has three steps: member, admin, owner.
XD-GOV-1
Finished
is not archived
Finished and archived answer different questions.
XD-FIN-1

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.

T2.1What sits inside whatPermalink

XD-CONT-1Containment is strict.

Each project sits inside exactly one workspace, and each task inside exactly one project. Every workspace begins with a main project.

Why is this true?
ClaimXD-CONT-1
CoversStrict containment
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesWorkspace & project lifecycle modelMembership modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§4 Project lifecycle
lines 215-222
documentMembership modelD-MEM
ChatWellApp/chatwell-docs · architecture/membership-episodes-model.md@cbab557b1b2fcanonical
§3 operation matrix — create workspace (+ P per seeded default project)
lines 194
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
1of4 create table public.project (workspace_id not null); create table public.task (project_id not null)
lines 594-596, 756-758
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
2of4 public.create_workspace_from_template — main project insert
lines 7674-7677
FIG-T2-1Northstar Studio, from workspace to taskcurrent behaviour only
WorkspaceNorthstar Studio
ProjectMain project
ProjectWebsite Redesign
TaskPrepare launch assets
Illustrates XD-CONT-1

T2.2Belonging, and being able to actPermalink

XD-ACC-1To work on a project's tasks, several things must hold at once:

a current membership in the workspace, an active account, an active workspace, a current membership in that project, and an active project. If any of them fails, the person cannot see or change the project's tasks.

Why is this true?
ClaimXD-ACC-1
CoversConditions for task work
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesMembership modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
documentMembership modelD-MEM
ChatWellApp/chatwell-docs · architecture/membership-episodes-model.md@cbab557b1b2fcanonical
§1.0 binding definition; §5.3 Effective access — two layers
lines 56, 720-723
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§I.4 The derived Workspace Owner needs an open project episode
lines 713-717
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.workspace_effective_access; public.project_effective_access
lines 112-131, 146-166
XD-ACC-2For a project's tasks, roles and ownership decide what you may do — not whether you are in.

There they never replace membership: even a workspace's owner works on a project's tasks only through a membership in that project. What ownership does give the owner, for as long as they can reach the workspace, is that membership itself, in every active project, as a standing guarantee (P2.2) — not a way round the rule.

Why is this true?
ClaimXD-ACC-2
CoversFor tasks, roles are not access
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesWorkspace & project lifecycle modelGen-5 task implementation specificationProject access policy decisionAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§6 Governance ('A role grants authority; an open episode grants access.'); §6.3a Authority is not entitlement
lines 420-424, 572
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§I.4 — task domain; no owner disjunct
lines 713-743
ChatWellApp/chatwell-docs · decisions/ADR-2026-09-project-access-policy.md@cbab557b1b2fadopted
G5-PA-01 — 'Keep derived owner reach and materialize nothing' rejected; the owner's reach becomes entitlement plus authority
lines 292-297, 331-333
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 header — NO OWNER OVERLAY (I.4)
lines 97-103
points toPJ-ACC-5

Partly defined. Outside tasks, the workspace owner currently reaches archived projects too, where no membership is required of them — see PJ-ACC-5 and PJ-ARCH-5 in P2.

T2.3Owning and administeringPermalink

XD-GOV-1Authority has three steps: member, admin, owner.

Members hold a stored role — member or admin. The owner outranks both, but not through a stored role: ownership is its own fact, and the owner of a workspace is automatically the owner of every project in it. While they hold workspace access they are also an ordinary member, with the admin role, of every active project (P2.2).

Why is this true?
ClaimXD-GOV-1
CoversAuthority ladder
StateWorks today
CoverageFulla fact about the sources, not a reader label
Sourcesrestates WS-ROLE-2, WS-OWN-4, PJ-ACC-6
Exact identity

This restates WS-ROLE-2, WS-OWN-4, PJ-ACC-6. It names no source of its own; the identity lives with the groups it restates.

XD-DER-1Some facts are stored; others are worked out.

A member's role and a task's reviewer are stored. Who owns a project, and which tasks are in a project's archived list, are derived: ChatWell works them out from other facts — the workspace's owner, and each task's state — and never stores them separately.

Why is this true?
ClaimXD-DER-1
CoversStored versus derived
StateWorks today
CoverageFulla fact about the sources, not a reader label
Sourcesrestates WS-OWN-4, TK-LC-5, TK-REV-1, WS-ROLE-1
Exact identity

This restates WS-OWN-4, TK-LC-5, TK-REV-1, WS-ROLE-1. It names no source of its own; the identity lives with the groups it restates.

T2.4Now, and what happenedPermalink

XD-HIS-1Current state answers "what is true now"; history answers "what happened, in what order, and who did it".

Current state changes. What is recorded only grows: a task's earlier history entries are never edited, and a membership period that ended is never reopened — coming back starts a new one.

Why is this true?
ClaimXD-HIS-1
CoversNow versus history
StateWorks today
CoverageFulla fact about the sources, not a reader label
Sourcesrestates TK-HIS-2, WS-MEM-2
Exact identity

This restates TK-HIS-2, WS-MEM-2. It names no source of its own; the identity lives with the groups it restates.

T2.5When the system actsPermalink

XD-SYS-1Most changes are a person's own action. Some happen as the consequence of another action.

When someone archives a project, the archive action itself cancels every unfinished task in it. These are not ordinary cancellations: the archive action closes them all at once rather than each being moved on its own, and the comment a person's cancellation requires is not asked for. Each task records the archival as the reason it closed, and its history records the move to Canceled.

Why is this true?
ClaimXD-SYS-1
CoversSystem-side cancellation
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesGen-5 lifecycle decisionsTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · decisions/ADR-2026-08-gen5-lifecycle-domain.md@cbab557b1b2fadopted
G5-14 Task disposition on archival
lines 654-666
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§1.11 SCOPED FOR GEN-5 banner (archival closure is not bound by the user comment rule)
lines 269-275
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§U.1 The rule; §U.3 — the closure entry carries no note
lines 2256-2260, 2410
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905202219 public.archive_project — closed_reason set on the task; one canceled status entry written per task
lines 320-349

T2.6Finished, frozen and archivedPermalink

XD-FIN-1Finished and archived answer different questions.

Finished — Complete or Canceled — is about a task's lifecycle: it is over. Archived means frozen. A finished task is frozen and appears in its project's archived task list, but its project stays active and people with access can still read it. Archiving a project freezes the work in it: none of its tasks can change any more, whatever their state.

Archiving a project has three separate sides. They are kept apart on purpose.

Why is this true?
ClaimXD-FIN-1
CoversFinished task vs archived project
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 Terminal and Archived are different concepts
lines 968-989
ChatWellApp/chatwell-docs · architecture/task-domain-rpc-contracts.md@cbab557b1b2fcanonical
§7 Read layer — list partition is derived from status and is not the same as frozen
lines 699-707
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.list_archived_tasks (status-derived, server-side partition)
lines 2104
XD-ARCH-11 · Access todayOnce a project is archived, nobody can open or change its tasks through ChatWell — not its members, not former members, not the workspace owner — and its members lose the project.

There is currently no way in the product to reopen an archived project, and no way to export its content. Current exceptions, outside tasks, are described in P2.3.

Why is this true?
ClaimXD-ARCH-1
CoversAccess after archiving
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesWorkspace & project lifecycle modelGen-5 lifecycle decisionsSource of Truth MapTask lifecycle & assignment modelGen-5 task implementation specificationAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§4.2 archive_project() step 2 — project access false for that project
lines 240-244
ChatWellApp/chatwell-docs · decisions/ADR-2026-08-gen5-lifecycle-domain.md@cbab557b1b2fadopted
G5-09 Deny-by-default post-archival access; G5-10 ('Export is a named implementation dependency that does not exist today')
lines 474-476, 528-529
documentSource of Truth MapD-SOT
ChatWellApp/chatwell-docs · source-of-truth-map.md@cbab557b1b2fcanonical
Registry row 'Access predicates — two live, two historical' (historical predicates superseded for Gen-5 by G5-09)
ChatWellApp/chatwell-docs · product/task-lifecycle-and-assignment-model.md@cbab557b1b2fcanonical
§4.0 SUPERSEDED FOR GEN-5 banner
lines 991-1000
ChatWellApp/chatwell-docs · architecture/gen5-task-domain-implementation-specification.md@cbab557b1b2fcanonical
§U.5 Accepted consequence
lines 2432-2434
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
20260905175604 public.project_effective_access requires p.status = 'active'; no restore/unarchive operation and no export object anywhere in the chain
lines 155-164
XD-ARCH-22 · The content itselfArchiving keeps content rather than deleting it.

The tasks, their history, and who was assigned or reviewing are kept as they were, and ChatWell offers no way to delete a workspace, a project or a task. The normal Workspace lifecycle uses archival rather than physical deletion of its business history.

3 · Routes back to kept content.

Why is this true?
ClaimXD-ARCH-2
CoversContent is kept
StateWorks today
CoverageFulla fact about the sources, not a reader label
SourcesWorkspace & project lifecycle modelGen-5 lifecycle decisionsAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§1 Workspace status ('Physical deletion of business history is prohibited through the normal lifecycle.'); §2 step 6; §4.2 step 4; §4.4 Project deletion; §4.5
lines 35-37, 67, 247, 275, 296-299
ChatWellApp/chatwell-docs · decisions/ADR-2026-08-gen5-lifecycle-domain.md@cbab557b1b2fadopted
G5-09 ('Archived data remains stored under the applicable retention policy.')
lines 484-485
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
3of4 SECTION 6 — authenticated holds no INSERT/UPDATE/DELETE on any table; no delete operation for workspace, project or task exists in the chain
lines 1299-1302
XD-ARCH-3Not decided. Whether restoring an archived project or workspace will be offered at all.Not decided
Why is this true?
ClaimXD-ARCH-3
CoversWhether restoration is offered
StateNot decided
CoverageFulla fact about the sources, not a reader label
SourcesWorkspace & project lifecycle modelAccepted Gen-5 implementation
Exact identity
ChatWellApp/chatwell-docs · architecture/workspace-lifecycle-model.md@cbab557b1b2fcanonical
§2.3 Restoration ('Whether restoration is exposed is a product question and it is not implemented now'); same shape for projects
lines 95-96, 115-116
migration-chainAccepted Gen-5 implementationB-MIG
ChatWellApp/chatwell-supabase · supabase/migrations/@3bf502a701e5
no restore/unarchive/reactivate operation in any of the sixteen units

Where this comes from — How the system behavesPermalink

Where this comes from11 claim groups
Claim groupCoversStateCoverageSources
XD-CONT-1Strict containmentWorks todayFullWorkspace & project lifecycle model · Membership model · Accepted Gen-5 implementation
XD-ACC-1Conditions for task workWorks todayFullMembership model · Gen-5 task implementation specification · Accepted Gen-5 implementation
XD-ACC-2For tasks, roles are not accessWorks todayFullWorkspace & project lifecycle model · Gen-5 task implementation specification · Project access policy decision · Accepted Gen-5 implementation
XD-GOV-1Authority ladderWorks todayFullvia WS-ROLE-2, WS-OWN-4, PJ-ACC-6
XD-DER-1Stored versus derivedWorks todayFullvia WS-OWN-4, TK-LC-5, TK-REV-1, WS-ROLE-1
XD-HIS-1Now versus historyWorks todayFullvia TK-HIS-2, WS-MEM-2
XD-SYS-1System-side cancellationWorks todayFullGen-5 lifecycle decisions · Task lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation
XD-FIN-1Finished task vs archived projectWorks todayFullTask lifecycle & assignment model · Task operation contract · Accepted Gen-5 implementation
XD-ARCH-1Access after archivingWorks todayFullWorkspace & project lifecycle model · Gen-5 lifecycle decisions · Source of Truth Map · Task lifecycle & assignment model · Gen-5 task implementation specification · Accepted Gen-5 implementation
XD-ARCH-2Content is keptWorks todayFullWorkspace & project lifecycle model · Gen-5 lifecycle decisions · Accepted Gen-5 implementation
XD-ARCH-3Whether restoration is offeredNot decidedFullWorkspace & project lifecycle model · Accepted Gen-5 implementation

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