mdkg 0.3.6 → 0.3.7

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/CLI_COMMAND_MATRIX.md +56 -7
  3. package/README.md +33 -3
  4. package/dist/cli.js +132 -11
  5. package/dist/command-contract.json +431 -16
  6. package/dist/commands/bundle.js +2 -0
  7. package/dist/commands/checkpoint.js +139 -1
  8. package/dist/commands/db.js +8 -0
  9. package/dist/commands/format.js +116 -0
  10. package/dist/commands/goal.js +60 -0
  11. package/dist/commands/graph.js +148 -0
  12. package/dist/commands/handoff.js +295 -0
  13. package/dist/commands/mcp.js +9 -0
  14. package/dist/commands/pack.js +3 -1
  15. package/dist/commands/query_output.js +2 -0
  16. package/dist/commands/show.js +8 -0
  17. package/dist/commands/status.js +1 -0
  18. package/dist/commands/task.js +2 -0
  19. package/dist/commands/upgrade.js +61 -0
  20. package/dist/commands/validate.js +162 -3
  21. package/dist/commands/work.js +164 -0
  22. package/dist/core/project_db_queue_contract.js +101 -0
  23. package/dist/graph/edges.js +15 -0
  24. package/dist/graph/frontmatter.js +4 -1
  25. package/dist/graph/indexer.js +8 -0
  26. package/dist/graph/node.js +12 -1
  27. package/dist/graph/sqlite_index.js +2 -0
  28. package/dist/graph/subgraphs.js +2 -0
  29. package/dist/graph/validate_graph.js +5 -0
  30. package/dist/graph/visibility.js +6 -0
  31. package/dist/init/AGENT_START.md +4 -1
  32. package/dist/init/CLI_COMMAND_MATRIX.md +24 -3
  33. package/dist/init/README.md +17 -2
  34. package/dist/init/init-manifest.json +12 -12
  35. package/dist/init/templates/default/bug.md +2 -0
  36. package/dist/init/templates/default/chk.md +3 -0
  37. package/dist/init/templates/default/epic.md +2 -0
  38. package/dist/init/templates/default/feat.md +2 -0
  39. package/dist/init/templates/default/goal.md +3 -0
  40. package/dist/init/templates/default/spike.md +2 -0
  41. package/dist/init/templates/default/task.md +2 -0
  42. package/dist/init/templates/default/test.md +2 -0
  43. package/dist/pack/export_json.js +20 -8
  44. package/dist/pack/export_md.js +15 -4
  45. package/dist/pack/export_xml.js +9 -4
  46. package/dist/pack/metrics.js +12 -4
  47. package/dist/pack/pack.js +9 -1
  48. package/package.json +6 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": 1,
3
3
  "tool": "mdkg",
4
- "package_version": "0.3.6",
4
+ "package_version": "0.3.7",
5
5
  "source": {
6
6
  "help_targets": "scripts/cli_help_targets.js",
7
7
  "command_matrix": "CLI_COMMAND_MATRIX.md"
@@ -1305,7 +1305,7 @@
1305
1305
  "visibility": "public",
1306
1306
  "summary": "mdkg checkpoint command",
1307
1307
  "usage": [
1308
- " mdkg checkpoint new <title> [--ws <alias>] [--json]"
1308
+ " mdkg checkpoint new <title> [--kind implementation|test-proof|goal-closeout|audit|handoff] [--ws <alias>] [--json]"
1309
1309
  ],
1310
1310
  "args": [
1311
1311
  {
@@ -1370,7 +1370,7 @@
1370
1370
  }
1371
1371
  ],
1372
1372
  "examples": [
1373
- " mdkg checkpoint new <title> [--ws <alias>] [--json]"
1373
+ " mdkg checkpoint new <title> [--kind implementation|test-proof|goal-closeout|audit|handoff] [--ws <alias>] [--json]"
1374
1374
  ],
1375
1375
  "docs": {
1376
1376
  "help_target": "mdkg help checkpoint",
@@ -1400,6 +1400,7 @@
1400
1400
  " mdkg db queue ack|fail|dead-letter <queue> <message-id> --lease-owner <owner> [--json]",
1401
1401
  " mdkg db queue pause|resume <queue> [--json]",
1402
1402
  " mdkg db queue stats|list|show ... [--json]",
1403
+ " mdkg db queue contract [--json]",
1403
1404
  " mdkg db snapshot seal [--queue-policy drain|paused] [--json]",
1404
1405
  " mdkg db snapshot verify [--json]",
1405
1406
  " mdkg db snapshot status [--json]",
@@ -1593,6 +1594,133 @@
1593
1594
  "command_matrix": "CLI_COMMAND_MATRIX.md"
1594
1595
  }
1595
1596
  },
