@oimlsmart/platform-server 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/vocab/permissions.ts +32 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oimlsmart/platform-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "The OIML SMART platform server kernel: the store seam (ServerStore + the D1 and SQLite implementations), the canonical D1 migration set both deployments apply, the instance profile, the mailer, the RBAC map, the OIDC/OAuth client cones, and the shared role/permission vocabulary. Consumed by the smart monorepo (browser/) and the identity service.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
package/src/vocab/permissions.ts
CHANGED
|
@@ -145,6 +145,12 @@ export const TRANSITION_PERMISSIONS: Record<string, readonly ActionPermission[]>
|
|
|
145
145
|
// records mode (TODO.adoption/02): the registered-offline entry — the
|
|
146
146
|
// application's honest hop into ACCEPTED without a fake walked history.
|
|
147
147
|
'application:register_offline->ACCEPTED': ['records.register'],
|
|
148
|
+
// DEMO_FLOWS wave 1: the lifecycle closure — the IA marks the Evaluation
|
|
149
|
+
// Project COMPLETED once the completion gate's settling conditions all
|
|
150
|
+
// hold (the model's completion_settled guard refuses otherwise); the act
|
|
151
|
+
// is the IA's decision desk on the application, the same family as the
|
|
152
|
+
// accept/reject decisions.
|
|
153
|
+
'application:ia_marks_completed->COMPLETED': ['application.accept'],
|
|
148
154
|
|
|
149
155
|
// test_request (the dispatch; TODO.adoption/07's quote leg: the
|
|
150
156
|
// laboratory's quotation response and the IA's commercial decision on it)
|
|
@@ -161,6 +167,9 @@ export const TRANSITION_PERMISSIONS: Record<string, readonly ActionPermission[]>
|
|
|
161
167
|
// test_report
|
|
162
168
|
'test_report:lab_submits->SUBMITTED': ['tr.submit'],
|
|
163
169
|
'test_report:ia_starts_review->UNDER_REVIEW': ['tr.review'],
|
|
170
|
+
// DEMO_FLOWS wave 1: the review period's opening on the test report —
|
|
171
|
+
// the IA's TR-review desk (the consultation rides the review class).
|
|
172
|
+
'test_report:ia_opens_consultation->CONSULTATION': ['tr.review'],
|
|
164
173
|
'test_report:ia_accepts->ACCEPTED': ['tr.review'],
|
|
165
174
|
'test_report:ia_rejects->REJECTED': ['tr.review'],
|
|
166
175
|
'test_report:lab_withdraws_for_edit->DRAFT': ['tr.submit'],
|
|
@@ -184,6 +193,9 @@ export const TRANSITION_PERMISSIONS: Record<string, readonly ActionPermission[]>
|
|
|
184
193
|
// Fired by the TR-review service when the last report is determined —
|
|
185
194
|
// the reviewing officer holds tr.review, the evaluation worker er.review.
|
|
186
195
|
'evaluation_report:last_tr_determined->ALL_TR_REVIEWED': ['tr.review', 'er.review'],
|
|
196
|
+
// DEMO_FLOWS wave 1: the review period's opening — the IA officer's
|
|
197
|
+
// evaluation-work act (the consultation is the ER's review surface).
|
|
198
|
+
'evaluation_report:ia_opens_consultation->CONSULTATION': ['er.review'],
|
|
187
199
|
'evaluation_report:ia_approves->APPROVED': ['er.finalize'],
|
|
188
200
|
'evaluation_report:ia_rejects->REJECTED': ['er.finalize'],
|
|
189
201
|
'evaluation_report:ia_approves_with_conditions->CONDITIONALLY_APPROVED': ['er.finalize'],
|
|
@@ -217,6 +229,22 @@ export const TRANSITION_PERMISSIONS: Record<string, readonly ActionPermission[]>
|
|
|
217
229
|
'certificate:revise->ACTIVE': ['certificate.issue'],
|
|
218
230
|
'certificate:transfer_ownership->ACTIVE': ['certificate.issue'],
|
|
219
231
|
|
|
232
|
+
// certificate_registration (DEMO_FLOWS wave 1 — the register's
|
|
233
|
+
// auto-publish doctrine, the program owner's 2026-08-28 decision): the
|
|
234
|
+
// hub-side registration submission lifecycle — the registrant
|
|
235
|
+
// announcement's shell, the signed package's intake verification, the
|
|
236
|
+
// publication, the recorded refusal. All three edges are SYSTEM acts:
|
|
237
|
+
// the intake automation walks them on the verified signed submission
|
|
238
|
+
// (no human gate between verify and publish — the register's trust is
|
|
239
|
+
// in the signature + the receipt machinery; the human review surfaces
|
|
240
|
+
// stay read postures). The map names the desk authority the automation
|
|
241
|
+
// exercises — the same shape the other engine-fired edges ride (the
|
|
242
|
+
// sample_verification projection's transitions name
|
|
243
|
+
// verification.perform).
|
|
244
|
+
'certificate_registration:intake_verifies->SUBMITTED': ['certificate.register'],
|
|
245
|
+
'certificate_registration:auto_publishes->PUBLISHED': ['certificate.register'],
|
|
246
|
+
'certificate_registration:intake_refuses->REFUSED': ['certificate.register'],
|
|
247
|
+
|
|
220
248
|
// test_assignment (the laboratory's work items; `omit` rides the IA's
|
|
221
249
|
// dispatch withdrawal cascade)
|
|
222
250
|
'test_assignment:lab_accepts->ACCEPTED': ['run.perform'],
|
|
@@ -354,6 +382,10 @@ export const STORE_MACHINES: Record<string, string> = {
|
|
|
354
382
|
formInstances: 'form_instance',
|
|
355
383
|
evaluationReports: 'evaluation_report',
|
|
356
384
|
certificates: 'certificate',
|
|
385
|
+
// DEMO_FLOWS wave 1: the register's registration submissions are
|
|
386
|
+
// machinated too (the intake-verify → auto-publish chain); the generic
|
|
387
|
+
// write path gates status writes on the machine's declared edges.
|
|
388
|
+
certificateRegistrations: 'certificate_registration',
|
|
357
389
|
testAssignments: 'test_assignment',
|
|
358
390
|
testRuns: 'test_run',
|
|
359
391
|
measuringInstrumentSamples: 'measuring_instrument_sample',
|