archctx-contracts 0.7.2 → 0.8.1

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