Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
cc4c8d0
fix(fhir): enforce SMART patient-compartment isolation at the storage…
cursoragent Aug 2, 2026
d4f3f5e
fix(clinical): enforce clinical validation at every persistence boundary
cursoragent Aug 2, 2026
bea21bd
fix(server): harden deployment configuration and stop leaking internals
cursoragent Aug 2, 2026
d512198
fix(hl7): scope the HL7 tables to their tenant and bound the MLLP lis…
cursoragent Aug 2, 2026
7569684
fix(cds): store a PHI-free invocation summary and authorise the hook
cursoragent Aug 2, 2026
5dcfcd1
fix(auth): make login tenant-unambiguous and scope lockout to one acc…
cursoragent Aug 2, 2026
dd85f72
fix(smart): bind launch context server-side, sign ID tokens asymmetri…
cursoragent Aug 2, 2026
e2ad2a6
fix(server): validate calculator and patient request bodies explicitly
cursoragent Aug 2, 2026
1403404
Audit trail: single fail-closed chained writer and monotonic sequence
cursoragent Aug 2, 2026
158507e
Database: prove encryption at rest, fail closed, and evidence break-g…
cursoragent Aug 2, 2026
a1c11c3
Services: redact PHI at the sink, pseudonymise workforce identifiers,…
cursoragent Aug 2, 2026
cba5e50
IPC: justify bulk PHI reads, enforce RBAC, confine paths, harden preload
cursoragent Aug 2, 2026
45530e6
fix(clinical): source-trace every calculator constant and fail closed…
cursoragent Aug 2, 2026
f37ec98
L-9: move Node suite scratch dirs to os.tmpdir() with guaranteed cleanup
cursoragent Aug 2, 2026
2f706f5
M-19: collapse to one vulnerability allowlist with expiry enforcement
cursoragent Aug 2, 2026
b808847
M-20: make signing mandatory by default in the release gate
cursoragent Aug 2, 2026
ec228c7
H-8: unbreak the suite runner - drop a suite entry that never existed
cursoragent Aug 2, 2026
16aed59
H-8: cover the renderer's data-access layer and shared helpers
cursoragent Aug 2, 2026
ca8fc30
H-8: measure and cover the five IPC-bound PHI pages
cursoragent Aug 2, 2026
774e81d
docs(compliance): produce an executed validation package for 1.3.0 (C-2)
cursoragent Aug 2, 2026
a638a4b
docs(compliance): correct traceability matrix citations to files that…
cursoragent Aug 2, 2026
d3b956d
docs: make marketing, compliance and technical documents describe the…
cursoragent Aug 2, 2026
8c77a4e
docs(security): define a role-based disclosure channel with an SLA an…
cursoragent Aug 2, 2026
fe16684
docs: turn RUNBOOK.md into a real operational runbook (I-5)
cursoragent Aug 2, 2026
64a6510
docs: record the provenance of sample and demonstration data (I-8)
cursoragent Aug 2, 2026
acfe692
docs(legal): remove commercial material from the product repository (…
cursoragent Aug 2, 2026
9919ffa
build: add CODEOWNERS and document required branch protection (L-16)
cursoragent Aug 2, 2026
d517791
docs: record the validation-finding remediation in the changelog
cursoragent Aug 2, 2026
10b01a3
H-8: cover the session controls - auth context and idle logoff
cursoragent Aug 2, 2026
e62f40e
M-18: make the supply-chain gates able to fail
cursoragent Aug 2, 2026
f0a9872
H-8: cover the forced security gates, the roster import and the PHI p…
cursoragent Aug 2, 2026
78e84c8
H-8: enforce a real coverage gate and make every CI job blocking
cursoragent Aug 2, 2026
3116a1b
M-23: execute the password, session and lockout controls instead of g…
cursoragent Aug 2, 2026
4fe74f6
M-18: run the vulnerability scan on the weekly schedule too
cursoragent Aug 2, 2026
ed522ea
M-23: fail the e2e job on a committed test.only
cursoragent Aug 2, 2026
14a9198
test(fhir): cover transaction-bundle scope enforcement at the route l…
cursoragent Aug 2, 2026
c630c1a
fix(H-1,H-13): renderer PHI access gate, cache purge, idle timeout
cursoragent Aug 2, 2026
bd050e0
fix(H-6,H-7,H-14,M-21,M-24): restore licensing gates and API parity
cursoragent Aug 2, 2026
4babe11
fix(lint): use strict equality in license nullish checks
NeuroKoder3 Aug 2, 2026
9f5cf85
fix(e2e): clear security gates on form-login session
NeuroKoder3 Aug 2, 2026
800f6c1
fix(ci): report required build commit status
NeuroKoder3 Aug 3, 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
122 changes: 122 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# TransTrack — code ownership
#
# Every line assigns mandatory reviewers to a path. GitHub applies the LAST
# matching pattern only, so the ordering below is significant: broad defaults
# first, security-critical paths last.
#
# The team handles below are PLACEHOLDERS. Create the teams in the GitHub
# organization and adjust the handles before enabling "Require review from Code
# Owners" in branch protection, otherwise the rule silently matches nothing.
#
# Required teams:
# @transtrack/engineering general engineering review
# @transtrack/platform-security Electron/IPC boundary, crypto, audit, secrets
# @transtrack/clinical-informatics clinical calculators and reference data
# @transtrack/interoperability FHIR, SMART, HL7 v2, EHR integrations
# @transtrack/quality-assurance validation package and controlled documents
# @transtrack/release-engineering build, signing, release and CI workflows
#
# Rationale, and the branch-protection settings that make this file
# load-bearing, are documented in CONTRIBUTING.md.

# ---------------------------------------------------------------------------
# Default
# ---------------------------------------------------------------------------
* @transtrack/engineering

# ---------------------------------------------------------------------------
# Desktop application — security boundary
# ---------------------------------------------------------------------------
# The IPC surface is the trust boundary between the renderer and the main
# process. Every handler is an authorization decision.
/electron/ipc/ @transtrack/platform-security @transtrack/engineering
/electron/preload.cjs @transtrack/platform-security
/electron/main.cjs @transtrack/platform-security @transtrack/engineering

# Schema, migrations and encryption. A migration defect is not recoverable
# from a running site without a restore.
/electron/database/ @transtrack/platform-security @transtrack/engineering

# Authentication, SSO and session handling.
/electron/auth/ @transtrack/platform-security

# Audit trail, encryption verification, secure delete, key handling, logging
# redaction, SIEM forwarding. Changes here can silently weaken a Part 11 or
# HIPAA control without failing a test.
/electron/services/audit*.cjs @transtrack/platform-security
/electron/services/electronicSignature.cjs @transtrack/platform-security @transtrack/quality-assurance
/electron/services/encryptionKeyManagement.cjs @transtrack/platform-security
/electron/services/secretEncryption.cjs @transtrack/platform-security
/electron/services/secureDelete.cjs @transtrack/platform-security
/electron/services/logger.cjs @transtrack/platform-security
/electron/services/siemForwarder.cjs @transtrack/platform-security
/electron/services/integrityMonitor.cjs @transtrack/platform-security
/electron/services/accessControl.cjs @transtrack/platform-security

# ---------------------------------------------------------------------------
# Clinical calculation
# ---------------------------------------------------------------------------
# Calculator constants are traceable to controlled sources. A change to a
# coefficient is a change to a clinical output and requires clinical review,
# not only engineering review.
/electron/services/calculators/ @transtrack/clinical-informatics @transtrack/engineering
/electron/services/calculators/reference/ @transtrack/clinical-informatics @transtrack/quality-assurance
/electron/functions/validators.cjs @transtrack/clinical-informatics @transtrack/platform-security
/docs/compliance/CLINICAL_SOURCES.md @transtrack/clinical-informatics @transtrack/quality-assurance

# ---------------------------------------------------------------------------
# Server tier — authorization and tenant isolation
# ---------------------------------------------------------------------------
# FHIR storage enforces SMART patient-compartment isolation and org scoping.
# This is where cross-tenant PHI disclosure would originate.
/server/src/fhir/ @transtrack/platform-security @transtrack/interoperability
/server/src/smart/ @transtrack/platform-security @transtrack/interoperability
/server/src/auth/ @transtrack/platform-security
/server/src/db/migrations/ @transtrack/platform-security @transtrack/engineering
/server/src/integrations/ @transtrack/interoperability
/server/src/hl7/ @transtrack/interoperability @transtrack/platform-security

# ---------------------------------------------------------------------------
# Controlled documents
# ---------------------------------------------------------------------------
# The validation package is a controlled document set under
# docs/compliance/policies/CHANGE_MANAGEMENT_SOP.md. Changes require QA review
# regardless of who authored them.
/docs/compliance/ @transtrack/quality-assurance
/docs/compliance/executed/ @transtrack/quality-assurance
/docs/compliance/RESIDUAL_RISK.md @transtrack/quality-assurance @transtrack/platform-security
/docs/compliance/FMEA.md @transtrack/quality-assurance @transtrack/platform-security
/SECURITY.md @transtrack/platform-security @transtrack/quality-assurance
/RUNBOOK.md @transtrack/quality-assurance

# ---------------------------------------------------------------------------
# Build, release and CI
# ---------------------------------------------------------------------------
# A change to the build or to a CI gate can remove a control without touching
# any control code.
/.github/workflows/ @transtrack/release-engineering @transtrack/platform-security
/.github/CODEOWNERS @transtrack/platform-security @transtrack/quality-assurance
/electron-builder.enterprise.json @transtrack/release-engineering @transtrack/platform-security
/scripts/ @transtrack/release-engineering @transtrack/engineering
/scripts/check-compliance-docs.mjs @transtrack/quality-assurance
/scripts/sign-win.cjs @transtrack/release-engineering @transtrack/platform-security
/scripts/notarize.cjs @transtrack/release-engineering @transtrack/platform-security
/package.json @transtrack/release-engineering @transtrack/engineering
/package-lock.json @transtrack/release-engineering
/security/vulnerability-exceptions.json @transtrack/platform-security @transtrack/quality-assurance

# ---------------------------------------------------------------------------
# Security-control tests
# ---------------------------------------------------------------------------
# These suites are the executable form of the OQ. Weakening one is equivalent
# to weakening the control it verifies.
/tests/audit*.test.cjs @transtrack/platform-security
/tests/phi*.test.cjs @transtrack/platform-security
/tests/encryptionVerification.test.cjs @transtrack/platform-security
/tests/secureDelete.test.cjs @transtrack/platform-security
/tests/electronHardening.test.cjs @transtrack/platform-security
/tests/rbacMatrix.test.cjs @transtrack/platform-security
/tests/cross-org-access.test.cjs @transtrack/platform-security
/tests/calculatorReferenceVectors.test.cjs @transtrack/clinical-informatics @transtrack/quality-assurance
/tests/complianceDocs.test.mjs @transtrack/quality-assurance
/server/test/unit/patientCompartment.test.mjs @transtrack/platform-security
57 changes: 52 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Dependabot configuration.
#
# Every ecosystem previously carried `open-pull-requests-limit: 0`, which does
# not "queue updates for later" — it disables Dependabot entirely, including
# security updates (finding M-18). A HIPAA-aligned product cannot rely on a
# human noticing an advisory feed.
#
# The limits below are set so a weekly run produces a reviewable amount of work
# rather than a wall of PRs: patch and minor updates are grouped into one PR per
# ecosystem, and majors are still excluded from automation because they need
# intentional migration work. The blocking `npm audit` gate
# (scripts/audit-with-exceptions.mjs, run on every push and PR) remains the
# control that stops a vulnerable dependency from shipping; Dependabot is what
# keeps the tree close enough to upstream that the fix is a small change.
version: 2
updates:
- package-ecosystem: "npm"
Expand All @@ -7,18 +21,35 @@ updates:
day: "monday"
time: "06:00"
timezone: "UTC"
# Disabled until dependency updates are requested intentionally.
open-pull-requests-limit: 0
open-pull-requests-limit: 5
labels:
- "dependencies"
commit-message:
prefix: "deps"
versioning-strategy: increase-if-necessary
groups:
# One PR for the routine churn. CI runs the full suite on it, so a single
# red check identifies the group and the members can be split out.
desktop-minor-and-patch:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
# Security updates are never grouped with routine churn: they must be
# reviewable and mergeable on their own timeline.
desktop-security:
applies-to: security-updates
patterns:
- "*"
ignore:
# Never auto-bump majors — review those manually.
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# Native / Electron stack — bump only with intentional rebuild + CI.
# Native / Electron stack — a bump here needs a rebuild against the
# Electron ABI and a re-run of the packaged-native verification, so it is
# raised deliberately rather than on a schedule.
- dependency-name: "electron"
- dependency-name: "electron-builder"
- dependency-name: "better-sqlite3-multiple-ciphers"
Expand All @@ -30,13 +61,25 @@ updates:
day: "monday"
time: "06:00"
timezone: "UTC"
open-pull-requests-limit: 0
open-pull-requests-limit: 5
labels:
- "dependencies"
- "server"
commit-message:
prefix: "deps(server)"
versioning-strategy: increase-if-necessary
groups:
server-minor-and-patch:
applies-to: version-updates
patterns:
- "*"
update-types:
- "minor"
- "patch"
server-security:
applies-to: security-updates
patterns:
- "*"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
Expand All @@ -47,12 +90,16 @@ updates:
directory: "/"
schedule:
interval: "monthly"
open-pull-requests-limit: 0
open-pull-requests-limit: 3
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
groups:
actions:
patterns:
- "*"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
Loading