1597
+ {
1598
+ "key": "db queue",
1599
+ "path": [
1600
+ "db",
1601
+ "queue"
1602
+ ],
1603
+ "category": "db",
1604
+ "status": "stable",
1605
+ "visibility": "public",
1606
+ "summary": "mdkg db queue command",
1607
+ "usage": [
1608
+ " mdkg db queue create <queue> [--paused] [--reason <text>] [--json]",
1609
+ " mdkg db queue pause <queue> [--reason <text>] [--json]",
1610
+ " mdkg db queue resume <queue> [--json]",
1611
+ " mdkg db queue enqueue <queue> <message-id> --payload-json <json>|--payload-file <path> [--dedupe-key <key>] [--available-at-ms <ms>] [--max-attempts <n>] [--json]",
1612
+ " mdkg db queue claim <queue> --lease-owner <owner> --lease-ms <ms> [--json]",
1613
+ " mdkg db queue ack <queue> <message-id> --lease-owner <owner> [--json]",
1614
+ " mdkg db queue fail <queue> <message-id> --lease-owner <owner> --error <text> [--retry-after-ms <ms>] [--json]",
1615
+ " mdkg db queue dead-letter <queue> <message-id> --lease-owner <owner> --error <text> [--json]",
1616
+ " mdkg db queue release-expired [queue] [--json]",
1617
+ " mdkg db queue stats [queue] [--json]",
1618
+ " mdkg db queue list <queue> [--status ready|leased|acked|dead_letter|all] [--limit <n>] [--json]",
1619
+ " mdkg db queue show <queue> <message-id> [--json]",
1620
+ " mdkg db queue contract [--json]"
1621
+ ],
1622
+ "args": [
1623
+ {
1624
+ "name": "message-id",
1625
+ "required": true,
1626
+ "source": "<message-id>"
1627
+ },
1628
+ {
1629
+ "name": "queue",
1630
+ "required": true,
1631
+ "source": "<queue>"
1632
+ }
1633
+ ],
1634
+ "flags": [
1635
+ {
1636
+ "name": "--error",
1637
+ "value": "<text>",
1638
+ "required": false,
1639
+ "description": "mdkg db queue fail <queue> <message-id> --lease-owner <owner> --error <text> [--retry-after-ms <ms>] [--json]"
1640
+ },
1641
+ {
1642
+ "name": "--help",
1643
+ "value": null,
1644
+ "required": false,
1645
+ "description": "--help, -h Show help"
1646
+ },
1647
+ {
1648
+ "name": "--lease-ms",
1649
+ "value": "<ms>",
1650
+ "required": false,
1651
+ "description": "mdkg db queue claim <queue> --lease-owner <owner> --lease-ms <ms> [--json]"
1652
+ },
1653
+ {
1654
+ "name": "--lease-owner",
1655
+ "value": "<owner>",
1656
+ "required": false,
1657
+ "description": "mdkg db queue claim <queue> --lease-owner <owner> --lease-ms <ms> [--json]"
1658
+ },
1659
+ {
1660
+ "name": "--payload-json",
1661
+ "value": "<json>",
1662
+ "required": false,
1663
+ "description": "mdkg db queue enqueue <queue> <message-id> --payload-json <json>|--payload-file <path> [--dedupe-key <key>] [--available-at-ms <ms>] [--max-attempts <n>] [--json]"
1664
+ },
1665
+ {
1666
+ "name": "--root",
1667
+ "value": null,
1668
+ "required": false,
1669
+ "description": "--root, -r <path> Run against a specific repo root"
1670
+ },
1671
+ {
1672
+ "name": "--version",
1673
+ "value": null,
1674
+ "required": false,
1675
+ "description": "--version, -V Show version"
1676
+ }
1677
+ ],
1678
+ "output_formats": [
1679
+ "text",
1680
+ "json"
1681
+ ],
1682
+ "json_schema_ref": "mdkg.project_db.queue.adapter.v1",
1683
+ "side_effects": [
1684
+ "emit-read-only-adapter-contract",
1685
+ "read-or-write-local-project-db-queue-delivery-state"
1686
+ ],
1687
+ "read_paths": [
1688
+ ".mdkg/**"
1689
+ ],
1690
+ "write_paths": [
1691
+ ".mdkg/db/runtime/**"
1692
+ ],
1693
+ "dry_run": {
1694
+ "supported": false
1695
+ },
1696
+ "lock_policy": "mutation-lock-required-for-create-pause-resume-enqueue-claim-ack-fail-dead-letter-release-expired",
1697
+ "atomic_write_policy": "sqlite-transactions",
1698
+ "receipts": [
1699
+ "queue-adapter-contract-receipt",
1700
+ "queue-receipt"
1701
+ ],
1702
+ "danger_level": "mixed",
1703
+ "aliases": [],
1704
+ "exit_codes": [
1705
+ {
1706
+ "code": 0,
1707
+ "meaning": "success"
1708
+ },
1709
+ {
1710
+ "code": 1,
1711
+ "meaning": "validation-or-runtime-error"
1712
+ }
1713
+ ],
1714
+ "examples": [
1715
+ " mdkg db queue create <queue> [--paused] [--reason <text>] [--json]",
1716
+ " mdkg db queue pause <queue> [--reason <text>] [--json]",
1717
+ " mdkg db queue resume <queue> [--json]"
1718
+ ],
1719
+ "docs": {
1720
+ "help_target": "mdkg help db queue",
1721
+ "command_matrix": "CLI_COMMAND_MATRIX.md"
1722
+ }
1723
+ },
1596
1724
  {
1597
1725
  "key": "db snapshot",
1598
1726
  "path": [
@@ -2443,10 +2571,23 @@
2443
2571
  "visibility": "public",
2444
2572
  "summary": "mdkg format command",
2445
2573
  "usage": [
2446
- " mdkg format"
2574
+ " mdkg format",
2575
+ " mdkg format --headings [--dry-run|--apply] [--json]"
2447
2576
  ],
2448
2577
  "args": [],
2449
2578
  "flags": [
2579
+ {
2580
+ "name": "--apply",
2581
+ "value": "to",
2582
+ "required": false,
2583
+ "description": "--headings adds missing recommended body headings; it defaults to dry-run and requires --apply to write files."
2584
+ },
2585
+ {
2586
+ "name": "--headings",
2587
+ "value": "[--dry-run|--apply]",
2588
+ "required": false,
2589
+ "description": "mdkg format --headings [--dry-run|--apply] [--json]"
2590
+ },
2450
2591
  {
2451
2592
  "name": "--help",
2452
2593
  "value": null,
@@ -2467,9 +2608,10 @@
2467
2608
  }
2468
2609
  ],
2469
2610
  "output_formats": [
2470
- "text"
2611
+ "text",
2612
+ "json"
2471
2613
  ],
2472
- "json_schema_ref": null,
2614
+ "json_schema_ref": "mdkg.command_output.v1",
2473
2615
  "side_effects": [
2474
2616
  "normalize-graph-markdown"
2475
2617
  ],
@@ -2503,7 +2645,8 @@
2503
2645
  }
2504
2646
  ],
