Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
b794000
chore(deps): bump node in the docker-images group
dependabot[bot] Aug 31, 2026
33a7bd4
feat(brand): draw the small-size optical cut at chrome sizes
claude Aug 31, 2026
9026284
Merge pull request #2473 from BigSimmo/claude/design-system-mobile-re…
BigSimmo Aug 31, 2026
79a824e
Compact Answer source and safety support UI (#2474)
BigSimmo Aug 31, 2026
76a55ec
fix(sitemap): remove stale documents/signed-urls entry from generator…
BigSimmo Aug 31, 2026
fc2b38c
feat(ledger): separate Ward Flow and core tasks with domain filters (…
BigSimmo Aug 31, 2026
779efa2
Compact the differential safety snapshot (#2472)
BigSimmo Aug 31, 2026
0469804
fix(search): settle mode before submit (#2480)
BigSimmo Aug 31, 2026
7f5aba1
fix(rag/db/hub): Core RAG, Security Definer hardening, DB functions, …
BigSimmo Aug 31, 2026
980a48a
fix(tooling): execute PR group 1 tooling, CI/CD, scripts, and governa…
BigSimmo Aug 31, 2026
d29f70e
feat(ui/a11y/caring-contacts): execute PR Group 3 UI, accessibility, …
BigSimmo Aug 31, 2026
8b2371d
feat(differentials): surface map and related actions (#2471)
BigSimmo Aug 31, 2026
97512d7
chore(deps): bump the npm-production group across 1 directory with 10…
dependabot[bot] Aug 31, 2026
20befa2
chore(deps-dev): bump the npm-development group across 1 directory wi…
dependabot[bot] Aug 31, 2026
e8c9ae4
chore(deps): bump anthropics/claude-code-action from 1.0.199 to 1.0.2…
dependabot[bot] Aug 31, 2026
e16d5f6
fix(ui/answer): keep answer-surface counts neutral and the safety til…
BigSimmo Aug 31, 2026
f7f9d01
feat(search): interpret natural language within smart catalogue modes…
BigSimmo Aug 31, 2026
0fc9daf
docs(issues): record the ui-smoke test-deletion near miss (#2483)
BigSimmo Aug 31, 2026
058abf5
Answer page: status chips above the answer, thumb verdicts below it (…
BigSimmo Sep 1, 2026
47af581
test(ui/answer): measure the status chips instead of asking them nicely
claude Sep 1, 2026
1cf2fb4
Align the collapsed sidebar rail and open the source drawer on the pa…
claude Sep 1, 2026
b923e61
Merge pull request #2485 from BigSimmo/claude/answer-page-handover-c2…
BigSimmo Sep 1, 2026
f328372
Trim Codex/Cursor-only sections from AGENTS.md, retire a completed ba…
BigSimmo Sep 1, 2026
07df3f6
fix(privacy): make the phone chrome band an opaque bar, and give it a…
claude Sep 1, 2026
539df17
Record the orphaned document-cover hook as a queued ledger item
claude Sep 1, 2026
13dc7b1
Merge origin/main into claude/sidebar-alignment-cleanup-b3jrtp
claude Sep 1, 2026
6e00a14
Merge branch 'main' into claude/design-system-mobile-redesign-sha4cn
BigSimmo Sep 1, 2026
f2967ae
Merge pull request #2487 from BigSimmo/claude/design-system-mobile-re…
BigSimmo Sep 1, 2026
48b27a3
Merge branch 'main' into claude/sidebar-alignment-cleanup-b3jrtp
BigSimmo Sep 1, 2026
058693b
Merge pull request #2488 from BigSimmo/claude/sidebar-alignment-clean…
BigSimmo Sep 1, 2026
d307494
Publish current privacy controls and governance status (#2490)
BigSimmo Sep 1, 2026
be7946d
fix(db): align schema.sql corrector body with the applied migration 2…
BigSimmo Sep 1, 2026
a633eb6
chore(issues): record the migration-replay vs schema.sql mirror gap o…
BigSimmo Sep 1, 2026
00c2c12
fix(calculators): enforce clinical safety and evidence governance (#2…
BigSimmo Sep 1, 2026
0e79b35
feat(services): add canonical safety and provenance foundation (#2489)
BigSimmo Sep 1, 2026
1e250bb
Record PsychSift owner privacy attestations (#2496)
BigSimmo Sep 1, 2026
fdbaf94
chore(issues): raise #ZBAC9D to P1 with verified retrieval-path evide…
BigSimmo Sep 1, 2026
ce07c42
Wire the developer hub environment strip to real environment facts (#…
BigSimmo Sep 1, 2026
e2e1655
fix(clinical): align decision-support copy with the product boundary;…
claude Sep 1, 2026
7a797e5
Merge remote-tracking branch 'origin/main' into claude/design-system-…
claude Sep 1, 2026
1d5f961
Merge branch 'main' into claude/design-system-app-review-sxd0mm
BigSimmo Sep 1, 2026
d550bc3
fix(design-system): pin token-layer counts metadata against divergences
BigSimmo Sep 1, 2026
6de367a
docs: refresh scripts-index inventory counts for two new design-syste…
BigSimmo Sep 1, 2026
707408a
fix(clinical): correct two more over-claiming surfaces; close four ho…
claude Sep 1, 2026
0379222
Merge remote-tracking branch 'origin/claude/design-system-app-review-…
claude Sep 1, 2026
5ee3e36
fix(clinical): stop four surfaces calling themselves decision support…
BigSimmo Sep 1, 2026
2123acf
Merge remote-tracking branch 'origin/main' into claude/design-system-…
claude Sep 1, 2026
33bfca8
Surface clinical answer failures the task ledger already records (#2498)
BigSimmo Sep 1, 2026
cfd5ba3
Merge main into claude/design-system-app-review-sxd0mm for PR #2499
BigSimmo Sep 1, 2026
b04f38b
fix(design-system): conditional media blocks no longer leak into the …
claude Sep 1, 2026
76e4d03
Merge remote-tracking branch 'origin/claude/design-system-app-review-…
claude Sep 1, 2026
99f0d28
fix(clinical): the prescribing panel calls itself decision support; c…
BigSimmo Sep 1, 2026
a7b2ef9
issues: close #PM9SP1, add the mode-home footer contradiction, record…
claude Sep 1, 2026
21dd75c
Merge remote-tracking branch 'origin/main' into claude/design-system-…
claude Sep 1, 2026
8893dd2
issues: cancel the superseded #PM9SP1 close request
claude Sep 1, 2026
ca04e29
issues: correct the #PM9SP1 close inventory (Codex P2 on #2503)
claude Sep 1, 2026
510730e
Answer page: count each safety passage once, and put disclosures wher…
BigSimmo Sep 1, 2026
c740c86
Merge branch 'main' into claude/design-system-app-review-sxd0mm
BigSimmo Sep 1, 2026
7fc588b
Merge pull request #2503 from BigSimmo/claude/design-system-app-revie…
BigSimmo Sep 1, 2026
414cad1
fix(build): keep the source typecheck out of Next's build output agai…
BigSimmo Sep 1, 2026
7cd20b1
fix(ci): align runtime contract with Node 26
BigSimmo Sep 1, 2026
5cfda80
fix(db): restrict owner deletion on the four null-owner-means-public …
BigSimmo Sep 1, 2026
7198a20
docs: record PR 2470 review sweep
BigSimmo Sep 1, 2026
ddc42a1
chore: align lockfile Node engine metadata
BigSimmo Sep 1, 2026
90db76d
docs: record final PR 2470 review
BigSimmo Sep 1, 2026
3e7fc9b
Merge main into dependabot/docker/docker-images-263a700181
BigSimmo Sep 1, 2026
d9222e3
docs: record PR 2470 branch sync
BigSimmo Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 10 additions & 11 deletions .claude/hooks/session-start.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/bin/bash
# SessionStart hook for Claude Code on the web.
# The app is engine-strict on Node >=24.15 <25 / npm 11.x, but web containers
# The app is engine-strict on Node >=26.0.0 <27 / npm 11.x, but web containers
# ship an older Node on PATH, so nothing installs or runs until a Node meeting
# that floor is present. Installs one into $HOME/.node24 (cached with the
# that floor is present. Installs one into $HOME/.node26 (cached with the
# container), exposes it via $CLAUDE_ENV_FILE, and installs npm dependencies.
set -euo pipefail

Expand All @@ -12,17 +12,16 @@ fi

payload="$(cat 2>/dev/null || true)"

NODE_VERSION="24.19.0"
NODE_VERSION="26.8.1"
# Keep in step with the floor in package.json engines.node. A matching major is
# not enough: dev dependencies (jsdom) carry a minor-level floor, so a 24.13 on
# PATH satisfied the old major-only check and then failed `npm ci` with
# EBADENGINE. That blocked PRs #1611, #1697, #1705 and #1740.
NODE_MINIMUM="24.15.0"
# Exclusive major ceiling, matching the "<25" half of engines.node. Checking only
# the floor would let a container shipping Node 25+ skip provisioning and then
# not enough: keep the complete range check so a future minor-level floor cannot
# let an older Node 26 runtime reach `npm ci` and fail with an opaque EBADENGINE.
NODE_MINIMUM="26.0.0"
# Exclusive major ceiling, matching the "<27" half of engines.node. Checking only
# the floor would let a container shipping Node 27+ skip provisioning and then
# fail `npm ci`, which is the same blind-spot as the major-only check above.
NODE_MAJOR_CEILING="25"
NODE_HOME="$HOME/.node24"
NODE_MAJOR_CEILING="27"
NODE_HOME="$HOME/.node26"
NODE_BIN="$NODE_HOME/node-v${NODE_VERSION}-linux-x64/bin"

supported_runtime() {
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/issues/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ the report; record that fetch separately because the report itself performs no p

If a filter is given, filter the open items before rendering steps 2–3, then show only matching
queued tasks and matching non-queued items: `/issues P1` (by priority), `/issues issues` /
`/issues recs` / `/issues tasks` (by type), `/issues <keyword>` (summary/detail substring match).
`/issues recs` / `/issues tasks` (by type), `/issues ward` (Ward Flow tasks only via `npm run issues:report -- --ward --json`), `/issues core` (repository/platform tasks excluding Ward Flow via `npm run issues:report -- --core --json`), `/issues <keyword>` (summary/detail substring match via `npm run issues:report -- --filter <keyword> --json`).

`/issues wins` or `/issues agent-safe` runs
`npm run issues:report -- --agent-safe-wins --json`. The classifier includes only queued work
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/run-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Never, even during a sweep:
2. `mcp__github__get_me` to confirm identity and access, then `git fetch origin --prune`.
3. Record the current branch/ref so it can be restored at sweep end. Require a clean
`git status`; if the worktree is dirty, do not stash or discard — either restrict the sweep to
PRs whose fixes do not need this checkout, or create a separate `git worktree add` (Node 24,
PRs whose fixes do not need this checkout, or create a separate `git worktree add` (Node 26,
`npm ci`) and report which was chosen.
4. `mcp__github__list_pull_requests` with `state=open`, paginated in small batches. Build the work
queue in ascending PR number.
Expand Down
2 changes: 1 addition & 1 deletion .design-sync/config.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/claude.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
fetch-depth: 1
- name: Run Claude Code
if: ${{ env.CLAUDE_CODE_OAUTH_TOKEN != '' }}
uses: anthropics/claude-code-action@dcb57747bfceeaa1fa72638cae52295d1d853d4a # v1.0.199
uses: anthropics/claude-code-action@a874e9ecd7bb36efdad65429c6b35815f5a08f10 # v1.0.210
with:
# The action's default trigger phrase is "@claude"; it reads the
# triggering comment/review and acts on the current PR head.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codex-run-pr-operator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.15.0
node-version: 26.8.1
cache: npm

- name: Install locked dependencies without repository lifecycle scripts
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/live-web-vitals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ jobs:
- name: Use the repository Node runtime
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "24"
node-version: "26"

- name: Normalize the configured origin
run: |
Expand Down
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24
26
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
24
26
187 changes: 20 additions & 167 deletions AGENTS.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# syntax=docker/dockerfile:1
# PsychSift app tier (Next.js). See docs/deployment-architecture.md.
#
# The repo is engine-strict (Node 24.x / npm 11.x via .npmrc + preinstall
# guard), so every stage pins the same Node 24 base image. The build stage
# The repo is engine-strict (Node 26.x / npm 11.x via .npmrc + preinstall
# guard), so every stage pins the same Node 26 base image. The build stage
# runs the repo's own `npm run build` (guard-next-build + next build) so the
# image build fails exactly where a local build would.
#
Expand All @@ -18,7 +18,7 @@
# NEVER baked into the image — inject them at run time from the host's
# secret store.

FROM node:24-bookworm-slim@sha256:235600a8101ab264e117b1768e925532262668dc9b581ef1dd7d96ced463b8e7 AS node-base
FROM node:26-bookworm-slim@sha256:367679cf9792759492a486e4aa4b421764d71a9546a6dae8aab81a99eb797b3e AS node-base

FROM node-base AS deps
WORKDIR /app
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.worker
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# container instead of completing the edge-agent migration.
#
# Runtime contents (2026-07-13 audit, finding 12 — slimmed):
# - Node 24 + PRODUCTION-ONLY node_modules: the worker runs as a
# - Node 26 + PRODUCTION-ONLY node_modules: the worker runs as a
# prebuilt esbuild bundle (dist/worker/index.mjs), so tsx and the rest
# of the dev toolchain never reach the image.
# - Tesseract OCR (Debian package, bundles English language data).
Expand All @@ -27,7 +27,7 @@
# `server-only` marker to the standalone stub at build time (the job
# run-tsx.mjs previously did at runtime) and keeps npm packages external,
# so the bundle resolves them from the runner's production node_modules.
FROM node:24-bookworm-slim@sha256:235600a8101ab264e117b1768e925532262668dc9b581ef1dd7d96ced463b8e7 AS node-base
FROM node:26-bookworm-slim@sha256:367679cf9792759492a486e4aa4b421764d71a9546a6dae8aab81a99eb797b3e AS node-base

FROM node-base AS build
WORKDIR /app
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ questions with source citations that link back to the original PDF/document.

## Setup

1. Use Node.js 24.x with npm 11.x. CI runs on Node 24, and `.nvmrc` /
1. Use Node.js 26.x with npm 11.x. CI runs on Node 26, and `.nvmrc` /
`.node-version` pin the same runtime for local version managers. CI also runs
`npm run check:edge:functions`, which requires Deno v2.x.
2. Install dependencies:
Expand Down
6 changes: 6 additions & 0 deletions bundle-budget.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
"gzipBytes": 627814,
"tolerancePct": 25
},
"serverPages": {
"/mockups/development/review-state": {
"rawBytesCeiling": 2500000,
"gzipBytesCeiling": 350000
}
},
"routes": {
"/": {
"gzipBytes": 285184,
Expand Down
135 changes: 135 additions & 0 deletions data/calculators/evidence.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
{
"sources": [
{
"id": "source:governance",
"issuer": "PsychSift",
"title": "Calculator clinical-safety governance record",
"type": "internal_governance_record",
"version": "2026-09-01",
"url": "https://github.com/BigSimmo/Database/blob/main/docs/superpowers/specs/2026-09-01-calculators-clinical-safety.md",
"jurisdiction": "Australia",
"status": "reviewed",
"claimsSupported": [
"claim:phq9:interpretation",
"claim:phq9:safety-flag",
"claim:gad7:interpretation",
"claim:k10:interpretation",
"claim:cage:interpretation",
"claim:auditc:interpretation",
"claim:mdq:interpretation",
"claim:sadpersons:interpretation",
"claim:ybocs:interpretation"
],
"limitations": ["Records the release decision and does not replace an instrument source."]
},
{
"id": "source:phq9",
"issuer": "Kroenke, Spitzer & Williams",
"title": "The PHQ-9: Validity of a Brief Depression Severity Measure",
"type": "journal_article",
"version": "2001 validation study",
"url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC1495268/",
"jurisdiction": "International",
"status": "reviewed",
"claimsSupported": ["claim:phq9:interpretation"],
"limitations": [
"A completed score supports assessment and monitoring; it is not a diagnosis or management decision."
]
},
{
"id": "source:gad7",
"issuer": "Spitzer et al.",
"title": "A Brief Measure for Assessing Generalized Anxiety Disorder",
"type": "journal_article",
"version": "2006 validation study",
"url": "https://pubmed.ncbi.nlm.nih.gov/16717171/",
"jurisdiction": "International",
"status": "reviewed",
"claimsSupported": ["claim:gad7:interpretation"],
"limitations": ["A completed score supports anxiety assessment and does not establish a diagnosis."]
},
{
"id": "source:k10",
"issuer": "Australian Bureau of Statistics",
"title": "Kessler Psychological Distress Scale (K10)",
"type": "government_information_paper",
"version": "2003 information paper",
"url": "https://www.abs.gov.au/ausstats/abs%40.nsf/papersbyReleaseDate/4D5BD324FE8B415FCA2579D500161D57",
"jurisdiction": "Australia",
"status": "reviewed",
"claimsSupported": ["claim:k10:interpretation"],
"limitations": ["The K10 measures psychological distress and is not a diagnostic category."]
},
{
"id": "source:cage",
"issuer": "Ewing",
"title": "Detecting alcoholism: The CAGE questionnaire",
"type": "journal_article",
"version": "1984 original article",
"url": "https://pubmed.ncbi.nlm.nih.gov/6471323/",
"jurisdiction": "International",
"status": "reviewed",
"claimsSupported": ["claim:cage:interpretation"],
"limitations": ["CAGE is a lifetime problem-drinking screen and does not assess current use or withdrawal."]
},
{
"id": "source:auditc",
"issuer": "Australian Government Department of Health",
"title": "Australian standard drinks guide",
"type": "government_web_guidance",
"version": "Current web guidance",
"url": "https://www.health.gov.au/topics/alcohol/about-alcohol/standard-drinks-guide",
"jurisdiction": "Australia",
"status": "reviewed",
"claimsSupported": ["claim:auditc:interpretation"],
"limitations": ["The standard-drink reference does not establish a diagnosis or management decision."]
},
{
"id": "source:mdq",
"issuer": "Hirschfeld et al.",
"title": "Development and validation of a screening instrument for bipolar spectrum disorder",
"type": "journal_article",
"version": "2000 validation study",
"url": "https://pubmed.ncbi.nlm.nih.gov/11058490/",
"jurisdiction": "International",
"status": "permission_review_required",
"claimsSupported": ["claim:mdq:interpretation"],
"limitations": ["Quarantined pending approval of digital-use rights and completion semantics."]
},
{
"id": "source:sadpersons",
"issuer": "Patterson et al.",
"title": "Evaluation of suicidal patients: the SAD PERSONS scale",
"type": "journal_article",
"version": "1983 original article",
"url": "https://pubmed.ncbi.nlm.nih.gov/6867245/",
"jurisdiction": "International",
"status": "not_for_active_use",
"claimsSupported": ["claim:sadpersons:interpretation"],
"limitations": ["Not released for active score-based clinical decision support."]
},
{
"id": "source:ybocs",
"issuer": "Goodman et al.",
"title": "The Yale-Brown Obsessive Compulsive Scale. I. Development, Use, and Reliability",
"type": "journal_article",
"version": "1989 original article",
"url": "https://pubmed.ncbi.nlm.nih.gov/2684084/",
"jurisdiction": "International",
"status": "permission_review_required",
"claimsSupported": ["claim:ybocs:interpretation"],
"limitations": ["Quarantined because the current generic anchors are not a verified Y-BOCS implementation."]
}
],
"claims": [
{ "id": "claim:phq9:interpretation", "sourceIds": ["source:phq9", "source:governance"] },
{ "id": "claim:phq9:safety-flag", "sourceIds": ["source:phq9", "source:governance"] },
{ "id": "claim:gad7:interpretation", "sourceIds": ["source:gad7", "source:governance"] },
{ "id": "claim:k10:interpretation", "sourceIds": ["source:k10", "source:governance"] },
{ "id": "claim:cage:interpretation", "sourceIds": ["source:cage", "source:governance"] },
{ "id": "claim:auditc:interpretation", "sourceIds": ["source:auditc", "source:governance"] },
{ "id": "claim:mdq:interpretation", "sourceIds": ["source:mdq", "source:governance"] },
{ "id": "claim:sadpersons:interpretation", "sourceIds": ["source:sadpersons", "source:governance"] },
{ "id": "claim:ybocs:interpretation", "sourceIds": ["source:ybocs", "source:governance"] }
]
}
Loading
Loading