archctx-contracts 0.7.2 → 0.8.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.
Files changed (56) hide show
  1. package/fixtures/invalid/hook-debt-checkpoint-failed-read.json +54 -0
  2. package/fixtures/invalid/native-context-invalid-model-summary.json +635 -0
  3. package/fixtures/invalid/native-context-missing-contract-bytes.json +636 -0
  4. package/fixtures/invalid/native-context-missing-input-bytes.json +636 -0
  5. package/fixtures/invalid/native-context-mixed-snapshot.json +637 -0
  6. package/fixtures/invalid/projection-result-applied-incomplete-coverage.json +78 -0
  7. package/fixtures/invalid/refactor-decision-open-status.json +38 -0
  8. package/fixtures/valid/archctx-capabilities.json +3 -3
  9. package/fixtures/valid/capability-dependencies.json +1 -1
  10. package/fixtures/valid/docs-anchors.json +2 -1
  11. package/fixtures/valid/flow-selector-check.json +1 -1
  12. package/fixtures/valid/hook-debt-checkpoint.json +54 -0
  13. package/fixtures/valid/native-context-export.json +636 -0
  14. package/fixtures/valid/product-version-manifest.json +8 -8
  15. package/fixtures/valid/projection-manifest.json +47 -169
  16. package/fixtures/valid/projection-result.json +5 -5
  17. package/fixtures/valid/refactor-decision.json +38 -0
  18. package/fixtures/valid/runtime-recommendation-show.json +1 -0
  19. package/fixtures/valid/runtime-refactor-scan.json +6 -0
  20. package/package.json +1 -1
  21. package/schemas/repo/refactor-decision.schema.json +218 -0
  22. package/schemas/runtime/archctx-capabilities.schema.json +2 -2
  23. package/schemas/runtime/architecture-debt.schema.json +222 -0
  24. package/schemas/runtime/capability-dependencies.schema.json +10 -6
  25. package/schemas/runtime/changeset.schema.json +24 -1
  26. package/schemas/runtime/docs-anchors.schema.json +4 -3
  27. package/schemas/runtime/hook-debt-checkpoint.schema.json +69 -0
  28. package/schemas/runtime/native-context-export.schema.json +823 -0
  29. package/schemas/runtime/practice-checkpoint.schema.json +1 -0
  30. package/schemas/runtime/product-version-manifest.schema.json +2 -2
  31. package/schemas/runtime/projection-apply-readback.schema.json +470 -7
  32. package/schemas/runtime/projection-apply-recovery.schema.json +2 -2
  33. package/schemas/runtime/projection-manifest.schema.json +81 -186
  34. package/schemas/runtime/projection-result.schema.json +132 -5
  35. package/schemas/runtime/projection-target.schema.json +4 -1
  36. package/schemas/runtime/recommendation-v3.schema.json +106 -0
  37. package/schemas/runtime/review-result.schema.json +1 -0
  38. package/schemas/runtime/runtime-recommendation-show.schema.json +234 -13
  39. package/schemas/runtime/runtime-refactor-scan.schema.json +171 -0
  40. package/schemas/runtime/structural-observation-payload.schema.json +106 -0
  41. package/src/architecture-debt.ts +115 -0
  42. package/src/changeset-recovery.ts +49 -0
  43. package/src/docs-anchors.ts +2 -1
  44. package/src/failure.ts +776 -0
  45. package/src/index.ts +6 -0
  46. package/src/ledger.ts +14 -3
  47. package/src/native-context.ts +277 -0
  48. package/src/ownership-dependencies.ts +39 -1
  49. package/src/practices.ts +2 -0
  50. package/src/product-version.ts +37 -4
  51. package/src/projection-manifest.ts +372 -130
  52. package/src/projection-recovery.ts +111 -0
  53. package/src/projection.ts +443 -11
  54. package/src/refactor.ts +525 -2
  55. package/src/schema.ts +6 -0
  56. package/src/validator.ts +8 -3