2505
2647
  "examples": [
2506
- " mdkg format"
2648
+ " mdkg format",
2649
+ " mdkg format --headings [--dry-run|--apply] [--json]"
2507
2650
  ],
2508
2651
  "docs": {
2509
2652
  "help_target": "mdkg help format",
@@ -3726,9 +3869,15 @@
3726
3869
  "usage": [
3727
3870
  " mdkg graph clone <source-bundle-or-mdkg-dir> --target <path> [--json]",
3728
3871
  " mdkg graph fork <source-bundle-or-mdkg-dir> --target <path> [--start-goal <goal-id>] [--json]",
3729
- " mdkg graph import-template <source-bundle-or-mdkg-dir> [--start-goal <goal-id>] [--select-goal] [--id-prefix <prefix>] [--dry-run] [--apply] [--json]"
3872
+ " mdkg graph import-template <source-bundle-or-mdkg-dir> [--start-goal <goal-id>] [--select-goal] [--id-prefix <prefix>] [--dry-run] [--apply] [--json]",
3873
+ " mdkg graph refs <id-or-qid> [--ws <alias>] [--json]"
3730
3874
  ],
3731
3875
  "args": [
3876
+ {
3877
+ "name": "id-or-qid",
3878
+ "required": true,
3879
+ "source": "<id-or-qid>"
3880
+ },
3732
3881
  {
3733
3882
  "name": "source-bundle-or-mdkg-dir",
3734
3883
  "required": true,
@@ -4065,6 +4214,86 @@
4065
4214
  "command_matrix": "CLI_COMMAND_MATRIX.md"
4066
4215
  }
4067
4216
  },
4217
+ {
4218
+ "key": "graph refs",
4219
+ "path": [
4220
+ "graph",
4221
+ "refs"
4222
+ ],
4223
+ "category": "graph",
4224
+ "status": "stable",
4225
+ "visibility": "public",
4226
+ "summary": "mdkg graph refs command",
4227
+ "usage": [
4228
+ " mdkg graph refs <id-or-qid> [--ws <alias>] [--json]"
4229
+ ],
4230
+ "args": [
4231
+ {
4232
+ "name": "id-or-qid",
4233
+ "required": true,
4234
+ "source": "<id-or-qid>"
4235
+ }
4236
+ ],
4237
+ "flags": [
4238
+ {
4239
+ "name": "--help",
4240
+ "value": null,
4241
+ "required": false,
4242
+ "description": "--help, -h Show help"
4243
+ },
4244
+ {
4245
+ "name": "--root",
4246
+ "value": null,
4247
+ "required": false,
4248
+ "description": "--root, -r <path> Run against a specific repo root"
4249
+ },
4250
+ {
4251
+ "name": "--version",
4252
+ "value": null,
4253
+ "required": false,
4254
+ "description": "--version, -V Show version"
4255
+ }
4256
+ ],
4257
+ "output_formats": [
4258
+ "text",
4259
+ "json"
4260
+ ],
4261
+ "json_schema_ref": "mdkg.command_output.v1",
4262
+ "side_effects": [
4263
+ "none"
4264
+ ],
4265
+ "read_paths": [
4266
+ ".mdkg/**"
4267
+ ],
4268
+ "write_paths": [],
4269
+ "dry_run": {
4270
+ "supported": false
4271
+ },
4272
+ "lock_policy": "none-read-only",
4273
+ "atomic_write_policy": "none-read-only",
4274
+ "receipts": [
4275
+ "graph-refs-receipt"
4276
+ ],
4277
+ "danger_level": "read-only",
4278
+ "aliases": [],
4279
+ "exit_codes": [
4280
+ {
4281
+ "code": 0,
4282
+ "meaning": "success"
4283
+ },
4284
+ {
4285
+ "code": 1,
4286
+ "meaning": "validation-or-runtime-error"
4287
+ }
4288
+ ],
4289
+ "examples": [
4290
+ " mdkg graph refs <id-or-qid> [--ws <alias>] [--json]"
4291
+ ],
4292
+ "docs": {
4293
+ "help_target": "mdkg help graph refs",
4294
+ "command_matrix": "CLI_COMMAND_MATRIX.md"
4295
+ }
4296
+ },
4068
4297
  {
4069
4298
  "key": "guide",
4070
4299
  "path": [
@@ -4135,6 +4364,93 @@
4135
4364
  "command_matrix": "CLI_COMMAND_MATRIX.md"
4136
4365
  }
4137
4366
  },
4367
+ {
4368
+ "key": "handoff",
4369
+ "path": [
4370
+ "handoff"
4371
+ ],
4372
+ "category": "handoff",
4373
+ "status": "stable",
4374
+ "visibility": "public",
4375
+ "summary": "mdkg handoff command",
4376
+ "usage": [
4377
+ " mdkg handoff create <id-or-qid> [--ws <alias>] [--depth <n>] [--out <path>] [--json]"
4378
+ ],
4379
+ "args": [
4380
+ {
4381
+ "name": "id-or-qid",
4382
+ "required": true,
4383
+ "source": "<id-or-qid>"
4384
+ }
4385
+ ],
4386
+ "flags": [
4387
+ {
4388
+ "name": "--help",
4389
+ "value": null,
4390
+ "required": false,
4391
+ "description": "--help, -h Show help"
4392
+ },
4393
+ {
4394
+ "name": "--out",
4395
+ "value": "must",
4396
+ "required": false,
4397
+ "description": "- --out must stay inside the repo root"
4398
+ },
4399
+ {
4400
+ "name": "--root",
4401
+ "value": null,
4402
+ "required": false,
4403
+ "description": "--root, -r <path> Run against a specific repo root"
4404
+ },
4405
+ {
4406
+ "name": "--version",
4407
+ "value": null,
4408
+ "required": false,
4409
+ "description": "--version, -V Show version"
4410
+ }
4411
+ ],
4412
+ "output_formats": [
4413
+ "text",
4414
+ "json"
4415
+ ],
4416
+ "json_schema_ref": "mdkg.handoff.v1",
4417
+ "side_effects": [
4418
+ "create-sanitized-agent-handoff-when-out-is-provided"
4419
+ ],
4420
+ "read_paths": [
4421
+ ".mdkg/**"
4422
+ ],
4423
+ "write_paths": [
4424
+ ".mdkg/handoffs/**"
4425
+ ],
4426
+ "dry_run": {
4427
+ "supported": false
4428
+ },
4429
+ "lock_policy": "not-required-for-stdout-output",
4430
+ "atomic_write_policy": "atomic-file-write-when-out-is-provided",
4431
+ "receipts": [
4432
+ "handoff-receipt"
4433
+ ],
4434
+ "danger_level": "moderate",
4435
+ "aliases": [],
4436
+ "exit_codes": [
4437
+ {
4438
+ "code": 0,
4439
+ "meaning": "success"
4440
+ },
4441
+ {
4442
+ "code": 1,
4443
+ "meaning": "validation-or-runtime-error"
4444
+ }
4445
+ ],
4446
+ "examples": [
4447
+ " mdkg handoff create <id-or-qid> [--ws <alias>] [--depth <n>] [--out <path>] [--json]"
4448
+ ],
4449
+ "docs": {
4450
+ "help_target": "mdkg help handoff",
4451
+ "command_matrix": "CLI_COMMAND_MATRIX.md"
4452
+ }
4453
+ },
4138
4454
  {
4139
4455
  "key": "index",
4140
4456
  "path": [
@@ -4859,6 +5175,12 @@
4859
5175
  "required": false,
4860
5176
  "description": "--dry-run Preview selection/order/stats without writing files"
4861
5177
  },
5178
+ {
5179
+ "name": "--edges",
5180
+ "value": "accepts",
5181
+ "required": false,
5182
+ "description": "--edges accepts parent, epic, relates, blocked_by, blocks, prev, next, context_refs, evidence_refs"
5183
+ },
4862
5184
  {
4863
5185
  "name": "--format",
4864
5186
  "value": "<fmt>",
@@ -7145,7 +7467,7 @@
7145
7467
  "usage": [
7146
7468
  " mdkg task start <id-or-qid> [--ws <alias>] [--run-id <id>] [--note \"<text>\"] [--json]",
7147
7469
  " mdkg task update <id-or-qid> [options] [--json]",
7148
- " mdkg task done <id-or-qid> [--checkpoint \"<title>\"] [options] [--json]"
7470
+ " mdkg task done <id-or-qid> [--checkpoint \"<title>\"] [--checkpoint-kind implementation|test-proof|goal-closeout|audit|handoff] [options] [--json]"
7149
7471
  ],
7150
7472
  "args": [
7151
7473
  {
@@ -7225,7 +7547,7 @@
7225
7547
  }
7226
7548
  ],
7227
7549
  "examples": [
7228
- " mdkg task done <id-or-qid> [--checkpoint \"<title>\"] [options] [--json]",
7550
+ " mdkg task done <id-or-qid> [--checkpoint \"<title>\"] [--checkpoint-kind implementation|test-proof|goal-closeout|audit|handoff] [options] [--json]",
7229
7551
  " mdkg task start <id-or-qid> [--ws <alias>] [--run-id <id>] [--note \"<text>\"] [--json]",
7230
7552
  " mdkg task update <id-or-qid> [options] [--json]"
7231
7553
  ],
@@ -7599,10 +7921,16 @@
7599
7921
  "visibility": "public",
7600
7922
  "summary": "mdkg validate command",
7601
7923
  "usage": [
7602
- " mdkg validate [--out <path>] [--quiet] [--json]"
7924
+ " mdkg validate [--out <path>] [--quiet] [--changed-only] [--json]"
7603
7925
  ],
7604
7926
  "args": [],
7605
7927
  "flags": [
7928
+ {
7929
+ "name": "--changed-only",
7930
+ "value": "filters",
7931
+ "required": false,
7932
+ "description": "--changed-only filters warning presentation to changed .mdkg files while full graph errors still run."
7933
+ },
7606
7934
  {
7607
7935
  "name": "--help",
7608
7936
  "value": null,
@@ -7653,7 +7981,7 @@
7653
7981
  }
7654
7982
  ],
7655
7983
  "examples": [
7656
- " mdkg validate [--out <path>] [--quiet] [--json]"
7984
+ " mdkg validate [--out <path>] [--quiet] [--changed-only] [--json]"
7657
7985
  ],
7658
7986
  "docs": {
7659
7987
  "help_target": "mdkg help validate",
@@ -7674,9 +8002,15 @@
7674
8002
  " mdkg work trigger <work-or-capability-ref> ...",
7675
8003
  " mdkg work order new|status|update ...",
7676
8004
  " mdkg work receipt new|verify|update ...",
7677
- " mdkg work artifact add ..."
8005
+ " mdkg work artifact add ...",
8006
+ " mdkg work validate [<id-or-qid>] [--type <workflow-type>] [--json]"
7678
8007
  ],
7679
8008
  "args": [
8009
+ {
8010
+ "name": "id-or-qid",
8011
+ "required": true,
8012
+ "source": "<id-or-qid>"
8013
+ },
7680
8014
  {
7681
8015
  "name": "work-or-capability-ref",
7682
8016
  "required": true,
@@ -7704,9 +8038,10 @@
7704
8038
  }
7705
8039
  ],
7706
8040
  "output_formats": [
7707
- "text"
8041
+ "text",
8042
+ "json"
7708
8043
  ],
7709
- "json_schema_ref": null,
8044
+ "json_schema_ref": "mdkg.command_output.v1",
7710
8045
  "side_effects": [
7711
8046
  "read-or-write-work-contract-mirrors"
7712
8047
  ],
@@ -8273,6 +8608,86 @@
8273
8608
  "command_matrix": "CLI_COMMAND_MATRIX.md"
8274
8609
  }
8275
8610
  },
8611
+ {
8612
+ "key": "work validate",
8613
+ "path": [
8614
+ "work",
8615
+ "validate"
8616
+ ],
8617
+ "category": "work",
8618
+ "status": "stable",
8619
+ "visibility": "public",
8620
+ "summary": "mdkg work validate command",
8621
+ "usage": [
8622
+ " mdkg work validate [<id-or-qid>] [--type spec|work|work_order|receipt|feedback|dispute|proposal] [--json]"
8623
+ ],
8624
+ "args": [
8625
+ {
8626
+ "name": "id-or-qid",
8627
+ "required": true,
8628
+ "source": "<id-or-qid>"
8629
+ }
8630
+ ],
8631
+ "flags": [
8632
+ {
8633
+ "name": "--help",
8634
+ "value": null,
8635
+ "required": false,
8636
+ "description": "--help, -h Show help"
8637
+ },
8638
+ {
8639
+ "name": "--root",
8640
+ "value": null,
8641
+ "required": false,
8642
+ "description": "--root, -r <path> Run against a specific repo root"
8643
+ },
8644
+ {
8645
+ "name": "--version",
8646
+ "value": null,
8647
+ "required": false,
8648
+ "description": "--version, -V Show version"
8649
+ }
8650
+ ],
8651
+ "output_formats": [
8652
+ "text",
8653
+ "json"
8654
+ ],
8655
+ "json_schema_ref": "mdkg.work_validate.v1",
8656
+ "side_effects": [
8657
+ "none"
8658
+ ],
8659
+ "read_paths": [
8660
+ ".mdkg/**"
8661
+ ],
8662
+ "write_paths": [],
8663
+ "dry_run": {
8664
+ "supported": false
8665
+ },
8666
+ "lock_policy": "none-read-only",
8667
+ "atomic_write_policy": "none-read-only",
8668
+ "receipts": [
8669
+ "work-validate-receipt"
8670
+ ],
8671
+ "danger_level": "read-only",
8672
+ "aliases": [],
8673
+ "exit_codes": [
8674
+ {
8675
+ "code": 0,
8676
+ "meaning": "success"
8677
+ },
8678
+ {
8679
+ "code": 1,
8680
+ "meaning": "validation-or-runtime-error"
8681
+ }
8682
+ ],
8683
+ "examples": [
8684
+ " mdkg work validate [<id-or-qid>] [--type spec|work|work_order|receipt|feedback|dispute|proposal] [--json]"
8685
+ ],
8686
+ "docs": {
8687
+ "help_target": "mdkg help work validate",
8688
+ "command_matrix": "CLI_COMMAND_MATRIX.md"
8689
+ }
8690
+ },
8276
8691
  {
8277
8692
  "key": "workspace",
8278
8693
  "path": [
@@ -8368,5 +8783,5 @@
8368
8783
  }
8369
8784
  }
8370
8785
  ],
8371
- "contract_hash": "130236f8a2c5c757528f82acf95f43fb67809a0ddb333ebffa5d69b452a20146"
8786
+ "contract_hash": "e6b42d5850cb4e76b9cb29a21bb643b50c042667bb09c598ec3c7dd87f7cccdd"
8372
8787
  }
@@ -349,6 +349,8 @@ function publicFilteringErrors(index, includedQids) {
349
349
  node.edges.relates,
350
350
  node.edges.blocked_by,
351
351
  node.edges.blocks,
352
+ node.edges.context_refs ?? [],
353
+ node.edges.evidence_refs ?? [],
352
354
  ]) {
353
355
  for (const target of targets) {
354
356
  if (index.nodes[target] && !includedQids.has(target)) {