assessment-model/docs/adr
Daniel Roth 6d662e81bd feat(ara-projects): edit and show permissions per workstream (#413)
The switch was the wrong control. project_workstream_contractor stores both
flags per (workstream, organisation) pair, so one switch stood for n booleans:
it could report a per-workstream split but never author one, and clicking it
destroyed the split to stay decidable. The schema's central capability was
unreachable from the only screen that configures it.

Add/edit dialog is now a grid: one row per workstream the *project* covers —
not only the ones this contractor holds — with a tick to assign and a tick per
permission. Unassigned rows stay visible and greyed, so the shape of the
project and its uncovered workstreams are part of the decision. Un-ticking a
workstream clears its permissions, so re-ticking never silently restores a
grant. Column headers carry an all/none shortcut.

The main table no longer shows permissions at all: contractor, workstreams,
Actions. Clicking a row (or its disclosure button, which carries
aria-expanded/aria-controls for keyboards and screen readers) opens a sub-row
listing each assignment with its own two permissions, read-only. Several may
be open at once. Actions stay per contractor — Edit and Remove act on the
whole set.

Wire shape follows: POST/PATCH take assignments[{projectWorkstreamId,
updateStagesPermission, uploadDocumentsPermission}]. A workstream named twice
is a 400 — two answers to one question. ContractorGroup drops its
per-contractor summary and permissionState is gone; nothing needs the flags
reduced to one answer, and reducing them is how a contractor allowed on one
workstream comes to look allowed everywhere. Updates are grouped by flag pair,
so twenty workstreams still cost at most four UPDATEs.

ADR-0022 records this; ADR-0021's decision 1 is marked superseded, its other
two (removal never cascades; Continue leads to the import) stand.
2026-07-23 15:34:06 +00:00
..
0001-data-backfills-outside-drizzle.md docs: reporting glossary terms + ADR-0010 compliance-window filter 2026-07-07 22:08:35 +00:00
0002-effective-performance-is-canonical-current.md docs: reporting glossary terms + ADR-0010 compliance-window filter 2026-07-07 22:08:35 +00:00
0003-app-authored-scenarios.md feat(scenarios): portfolio Scenarios tab — gallery, detail, creation journey 2026-07-06 08:34:47 +00:00
0007-postcode-search-creates-properties.md fix(postcode-search): classify RH (HMO) family as addable residential 2026-07-09 10:33:07 +00:00
0008-modelling-runs-filters-to-distributor.md feat(modelling-runs): run config on tasks.inputs; backend contract updates 2026-07-07 10:46:29 +00:00
0009-portfolio-organisation-is-per-user.md docs(adr): 0009 — portfolio organisation is per-user, not shared 2026-07-07 21:11:21 +00:00
0010-compliance-window-is-a-report-view-parameter.md docs: reporting glossary terms + ADR-0010 compliance-window filter 2026-07-07 22:08:35 +00:00
0011-app-owned-task-marker-in-task-source.md feat(live-reporting): bulk document download from the Documents tab 2026-07-08 14:11:42 +00:00
0012-portfolio-list-resolves-descriptors-via-override-precedence.md docs(portfolio): ADR-0012 — list resolves descriptors via override precedence 2026-07-10 23:21:21 +00:00
0013-tags-are-app-owned-property-groupings.md docs: ADR-0013 tagging system + CONTEXT (Bulk tag assignment, Run filter tags) 2026-07-13 15:45:14 +00:00
0014-epc-cards-count-certificates-not-predictions.md fix(reporting): EPC cards count certificates, not predictions (ADR-0014) 2026-07-14 12:19:02 +00:00
0015-scenario-overlay-is-one-read-model.md docs(reporting): Scenario overlay term + ADRs 0015–0017 2026-07-20 14:22:31 +01:00
0016-sap-epc-threshold-ladder-single-owner.md docs(reporting): Scenario overlay term + ADRs 0015–0017 2026-07-20 14:22:31 +01:00
0017-likely-downgrade-is-band-movement-only.md docs(reporting): Scenario overlay term + ADRs 0015–0017 2026-07-20 14:22:31 +01:00
0018-ara-projects-supersedes-hubspot-live-projects.md docs(ara-projects): ADR-0018 + CONTEXT.md Ara Projects domain language 2026-07-21 08:30:32 +00:00
0019-uk-date-format-in-form-inputs.md feat(dates): restore a calendar picker behind DateInput 2026-07-22 15:39:11 +00:00
0019-work-order-import-is-setup-gated-and-carries-contractor-per-row.md feat(ara-projects): import — contractor/stage columns + setup gate 2026-07-22 16:36:16 +00:00
0020-import-session-and-mapping-are-client-held.md feat(ara-projects): import mapping screen — column + value mapping UI (#415) 2026-07-23 10:22:18 +00:00
0021-contractor-permissions-are-per-assignment-shown-per-contractor.md feat(ara-projects): edit and show permissions per workstream (#413) 2026-07-23 15:34:06 +00:00
0022-contractor-permissions-are-edited-and-shown-per-workstream.md feat(ara-projects): edit and show permissions per workstream (#413) 2026-07-23 15:34:06 +00:00