@ai-matrx/records 0.20.0 → 0.21.0

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/CHANGELOG.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
3
 
4
- ## 0.20.0 — 2026-09-20
4
+ ## 0.21.0 — 2026-09-20
5
5
 
6
6
  **The store moved and this package's census caught it — twice.** The release
7
7
  gate runs the live-door suite against the real record store, and it went red on
@@ -18,6 +18,40 @@ main:
18
18
  are: the call named a value the shape does not accept, and the store's own
19
19
  sentence names the number and the range.
20
20
 
21
+ > **About 0.20.0 on npm.** This lane tagged `0.20.0` from a commit that carried
22
+ > the census fixes above but NOT the checklist doors below — the tag was pushed
23
+ > while a merge of main was still open, and a tag is never moved. `0.21.0` is
24
+ > the first version that carries both. Nobody should sit on 0.20.0.
25
+
26
+
27
+ ## 0.20.0
28
+
29
+ **"Every new hire gets these twelve steps." — the checklist doors, PRODUCTS row 13.**
30
+
31
+ A checklist template is a record of the store: ordered steps, each with the role
32
+ that owns it, how many days in it is due, what it waits for and what it asks for
33
+ before it counts as done, plus the thing that starts a run. Starting one makes
34
+ ONE work item per step in the one work layer — assigned by role to real people,
35
+ dated from the offsets, dependencies carried across — so a step appears in the
36
+ person's ordinary inbox beside everything else and there is no
37
+ checklist-shaped queue anywhere.
38
+
39
+ Nine doors, all of them live on the main database:
40
+ `checklistRefusal` (pure — a screen may ask it on every keystroke, and the
41
+ refusal arrives before the save), `checklistDeclare`, `checklistTemplates`,
42
+ `checklistTemplateShape`, `checklistStart`, `checklistRun`, `checklistRuns`,
43
+ `checklistStepComplete`, `checklistStepRefusal`.
44
+
45
+ `ChecklistRunStep` carries `blocked_by`, `refusal`, `may_complete` and
46
+ `requires_key`, so a screen can say why a step cannot be finished yet — in the
47
+ words a person would use — before anybody clicks, file the evidence under the
48
+ key the checklist itself named, and show no control at all where a control would
49
+ fail.
50
+
51
+ THE DEPENDENCY RULE LIVES IN THE STORE, not in these methods: a BEFORE trigger
52
+ on `custom.record` refuses a step reaching Done while a step it waits for is
53
+ open, so `workSetState` meets the same sentence `checklistStepComplete` does.
54
+
21
55
 
22
56
  ## 0.19.0
23
57
 
@@ -2214,6 +2214,16 @@ var DOORS = {
2214
2214
  workApprovalMayDecide: "work_approval_may_decide",
2215
2215
  workApprovalDecide: "work_approval_decide",
2216
2216
  workApprovalRead: "work_approval_read",
2217
+ // PRODUCTS row 13 — checklists and SOP runs.
2218
+ checklistRefusal: "checklist_refusal",
2219
+ checklistDeclare: "checklist_declare",
2220
+ checklistTemplates: "checklist_templates",
2221
+ checklistTemplateShape: "checklist_template_shape",
2222
+ checklistStart: "checklist_start",
2223
+ checklistRun: "checklist_run",
2224
+ checklistRuns: "checklist_runs",
2225
+ checklistStepComplete: "checklist_step_complete",
2226
+ checklistStepRefusal: "checklist_step_refusal",
2217
2227
  // Declared here BECAUSE they do not exist yet: naming them is what makes the
2218
2228
  // absence visible to `pnpm check:store-registry` and to the suite.
2219
2229
  metadataSearch: "metadata_search",
@@ -3552,6 +3562,86 @@ function createRecordsClient(config) {
3552
3562
  "workSlotExpire"
3553
3563
  );
3554
3564
  },
3565
+ // ── checklists and SOP runs ──────────────────────────────────────────
3566
+ async checklistRefusal({ spec }) {
3567
+ return callDoor(
3568
+ DOORS.checklistRefusal,
3569
+ { p_spec: spec },
3570
+ "checklistRefusal"
3571
+ );
3572
+ },
3573
+ async checklistDeclare({ spec, template_id = null }) {
3574
+ return callDoor(
3575
+ DOORS.checklistDeclare,
3576
+ { p_organization_id: org, p_spec: spec, p_template_id: template_id },
3577
+ "checklistDeclare"
3578
+ );
3579
+ },
3580
+ async checklistTemplates(args) {
3581
+ return callDoor(
3582
+ DOORS.checklistTemplates,
3583
+ {
3584
+ p_organization_id: org,
3585
+ p_about_table_id: args?.about_table_id ?? null,
3586
+ p_limit: args?.limit ?? 100
3587
+ },
3588
+ "checklistTemplates"
3589
+ );
3590
+ },
3591
+ async checklistTemplateShape({ template_id }) {
3592
+ return callDoor(
3593
+ DOORS.checklistTemplateShape,
3594
+ { p_organization_id: org, p_template_id: template_id },
3595
+ "checklistTemplateShape"
3596
+ );
3597
+ },
3598
+ async checklistStart({ template_id, about_record_id = null, roles = {}, startingAt = null }) {
3599
+ return callDoor(
3600
+ DOORS.checklistStart,
3601
+ {
3602
+ p_organization_id: org,
3603
+ p_template_id: template_id,
3604
+ p_about_record_id: about_record_id,
3605
+ p_roles: roles,
3606
+ p_starting_at: startingAt
3607
+ },
3608
+ "checklistStart"
3609
+ );
3610
+ },
3611
+ async checklistRun({ run_id }) {
3612
+ return callDoor(
3613
+ DOORS.checklistRun,
3614
+ { p_organization_id: org, p_run_id: run_id },
3615
+ "checklistRun"
3616
+ );
3617
+ },
3618
+ async checklistRuns(args) {
3619
+ return callDoor(
3620
+ DOORS.checklistRuns,
3621
+ {
3622
+ p_organization_id: org,
3623
+ p_about_table_id: args?.about_table_id ?? null,
3624
+ p_about_record_id: args?.about_record_id ?? null,
3625
+ p_include_closed: args?.includeClosed ?? true,
3626
+ p_limit: args?.limit ?? 100
3627
+ },
3628
+ "checklistRuns"
3629
+ );
3630
+ },
3631
+ async checklistStepComplete({ step_id, evidence = {} }) {
3632
+ return callDoor(
3633
+ DOORS.checklistStepComplete,
3634
+ { p_organization_id: org, p_step_id: step_id, p_evidence: evidence },
3635
+ "checklistStepComplete"
3636
+ );
3637
+ },
3638
+ async checklistStepRefusal({ step_id }) {
3639
+ return callDoor(
3640
+ DOORS.checklistStepRefusal,
3641
+ { p_organization_id: org, p_step_id: step_id },
3642
+ "checklistStepRefusal"
3643
+ );
3644
+ },
3555
3645
  // ── the work layer a person actually uses ────────────────────────────
3556
3646
  async workInbox(args) {
3557
3647
  return callDoor(