Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .claude/skills/gates/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Check these before believing any result.
for exactly this reason — if installed packages do not match `package-lock.json`, treat any test,
lint, or typecheck result as void until `npm ci` has run. Its own failure message says as much.
- **`verify:cheap` stops at the first failing check.** Everything after that point never ran. Do not
describe the change as broadly verified when the gate died at check 2 of 35.
describe the change as broadly verified when the gate died at check 2 of 36.
- **Changed-file formatting is required in CI but is not part of `verify:cheap`.** A locally green
`verify:cheap` can still fail CI on formatting. During iteration, format only task-owned files.
Before a push, follow `AGENTS.md`: from an isolated or otherwise fully owned worktree run
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,13 @@ jobs:
if: needs.changes.outputs.static_heavy_changed == 'true'
run: npm run check:cross-mode-index

# Guards the sign-off binding: a reviewed Act-section summary is pinned by hash to
# the statutory text its reviewer read, so changed law fails the gate instead of
# silently shipping a stale clinical claim.
- name: Act section summary drift
if: needs.changes.outputs.static_heavy_changed == 'true'
run: npm run check:mha-act-sections

- name: Design-system contract
if: needs.changes.outputs.static_heavy_changed == 'true'
run: npm run check:design-system-contract
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ Verification pyramid — run the **smallest gate that covers the change**, then
| Gate | What it is |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `npm run test:focused -- --files <paths>` | Source-only iteration. Fails closed for deleted files and test infrastructure — then run `npm run test`. |
| `npm run verify:cheap` | The broad local gate: 32 static/consistency gates + `lint` + `typecheck` + full offline unit suite; use for cross-module risk, not automatically |
| `npm run verify:cheap` | The broad local gate: 33 static/consistency gates + `lint` + `typecheck` + full offline unit suite; use for cross-module risk, not automatically |
| `npm run verify:pr-local` | Risk-routed PR mirror: focused docs/workflow contracts for recognised light scope, fail-closed heavy checks for executable or unknown scope. `-- --dry-run --files <paths>` shows selection. |
| `npm run verify:ui` | Chromium production journeys. Run `npm run ensure` first. |
| `npm run verify:phone-chrome` | Phone-chrome changes; selects affected owners/journeys before escalating to `verify:ui` |
Expand Down
51 changes: 51 additions & 0 deletions data/forms-act-section-cues.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"exportMetadata": {
"format": "forms-act-section-cues",
"formatVersion": 1,
"note": "Draft form-to-section mappings for the seven official forms that data/forms-catalog.json never indexed, so they carry no sourceFacts.sectionCue of their own. Each entry states the basis for review; none is derived from the password-protected form PDF. Drafted mappings remain unavailable in the clinical UI until a named reviewer records sign-off."
},
"forms": [
{
"code": "1A attachment",
"sections": ["41", "42"],
"status": "drafted",
"basis": "The attachment carries referral information given in confidence by someone other than the person. s 41(c) and (d) require the referral to set out the information the suspicion rests on and to distinguish its source; s 42(2) is the exception that keeps information supplied on condition of non-disclosure from the person."
},
{
"code": "4D",
"sections": ["555"],
"status": "drafted",
"basis": "s 555 is the interstate transfer order: the person in charge of a hospital, with the Chief Psychiatrist's written approval, may order a State inpatient's transfer to an interstate mental health service."
},
{
"code": "4E",
"sections": ["557"],
"status": "drafted",
"basis": "s 557 creates the transfer approval order, by which the person in charge of a hospital, with the Chief Psychiatrist's written consent, approves an interstate inpatient's transfer to that hospital."
},
{
"code": "7C",
"sections": ["110"],
"status": "drafted",
"basis": "s 110 is the cancelling-leave power: where a psychiatrist reasonably believes it is inappropriate for an involuntary inpatient to remain away on leave, they may order the leave cancelled."
},
{
"code": "10H",
"sections": ["238"],
"status": "drafted",
"basis": "s 238(5) requires a psychiatrist to review the use of bodily restraint once a person has been restrained for more than 6 hours, and to record the date, time and results."
},
{
"code": "12C attachment",
"sections": ["262"],
"status": "drafted",
"basis": "s 262(7) and (8) require a psychiatrist to review a communication-restriction order before the end of each 24-hour period and to confirm, amend or revoke it, filing a record and the reasons."
},
{
"code": "13",
"sections": ["201"],
"status": "drafted",
"basis": "s 201 is the ECT statistics duty: the person in charge of a mental health service where ECT is performed must report monthly to the Chief Psychiatrist."
}
]
}
Loading
Loading