Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
299 commits
Select commit Hold shift + click to select a range
1053e8f
feat(ward-flow): the three owner-approved lists
BigSimmo Aug 28, 2026
c9c9949
docs(ward-flow): correct the blocker-list count from six to seven
BigSimmo Aug 28, 2026
5279d65
docs(ward-flow): carry two unlooked-at items and three wording notes …
BigSimmo Aug 28, 2026
f8f07bd
feat(ward-flow): separate the two acceptance entries, and record eigh…
BigSimmo Aug 28, 2026
33e3e15
feat(ward-flow): add the travel band lookup and its invented fixture
BigSimmo Aug 28, 2026
ca558dc
fix(ward-flow): drop the two proximity claims the system cannot back
BigSimmo Aug 28, 2026
63dac1e
test(ward-flow): close the evidence gaps in the travel-band tests
BigSimmo Aug 28, 2026
d043192
fix(ward-flow): scope a comment to its function, and make a floor abl…
BigSimmo Aug 28, 2026
2cbc4de
test(ward-flow): gate the completeness guard on an explicit invented …
BigSimmo Aug 28, 2026
ef4af1c
feat(ward-flow): record a referral arriving, and an optional local-be…
BigSimmo Aug 28, 2026
80382fc
Ward board: realign the design with Phase 8
BigSimmo Aug 28, 2026
15bdddd
feat(ward-flow): group candidates by travel band, and count who is pl…
BigSimmo Aug 28, 2026
c91a011
Ward board: run the logic layer in parallel with Phase 8
BigSimmo Aug 28, 2026
a034056
feat(ward-flow): one shared spelling of what a band group's counts mean
BigSimmo Aug 28, 2026
f8facae
feat(ward-flow): the admission record - a person inside a bed
BigSimmo Aug 28, 2026
b5f3c8a
test(ward-flow): make the ordering and boundary guards able to fail
BigSimmo Aug 28, 2026
a62f828
feat(ward-flow): the ward board's calculation layer
BigSimmo Aug 28, 2026
cea1a39
Ward board: record two decisions taken mid-build
BigSimmo Aug 28, 2026
600bebd
test(ward-flow): close the comment hole in the bed-release contract
BigSimmo Aug 28, 2026
d5fd754
feat(ward-flow): the ward board's headline figure and its constraint …
BigSimmo Aug 28, 2026
847b71d
test(ward-flow): pin the bed-release contract's own comment stripper
BigSimmo Aug 28, 2026
5d84e5e
Ward board: the ward states its sex-acceptance numbers daily (DB-3)
BigSimmo Aug 28, 2026
4c3c462
feat(ward-flow): the admission record - a person inside a bed
BigSimmo Aug 28, 2026
f35e044
feat(ward-flow): seed the wards with occupancies that make every rule…
BigSimmo Aug 28, 2026
a7abb6c
refactor(ward-flow): one record of a person in a bed, and it can end
BigSimmo Aug 28, 2026
a039940
feat(ward-flow): seed the wards with occupancies that make every rule…
BigSimmo Aug 28, 2026
e96f952
Ward board: build-phase decisions, and the transport officer's real s…
BigSimmo Aug 28, 2026
78e67a1
test(ward-flow): close the scanner's blind spot and wire the seeded d…
BigSimmo Aug 28, 2026
b8910fe
feat(ward-flow): confirming a discharge, and saying nothing until a w…
BigSimmo Aug 28, 2026
6fb4e3c
fix(ward-flow): ask whether the bed is held, not whether they left
BigSimmo Aug 28, 2026
f416c96
feat(ward-flow): group the match view by travel band, and offer the l…
BigSimmo Aug 28, 2026
403a43f
docs(ward-flow): mark the ledger's "nobody ever leaves" sentence false
BigSimmo Aug 28, 2026
8acc9f9
feat(ward-flow): the out-of-area ledger, and what it is not
BigSimmo Aug 28, 2026
b105602
test(ward-flow): pin the band heading and both counts inside the summary
BigSimmo Aug 28, 2026
558c723
feat(ward-flow): the network diagram answers for a referral, every un…
BigSimmo Aug 28, 2026
4fee4af
fix(ward-flow): a stay in days, a phone card that is checked, and a g…
BigSimmo Aug 28, 2026
c61df51
fix(ward-flow): guard the placement aside, and the read rather than t…
BigSimmo Aug 29, 2026
de75903
feat(ward-flow): arrange the diagram by travel band, and never for a …
BigSimmo Aug 29, 2026
3c929c2
test(ward-flow): check the day figure's value, not the shape of it
BigSimmo Aug 29, 2026
9f9e7b4
Ward board: the rolling 24-hour clock, and recorded leave-bed overrides
BigSimmo Aug 29, 2026
0c5c574
Cold-start handover for 2026-08-29 — two branches, and what each owns
BigSimmo Aug 29, 2026
dc73bf7
fix(ward-flow): the diagram's band groups do not fold
BigSimmo Aug 29, 2026
4c76952
Ward board: the printed morning sheet is current at print time (DB-10)
BigSimmo Aug 29, 2026
05f620b
Ward board: the print stamp needs a date, not only a time
BigSimmo Aug 29, 2026
e43f3f8
Ward board: the frozen morning view is dropped, everything is live (D…
BigSimmo Aug 29, 2026
a4006f2
feat(ward-flow): the whole-network overview keeps every ward as the s…
BigSimmo Aug 29, 2026
0c2df1c
Ward board: the print stamp must read the demo clock, not the wall cl…
BigSimmo Aug 29, 2026
1aba481
Format the ward board documents
BigSimmo Aug 29, 2026
a5b0471
Ward board plan: correct the worktree, the branch, and four verified …
BigSimmo Aug 29, 2026
6ce5574
Handover: the fold will NOT merge cleanly, and this page said it would
BigSimmo Aug 29, 2026
e76c6eb
Ward board: sex on the admission record was APPROVED, not inferred
BigSimmo Aug 29, 2026
8bc97d6
Ward board: the receiving-time options, owner-approved (DB-14)
BigSimmo Aug 29, 2026
cb15c4c
Handover: a green suite cannot verify this merge, and 08:00 has no ot…
BigSimmo Aug 29, 2026
5a49846
Format the ward board source and tests
BigSimmo Aug 29, 2026
e9762ad
test(ward-flow): pin the overview's order against the model, not just…
BigSimmo Aug 29, 2026
c400711
Rule: commit as you go, because interruption is what loses work here
BigSimmo Aug 29, 2026
c9df9b2
Format the ward board plan after its corrections section
BigSimmo Aug 29, 2026
75223b7
Add the ward board: one ward's beds on a screen
BigSimmo Aug 29, 2026
035af83
Add one DOM test for the ward board
BigSimmo Aug 29, 2026
e32b4d7
Fix the past-date badge's fill token in the dark theme
BigSimmo Aug 29, 2026
5f22fc1
Test: the tiles and the header must agree on every ward
BigSimmo Aug 29, 2026
3b6bba3
test(ward-flow): control every arm of the second-clock guard, and fix…
BigSimmo Aug 29, 2026
73f119f
Register the ward board route in the site map
BigSimmo Aug 29, 2026
cb6a86f
Correct a dangerous mis-citation in DB-10 and DB-11
BigSimmo Aug 29, 2026
ebcd1f2
Fix the residual D3 citation in DB-11
BigSimmo Aug 29, 2026
e814e77
Ward board: the override free-text box goes, and FOUR reasons replace it
BigSimmo Aug 29, 2026
22e3521
Ward board: the owner confirmed FIVE override reasons (DB-15 supersed…
BigSimmo Aug 29, 2026
1d2f64c
Replace the stay bands with the owner's four: 2 weeks / 1 month / 3 m…
BigSimmo Aug 29, 2026
c477f80
Widen the stay-band ramp so the first step is not the smallest
BigSimmo Aug 29, 2026
e5c12e5
Draw out-of-service beds so a coordinator cannot try to fill one
BigSimmo Aug 29, 2026
bccea27
Make the tile-class dispatch exhaustive so the next bed kind cannot s…
BigSimmo Aug 29, 2026
7f2a024
fix(ward-flow): two defects the whole suite could not see, and a brow…
BigSimmo Aug 29, 2026
3e2405a
fix(ward-flow): Task 10 review round -- three fake-proof guards, and …
BigSimmo Aug 29, 2026
3ca0bb6
Give the board a way out and a bed state it dropped; make the data ch…
BigSimmo Aug 27, 2026
fac77c2
test(ward-flow): wait out React's streamed staging copy in the new di…
BigSimmo Aug 29, 2026
98a4a77
Make the merge witness an actual witness, one assertion per case
BigSimmo Aug 29, 2026
a1c733c
Date the verbatim lists, before one instructs a reader to undo the ow…
BigSimmo Aug 29, 2026
f341d5d
Record all three layers that held the stale bands, and how I nearly l…
BigSimmo Aug 29, 2026
6f4d143
test(ward-flow): answer the whole-branch review's four Important find…
BigSimmo Aug 29, 2026
9cd9acf
test(ward-flow): finish the streamed-staging fix, and track the mutat…
BigSimmo Aug 29, 2026
8999174
Fold the ward board into Phase 8, taking the board's copy where the w…
BigSimmo Aug 29, 2026
2fbda59
Regenerate the repo awareness snapshot after the fold
BigSimmo Aug 29, 2026
904363e
Close the seven the fold surfaced, moving each number only for a veri…
BigSimmo Aug 29, 2026
ecf397e
Bring the seam guard and the fold procedure onto the main line
BigSimmo Aug 29, 2026
3f18e87
Add the absence check as a rule, and record the one item the fold lef…
BigSimmo Aug 29, 2026
423efb6
Link each ward's board from that ward's own screen, and name the 22 o…
BigSimmo Aug 29, 2026
478d747
test(ward-flow): check what links a dynamic route, and record what it…
BigSimmo Aug 29, 2026
c89667a
refactor(ward-flow): key WARD_NAV_ICONS to the nav-id union, not to s…
BigSimmo Aug 29, 2026
e5fb7e9
docs(ward-flow): correct three decayed unit counts, and re-measure tw…
BigSimmo Aug 29, 2026
c3c86f3
Make the ward diagrams print, and print words rather than colours
BigSimmo Aug 29, 2026
e064271
feat(ward-flow): add the ward index, and fix the branch that did not …
BigSimmo Aug 29, 2026
83e9d19
Print the destinations panel, the waiting lists, and every region's h…
BigSimmo Aug 29, 2026
27ecc6a
Stop the shortlist printing its conclusion with the patient and the o…
BigSimmo Aug 29, 2026
43999e4
test(ward-flow): bound the main-region scan, and replace the index re…
BigSimmo Aug 29, 2026
5993595
docs(ward-flow): record WB-DB-18 in the ward board spec
BigSimmo Aug 29, 2026
281bdf8
Show who is in these beds, and what their discharge plan actually is
BigSimmo Aug 29, 2026
06e4f55
Keep the changeable data in one place, so the real network is a swap …
BigSimmo Aug 29, 2026
50cb1fc
Design the second fold before it is called, and say what to drop
BigSimmo Aug 29, 2026
63214cc
Converge the ward board line with the main line, while it is still free
BigSimmo Aug 29, 2026
498cb52
Close the gap at DB-17, and make the spec say who takes it next
BigSimmo Aug 29, 2026
757d38a
Mark D11 partly superseded, before someone builds the column it still…
BigSimmo Aug 29, 2026
e87a6fe
Record the triage bar's toggle, which the marking had dropped to figures
BigSimmo Aug 29, 2026
7aa0989
Rebuild the board to read left to right as the journey (WB-DB-20)
BigSimmo Aug 29, 2026
0204a81
The board route has a builder now, and it went red because the world …
BigSimmo Aug 29, 2026
d4b85a6
Close the hole where building another hospital loses a whole health s…
BigSimmo Aug 29, 2026
1ecdda0
docs(ward-flow): land the mission, the definition of done, and the st…
BigSimmo Aug 29, 2026
c23f97a
Balance the board, and give the freed space to the beds
BigSimmo Aug 29, 2026
8c2dadb
Catch up with the merged line — HealthService hole closed, mission la…
BigSimmo Aug 29, 2026
78133a7
feat(ward-flow): answer nothing for the clinician on the referral int…
BigSimmo Aug 29, 2026
de02317
Record a tentative diagnosis, and widen the guard rather than walk ar…
BigSimmo Aug 29, 2026
13d2842
fix(ward-flow): close the R2 review findings on the referral intake form
BigSimmo Aug 29, 2026
4409d27
Catch up with the merged line before starting the daily sheet
BigSimmo Aug 29, 2026
b386ab9
Say what each pinned number protects, and make two of them able to se…
BigSimmo Aug 29, 2026
e0bce1b
Merge branch 'claude/ward-flow-print-fixes' into claude/ward-flow-pha…
BigSimmo Aug 29, 2026
f20b808
The daily sheet, and the diagnosis vocabulary moved where a referral …
BigSimmo Aug 29, 2026
bdade7a
The demo clock starts at the real time, and a reset re-anchors to it …
BigSimmo Aug 29, 2026
4ef1f70
Carry six governance documents onto the line everyone builds from
BigSimmo Aug 29, 2026
df5f35c
Say that Wardquestions is live, where the instruction to check it out…
BigSimmo Aug 29, 2026
a3d199f
An instant carries a day, and a wait longer than a day says so
BigSimmo Aug 29, 2026
b27a3f8
Catch up with the working line, so the board clock and the morning pa…
BigSimmo Aug 29, 2026
78b1516
The sheet's stamp carries which day, so two sheets are two moments an…
BigSimmo Aug 29, 2026
b2aefd1
The third bed stage is "discharged", not "released"
BigSimmo Aug 29, 2026
b1198cf
The clock carries a date, and the midnight workaround stops being needed
BigSimmo Aug 29, 2026
004dd6f
Catch up: the clock now carries a date, which makes one sentence on t…
BigSimmo Aug 29, 2026
a1438de
The sheet still prints no date, and that is now a choice rather than …
BigSimmo Aug 29, 2026
68e5e18
Two patients who have waited longer than a day, so the day clock has …
BigSimmo Aug 29, 2026
20a3e29
History says which day, and the places still allowed to assume today …
BigSimmo Aug 29, 2026
aa1be64
Catch up before building against current state, not remembered state
BigSimmo Aug 29, 2026
c66d3fd
Three owner decisions: the board says it is frozen, two labels are pi…
BigSimmo Aug 29, 2026
9005383
The discharge horizon rolls a full day, and says "tomorrow" rather th…
BigSimmo Aug 29, 2026
fd1f668
Patient search finds a referred patient, which it could not do at all
BigSimmo Aug 29, 2026
1c6d822
The away marker goes on the bed tile, because in the panel nobody cou…
BigSimmo Aug 29, 2026
235ce46
A patient who reaches a ward now exists there (Task 17)
BigSimmo Aug 29, 2026
89eefb1
Which band a discharge falls in stops assuming the demonstration is o…
BigSimmo Aug 29, 2026
990b570
One view, always live; the sheet stamps when it was printed; the tour…
BigSimmo Aug 29, 2026
bcb515c
The printed sheet gains a group for who is off the ward, because a li…
BigSimmo Aug 29, 2026
7246806
A patient exists before anything happens to them (PD-1)
BigSimmo Aug 29, 2026
d3e2dfe
Four print rules for four elements I added tonight that would have pr…
BigSimmo Aug 29, 2026
2b91904
Search finds PEOPLE, including the ones it structurally could not (PD-1)
BigSimmo Aug 29, 2026
94ba155
Transport starts unanswered; the confirmation stays put; refusal is a…
BigSimmo Aug 29, 2026
10f6c93
docs(ward-flow): land the catchment data, the destination spec and th…
BigSimmo Aug 29, 2026
34c1ebd
Merge the board line: the rename arrives, the tomorrow band survives it
BigSimmo Aug 30, 2026
f919ccf
Format ward-screen.tsx, which arrived unformatted in the merge
BigSimmo Aug 30, 2026
fd1d163
Bring the ward-flow ledger onto the line that builds from it
BigSimmo Aug 30, 2026
548d4e8
Make the working line's ledger a pointer, not a second register
BigSimmo Aug 30, 2026
e4b7bde
A referral says where it is addressed, and each destination carries o…
BigSimmo Aug 30, 2026
97b963c
"Just say none." — and the measurement that refutes what I warned the…
BigSimmo Aug 30, 2026
0e3c769
A decline gives a reason and nothing else, and a ward that decides is…
BigSimmo Aug 30, 2026
c040340
docs(ward-flow): the referral lifecycle, corrected in the body
BigSimmo Aug 30, 2026
83a7349
One referral, several destinations, each answering for itself
BigSimmo Aug 30, 2026
6427d10
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
fdace4d
Take the board's "Just say none." and the measurement that corrects a…
BigSimmo Aug 30, 2026
9a01250
The daily sheet goes to the bottom and folds away — the board's subje…
BigSimmo Aug 30, 2026
a2c9687
feat(ward-flow): suburb-keyed catchment lookup with explicit review s…
BigSimmo Aug 30, 2026
123b0c1
The shift handover reads live, and the sheet carries the moment it wa…
BigSimmo Aug 30, 2026
5f5e6dd
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
24869cd
Take the board's daily-sheet fold
BigSimmo Aug 30, 2026
6082c36
feat(ward-flow): FD-23 — a ward cannot see where else a patient has b…
BigSimmo Aug 30, 2026
390eba0
A discharge is EXPECTED, confirmed or discharged
BigSimmo Aug 30, 2026
6023a48
A test run that loses a file is refused, not reported green
BigSimmo Aug 30, 2026
1dfd16c
The governance screen stops claiming a record it does not keep
BigSimmo Aug 30, 2026
bc7cb70
A patient can be flagged urgent, and the flag outranks everything
BigSimmo Aug 30, 2026
5243c39
A finished plan's tick-boxes are formatting, not a backlog
BigSimmo Aug 30, 2026
9efb47f
A superseded plan stops telling agents how to execute itself
BigSimmo Aug 30, 2026
14ede0c
The away column becomes a line, because deleting it outright would dr…
BigSimmo Aug 30, 2026
c19e11e
The refusal register catches up with PD-1: identity lives on the patient
BigSimmo Aug 30, 2026
1d603eb
The board's side panels follow the home page, and the toggle moves to…
BigSimmo Aug 30, 2026
22f6567
test(ward-flow): FD-23 holds at the screen boundary, not just the model
BigSimmo Aug 30, 2026
5cdcd3c
An override is kept, and the ward it was made against can read it
BigSimmo Aug 30, 2026
ab52ba3
The board's own note said "times will differ" when the FIGURES can di…
BigSimmo Aug 30, 2026
48af529
The printed handover sheet stops carrying a strip of navigation icons
BigSimmo Aug 30, 2026
c17d8ca
Two real organisations stop appearing in a synthetic prototype
BigSimmo Aug 30, 2026
cac140a
Clear the unused imports my migrations left behind
BigSimmo Aug 30, 2026
3d0f99a
Every hook in the match view is called above its early return
BigSimmo Aug 30, 2026
8ff7ec3
The header stops claiming to know what day it is
BigSimmo Aug 30, 2026
65fda96
A queue for placement counts people still waiting for a place
BigSimmo Aug 30, 2026
1fcca34
Take Ward Verifier's seven corrections and the test runner that refus…
BigSimmo Aug 30, 2026
8232522
Phase 9's nine decisions are stamped CUT where a reader arrives at them
BigSimmo Aug 30, 2026
51f53c2
Catch up before building the ward hub
BigSimmo Aug 30, 2026
4be0ca1
D9-1 is settled: point 3 stands, and urgency now needs a threshold
BigSimmo Aug 30, 2026
68b3f2a
The urgency threshold has an approved shape, and a narrower gap than …
BigSimmo Aug 30, 2026
9daa1e4
The strip above the queue counts the same people the queue does
BigSimmo Aug 30, 2026
0db2ea5
Ten placeholder urgent-mark reasons, recorded as placeholders
BigSimmo Aug 30, 2026
ee0aba0
The test wrapper records that it walks past the repository coordinator
BigSimmo Aug 30, 2026
e6234a0
The numbered stage cells do what their numbering promises
BigSimmo Aug 30, 2026
09b4a9e
Both ED panels on the home page read live state, because a default wa…
BigSimmo Aug 30, 2026
521888a
The referrer chooses where to refer, and is shown why
BigSimmo Aug 30, 2026
69a5fde
The clock offset is applied once because there is no way to apply it …
BigSimmo Aug 30, 2026
93827a7
Take Ward Board's five commits, including the ED default that read th…
BigSimmo Aug 30, 2026
9fbb3f1
The wrapper records the failure that sits upstream of it
BigSimmo Aug 30, 2026
6065987
Verify the commit, not the working tree — three corrections from Ward…
BigSimmo Aug 30, 2026
74253c3
The out-of-area board stops counting days across two clocks
BigSimmo Aug 30, 2026
da8faea
A person gets their own screen, and clicking one in search stops doin…
BigSimmo Aug 30, 2026
8aa2f57
The suburb note is pinned to the model fact that makes it true
BigSimmo Aug 30, 2026
f215a49
The wrapper states its own coverage boundary on every discovered run
BigSimmo Aug 30, 2026
df96f26
An ED referral says which department, and why
BigSimmo Aug 30, 2026
8e874fb
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
8fa5bca
Correcting a correction: there was no stale comment and no victim, on…
BigSimmo Aug 30, 2026
3c5e694
The ED arm typechecks, which the test suite could never have told me
BigSimmo Aug 30, 2026
559b88f
Merge commit '3c5e694cf' into claude/ward-flow-wave1-referral-correct…
BigSimmo Aug 30, 2026
64c4343
The receiving ward stops being the only ward allowed to cancel a tran…
BigSimmo Aug 30, 2026
7a9a859
An emergency department may answer a referral addressed to it, and on…
BigSimmo Aug 30, 2026
5530002
Fold the referral surface in, and with it a conditional-hooks defect …
BigSimmo Aug 30, 2026
26c14da
The ED can be addressed, and the hub reads two fields to know who it …
BigSimmo Aug 30, 2026
1450045
Take the referral repair, and the main line's typecheck goes green again
BigSimmo Aug 30, 2026
3b6c6f0
A referral to an emergency department must name a real one
BigSimmo Aug 30, 2026
d7b2482
The intake journeys answer the destination question that outgrew them
BigSimmo Aug 30, 2026
6e44da5
Take the Playwright journeys answering the destination question
BigSimmo Aug 30, 2026
e04de66
The journey pins why the referral is absent, not merely that the scre…
BigSimmo Aug 30, 2026
6a677e8
The destination spec describes the type that exists
BigSimmo Aug 30, 2026
fd4cf4a
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
179de5b
The transport page has one name, and the one that mattered was invisible
BigSimmo Aug 30, 2026
a195e61
Two urgent-mark reasons describe the setting, not the person
BigSimmo Aug 30, 2026
8f5c449
A red run says WHY, not only THAT it was red
BigSimmo Aug 30, 2026
1eb68c2
The governance board stops publishing a median computed from one case
BigSimmo Aug 30, 2026
31edc12
The ward page stops telling a ward where else its patient went
BigSimmo Aug 30, 2026
55e29f6
A losing ward is never told who won, and never told the patient moved
BigSimmo Aug 30, 2026
98a1a7c
fix(ward-flow): label urgency options with their tier direction
BigSimmo Aug 30, 2026
209d6ca
The tier-label docblock stops describing a deferral that ended
BigSimmo Aug 30, 2026
c13ffb4
The second clock exists, and it is allowed not to
BigSimmo Aug 30, 2026
07048f2
Merge branch 'claude/ward-flow-wave1-referral-corrections' into claud…
BigSimmo Aug 30, 2026
ad82823
The field was named honestly and commented dishonestly
BigSimmo Aug 30, 2026
76b2da9
A referral records the suburb, and the suburb is resolved against the…
BigSimmo Aug 30, 2026
f411107
The ED hub stops saying a time it now records
BigSimmo Aug 30, 2026
181dfa0
A patient of no fixed abode can be referred again
BigSimmo Aug 30, 2026
0a694ef
The triage instant gets a producer, and the hub gets something to show
BigSimmo Aug 30, 2026
f88004b
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
f605918
initialNow was accepted and its value was never used
BigSimmo Aug 30, 2026
699cc35
The sending team books the transport, and a person answers the escort…
BigSimmo Aug 30, 2026
416fb1e
Correcting my own count, and pinning the measurement instead of the m…
BigSimmo Aug 30, 2026
d8cc6c6
The record of the measurement was counted by the measurement
BigSimmo Aug 30, 2026
54882a9
The wrong flag on the wrong tree returns the right answer
BigSimmo Aug 30, 2026
f218555
Two guards discharged, and the referral clock learns to stop
BigSimmo Aug 30, 2026
8821486
Half the clock derivation rendered nowhere, and the code was right
BigSimmo Aug 30, 2026
3012a7e
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
d47944e
A guard for the blindness that had no owner, and it found two more in…
BigSimmo Aug 30, 2026
77f1f3f
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
56c5f53
The owner ruled on the parallel-referral badge, so it stops being mar…
BigSimmo Aug 30, 2026
7f4b7da
"Held" and "Confirmed" each mean two things on this page, and the pag…
BigSimmo Aug 30, 2026
98b5445
Merge branch 'claude/ward-flow-phases-6-7-design' into claude/ward-fl…
BigSimmo Aug 30, 2026
caacf1e
feat(ward-flow): book transport from the ED, with the escort question…
BigSimmo Aug 30, 2026
07f9c59
The withdrawal sentence gets one home, and a guard that could no long…
BigSimmo Aug 30, 2026
68e501e
The network diagram's referral clock can stop, and says which clock i…
BigSimmo Aug 30, 2026
5cc2317
The reducer stops answering a clinical question nobody asked
BigSimmo Aug 30, 2026
58505c7
Merge branch 'claude/ward-flow-print-fixes' into claude/ward-flow-pha…
BigSimmo Aug 30, 2026
6f10f1d
feat(ward-flow): show the urgency tier on every ED card
BigSimmo Aug 30, 2026
0356f57
Merge branch 'claude/ward-flow-setup-967aa0-wf' into claude/ward-flow…
BigSimmo Aug 30, 2026
1af391e
Merge branch 'claude/ward-flow-wave1-referral-corrections' into claud…
BigSimmo Aug 30, 2026
492fe11
Format the three files the fold brought in unformatted
BigSimmo Aug 30, 2026
1888ad1
Carry thirty ward documents onto the main line, as files and never as…
BigSimmo Aug 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1007,3 +1007,51 @@ Durable notes for Cursor Cloud agents (see `docs/agents-guide.md` and `docs/test
- Requires Node >=24.15.0 <25 / npm 11.x (installed via nvm, symlinked to `/usr/local/cargo/bin`).
- Offline verification: `npm run lint`, `npm run typecheck`, `npm run test`, `npm run verify:cheap`, and `npm run verify:pr-local` all pass without secrets.
- For authorized GitHub work, use the connected GitHub connector/MCP tools as primary interface (`BigSimmo` write access).

# Commit as you go — the thing that loses work here is interruption, not carelessness

Work sitting uncommitted is the only work this repository can lose. Commit when a change becomes
coherent, **not when the task ends** — a task in this project routinely spans hours, several agents,
a blocked gate and four other conversations.

**The trigger to watch is being interrupted, and it does not feel like risk at the time.** The
observed failure, 2026-08-29: seven files were formatted, the verifying test run was refused because
another worktree held the machine-wide lock, and attention moved to answering other sessions. The
files sat uncommitted for an hour, through a dozen unrelated commits, and were found only because an
unrelated status check happened to list them. Nothing about that hour felt like carrying risk. **The
work was finished and the mind had moved on — that combination is the hazard.**

## The rule

**Before you turn from your own work to anything else — answering another session, waiting on a lock,
investigating a tangent, reporting to the user — either commit what you have, or state in your next
message exactly what is uncommitted and why.** Saying it out loud is what makes it recoverable; a
silent working tree is not a memory.

- **Commit each coherent unit** — a module and its test, a fix and its proof, a document. Not the
whole task.
- **A formatting pass is a commit**, not a loose end to tidy later. It is the change most often
orphaned, because it feels finished the moment it is written.
- **Waiting is not a reason to hold a commit.** If a gate is blocked, commit the work and record the
gate as unrun. An unverified commit is recoverable; an unwritten one is not.
- **Never `git add -A`** — another agent may share this worktree, and the wildcard commits their
in-flight edits under your message.
- **Mutation testing requires committing first.** Restoring a tracked file with `git checkout --`
also discards any uncommitted fix inside it, and `git checkout --` has no effect at all on an
untracked file — it leaves the mutation in place and reports an error most drivers never read.

## Why this matters more here than in an ordinary repository

**A worktree under `.claude/worktrees` has twice been removed mid-session on this machine** by
unrelated cleanup sessions. A commit is what makes that survivable: the branch ref and the objects
live in the shared repository at the top level, not in the worktree folder, so losing the folder
costs nothing but a fresh checkout. **An uncommitted file is the only thing that does not survive it.**

## When you genuinely cannot commit

The pre-commit hook refuses whenever other unstaged or untracked files exist under `src/components/`
or `tests/` — so while a concurrent agent is mid-write, you cannot commit even work of your own that
is entirely disjoint. That is correct behaviour and must not be worked around.

**When it blocks you, say so in your next message and name the files.** Then commit the moment the
tree is yours again. The failure mode is not the block; it is forgetting that the block happened.
132 changes: 126 additions & 6 deletions data/repo-awareness-snapshot.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"version": "repo-awareness-snapshot-v1",
"captured_revision": {
"sha": "59bb01b3e5c6b5c846053d2916d3e780ea38bbb1",
"committed_at": "2026-08-27T05:20:05+00:00"
"sha": "e5fb7e9909414014187ba0fbbb30531af06e80d9",
"committed_at": "2026-08-29T20:40:59+08:00"
},
"routes": {
"modes": [
Expand Down Expand Up @@ -893,6 +893,11 @@
"file": "src/app/mockups/ward-flow/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/board/[unitId]",
"file": "src/app/mockups/ward-flow/board/[unitId]/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/capacity",
"file": "src/app/mockups/ward-flow/capacity/page.tsx",
Expand Down Expand Up @@ -928,6 +933,11 @@
"file": "src/app/mockups/ward-flow/handover/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/morning",
"file": "src/app/mockups/ward-flow/morning/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/movements",
"file": "src/app/mockups/ward-flow/movements/page.tsx",
Expand All @@ -938,6 +948,11 @@
"file": "src/app/mockups/ward-flow/network/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/out-of-area",
"file": "src/app/mockups/ward-flow/out-of-area/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/patients/[patientId]",
"file": "src/app/mockups/ward-flow/patients/[patientId]/page.tsx",
Expand All @@ -948,6 +963,16 @@
"file": "src/app/mockups/ward-flow/queue/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/referrals",
"file": "src/app/mockups/ward-flow/referrals/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/referrals/new",
"file": "src/app/mockups/ward-flow/referrals/new/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/search",
"file": "src/app/mockups/ward-flow/search/page.tsx",
Expand All @@ -968,6 +993,11 @@
"file": "src/app/mockups/ward-flow/ward/[unitId]/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/ward-flow/wards",
"file": "src/app/mockups/ward-flow/wards/page.tsx",
"area": "mockup"
},
{
"path": "/mockups/warning-consolidation",
"file": "src/app/mockups/warning-consolidation/page.tsx",
Expand Down Expand Up @@ -1397,9 +1427,9 @@
],
"counts": {
"modes": 15,
"pages": 195,
"pages": 201,
"product_pages": 55,
"mockup_pages": 140,
"mockup_pages": 146,
"redirects": 17,
"api": 58
}
Expand Down Expand Up @@ -3161,6 +3191,26 @@
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/plans/2026-08-27-ward-flow-phase-6-morning-page.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/plans/2026-08-27-ward-flow-phase-7-front-door.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/plans/2026-08-28-ward-flow-phase-8-distance.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/plans/2026-08-28-ward-flow-ward-board.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/rag-upgrade/canonical/approval-matrix.md",
"section": "superpowers",
Expand Down Expand Up @@ -3446,6 +3496,26 @@
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/specs/2026-08-27-ward-flow-phase-6-morning-page-design.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/specs/2026-08-27-ward-flow-phase-7-front-door-design.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/specs/2026-08-28-ward-flow-phase-8-distance-design.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/superpowers/specs/2026-08-28-ward-flow-ward-board-design.md",
"section": "superpowers",
"catalogued": false
},
{
"path": "docs/testing.md",
"section": "root",
Expand All @@ -3461,6 +3531,11 @@
"section": "root",
"catalogued": true
},
{
"path": "docs/ward-flow-autonomous-session-2026-08-28.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-clinician-check.md",
"section": "root",
Expand All @@ -3476,6 +3551,31 @@
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-editing-guide.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-fold-procedure.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-handover-2026-08-28.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-handover-2026-08-29.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-handover-after-phase-7.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-phase-2-kickoff.md",
"section": "root",
Expand Down Expand Up @@ -3766,6 +3866,26 @@
"section": "root",
"catalogued": true
},
{
"path": "docs/ward-flow-phase-8-9-questions.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-phase-8-decisions.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-phase-8-mutation-coverage-limits.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-phase-9-decisions.md",
"section": "root",
"catalogued": false
},
{
"path": "docs/ward-flow-phase-handoff.md",
"section": "root",
Expand Down Expand Up @@ -3867,9 +3987,9 @@
}
],
"counts": {
"documents": 480,
"documents": 498,
"catalogued": 106,
"uncatalogued": 374,
"uncatalogued": 392,
"sections": 19
}
},
Expand Down
64 changes: 61 additions & 3 deletions docs/codebase-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,7 @@ it) from clinical discovery entirely.
- **Route/role map:** `docs/ward-management-mode-map.md`
- **Model:** `src/components/ward-management/ward-clock.ts` (the only module that reads the
wall clock), `ward-model.ts` (domain types only), `ward-eligibility.ts` (the eight
placement gates), `ward-sites.ts` (17 sites, 8 emergency departments, 22 units),
placement gates), `ward-sites.ts` (17 sites, 8 emergency departments, 23 units),
`ward-movements.ts` (48 movements, 6 bed releases), `ward-derivations.ts` (shared pure UI
derivations)
- **Surfaces:** `ward-management-console.tsx` (command), `ward-management-modes.tsx` (mode
Expand Down Expand Up @@ -436,7 +436,63 @@ it) from clinical discovery entirely.
escalation board and unlike the frozen handover, reads the live `useWardFlow()` clock on every
render. Renders an explicit "No matches" note rather than an empty table when nothing fits. This is
the page's own single search composer — Ward Flow routes never mount the shared global shell
composer, so nothing else on the page competes with it)
composer, so nothing else on the page competes with it), `referrals/referral-intake.tsx` (Phase 7
Task 4, spec "The front door": the referral intake form — `/mockups/ward-flow/referrals/new`;
one form for every source (community, crisis service, police, ambulance, inter-hospital),
phone-first with `min-h-12` tap targets; every picker is a `<select>` derived from a runtime
list in `ward-model.ts` (`COHORTS`, `HOME_REGIONS`, `REFERRAL_SOURCES`, `SEXES`,
`URGENCY_LEVELS`) or from `wardSites` itself, never a hand-written array; no free-text input
anywhere. Dispatches `RECEIVE_REFERRAL` with the fixed `role: "community"`; a reducer refusal
surfaces as a visible `Rejection` (`ward-referral-intake-rejection`) rather than being
swallowed. Not yet linked from the rail/panel/drawer nav — recorded in
`WARD_NAV_INTENTIONALLY_UNLISTED` (`ward-nav.ts`) pending Task 6), `referrals/referral-board.tsx`
and `referrals/referral-match.tsx` (Phase 7 Task 5, spec "The front door": the coordinator's
referral board and match view — `/mockups/ward-flow/referrals`. The board lists queued referrals
first (urgency tier, then longest-waiting first — `referralQueueOrder`, `ward-referrals.ts`),
then recently decided ones, with "waiting since" rendered prominently on every queued row
(`referralWaitLabel`). Selecting a queued referral opens the match view, keyed on the referral's
own id: every unit in the network via `referralCandidates` (never truncated, sorted or ranked —
site-table order throughout), each either accepting the referral or carrying its single reason
(`matchReason`) — a forensic bed is shown with its own badge and is never offered; an age band
with no unit anywhere in the network reads as a structural fact ("No youth unit exists in this
network"), never as an operational "no bed available"; a unit that has never confirmed its
capacity states that plainly ("has never confirmed its allocatable bed count"), never a
fabricated number or a bare zero. Dispatches `ACCEPT_REFERRAL`/`DECLINE_REFERRAL`
with role `coordinator`; a reducer refusal (including the failing gate's own name) surfaces as a
visible `Rejection` rather than being swallowed. Not yet linked from the rail/panel/drawer nav —
recorded in `WARD_NAV_INTENTIONALLY_UNLISTED` (`ward-nav.ts`) pending Task 6),
`out-of-area/out-of-area-board.tsx` (Phase 8 Task 5, spec D8-3: the out-of-area ledger —
`/mockups/ward-flow/out-of-area`, a `board` entry in `WARD_NAV` beside Handover, Escalation,
Discharges, Morning and the referral board. Renders `outOfAreaLedger` (`ward-referrals.ts`) and
recomputes nothing: one row per person currently in a bed the invented travel-time table places
three hours or more from home or reachable only by air, showing home region, unit, band label and
elapsed time since arrival — no countdown, no target, no threshold colour. Entries render in the
records' own order with no comparator anywhere in the file; a sort by elapsed time would read as
a repatriation ranking nobody has decided. The ledger's two counts are stated as two separate
sentences that share no denominator — people out of area, and admissions the table cannot place
at all, the second roughly twelve times the first on the seeded records — with no fraction,
percentage or progress element permitted by test. Both
`INVENTED_OUT_OF_AREA_THRESHOLD_NOTICE` and `SYNTHETIC_TRAVEL_TIMES_NOTICE` are imported from
`ward-distance.ts` and rendered whole, above the entries. The only ward screen that reads the
admission seed, and it does so as a default parameter: `Admission` is not in reducer state and no
event creates or ends one, so the screen states in its own words that the list is seeded and is
not a live count),
`wards/ward-index.tsx` (Phase 8: the ward index — `/mockups/ward-flow/wards`, a `role` entry in
`WARD_NAV` above the single seeded ward example. One page listing every ward in the network,
grouped under its health service in `wardServiceOrder` and linking each ward to
`/mockups/ward-flow/ward/[unitId]`. It exists because that dynamic route served 23 wards while
exactly one — `ward-nav.ts`'s `rph-adult-secure` example — was named by a concrete href anywhere
in the source, so 22 ward screens could be reached only by typing an address. Enumerated from the
provider's live `units`, never a hand-written list and never `allUnits()` directly
(`UNITS_FIXTURE_ALLOWLIST` in `tests/ward-flow-single-source.test.ts`); the service is derived per
unit via `siteByCode`, and a unit whose site code resolves to nothing renders in an explicit
"Not placed in a health service" group rather than being dropped from every group. Deliberately
carries NO bed figure, count, availability or occupancy — an owner decision, guarded by test: an
index that grew a bed column would be a second surface answering the capacity board's question in
wording that can drift. Nothing sorts, ranks or truncates. The 23-of-23 coverage claim is
established in `tests/ward-nav.test.ts` by rendering the page and comparing the links inside its
`<main>` against `allUnits()` by set equality — not by that file's source scan, which counts
concrete hrefs only and deliberately refuses to read a `.map()` builder as coverage)
- **State layer (Phase 3):** `ward-flow-provider.tsx` (`WardFlowProvider`/`useWardFlow`, mounted at
`src/app/mockups/ward-flow/layout.tsx`), `ward-flow-reducer.ts` (the one mutation path),
`ward-flow-events.ts` (event/role table)
Expand All @@ -448,7 +504,9 @@ it) from clinical discovery entirely.
(both sections and their empty states), `tests/ward-patient-search.test.ts` (`searchMovements`,
including the closed-movement exclusion proven against both a real and a constructed fixture case),
`tests/ward-patient-search.dom.test.tsx` (the single-composer shape, live results, and the
"No matches" empty state)
"No matches" empty state), `tests/ward-referral-screens.dom.test.tsx` (Phase 7 Task 4: every
picker offers its full runtime list, no free-text input anywhere, the fixed community role, and
the rejection surface on a real reducer refusal)

### Developer hub (`src/app/mockups/development/`, `src/lib/developer-area/`)

Expand Down
3 changes: 2 additions & 1 deletion docs/design-system/adoption-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,8 @@
"tests/medication-interaction-surfaces.dom.test.tsx",
"tests/privacy-ui.test.ts",
"tests/ui-forms-section-nav.spec.ts",
"tests/ui-v2-components.dom.test.tsx"
"tests/ui-v2-components.dom.test.tsx",
"tests/ward-governance-thin-sample.test.ts"
],
"baseline": {
"targetLayer": "v2",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 2,
"id": "354316f3-74f7-4d2b-a3f0-91bac3fb18e6",
"createdOn": "2026-08-29",
"action": "add",
"payload": {
"pri": "P2",
"type": "issue",
"summary": "Ward Flow network diagram has no @media print block and prints zero unit nodes",
"detail": "Pre-existing, NOT caused by the ward board fold or Phase 8 — recorded before the fold so it is not later attributed to the merge. Found by the Phase 8 visual pass (branch claude/ward-flow-phases-6-7-design, reported DONE_WITH_CONCERNS at 7f2a024b9) and deliberately left unfixed to avoid widening that task's scope. The whole-network diagram renders no unit nodes at print time in either mode, because the component ships no @media print rules at all. This matters more than an ordinary print bug: the ward board branch is building print-time work under decision DB-10 (the printed morning sheet, current at print time), and Ward Flow's stated purpose is to be shown to WA clinicians, where someone will press Print. Owner of the fix is whoever owns DB-10. Ward suite was 898 passed across 62 files with this defect present, so no test sees it — it is only visible by printing.",
"source": "WARD - Repo Change session, 2026-08-29, relayed from the Phase 8 visual pass",
"issueUlid": "01M15Y9HKFWCJGYBB6Y9Z91JNJ"
}
}
2 changes: 1 addition & 1 deletion docs/scripts-index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Scripts index

Curated map of `scripts/` (278 files) and the `package.json` script surface (280 entries),
Curated map of `scripts/` (280 files) and the `package.json` script surface (280 entries),
grouped by purpose. This is orientation, not an exhaustive per-file listing — the authoritative
command list is `package.json`, and `npm run docs:check-scripts` verifies every `npm run <x>`
referenced in docs resolves to a real script. `npm run docs:update` refreshes the exact counts above.
Expand Down
Loading
Loading