Commit 68c8478
release: v1.3.0 — ModelForge Medical, a clinical decision-support workspace
This release moves the project from a general-purpose local AI chat/agent
client to a medical-focused clinical workspace. See the notice at the top
of README.md and its Product boundary section for what that does and
doesn't mean (never an autonomous diagnostician or prescriber, no
regulatory certification claimed).
Highlights:
- Clinical layer: Patient Cases, Evidence Library, per-case Knowledge
Graph, and an Audit & Privacy log, plus a structured 8-section response
contract and deterministic safety checks (emergency red-flag detection,
allergy/medication conflict warnings, transmission preview, redaction)
that run independently of the model.
- MCP client rework on the official SDK: protocol version negotiation,
AJV schema validation, resources/prompts, OAuth 2.1+PKCE, per-tool trust
profiles, and a DICOM MCP integration with an enforced tool denylist.
- Privacy/security: passphrase-based encryption at rest for patient cases
and chat sessions, automatic session locking, configurable audit
retention, and a SHA-256 hash-chained tamper-evident audit log.
- Approved model registry, clinical-note review sign-off, structured
consent records, and a swappable MedicationSafetyProvider.
- Rust-backed data store I/O (lib/, napi-rs): atomic JSON read/write and
audit-log hashing/appends moved off the O(n) Node path, fixing an O(n^2)
audit-log growth pattern (~20s -> ~0.3s at 5,000 events) — every native
call has a verified pure-TypeScript fallback. See
docs/RUST_DATASTORE_TEST_REPORT.md and docs/RUST_MIGRATION_ASSESSMENT.md.
- SBOM generation and Dependabot coverage across every workspace; CI's
Rust job now also builds and load-verifies the native addon on Windows
and macOS, not just Linux.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>1 parent d39eb04 commit 68c8478
77 files changed
Lines changed: 9484 additions & 353 deletions
File tree
- .github
- workflows
- app
- src
- ipc
- test/fixtures
- docs
- e2e/tests
- frontend/src
- components
- lib
- pages
- types
- lib
- src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
144 | 156 | | |
145 | 157 | | |
146 | 158 | | |
| |||
161 | 173 | | |
162 | 174 | | |
163 | 175 | | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
164 | 179 | | |
| 180 | + | |
165 | 181 | | |
166 | 182 | | |
167 | 183 | | |
| 184 | + | |
168 | 185 | | |
169 | 186 | | |
170 | 187 | | |
| |||
173 | 190 | | |
174 | 191 | | |
175 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
176 | 276 | | |
177 | 277 | | |
178 | 278 | | |
| |||
0 commit comments