@@ -0,0 +1,54 @@
1
+ {
2
+ "schemaVersion": "archcontext.hook-debt-checkpoint/v1",
3
+ "debt": {
4
+ "schemaVersion": "archcontext.architecture-debt/v1",
5
+ "scope": {
6
+ "kind": "repository",
7
+ "changedPaths": [],
8
+ "capabilityIds": []
9
+ },
10
+ "coverage": "complete",
11
+ "coverageReasonCodes": [],
12
+ "checks": [
13
+ {
14
+ "check": "ownership",
15
+ "coverage": "complete",
16
+ "reasonCodes": []
17
+ },
18
+ {
19
+ "check": "anchors",
20
+ "coverage": "complete",
21
+ "reasonCodes": []
22
+ },
23
+ {
24
+ "check": "dependencies",
25
+ "coverage": "complete",
26
+ "reasonCodes": []
27
+ },
28
+ {
29
+ "check": "flows",
30
+ "coverage": "complete",
31
+ "reasonCodes": []
32
+ },
33
+ {
34
+ "check": "practices",
35
+ "coverage": "complete",
36
+ "reasonCodes": []
37
+ }
38
+ ],
39
+ "items": [],
40
+ "actionsRequired": [],
41
+ "digest": "sha256:1d40d5a0b5f92e61241f310b1f0c26b342210533455707a93f524d306db88b4e"
42
+ },
43
+ "hookLog": {
44
+ "schemaVersion": "archcontext.hook-log/v1",
45
+ "event": "post-edit",
46
+ "elapsedMs": 12,
47
+ "pathCount": 0,
48
+ "changedPathDigest": "sha256:4ce95370e221ea0a3ef42ee0992d28ac44cbae9b311b7e310061d35b819bb093",
49
+ "reasonCode": "debt-measured",
50
+ "failOpen": true,
51
+ "egress": "none",
52
+ "network": "forbidden"
53
+ }
54
+ }
@@ -0,0 +1,635 @@
1
+ {
2
+ "schemaVersion": "archcontext.native-context-export/v1",
3
+ "profile": "repo-harness/v1",
4
+ "snapshot": {
5
+ "source": "ref",
6
+ "commitSha": "457907d4dc0737481dbf769b2b13abeb0d503107",
7
+ "treeOid": "dd4bda463c96add6600e2c2d3aa46d2ad338f7b7",
8
+ "validation": "immutable-tree"
9
+ },
10
+ "inputDigest": "sha256:7509b3e0838bd10db9603d2122da55348fc12614b07e4dffc89fc5f26ed8132c",
11
+ "inputs": [
12
+ {
13
+ "path": ".archcontext/manifest.yaml",
14
+ "role": "manifest",
15
+ "requirement": "required",
16
+ "presence": "present",
17
+ "mode": "100644",
18
+ "byteLength": 129,
19
+ "contentDigest": "sha256:bb02f21226882c8bb0246b37b21d0f27528b6b1691467eed607226466aa080f4"
20
+ },
21
+ {
22
+ "path": ".archcontext/model/flows/flow.demo.optional.yaml",
23
+ "role": "flow",
24
+ "requirement": "required",
25
+ "presence": "present",
26
+ "mode": "100644",
27
+ "byteLength": 193,
28
+ "contentDigest": "sha256:966204ddad5a3187b6e11193ea1c9dc253b59fee9ba59235e7943313d30ae4e2"
29
+ },
30
+ {
31
+ "path": ".archcontext/model/flows/flow.demo.primary.yaml",
32
+ "role": "flow",
33
+ "requirement": "required",
34
+ "presence": "present",
35
+ "mode": "100644",
36
+ "byteLength": 1165,
37
+ "contentDigest": "sha256:0bc40190c247ee7f7f5fcb640a8a1a457da34de409d6638ddb986e9897405471"
38
+ },
39
+ {
40
+ "path": ".archcontext/model/nodes/capability.demo.feature.yaml",
41
+ "role": "node",
42
+ "requirement": "required",
43
+ "presence": "present",
44
+ "mode": "100644",
45
+ "byteLength": 324,
46
+ "contentDigest": "sha256:010135743057cf3d9e7d43cd47f7f06024caee559093fbbe48745d5c764e1f8b"
47
+ },
48
+ {
49
+ "path": ".archcontext/model/nodes/component.demo.worker.yaml",
50
+ "role": "node",
51
+ "requirement": "required",
52
+ "presence": "present",
53
+ "mode": "100644",
54
+ "byteLength": 690,
55
+ "contentDigest": "sha256:64a8251c7677456658d7cafb318d58db3a130e6591488e9ca3394193e5d4a917"
56
+ },
57
+ {
58
+ "path": ".archcontext/model/nodes/datastore.demo.resource.yaml",
59
+ "role": "node",
60
+ "requirement": "required",
61
+ "presence": "present",
62
+ "mode": "100644",
63
+ "byteLength": 179,
64
+ "contentDigest": "sha256:11d419bdb855addae1ea5d5796a45afc069407e681b17fa81fcf4ec79e3b1339"
65
+ },
66
+ {
67
+ "path": ".archcontext/model/nodes/deployment.demo.resource.yaml",
68
+ "role": "node",
69
+ "requirement": "required",
70
+ "presence": "present",
71
+ "mode": "100644",
72
+ "byteLength": 183,
73
+ "contentDigest": "sha256:e8607b98f2e0e0bc9c0fb798cb15eb253585e9950adf8b95c535502ef7b64920"
74
+ },
75
+ {
76
+ "path": ".archcontext/model/nodes/event.demo.resource.yaml",
77
+ "role": "node",
78
+ "requirement": "required",
79
+ "presence": "present",
80
+ "mode": "100644",
81
+ "byteLength": 160,
82
+ "contentDigest": "sha256:87d37b6fa59b2f39b84088489de630716f5b0d05f79ff45aee8608a309d6edca"
83
+ },
84
+ {
85
+ "path": ".archcontext/model/nodes/external.demo.resource.yaml",
86
+ "role": "node",
87
+ "requirement": "required",
88
+ "presence": "present",
89
+ "mode": "100644",
90
+ "byteLength": 193,
91
+ "contentDigest": "sha256:9d1d08d0fb0e6c3898ecc343363f150c4e14bb363287807fb0b68b4f9f8b9d75"
92
+ },
93
+ {
94
+ "path": ".archcontext/model/nodes/interface.demo.resource.yaml",
95
+ "role": "node",
96
+ "requirement": "required",
97
+ "presence": "present",
98
+ "mode": "100644",
99
+ "byteLength": 179,
100
+ "contentDigest": "sha256:9bf569506f509ce277f39ff37c1c9f32a50ab75ec86871de37b08002a7cbbc5e"
101
+ },
102
+ {
103
+ "path": ".archcontext/model/nodes/module.demo.system.yaml",
104
+ "role": "node",
105
+ "requirement": "required",
106
+ "presence": "present",
107
+ "mode": "100644",
108
+ "byteLength": 161,
109
+ "contentDigest": "sha256:530859d02ef7a49fe4b7761a3114146b55387f03d67549259a9a529b81a1086b"
110
+ },
111
+ {
112
+ "path": ".archcontext/model/relations/relation.demo.call.yaml",
113
+ "role": "relation",
114
+ "requirement": "required",
115
+ "presence": "present",
116
+ "mode": "100644",
117
+ "byteLength": 188,
118
+ "contentDigest": "sha256:72a357da298a15ea4aaabe462f8863a0d6afe9bf158c3a9a406997ca84e96fd2"
119
+ },
120
+ {
121
+ "path": "AGENTS.md",
122
+ "role": "contract",
123
+ "requirement": "declared",
124
+ "presence": "present",
125
+ "mode": "100644",
126
+ "byteLength": 20,
127
+ "contentDigest": "sha256:7ca8b8dbdf0985eaa58d387e36600a98282e6f15ffbae2f48e62e219dcd14dd7"
128
+ },
129
+ {
130
+ "path": "CLAUDE.md",
131
+ "role": "contract",
132
+ "requirement": "declared",
133
+ "presence": "present",
134
+ "mode": "100644",
135
+ "byteLength": 0,
136
+ "contentDigest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
137
+ },
138
+ {
139
+ "path": "docs/architecture/changelog.md",
140
+ "role": "document",
141
+ "requirement": "optional",
142
+ "presence": "missing",
143
+ "mode": null,
144
+ "byteLength": null,
145
+ "contentDigest": null
146
+ },
147
+ {
148
+ "path": "docs/architecture/decisions/index.md",
149
+ "role": "document",
150
+ "requirement": "optional",
151
+ "presence": "missing",
152
+ "mode": null,
153
+ "byteLength": null,
154
+ "contentDigest": null
155
+ },
156
+ {
157
+ "path": "docs/architecture/index.md",
158
+ "role": "document",
159
+ "requirement": "optional",
160
+ "presence": "missing",
161
+ "mode": null,
162
+ "byteLength": null,
163
+ "contentDigest": null
164
+ },
165
+ {
166
+ "path": "docs/architecture/modules/demo/feature.md",
167
+ "role": "document",
168
+ "requirement": "optional",
169
+ "presence": "present",
170
+ "mode": "100644",
171
+ "byteLength": 576,
172
+ "contentDigest": "sha256:70e675d5c78ca5eebe2631aacf1e4543c68d591098803578464ed03d6887cf84"
173
+ }
174
+ ],
175
+ "allowedNodeKinds": [
176
+ "capability",
177
+ "module",
178
+ "component",
179
+ "interface",
180
+ "event",
181
+ "datastore",
182
+ "external-system",
183
+ "deployment"
184
+ ],
185
+ "contextBudgetBytes": 64,
186
+ "model": {
187
+ "nodes": [
188
+ {
189
+ "extensions": {
190
+ "contractFiles": {
191
+ "agents": "AGENTS.md",
192
+ "claude": "CLAUDE.md"
193
+ }
194
+ },
195
+ "id": "capability.demo.feature",
196
+ "kind": "capability",
197
+ "name": "Demo",
198
+ "schemaVersion": "archcontext.node/v2",
199
+ "source": {
200
+ "include": [
201
+ "src/app/[locale]/**",
202
+ "src/a.ts",
203
+ "src/a-*.ts",
204
+ "**/*.ts"
205
+ ]
206
+ },
207
+ "status": "active"
208
+ },
209
+ {
210
+ "criticality": "medium",
211
+ "extensions": {
212
+ "example": {
213
+ "preserved": true
214
+ }
215
+ },
216
+ "id": "component.demo.worker",
217
+ "interfaces": {
218
+ "provides": [
219
+ "worker"
220
+ ]
221
+ },
222
+ "kind": "component",
223
+ "name": "",
224
+ "notes": [
225
+ "Preserve fields"
226
+ ],
227
+ "ownership": {
228
+ "lifecycle": [
229
+ "demo"
230
+ ]
231
+ },
232
+ "parent": "module.demo.system",
233
+ "responsibilities": [
234
+ "Work"
235
+ ],
236
+ "riskDomains": [
237
+ "integrity"
238
+ ],
239
+ "schemaVersion": "archcontext.node/v2",
240
+ "source": {
241
+ "entrypoints": [
242
+ {
243
+ "id": "entrypoint.demo.worker",
244
+ "path": "src/worker.ts",
245
+ "symbols": [
246
+ {
247
+ "name": "run",
248
+ "sinks": [
249
+ {
250
+ "id": "sink.demo.done",
251
+ "path": "src/done.ts",
252
+ "symbol": "finish"
253
+ }
254
+ ]
255
+ }
256
+ ]
257
+ }
258
+ ],
259
+ "exclude": [
260
+ "src/worker.test.ts"
261
+ ],
262
+ "include": [
263
+ "src/worker.ts"
264
+ ]
265
+ },
266
+ "status": "planned",
267
+ "summary": ""
268
+ },
269
+ {
270
+ "id": "datastore.demo.resource",
271
+ "kind": "datastore",
272
+ "name": "datastore",
273
+ "parent": "capability.demo.feature",
274
+ "schemaVersion": "archcontext.node/v2",
275
+ "status": "deprecated",
276
+ "summary": "datastore"
277
+ },
278
+ {
279
+ "id": "deployment.demo.resource",
280
+ "kind": "deployment",
281
+ "name": "deployment",
282
+ "parent": "capability.demo.feature",
283
+ "schemaVersion": "archcontext.node/v2",
284
+ "status": "deprecated",
285
+ "summary": "deployment"
286
+ },
287
+ {
288
+ "id": "event.demo.resource",
289
+ "kind": "event",
290
+ "name": "event",
291
+ "parent": "capability.demo.feature",
292
+ "schemaVersion": "archcontext.node/v2",
293
+ "status": "removed",
294
+ "summary": "event"
295
+ },
296
+ {
297
+ "id": "external.demo.resource",
298
+ "kind": "external-system",
299
+ "name": "external-system",
300
+ "parent": "capability.demo.feature",
301
+ "schemaVersion": "archcontext.node/v2",
302
+ "status": "removed",
303
+ "summary": "external-system"
304
+ },
305
+ {
306
+ "id": "interface.demo.resource",
307
+ "kind": "interface",
308
+ "name": "interface",
309
+ "parent": "capability.demo.feature",
310
+ "schemaVersion": "archcontext.node/v2",
311
+ "status": "deprecated",
312
+ "summary": "interface"
313
+ },
314
+ {
315
+ "id": "module.demo.system",
316
+ "kind": "module",
317
+ "name": "System",
318
+ "parent": "capability.demo.feature",
319
+ "schemaVersion": "archcontext.node/v2",
320
+ "status": "active",
321
+ "summary": "System"
322
+ }
323
+ ],
324
+ "relations": [
325
+ {
326
+ "id": "relation.demo.call",
327
+ "intent": "",
328
+ "kind": "calls",
329
+ "schemaVersion": "archcontext.relation/v1",
330
+ "source": "interface.demo.resource",
331
+ "target": "component.demo.worker",
332
+ "via": "interface.demo.resource"
333
+ }
334
+ ],
335
+ "flows": [
336
+ {
337
+ "applicability": "not-applicable",
338
+ "capabilityId": "capability.demo.feature",
339
+ "id": "flow.demo.optional",
340
+ "name": "Not applicable",
341
+ "rationale": "No corresponding flow.",
342
+ "schemaVersion": "archcontext.flow/v1"
343
+ },
344
+ {
345
+ "applicability": "required",
346
+ "capabilityId": "capability.demo.feature",
347
+ "id": "flow.demo.primary",
348
+ "name": "Primary",
349
+ "outcomes": [
350
+ {
351
+ "id": "ok",
352
+ "kind": "success",
353
+ "label": "Success",
354
+ "steps": [
355
+ {
356
+ "evidence": {
357
+ "entrypointId": "entrypoint.demo.worker",
358
+ "sinkId": "sink.demo.done",
359
+ "sourceSymbol": "run"
360
+ },
361
+ "from": "worker",
362
+ "id": "ok",
363
+ "label": "ok",
364
+ "to": "caller"
365
+ }
366
+ ],
367
+ "terminal": {
368
+ "label": "Success",
369
+ "participant": "caller"
370
+ }
371
+ },
372
+ {
373
+ "id": "failed",
374
+ "kind": "error",
375
+ "label": "Error",
376
+ "steps": [
377
+ {
378
+ "evidence": {
379
+ "entrypointId": "entrypoint.demo.worker",
380
+ "sinkId": "sink.demo.done",
381
+ "sourceSymbol": "run"
382
+ },
383
+ "from": "worker",
384
+ "id": "failed",
385
+ "label": "failed",
386
+ "to": "caller"
387
+ }
388
+ ],
389
+ "terminal": {
390
+ "label": "Error",
391
+ "participant": "caller"
392
+ }
393
+ }
394
+ ],
395
+ "participants": [
396
+ {
397
+ "id": "caller",
398
+ "nodeId": "interface.demo.resource"
399
+ },
400
+ {
401
+ "id": "worker",
402
+ "nodeId": "component.demo.worker"
403
+ }
404
+ ],
405
+ "schemaVersion": "archcontext.flow/v1",
406
+ "steps": [
407
+ {
408
+ "evidence": {
409
+ "entrypointId": "entrypoint.demo.worker",
410
+ "sinkId": "sink.demo.done",
411
+ "sourceSymbol": "run"
412
+ },
413
+ "from": "caller",
414
+ "id": "request",
415
+ "label": "request",
416
+ "to": "worker"
417
+ }
418
+ ]
419
+ }
420
+ ],
421
+ "sourcePaths": {
422
+ "nodes": {
423
+ "capability.demo.feature": ".archcontext/model/nodes/capability.demo.feature.yaml",
424
+ "component.demo.worker": ".archcontext/model/nodes/component.demo.worker.yaml",
425
+ "datastore.demo.resource": ".archcontext/model/nodes/datastore.demo.resource.yaml",
426
+ "deployment.demo.resource": ".archcontext/model/nodes/deployment.demo.resource.yaml",
427
+ "event.demo.resource": ".archcontext/model/nodes/event.demo.resource.yaml",
428
+ "external.demo.resource": ".archcontext/model/nodes/external.demo.resource.yaml",
429
+ "interface.demo.resource": ".archcontext/model/nodes/interface.demo.resource.yaml",
430
+ "module.demo.system": ".archcontext/model/nodes/module.demo.system.yaml"
431
+ },
432
+ "relations": {
433
+ "relation.demo.call": ".archcontext/model/relations/relation.demo.call.yaml"
434
+ },
435
+ "flows": {
436
+ "flow.demo.optional": ".archcontext/model/flows/flow.demo.optional.yaml",
437
+ "flow.demo.primary": ".archcontext/model/flows/flow.demo.primary.yaml"
438
+ }
439
+ }
440
+ },
441
+ "capabilityProfiles": [
442
+ {
443
+ "nodeId": "capability.demo.feature",
444
+ "status": "active",
445
+ "domain": "demo",
446
+ "name": "feature",
447
+ "modulePath": "docs/architecture/modules/demo/feature.md",
448
+ "contractFiles": {
449
+ "agents": "AGENTS.md",
450
+ "claude": "CLAUDE.md"
451
+ },
452
+ "includeAnchors": [
453
+ "src",
454
+ "src/a.ts",
455
+ "src/app/[locale]"
456
+ ],
457
+ "lspProfile": null,
458
+ "verification": null,
459
+ "directChildNodeIds": [
460
+ "datastore.demo.resource",
461
+ "deployment.demo.resource",
462
+ "event.demo.resource",
463
+ "external.demo.resource",
464
+ "interface.demo.resource",
465
+ "module.demo.system"
466
+ ],
467
+ "componentNodeIds": [
468
+ "component.demo.worker"
469
+ ]
470
+ }
471
+ ],
472
+ "contracts": [
473
+ {
474
+ "path": "AGENTS.md",
475
+ "roles": [
476
+ "agents"
477
+ ],
478
+ "capabilityNodeIds": [
479
+ "capability.demo.feature"
480
+ ],
481
+ "presence": "present",
482
+ "text": "# Agent contract\r\n\r\n",
483
+ "byteLength": 20,
484
+ "byteDigest": "sha256:7ca8b8dbdf0985eaa58d387e36600a98282e6f15ffbae2f48e62e219dcd14dd7"
485
+ },
486
+ {
487
+ "path": "CLAUDE.md",
488
+ "roles": [
489
+ "claude"
490
+ ],
491
+ "capabilityNodeIds": [
492
+ "capability.demo.feature"
493
+ ],
494
+ "presence": "present",
495
+ "text": "",
496
+ "byteLength": 0,
497
+ "byteDigest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
498
+ }
499
+ ],
500
+ "documents": [
501
+ {
502
+ "path": "docs/architecture/changelog.md",
503
+ "targetId": "projection_target.architecture.changelog",
504
+ "capabilityNodeIds": [
505
+ "capability.demo.feature"
506
+ ],
507
+ "presence": "missing",
508
+ "markerState": "missing",
509
+ "humanRegions": [],
510
+ "section3": {
511
+ "state": "missing",
512
+ "heading": null,
513
+ "bodyRanges": [],
514
+ "body": null
515
+ },
516
+ "backlog": {
517
+ "state": "missing",
518
+ "heading": null,
519
+ "bodyRanges": [],
520
+ "body": null
521
+ }
522
+ },
523
+ {
524
+ "path": "docs/architecture/decisions/index.md",
525
+ "targetId": "projection_target.decision.index",
526
+ "capabilityNodeIds": [
527
+ "capability.demo.feature"
528
+ ],
529
+ "presence": "missing",
530
+ "markerState": "missing",
531
+ "humanRegions": [],
532
+ "section3": {
533
+ "state": "missing",
534
+ "heading": null,
535
+ "bodyRanges": [],
536
+ "body": null
537
+ },
538
+ "backlog": {
539
+ "state": "missing",
540
+ "heading": null,
541
+ "bodyRanges": [],
542
+ "body": null
543
+ }
544
+ },
545
+ {
546
+ "path": "docs/architecture/index.md",
547
+ "targetId": "projection_target.architecture.index",
548
+ "capabilityNodeIds": [
549
+ "capability.demo.feature"
550
+ ],
551
+ "presence": "missing",
552
+ "markerState": "missing",
553
+ "humanRegions": [],
554
+ "section3": {
555
+ "state": "missing",
556
+ "heading": null,
557
+ "bodyRanges": [],
558
+ "body": null
559
+ },
560
+ "backlog": {
561
+ "state": "missing",
562
+ "heading": null,
563
+ "bodyRanges": [],
564
+ "body": null
565
+ }
566
+ },
567
+ {
568
+ "path": "docs/architecture/modules/demo/feature.md",
569
+ "targetId": "projection_target.entity.capability-demo-feature",
570
+ "capabilityNodeIds": [
571
+ "capability.demo.feature"
572
+ ],
573
+ "presence": "present",
574
+ "markerState": "present",
575
+ "humanRegions": [
576
+ {
577
+ "startByte": 0,
578
+ "endByte": 13,
579
+ "startLine": 1,
580
+ "endLine": 2,
581
+ "text": "# Demo\r\n\r\n"
582
+ },
583
+ {
584
+ "startByte": 354,
585
+ "endByte": 576,
586
+ "startLine": 6,
587
+ "endLine": 18,
588
+ "text": "\r\n## 3. P3: Design Decisions and Invariants\r\n\r\nHuman café 🧭.\r\n<!-- keep this comment -->\r\n```md\r\n## Example heading\r\n<!-- BEGIN ARCHCONTEXT:generated literal -->\r\n```\r\n### Nested detail\r\n\r\n## Optimization Backlog\r\n \t\r\n"
589
+ }
590
+ ],
591
+ "section3": {
592
+ "state": "present",
593
+ "heading": {
594
+ "text": "## 3. P3: Design Decisions and Invariants\r\n",
595
+ "range": {
596
+ "startByte": 356,
597
+ "endByte": 399,
598
+ "startLine": 7,
599
+ "endLine": 7
600
+ }
601
+ },
602
+ "bodyRanges": [
603
+ {
604
+ "startByte": 399,
605
+ "endByte": 547,
606
+ "startLine": 8,
607
+ "endLine": 16
608
+ }
609
+ ],
610
+ "body": "\r\nHuman café 🧭.\r\n<!-- keep this comment -->\r\n```md\r\n## Example heading\r\n<!-- BEGIN ARCHCONTEXT:generated literal -->\r\n```\r\n### Nested detail\r\n\r\n"
611
+ },
612
+ "backlog": {
613
+ "state": "empty",
614
+ "heading": {
615
+ "text": "## Optimization Backlog\r\n",
616
+ "range": {
617
+ "startByte": 547,
618
+ "endByte": 572,
619
+ "startLine": 17,
620
+ "endLine": 17
621
+ }
622
+ },
623
+ "bodyRanges": [
624
+ {
625
+ "startByte": 572,
626
+ "endByte": 576,
627
+ "startLine": 18,
628
+ "endLine": 18
629
+ }
630
+ ],
631
+ "body": " \t\r\n"
632
+ }
633
+ }
634
+ ]
635
+ }