instar 1.3.783 → 1.3.785

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 (64) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +41 -15
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/MachineIdentity.d.ts +13 -0
  5. package/dist/core/MachineIdentity.d.ts.map +1 -1
  6. package/dist/core/MachineIdentity.js +31 -0
  7. package/dist/core/MachineIdentity.js.map +1 -1
  8. package/dist/core/MeteredSpendGate.d.ts +8 -0
  9. package/dist/core/MeteredSpendGate.d.ts.map +1 -1
  10. package/dist/core/MeteredSpendGate.js +20 -0
  11. package/dist/core/MeteredSpendGate.js.map +1 -1
  12. package/dist/core/SpendAlertDispatcher.d.ts +94 -0
  13. package/dist/core/SpendAlertDispatcher.d.ts.map +1 -0
  14. package/dist/core/SpendAlertDispatcher.js +168 -0
  15. package/dist/core/SpendAlertDispatcher.js.map +1 -0
  16. package/dist/core/SpendAlertEmitters.d.ts +118 -0
  17. package/dist/core/SpendAlertEmitters.d.ts.map +1 -0
  18. package/dist/core/SpendAlertEmitters.js +220 -0
  19. package/dist/core/SpendAlertEmitters.js.map +1 -0
  20. package/dist/core/SpendAlertResolver.d.ts +12 -0
  21. package/dist/core/SpendAlertResolver.d.ts.map +1 -1
  22. package/dist/core/SpendAlertResolver.js +34 -0
  23. package/dist/core/SpendAlertResolver.js.map +1 -1
  24. package/dist/core/TelegramSpendTopicChannel.d.ts +50 -0
  25. package/dist/core/TelegramSpendTopicChannel.d.ts.map +1 -0
  26. package/dist/core/TelegramSpendTopicChannel.js +106 -0
  27. package/dist/core/TelegramSpendTopicChannel.js.map +1 -0
  28. package/dist/core/routingSpendView.d.ts +16 -0
  29. package/dist/core/routingSpendView.d.ts.map +1 -1
  30. package/dist/core/routingSpendView.js +23 -0
  31. package/dist/core/routingSpendView.js.map +1 -1
  32. package/dist/core/types.d.ts +22 -2
  33. package/dist/core/types.d.ts.map +1 -1
  34. package/dist/core/types.js.map +1 -1
  35. package/dist/monitoring/FeatureMetricsLedger.d.ts +6 -0
  36. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  37. package/dist/monitoring/FeatureMetricsLedger.js +7 -2
  38. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  39. package/dist/monitoring/ProviderCostReportStore.d.ts +138 -0
  40. package/dist/monitoring/ProviderCostReportStore.d.ts.map +1 -0
  41. package/dist/monitoring/ProviderCostReportStore.js +0 -0
  42. package/dist/monitoring/ProviderCostReportStore.js.map +1 -0
  43. package/dist/monitoring/ProviderReconciliationSweep.d.ts +72 -0
  44. package/dist/monitoring/ProviderReconciliationSweep.d.ts.map +1 -0
  45. package/dist/monitoring/ProviderReconciliationSweep.js +97 -0
  46. package/dist/monitoring/ProviderReconciliationSweep.js.map +1 -0
  47. package/dist/server/AgentServer.d.ts +19 -0
  48. package/dist/server/AgentServer.d.ts.map +1 -1
  49. package/dist/server/AgentServer.js +251 -46
  50. package/dist/server/AgentServer.js.map +1 -1
  51. package/dist/server/routes.d.ts +2 -0
  52. package/dist/server/routes.d.ts.map +1 -1
  53. package/dist/server/routes.js +40 -0
  54. package/dist/server/routes.js.map +1 -1
  55. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  56. package/dist/testing/selfActionRegistry.js +166 -0
  57. package/dist/testing/selfActionRegistry.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/data/builtin-manifest.json +47 -47
  60. package/src/data/state-coherence-registry.json +1241 -1223
  61. package/upgrades/1.3.784.md +59 -0
  62. package/upgrades/1.3.785.md +56 -0
  63. package/upgrades/side-effects/routing-spend-increment-1c.md +44 -0
  64. package/upgrades/side-effects/routing-spend-increment-c.md +44 -0
@@ -1,1225 +1,1243 @@
1
1
  {
2
- "$schema-note": "Machine form of docs/specs/STATE-COHERENCE-REGISTRY.md (the approved census, census-date 2026-06-05). AUTHORED, NOT build-generated (committed-generated-manifest conflict-loop lesson, COHERENCE-JOURNAL-SPEC §3.6). One entry per durable state category the census enumerates. Consumed by scripts/lint-state-registry.js: every direct durable-write site targeting a state dir / .instar/ must match an entry's `paths` (or carry an inline `/* state-registry: <category> */` annotation). Fields: category (kebab-case id) | description | scope (machine-local | must-be-coherent | derived-cache | coherent-on-demand) | freshness (real-time | eventual | session-boundary | n/a) | conflictShape (single-writer | append-only | lww | n/a) | transport (git | peer-http | none | deferred) | paths (glob-ish hints) | grandfathered (census marked uncertainty, §4e). New state declares its class here at birth.",
3
- "version": 1,
4
- "censusDate": "2026-06-05",
5
- "sourceDoc": "docs/specs/STATE-COHERENCE-REGISTRY.md",
6
- "entries": [
7
- {
8
- "category": "coherence-journal",
9
- "description": "Per-machine append-only cross-machine event streams (topic-placement / session-lifecycle / autonomous-run); replicated first-hop over the mesh (COHERENCE-JOURNAL-SPEC P1).",
10
- "scope": "must-be-coherent",
11
- "freshness": "eventual",
12
- "conflictShape": "append-only",
13
- "transport": "peer-http",
14
- "paths": [
15
- "state/coherence-journal/"
16
- ],
17
- "grandfathered": false,
18
- "retention": {
19
- "class": "R",
20
- "access": "protocol-reader",
21
- "boundedBy": "replication-protocol",
22
- "note": "CARVED OUT — bounded inside CoherenceJournal via KindRetention + the new seq-floor prune guard; never externally rotated"
23
- }
24
- },
25
- {
26
- "category": "pending-pulls",
27
- "description": "Durable working-set pending-pull ledger - outstanding fetches whose producer was offline/unreachable/revoked/mid-run; re-fired on reappearance/run-stopped (WORKING-SET-HANDOFF-SPEC P2 §3.4). Machine-local: records describe THIS machine's outstanding fetches; single-writer serialized mutate() funnel.",
28
- "scope": "machine-local",
29
- "freshness": "live",
30
- "conflictShape": "single-writer",
31
- "transport": "none",
32
- "paths": [
33
- "state/coherence-journal/pending-pulls.json"
34
- ],
35
- "grandfathered": false
36
- },
37
- {
38
- "category": "pull-opkeys",
39
- "description": "Durable (topic,epoch) operation-key window for working-set pull dedupe - restart-proof at-most-once scheduling per move (WORKING-SET-HANDOFF-SPEC P2 §3.3). Machine-local, bounded window (200 keys), single-writer (the coordinator).",
40
- "scope": "machine-local",
41
- "freshness": "live",
42
- "conflictShape": "single-writer",
43
- "transport": "none",
44
- "paths": [
45
- "state/coherence-journal/pull-opkeys.json"
46
- ],
47
- "grandfathered": false
48
- },
49
- {
50
- "category": "visibility-guard",
51
- "description": "Peer-visibility guard dedupe state - which improper revocations were already surfaced (keyed on revokedAt, cross-boot) + per-machine disappearance episodes for flap bounding (WORKING-SET-HANDOFF-SPEC P2 §3.6). Machine-local notice hygiene, never authority.",
52
- "scope": "machine-local",
53
- "freshness": "live",
54
- "conflictShape": "single-writer",
55
- "transport": "none",
56
- "paths": [
57
- "state/coherence-journal/visibility-guard.json"
58
- ],
59
- "grandfathered": false
60
- },
61
- {
62
- "category": "commitments",
63
- "description": "CommitmentTracker single-writer CAS store of user-facing promises and follow-through state. P1.5 (COMMITMENTS-COHERENCE-SPEC) fulfills the peer-http transport: owner-routed mutation + first-hop delta replication; the census's earlier 'AO desired' note is resolved-as-won't-do (owner-routing achieves coherence without the append-only conversion).",
64
- "scope": "must-be-coherent",
65
- "freshness": "eventual",
66
- "conflictShape": "single-writer",
67
- "transport": "peer-http",
68
- "paths": [
69
- "state/commitments.json"
70
- ],
71
- "grandfathered": false
72
- },
73
- {
74
- "category": "commitment-replicas",
75
- "description": "Per-peer read-only replicas of other machines' commitment stores (COMMITMENTS-COHERENCE-SPEC P1.5 §3.2). Derived cache - rebuilt by a full re-pull; written ONLY by the commitments-sync receive path; first-hop sender-bound; incarnation-fenced.",
76
- "scope": "derived-cache",
77
- "freshness": "eventual",
78
- "conflictShape": "single-writer",
79
- "transport": "peer-http",
80
- "paths": [
81
- "state/commitment-replicas/"
82
- ],
83
- "grandfathered": false
84
- },
85
- {
86
- "category": "commitment-pending-mutations",
87
- "description": "Durable owner-routed mutation intents awaiting an offline owner (COMMITMENTS-COHERENCE-SPEC P1.5 §3.4). Stores INTENT only - a FRESH signed envelope is re-issued at fire time; single-writer serialized funnel; per-(origin,id) and per-owner enqueue bounds; TTL 7d with one honest expiry notice.",
88
- "scope": "machine-local",
89
- "freshness": "live",
90
- "conflictShape": "single-writer",
91
- "transport": "none",
92
- "paths": [
93
- "state/commitment-replicas/pending-mutations.json"
94
- ],
95
- "grandfathered": false
96
- },
97
- {
98
- "category": "commitment-opkeys",
99
- "description": "Owner-side durable opKey replay window for commitment-mutate (COMMITMENTS-COHERENCE-SPEC P1.5 §3.4) - the replay control beyond the 60s envelope nonce window; records verdicts, survives restarts, TTL >= pending-mutation TTL.",
100
- "scope": "machine-local",
101
- "freshness": "live",
102
- "conflictShape": "single-writer",
103
- "transport": "none",
104
- "paths": [
105
- "state/coherence-journal/commitment-opkeys.json"
106
- ],
107
- "grandfathered": false
108
- },
109
- {
110
- "category": "attention-queue",
111
- "description": "Attention items surfaced to the user, plus the per-source coalescing/suppression ledger.",
112
- "scope": "must-be-coherent",
113
- "freshness": "eventual",
114
- "conflictShape": "single-writer",
115
- "transport": "peer-http",
116
- "paths": [
117
- "state/attention-items.json",
118
- "state/attention-suppressed.jsonl"
119
- ],
120
- "grandfathered": false
121
- },
122
- {
123
- "category": "remote-ack-queue",
124
- "description": "Operator-bound ack/resolve INTENT for a pooled attention item whose owner machine is briefly offline (WS4.1 follow-up, dark behind multiMachine.seamlessness.ws41DurableAck). Carries the authenticated operator principal; the owner revalidates it at apply time on return/boot. Append-then-compact, idempotent on (itemId,targetMachineId).",
125
- "scope": "must-be-coherent",
126
- "freshness": "eventual",
127
- "conflictShape": "single-writer",
128
- "transport": "peer-http",
129
- "paths": [
130
- "logs/remote-ack-queue.jsonl"
131
- ],
132
- "grandfathered": false
133
- },
134
- {
135
- "category": "slack-permission-decisions",
136
- "description": "Observe-only ledger of Slack org permission-gate decisions (allow/clarify/refuse/step-up) with the verified principal + basis. Append-only; feeds false-positive-rate measurement before any enforcement is enabled. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md.",
137
- "scope": "machine-local",
138
- "freshness": "eventual",
139
- "conflictShape": "append-only",
140
- "transport": "none",
141
- "paths": [
142
- "state/slack-permission-decisions.jsonl"
143
- ],
144
- "grandfathered": false
145
- },
146
- {
147
- "category": "slack-pending-registrations",
148
- "description": "Durable pending Slack self-registration requests awaiting admin approval (SlackUserRegistry). Cleared on approve/deny. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md §6.3.",
149
- "scope": "machine-local",
150
- "freshness": "eventual",
151
- "conflictShape": "single-writer",
152
- "transport": "none",
153
- "paths": [
154
- "state/slack-pending-registrations.json"
155
- ],
156
- "grandfathered": false
157
- },
158
- {
159
- "category": "slack-relationship-baselines",
160
- "description": "Durable per-principal behavioral baseline (Pillar 3 relationship-aware anomaly second factor): privacy-respecting SHAPE aggregates only — action repertoire, tier/hour histograms, coarse message-length stats, urgency rate — NEVER message content. Fed observe-only from authorized Slack traffic; read by RelationshipAnomalyScorer. Ships DARK. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md §7.1-7.2, §7.6.",
161
- "scope": "machine-local",
162
- "freshness": "eventual",
163
- "conflictShape": "single-writer",
164
- "transport": "none",
165
- "paths": [
166
- "state/slack-relationship-baselines.json"
167
- ],
168
- "grandfathered": false
169
- },
170
- {
171
- "category": "topic-placement-history",
172
- "description": "Topic<->machine placement history (does not exist as its own store yet; the journal's first stream materializes it). Distinct from current-owner pool state.",
173
- "scope": "must-be-coherent",
174
- "freshness": "eventual",
175
- "conflictShape": "append-only",
176
- "transport": "peer-http",
177
- "paths": [
178
- "state/coherence-journal/*.topic-placement.jsonl"
179
- ],
180
- "grandfathered": false,
181
- "retention": {
182
- "class": "R",
183
- "access": "protocol-reader",
184
- "boundedBy": "replication-protocol",
185
- "note": "CARVED OUT — replication substrate"
186
- }
187
- },
188
- {
189
- "category": "autonomous-working-artifacts",
190
- "description": "Autonomous run working files and their declared artifact paths (the EXO stranding). Coherent-on-demand: fetched via working-set pull when a topic moves.",
191
- "scope": "coherent-on-demand",
192
- "freshness": "session-boundary",
193
- "conflictShape": "single-writer",
194
- "transport": "deferred",
195
- "paths": [
196
- ".instar/autonomous/",
197
- ".instar/autonomous/*.local.md",
198
- "state/autonomous-emergency-stop",
199
- "autonomous-emergency-stop"
200
- ],
201
- "grandfathered": false
202
- },
203
- {
204
- "category": "threadline-conversation-state",
205
- "description": "Threadline conversation store plus context-thread-map, thread-resume-map, telegram-bridge-bindings.",
206
- "scope": "must-be-coherent",
207
- "freshness": "eventual",
208
- "conflictShape": "single-writer",
209
- "transport": "peer-http",
210
- "paths": [
211
- "threadline/conversations.json",
212
- "threadline/context-thread-map.json",
213
- "threadline/thread-resume-map.json",
214
- "threadline/telegram-bridge-bindings.json"
215
- ],
216
- "grandfathered": false
217
- },
218
- {
219
- "category": "message-store-and-threads",
220
- "description": "Cross-platform A2A message store, threads, and inbox/outbox JSONL indexes.",
221
- "scope": "must-be-coherent",
222
- "freshness": "eventual",
223
- "conflictShape": "append-only",
224
- "transport": "peer-http",
225
- "paths": [
226
- ".instar/messages/store/",
227
- ".instar/messages/threads/",
228
- ".instar/messages/inbox.jsonl",
229
- ".instar/messages/outbox.jsonl"
230
- ],
231
- "grandfathered": false
232
- },
233
- {
234
- "category": "topic-project-bindings",
235
- "description": "Telegram-topic-to-project bindings.",
236
- "scope": "must-be-coherent",
237
- "freshness": "eventual",
238
- "conflictShape": "lww",
239
- "transport": "peer-http",
240
- "paths": [
241
- "topic-project-bindings.json",
242
- "state/topic-project-bindings.json"
243
- ],
244
- "grandfathered": false
245
- },
246
- {
247
- "category": "relationships",
248
- "description": "Per-person relationship records (one file per identity).",
249
- "scope": "must-be-coherent",
250
- "freshness": "eventual",
251
- "conflictShape": "lww",
252
- "transport": "peer-http",
253
- "paths": [
254
- "relationships/",
255
- "relationships/*.json"
256
- ],
257
- "grandfathered": false
258
- },
259
- {
260
- "category": "users-registry",
261
- "description": "Multi-user identity / permissions registry.",
262
- "scope": "must-be-coherent",
263
- "freshness": "eventual",
264
- "conflictShape": "lww",
265
- "transport": "peer-http",
266
- "paths": [
267
- "users.json"
268
- ],
269
- "grandfathered": false
270
- },
271
- {
272
- "category": "job-definitions",
273
- "description": "Declarative job definitions (cron / prompt / supervision). The coherent half of jobs.json plus markdown job specs; run state is machine-local (see job-run-state). Field split required before whole-file sync (census §5).",
274
- "scope": "must-be-coherent",
275
- "freshness": "eventual",
276
- "conflictShape": "lww",
277
- "transport": "git",
278
- "paths": [
279
- "jobs.json",
280
- ".instar/jobs/",
281
- ".instar/jobs/*.md"
282
- ],
283
- "grandfathered": false
284
- },
285
- {
286
- "category": "soul-identity-documents",
287
- "description": "Soul / identity narrative documents and self-knowledge facts (soul.md, identity.json, AGENT.md/USER.md/MEMORY.md/CLAUDE.md identity scaffold, self-knowledge facts).",
288
- "scope": "must-be-coherent",
289
- "freshness": "session-boundary",
290
- "conflictShape": "single-writer",
291
- "transport": "git",
292
- "paths": [
293
- "soul.md",
294
- "soul.init.md",
295
- "state/soul.init.md",
296
- "identity.json",
297
- "AGENT.md",
298
- "USER.md",
299
- "MEMORY.md",
300
- "CLAUDE.md",
301
- "state/self-knowledge-facts.json"
302
- ],
303
- "grandfathered": false
304
- },
305
- {
306
- "category": "projects-registry",
307
- "description": "Multi-spec project registry + plan docs + digest cache (claim-ownership verb already models owner-machine claim).",
308
- "scope": "must-be-coherent",
309
- "freshness": "eventual",
310
- "conflictShape": "single-writer",
311
- "transport": "peer-http",
312
- "paths": [
313
- ".instar/projects/",
314
- ".instar/projects/*.md"
315
- ],
316
- "grandfathered": false
317
- },
318
- {
319
- "category": "learned-preferences",
320
- "description": "Learned preferences and correction-loop ledger.",
321
- "scope": "must-be-coherent",
322
- "freshness": "eventual",
323
- "conflictShape": "append-only",
324
- "transport": "peer-http",
325
- "paths": [
326
- ".instar/preferences.json",
327
- "state/correction-ledger.db"
328
- ],
329
- "grandfathered": false
330
- },
331
- {
332
- "category": "secret-vault",
333
- "description": "Encrypted secret vault. The one category that truly replicates today (cross-machine secret sync, X25519-sealed push, receive-only default).",
334
- "scope": "must-be-coherent",
335
- "freshness": "eventual",
336
- "conflictShape": "single-writer",
337
- "transport": "peer-http",
338
- "paths": [
339
- "config.secrets.enc",
340
- "state/secrets.enc"
341
- ],
342
- "grandfathered": false
343
- },
344
- {
345
- "category": "topic-ownership-current",
346
- "description": "Current topic ownership (session-pool CAS + lease). The live single-writer source of truth for placement; the journal records its mutations.",
347
- "scope": "must-be-coherent",
348
- "freshness": "real-time",
349
- "conflictShape": "single-writer",
350
- "transport": "peer-http",
351
- "paths": [
352
- ".instar/state/session-pool/",
353
- "state/session-pool/"
354
- ],
355
- "grandfathered": false
356
- },
357
- {
358
- "category": "topic-pin-skew-quarantine",
359
- "description": "U4.1 sticky durable exclusion set for future-skewed replicated topic-pin records (key+HLC pairs; docs/specs/u4-1-pin-persistence.md §2C). Machine-local BY DESIGN: each fold quarantines what ITS skew gate rejected.",
360
- "scope": "machine-local",
361
- "freshness": "eventual",
362
- "conflictShape": "single-writer",
363
- "transport": "none",
364
- "paths": [
365
- "state/session-pool/topic-pin-skew-quarantine.json"
366
- ],
367
- "grandfathered": false,
368
- "retention": {
369
- "class": "R",
370
- "access": "protocol-reader",
371
- "boundedBy": "domain-cardinality",
372
- "note": "One entry per poisoned record (rare by construction); entries prune on honest supersession (a newer honest HLC wins) or explicit per-record re-admission — never unbounded growth."
373
- }
374
- },
375
- {
376
- "category": "conversation-live-tail",
377
- "description": "Conversation live-tail replicated holder->standby per the seamlessness spec.",
378
- "scope": "must-be-coherent",
379
- "freshness": "real-time",
380
- "conflictShape": "single-writer",
381
- "transport": "peer-http",
382
- "paths": [
383
- "state/live-tail/"
384
- ],
385
- "grandfathered": false
386
- },
387
- {
388
- "category": "fleet-config",
389
- "description": "Fleet-wide config: feature flags, messaging[] config, monitoring tunables, multiMachine policy. SHARES config.json with machine-local fields (port, paths) -- split-required before whole-file sync (census §5).",
390
- "scope": "must-be-coherent",
391
- "freshness": "eventual",
392
- "conflictShape": "lww",
393
- "transport": "git",
394
- "paths": [
395
- "config.json"
396
- ],
397
- "grandfathered": false
398
- },
399
- {
400
- "category": "machine-identity-keys",
401
- "description": "Machine identity + signing/encryption keypairs. Identity IS the machine; never synced by definition.",
402
- "scope": "machine-local",
403
- "freshness": "n/a",
404
- "conflictShape": "single-writer",
405
- "transport": "none",
406
- "paths": [
407
- "machine/identity.json",
408
- "machine/*.pem",
409
- "signing-private.pem",
410
- "encryption-private.pem"
411
- ],
412
- "grandfathered": false
413
- },
414
- {
415
- "category": "per-session-state",
416
- "description": "Per-session state files. Sessions live and die on one machine; pool transfers create NEW sessions (CONTINUATION), not file copies.",
417
- "scope": "machine-local",
418
- "freshness": "real-time",
419
- "conflictShape": "single-writer",
420
- "transport": "none",
421
- "paths": [
422
- "state/sessions/",
423
- "state/sessions/*.json"
424
- ],
425
- "grandfathered": false
426
- },
427
- {
428
- "category": "job-run-state",
429
- "description": "Job RUN state: executions, active-job, run-history ledger. Runs are machine events (definitions are the coherent half, job-definitions).",
430
- "scope": "machine-local",
431
- "freshness": "eventual",
432
- "conflictShape": "single-writer",
433
- "transport": "none",
434
- "paths": [
435
- "state/jobs/",
436
- "state/active-job.json",
437
- "state/job-runs.jsonl"
438
- ],
439
- "grandfathered": false
440
- },
441
- {
442
- "category": "quota-state",
443
- "description": "Per-account-seat per-machine quota state. Broadcast-view ships via capacity heartbeats (quota-aware placement); the file itself is machine-local.",
444
- "scope": "machine-local",
445
- "freshness": "real-time",
446
- "conflictShape": "single-writer",
447
- "transport": "none",
448
- "paths": [
449
- "quota-state.json",
450
- "state/quota-state.json"
451
- ],
452
- "grandfathered": false
453
- },
454
- {
455
- "category": "resource-samples",
456
- "description": "ResourceLedger CPU/RSS samples. Physical per-machine telemetry.",
457
- "scope": "machine-local",
458
- "freshness": "real-time",
459
- "conflictShape": "append-only",
460
- "transport": "none",
461
- "paths": [
462
- "state/resource-ledger.db",
463
- "state/resources.db"
464
- ],
465
- "grandfathered": false,
466
- "retention": {
467
- "class": "sqlite",
468
- "access": "sqlite",
469
- "maxAgeMs": 2592000000
470
- }
471
- },
472
- {
473
- "category": "lease-coordination-state",
474
- "description": "Lease / coordination state and registry liveness. The lease IS the cross-machine protocol; its state is the protocol's own.",
475
- "scope": "machine-local",
476
- "freshness": "real-time",
477
- "conflictShape": "single-writer",
478
- "transport": "none",
479
- "paths": [
480
- "state/lease-local.json",
481
- "state/registry-liveness.json"
482
- ],
483
- "grandfathered": false
484
- },
485
- {
486
- "category": "nonce-sequence-watermarks",
487
- "description": "NonceStore replay-protection watermarks. Per-channel per-machine by design.",
488
- "scope": "machine-local",
489
- "freshness": "real-time",
490
- "conflictShape": "single-writer",
491
- "transport": "none",
492
- "paths": [
493
- "state/nonce-store.json",
494
- "state/nonces/"
495
- ],
496
- "grandfathered": false
497
- },
498
- {
499
- "category": "relay-delivery-queues",
500
- "description": "Pending-relay and message-ledger SQLite queues. Outbound queue drains on the machine that owns the channel seat.",
501
- "scope": "machine-local",
502
- "freshness": "real-time",
503
- "conflictShape": "single-writer",
504
- "transport": "none",
505
- "paths": [
506
- ".instar/state/pending-relay.*.sqlite",
507
- "state/message-ledger.db"
508
- ],
509
- "grandfathered": false
510
- },
511
- {
512
- "category": "messaging-adapter-state",
513
- "description": "Telegram/iMessage/WhatsApp/Slack adapter state: poll offsets, chat.db, consent.json. Channel seat is held by one machine (lifeline); failover = seat transfer, not state merge.",
514
- "scope": "machine-local",
515
- "freshness": "real-time",
516
- "conflictShape": "single-writer",
517
- "transport": "none",
518
- "paths": [
519
- "state/telegram-offset.json",
520
- "state/consent.json",
521
- "state/adapter-state/"
522
- ],
523
- "grandfathered": false
524
- },
525
- {
526
- "category": "platform-attachment-caches",
527
- "description": "Telegram/document attachment caches. Fetchable from the platform on demand.",
528
- "scope": "machine-local",
529
- "freshness": "n/a",
530
- "conflictShape": "single-writer",
531
- "transport": "none",
532
- "paths": [
533
- "telegram-images/",
534
- "documents/"
535
- ],
536
- "grandfathered": false
537
- },
538
- {
539
- "category": "listener-daemon-internals",
540
- "description": "Listener-daemon IPC internals: inbox/outbox.jsonl.active, pid, sentinels, hmac key. Daemon-local.",
541
- "scope": "machine-local",
542
- "freshness": "real-time",
543
- "conflictShape": "append-only",
544
- "transport": "none",
545
- "paths": [
546
- "state/listener/",
547
- "state/listener/inbox.jsonl.active",
548
- "state/listener/outbox.jsonl.active"
549
- ],
550
- "grandfathered": false
551
- },
552
- {
553
- "category": "threadline-transport-internals",
554
- "description": "Threadline transport internals: relay-tokens, mcp-tokens, rate-limits. Connection-scoped; identity-keys are local-secret like machine keys.",
555
- "scope": "machine-local",
556
- "freshness": "real-time",
557
- "conflictShape": "single-writer",
558
- "transport": "none",
559
- "paths": [
560
- "threadline/relay-tokens.json",
561
- "threadline/mcp-tokens.json",
562
- "threadline/rate-limits.json"
563
- ],
564
- "grandfathered": false
565
- },
566
- {
567
- "category": "threadline-trust-profiles",
568
- "description": "Per-peer agent trust profiles (AgentTrustManager) + audit trail. Now CREDENTIAL-GATING (Secure A2A Verified Pairing §3.8): the profile carries the pairing lifecycle state (pending-verification / mutual-verified / verification-failed / identity-verified) that the credential-share gate keys on. MACHINE-LOCAL: the SAS-bound pending state + the machine-local handshake's identity decision live here; the SAS words themselves are in a separate 0600 store (pairing-pending.json, never in the registry). The VERIFIED-IDENTITY RESULT alone replicates via the threadline-pairing stateSync transport (see threadline-pairing-result) — this file is never whole-file-synced.",
569
- "scope": "machine-local",
570
- "freshness": "real-time",
571
- "conflictShape": "single-writer",
572
- "transport": "none",
573
- "paths": [
574
- "threadline/trust-profiles.json",
575
- "threadline/trust-audit.jsonl",
576
- "threadline/pairing-pending.json"
577
- ],
578
- "grandfathered": false
579
- },
580
- {
581
- "category": "threadline-pairing-result",
582
- "description": "The replicated verified-IDENTITY RESULT of a Secure A2A pairing (Secure A2A Verified Pairing §3.8 / FD11). Replicates ONLY { peerFp, peerIdentityPub, state:'mutual-verified', verifiedAt, verifiedOnMachine } across the agent's OWN machines via the HLC replicated-store foundation (kind 'threadline-pairing-record') — NEVER the SAS words, shared secret, or relay token (those stay machine-local, bound to the machine-local handshake's ephemeral secret). Machine B honors a replicated record ONLY by pinning peerIdentityPub; a revoke/verification-failed propagates as a tombstone. Ships DARK behind multiMachine.stateSync.threadlinePairing (enabled:false, dryRun:true). Rides the coherence-journal stream files (no dedicated path).",
583
- "scope": "must-be-coherent",
584
- "freshness": "eventual",
585
- "conflictShape": "lww",
586
- "transport": "peer-http",
587
- "paths": [
588
- "state/coherence-journal/"
589
- ],
590
- "grandfathered": false
591
- },
592
- {
593
- "category": "process-restart-coordination",
594
- "description": "Process/restart coordination: boot-id, restart markers, auto-updater state, caffeinate pid, slept-marker. Per-process lifecycle.",
595
- "scope": "machine-local",
596
- "freshness": "real-time",
597
- "conflictShape": "single-writer",
598
- "transport": "none",
599
- "paths": [
600
- "state/boot-id",
601
- "state/auto-updater.json",
602
- "state/slept-marker.json",
603
- "state/lifeline-restart-requested.json"
604
- ],
605
- "grandfathered": false
606
- },
607
- {
608
- "category": "ephemeral-caches",
609
- "description": "Per-boot/ephemeral caches: paste/, stop-gate.db, feature-registry.db, capability manifest. Recomputed or per-machine detection.",
610
- "scope": "machine-local",
611
- "freshness": "n/a",
612
- "conflictShape": "single-writer",
613
- "transport": "none",
614
- "paths": [
615
- "state/paste/",
616
- "state/stop-gate.db",
617
- "state/feature-registry.db"
618
- ],
619
- "grandfathered": false
620
- },
621
- {
622
- "category": "trust-elevation-incidents",
623
- "description": "External-op trust elevation / incident state. Debatable whether trust transfers across machines -- flagged for P3+ review rather than silently local.",
624
- "scope": "machine-local",
625
- "freshness": "eventual",
626
- "conflictShape": "single-writer",
627
- "transport": "none",
628
- "paths": [
629
- "state/trust-levels.json",
630
- "state/trust-incidents.json",
631
- "state/trust-*.json"
632
- ],
633
- "grandfathered": true
634
- },
635
- {
636
- "category": "audit-destructive-ops",
637
- "description": "Destructive-ops audit stream (411M live -- needs rotation, census §7). Append-only per-machine.",
638
- "scope": "machine-local",
639
- "freshness": "n/a",
640
- "conflictShape": "append-only",
641
- "transport": "none",
642
- "paths": [
643
- "state/destructive-ops.jsonl",
644
- "logs/destructive-ops.jsonl"
645
- ],
646
- "grandfathered": false,
647
- "retention": {
648
- "class": "C",
649
- "access": "streamed",
650
- "complianceHold": true,
651
- "keepSegments": 0,
652
- "note": "forensic trail — archive, never drop-delete (replaces SafeGitExecutor.maybeRotateAuditLog drop-rotate)"
653
- }
654
- },
655
- {
656
- "category": "audit-job-runs",
657
- "description": "Job-runs audit stream. Append-only per-machine.",
658
- "scope": "machine-local",
659
- "freshness": "n/a",
660
- "conflictShape": "append-only",
661
- "transport": "none",
662
- "paths": [
663
- "state/job-runs.jsonl",
664
- "logs/job-runs.jsonl"
665
- ],
666
- "grandfathered": false,
667
- "retention": {
668
- "class": "A",
669
- "access": "streamed",
670
- "maxBytes": 33554432,
671
- "keepSegments": 4
672
- }
673
- },
674
- {
675
- "category": "audit-reaper",
676
- "description": "Reaper decision audit stream (keep/kill transitions stamped with pressure tier).",
677
- "scope": "machine-local",
678
- "freshness": "n/a",
679
- "conflictShape": "append-only",
680
- "transport": "none",
681
- "paths": [
682
- "logs/reaper-audit.jsonl"
683
- ],
684
- "grandfathered": false
685
- },
686
- {
687
- "category": "audit-reap-log",
688
- "description": "Reap-log: why a session vanished (one JSON line per shutoff/refused-shutoff).",
689
- "scope": "machine-local",
690
- "freshness": "n/a",
691
- "conflictShape": "append-only",
692
- "transport": "none",
693
- "paths": [
694
- "logs/reap-log.jsonl"
695
- ],
696
- "grandfathered": false
697
- },
698
- {
699
- "category": "audit-sentinel-events",
700
- "description": "Sentinel-events audit stream (silently-stopped family transitions).",
701
- "scope": "machine-local",
702
- "freshness": "n/a",
703
- "conflictShape": "append-only",
704
- "transport": "none",
705
- "paths": [
706
- "logs/sentinel-events.jsonl"
707
- ],
708
- "grandfathered": false
709
- },
710
- {
711
- "category": "audit-security",
712
- "description": "Security audit stream (auth/security events).",
713
- "scope": "machine-local",
714
- "freshness": "n/a",
715
- "conflictShape": "append-only",
716
- "transport": "none",
717
- "paths": [
718
- "security.jsonl",
719
- "state/security.jsonl",
720
- "logs/security.jsonl"
721
- ],
722
- "grandfathered": false,
723
- "retention": {
724
- "class": "C",
725
- "access": "streamed",
726
- "complianceHold": true,
727
- "keepSegments": 0,
728
- "note": "forensic trail — archive, never drop-delete (replaces SecurityLog maybeRotateJsonl keep-ratio trim)"
729
- }
730
- },
731
- {
732
- "category": "audit-decision-journal",
733
- "description": "Decision-journal audit stream.",
734
- "scope": "machine-local",
735
- "freshness": "n/a",
736
- "conflictShape": "append-only",
737
- "transport": "none",
738
- "paths": [
739
- "logs/decision-journal.jsonl",
740
- "state/decision-journal.jsonl"
741
- ],
742
- "grandfathered": false
743
- },
744
- {
745
- "category": "audit-activity",
746
- "description": "Activity audit streams (date-partitioned, ~37M).",
747
- "scope": "machine-local",
748
- "freshness": "n/a",
749
- "conflictShape": "append-only",
750
- "transport": "none",
751
- "paths": [
752
- "logs/activity-*.jsonl",
753
- "state/activity/"
754
- ],
755
- "grandfathered": false
756
- },
757
- {
758
- "category": "audit-watchdog-interventions",
759
- "description": "Watchdog-interventions audit stream.",
760
- "scope": "machine-local",
761
- "freshness": "n/a",
762
- "conflictShape": "append-only",
763
- "transport": "none",
764
- "paths": [
765
- "logs/watchdog-interventions.jsonl"
766
- ],
767
- "grandfathered": false
768
- },
769
- {
770
- "category": "audit-operation-log",
771
- "description": "External-operation gate operation-log audit stream.",
772
- "scope": "machine-local",
773
- "freshness": "n/a",
774
- "conflictShape": "append-only",
775
- "transport": "none",
776
- "paths": [
777
- "logs/operation-log.jsonl",
778
- "state/operation-log.jsonl"
779
- ],
780
- "grandfathered": false
781
- },
782
- {
783
- "category": "audit-trust-chain",
784
- "description": "Hash-chained trust-audit / mandate-decision chain.",
785
- "scope": "machine-local",
786
- "freshness": "n/a",
787
- "conflictShape": "append-only",
788
- "transport": "none",
789
- "paths": [
790
- "logs/trust-audit-chain.jsonl",
791
- "state/trust-audit-chain.jsonl",
792
- "threadline/trust-audit.jsonl"
793
- ],
794
- "grandfathered": false
795
- },
796
- {
797
- "category": "audit-telegram-messages",
798
- "description": "Telegram message history JSONL (5.2M).",
799
- "scope": "machine-local",
800
- "freshness": "n/a",
801
- "conflictShape": "append-only",
802
- "transport": "none",
803
- "paths": [
804
- "state/telegram-messages.jsonl",
805
- "logs/telegram-messages.jsonl"
806
- ],
807
- "grandfathered": false,
808
- "retention": {
809
- "class": "A",
810
- "access": "streamed",
811
- "maxBytes": 33554432,
812
- "keepSegments": 4
813
- }
814
- },
815
- {
816
- "category": "audit-a2a-messages",
817
- "description": "Agent-to-agent sent/received audit streams.",
818
- "scope": "machine-local",
819
- "freshness": "n/a",
820
- "conflictShape": "append-only",
821
- "transport": "none",
822
- "paths": [
823
- ".instar/messages/a2a-sent.jsonl",
824
- ".instar/messages/a2a-received.jsonl"
825
- ],
826
- "grandfathered": false
827
- },
828
- {
829
- "category": "audit-prompt-gate",
830
- "description": "Prompt-gate audit stream.",
831
- "scope": "machine-local",
832
- "freshness": "n/a",
833
- "conflictShape": "append-only",
834
- "transport": "none",
835
- "paths": [
836
- "logs/prompt-gate-audit.jsonl",
837
- "state/prompt-gate-audit.jsonl"
838
- ],
839
- "grandfathered": false
840
- },
841
- {
842
- "category": "audit-recovery-events",
843
- "description": "Recovery-events audit stream (compaction/recovery lifecycle).",
844
- "scope": "machine-local",
845
- "freshness": "n/a",
846
- "conflictShape": "append-only",
847
- "transport": "none",
848
- "paths": [
849
- "logs/recovery-events.jsonl",
850
- "state/recovery-events.jsonl"
851
- ],
852
- "grandfathered": false
853
- },
854
- {
855
- "category": "audit-skill-telemetry",
856
- "description": "Skill-telemetry audit stream.",
857
- "scope": "machine-local",
858
- "freshness": "n/a",
859
- "conflictShape": "append-only",
860
- "transport": "none",
861
- "paths": [
862
- "logs/skill-telemetry.jsonl",
863
- "state/skill-telemetry.jsonl"
864
- ],
865
- "grandfathered": false
866
- },
867
- {
868
- "category": "audit-feedback",
869
- "description": "Feedback audit stream (Rising Tide feedback loop).",
870
- "scope": "machine-local",
871
- "freshness": "n/a",
872
- "conflictShape": "append-only",
873
- "transport": "none",
874
- "paths": [
875
- "state/feedback.jsonl",
876
- "logs/feedback.jsonl"
877
- ],
878
- "grandfathered": false,
879
- "retention": {
880
- "class": "A",
881
- "access": "streamed",
882
- "maxBytes": 33554432,
883
- "keepSegments": 4
884
- }
885
- },
886
- {
887
- "category": "audit-apprenticeship-decisions",
888
- "description": "Apprenticeship lifecycle gate decisions audit stream.",
889
- "scope": "machine-local",
890
- "freshness": "n/a",
891
- "conflictShape": "append-only",
892
- "transport": "none",
893
- "paths": [
894
- "logs/apprenticeship-decisions.jsonl",
895
- "state/apprenticeship-decisions.jsonl"
896
- ],
897
- "grandfathered": false
898
- },
899
- {
900
- "category": "derived-token-ledger",
901
- "description": "Token ledger SQLite, rebuilt from Claude Code JSONL transcripts.",
902
- "scope": "derived-cache",
903
- "freshness": "eventual",
904
- "conflictShape": "n/a",
905
- "transport": "none",
906
- "paths": [
907
- "state/token-ledger.db",
908
- "state/tokens.db"
909
- ],
910
- "grandfathered": false,
911
- "retention": {
912
- "class": "sqlite",
913
- "access": "sqlite",
914
- "maxAgeMs": 2592000000,
915
- "note": "incremental-vacuum + batched delete off-thread (Increment 2)"
916
- }
917
- },
918
- {
919
- "category": "derived-semantic-memory",
920
- "description": "semantic.db / memory.db / episodes -- rebuildable from evidence. (Live-disk: stale since Jun 1 -- investigate separately, census §1.6/§7.)",
921
- "scope": "derived-cache",
922
- "freshness": "eventual",
923
- "conflictShape": "n/a",
924
- "transport": "none",
925
- "paths": [
926
- "state/semantic.db",
927
- "state/memory.db",
928
- "state/episodes.db",
929
- "state/episodes/",
930
- "memory/semantic.jsonl"
931
- ],
932
- "grandfathered": false,
933
- "retention": {
934
- "class": "sqlite",
935
- "access": "sqlite",
936
- "maxAgeMs": 7776000000,
937
- "note": "mixed .db + memory/semantic.jsonl; jsonl arm is A-class streamed in retrofit"
938
- }
939
- },
940
- {
941
- "category": "derived-topic-memory",
942
- "description": "topic-memory.db (16M, active). Master spec open Q2: promote to COHERENT? -- left derived-cache until P3 review (census honesty).",
943
- "scope": "derived-cache",
944
- "freshness": "eventual",
945
- "conflictShape": "n/a",
946
- "transport": "none",
947
- "paths": [
948
- "state/topic-memory.db"
949
- ],
950
- "grandfathered": true
951
- },
952
- {
953
- "category": "derived-project-map",
954
- "description": "Project-map spatial-awareness scan (refreshable).",
955
- "scope": "derived-cache",
956
- "freshness": "eventual",
957
- "conflictShape": "n/a",
958
- "transport": "none",
959
- "paths": [
960
- "state/project-map.json"
961
- ],
962
- "grandfathered": false
963
- },
964
- {
965
- "category": "derived-projects-digest",
966
- "description": "Projects-digest cache.",
967
- "scope": "derived-cache",
968
- "freshness": "eventual",
969
- "conflictShape": "n/a",
970
- "transport": "none",
971
- "paths": [
972
- "state/projects-digest.cache",
973
- ".instar/projects/.digest.cache"
974
- ],
975
- "grandfathered": false
976
- },
977
- {
978
- "category": "derived-docs-code-sync",
979
- "description": "docs-code-sync.json derived index.",
980
- "scope": "derived-cache",
981
- "freshness": "eventual",
982
- "conflictShape": "n/a",
983
- "transport": "none",
984
- "paths": [
985
- "state/docs-code-sync.json"
986
- ],
987
- "grandfathered": false
988
- },
989
- {
990
- "category": "derived-memory-index",
991
- "description": "MemoryIndex derived index over memory artifacts.",
992
- "scope": "derived-cache",
993
- "freshness": "eventual",
994
- "conflictShape": "n/a",
995
- "transport": "none",
996
- "paths": [
997
- "state/memory-index.json",
998
- "memory/index.json"
999
- ],
1000
- "grandfathered": false
1001
- },
1002
- {
1003
- "category": "derived-framework-model-preferences",
1004
- "description": "framework-model-preferences.db derived cache.",
1005
- "scope": "derived-cache",
1006
- "freshness": "eventual",
1007
- "conflictShape": "n/a",
1008
- "transport": "none",
1009
- "paths": [
1010
- "state/framework-model-preferences.db"
1011
- ],
1012
- "grandfathered": false
1013
- },
1014
- {
1015
- "category": "derived-discovery",
1016
- "description": "discovery.db derived cache (agent discovery).",
1017
- "scope": "derived-cache",
1018
- "freshness": "eventual",
1019
- "conflictShape": "n/a",
1020
- "transport": "none",
1021
- "paths": [
1022
- "state/discovery.db",
1023
- "threadline/discovery.db"
1024
- ],
1025
- "grandfathered": false
1026
- },
1027
- {
1028
- "category": "uncertain-instructions-tracking",
1029
- "description": "state/instructions-tracking/ (59M, 15,180 UUID-keyed JSONL files). Census did not map an owner; volume says it matters. Owner + rotation + class needed (census §4e).",
1030
- "scope": "machine-local",
1031
- "freshness": "eventual",
1032
- "conflictShape": "append-only",
1033
- "transport": "none",
1034
- "paths": [
1035
- "state/instructions-tracking/"
1036
- ],
1037
- "grandfathered": true
1038
- },
1039
- {
1040
- "category": "uncertain-topic-intent-store",
1041
- "description": "TopicIntentStore. Code references it; on-disk location unverified (census §4e).",
1042
- "scope": "derived-cache",
1043
- "freshness": "eventual",
1044
- "conflictShape": "n/a",
1045
- "transport": "none",
1046
- "paths": [
1047
- "state/topic-intent/",
1048
- "state/topic-intent.json"
1049
- ],
1050
- "grandfathered": true
1051
- },
1052
- {
1053
- "category": "uncertain-shared-state-ledger",
1054
- "description": "shared-state.jsonl (SharedStateLedger). Nominally the git-synced cross-machine ledger -- is anything consuming it on real machines? May be the vestigial ancestor of the P1 journal (census §4e).",
1055
- "scope": "must-be-coherent",
1056
- "freshness": "eventual",
1057
- "conflictShape": "append-only",
1058
- "transport": "git",
1059
- "paths": [
1060
- "state/shared-state.jsonl",
1061
- "shared-state.jsonl"
1062
- ],
1063
- "grandfathered": true
1064
- },
1065
- {
1066
- "category": "uncertain-correction-capture-backlog",
1067
- "description": "correction-capture-backlog.db vs correction-ledger.db: two stores, one sentinel -- which is canonical? (census §4e).",
1068
- "scope": "machine-local",
1069
- "freshness": "eventual",
1070
- "conflictShape": "append-only",
1071
- "transport": "none",
1072
- "paths": [
1073
- "state/correction-capture-backlog.db"
1074
- ],
1075
- "grandfathered": true
1076
- },
1077
- {
1078
- "category": "uncertain-project-round-worktrees",
1079
- "description": "ProjectRoundWorktrees / TaskFlow stores. Routes-managed; durable form unverified (census §4e).",
1080
- "scope": "machine-local",
1081
- "freshness": "eventual",
1082
- "conflictShape": "single-writer",
1083
- "transport": "none",
1084
- "paths": [
1085
- "state/project-round-worktrees.json",
1086
- "state/taskflow/"
1087
- ],
1088
- "grandfathered": true
1089
- },
1090
- {
1091
- "category": "legacy-singletons",
1092
- "description": "Stale legacy singletons (anti-patterns.json, quick-facts.json, project-registry.json, May 20 vintage, no live writers found). Retire per census §7.",
1093
- "scope": "machine-local",
1094
- "freshness": "n/a",
1095
- "conflictShape": "single-writer",
1096
- "transport": "none",
1097
- "paths": [
1098
- "state/anti-patterns.json",
1099
- "state/quick-facts.json",
1100
- "state/project-registry.json"
1101
- ],
1102
- "grandfathered": true
1103
- },
1104
- {
1105
- "category": "session-monitor-ctx-notified",
1106
- "description": "Persisted context-exhaustion notify ledger - topicId -> {sessionName, at} already announced as dead, so the once-per-death-episode dedup survives server restarts (update-train churn previously re-announced the same death once per boot; 2026-06-06 residual on topics 16566/19437). Machine-local, single-writer (SessionMonitor), pruned at 7 days on load.",
1107
- "scope": "machine-local",
1108
- "freshness": "live",
1109
- "conflictShape": "single-writer",
1110
- "transport": "none",
1111
- "paths": [
1112
- "state/session-monitor-ctx-notified.json"
1113
- ],
1114
- "grandfathered": false
1115
- },
1116
- {
1117
- "category": "stream-tickets",
1118
- "description": "Pool Dashboard Streaming single-use bearer tickets (POOL-DASHBOARD-STREAM-SPEC §2.3). Minted by the pool-stream-ticket mesh verb, consumed once on the /pool-stream WS upgrade. Persisted so a captured ticket cannot replay across a serving-machine restart (consumed-set survives). Machine-local; single-writer (the store's own funnel); TTL-bounded + GC'd.",
1119
- "scope": "machine-local",
1120
- "freshness": "live",
1121
- "conflictShape": "single-writer",
1122
- "transport": "none",
1123
- "paths": [
1124
- "state/stream-tickets.json"
1125
- ],
1126
- "grandfathered": false
1127
- },
1128
- {
1129
- "category": "guard-posture-snapshot",
1130
- "description": "Boot-time guard posture snapshot written by the GuardPostureTripwire at every server boot; read by GET /guards for diverged-pending-restart derivation (GUARD-POSTURE-ENDPOINT-SPEC §2.2). Machine-local observability, never authority.",
1131
- "scope": "machine-local",
1132
- "freshness": "boot",
1133
- "conflictShape": "single-writer",
1134
- "transport": "none",
1135
- "paths": [
1136
- "state/guard-posture.json"
1137
- ],
1138
- "grandfathered": false
1139
- },
1140
- {
1141
- "category": "guard-posture-peers",
1142
- "description": "Durable last-known guard posture per peer machine with RECEIVER-side receipt time (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)) - survives local restarts so a dark peer's posture renders with its honest age. Written only at the heartbeat-ingestion chokepoint (registry-keyed identity). Machine-local observability, never authority.",
1143
- "scope": "machine-local",
1144
- "freshness": "live",
1145
- "conflictShape": "single-writer",
1146
- "transport": "none",
1147
- "paths": [
1148
- "state/guard-posture-peers.json"
1149
- ],
1150
- "grandfathered": false
1151
- },
1152
- {
1153
- "category": "guard-posture-episodes",
1154
- "description": "GuardPostureProbe episode state - per-anomaly first/last-seen for the persist-across-ticks rule, flap windows, and the open-episode marker that keeps alerts to ONE aggregated Attention item per episode (GUARD-POSTURE-ENDPOINT-SPEC §2.4). Machine-local notice hygiene, never authority.",
1155
- "scope": "machine-local",
1156
- "freshness": "live",
1157
- "conflictShape": "single-writer",
1158
- "transport": "none",
1159
- "paths": [
1160
- "state/guard-posture-episodes.json"
1161
- ],
1162
- "grandfathered": false
1163
- },
1164
- {
1165
- "category": "guard-accepted-fallbacks",
1166
- "description": "Durable, per-machine OWNED operator-accept records for the G3 dark-but-load-bearing classification (g3-dark-but-load-bearing-guards §2.4) - keyed <machineId>:<guardKey> -> {reason, owner, acceptedAt}. Suppresses a load-bearing guard's loadBearingGap into a VISIBLE accepted-risk row. Reserved for a genuine PIN-authenticated operator decision; per-machine (an accept on one machine never silences a peer's gap). Machine-local decision record, never authority over a peer.",
1167
- "scope": "machine-local",
1168
- "freshness": "live",
1169
- "conflictShape": "single-writer",
1170
- "transport": "none",
1171
- "paths": [
1172
- "state/guard-accepted-fallbacks.json"
1173
- ],
1174
- "grandfathered": false,
1175
- "retention": {
1176
- "class": "resolution",
1177
- "boundedByResolution": true,
1178
- "maxOpenItems": 100,
1179
- "note": "Bounded by the curated load-bearing guard set (currently small): one record per <machineId>:<guardKey>. Each record is RESOLVED by graduating the guard or by an operator DELETE-revoke; never grows unbounded."
1180
- }
1181
- },
1182
- {
1183
- "category": "remote-close-audit",
1184
- "description": "Relaying machine's append-only record of every relayed session-close ORDER (REMOTE-SESSION-CLOSE-SPEC §2.3) - target machine, sessionUuid, observed outcome. The owner's reap-log is the authoritative record of the kill; this is the order-end manifest so a relayed kill sweep cannot be traceless on the relayer. Machine-local audit history, never authority.",
1185
- "scope": "machine-local",
1186
- "freshness": "live",
1187
- "conflictShape": "single-writer",
1188
- "transport": "none",
1189
- "paths": [
1190
- "logs/remote-close-audit.jsonl"
1191
- ],
1192
- "grandfathered": false
1193
- },
1194
- {
1195
- "category": "resume-queue",
1196
- "description": "Durable mid-work resume queue + single-writer lockfile + decision audit (reap-notify spec R2.3): entries for autonomously-reaped mid-work sessions awaiting ordered revival, plus the resurrection tombstone ledger. Machine-local BY DESIGN — entries reference local tmux sessions/worktrees; deliberately EXCLUDED from backup/restore and never replicated (a foreign-host lock disables the queue loudly).",
1197
- "scope": "machine-local",
1198
- "freshness": "live",
1199
- "conflictShape": "single-writer",
1200
- "transport": "none",
1201
- "paths": [
1202
- "state/resume-queue.json",
1203
- "state/resume-queue.lock"
1204
- ],
1205
- "grandfathered": false
1206
- },
1207
- {
1208
- "category": "rope-health-monitor",
1209
- "description": "U4.5 RopeHealthMonitor durable debounce/episode memory (u4-5-rope-health-alerts §2) - per peer: condition, all-down onset, episodeKey, lastAlertAt, detected-not-notified flag. Transition-only writes with a short debounce; intra-episode counters lost to a restart are ACCEPTED (a restart re-debounces, never fabricates an episode). Machine-local BY DESIGN (rope health is per-machine-pair and directional); never authority.",
1210
- "scope": "machine-local",
1211
- "freshness": "live",
1212
- "conflictShape": "single-writer",
1213
- "transport": "none",
1214
- "paths": [
1215
- "state/rope-health.json"
1216
- ],
1217
- "grandfathered": false,
1218
- "retention": {
1219
- "class": "bounded-set",
1220
- "maxOpenItems": 100,
1221
- "note": "One record per known peer machine (peers x 1) - bounded by the machine registry size; a peer's record is overwritten in place on every transition, never appended."
1222
- }
1223
- }
1224
- ]
2
+ "$schema-note": "Machine form of docs/specs/STATE-COHERENCE-REGISTRY.md (the approved census, census-date 2026-06-05). AUTHORED, NOT build-generated (committed-generated-manifest conflict-loop lesson, COHERENCE-JOURNAL-SPEC §3.6). One entry per durable state category the census enumerates. Consumed by scripts/lint-state-registry.js: every direct durable-write site targeting a state dir / .instar/ must match an entry's `paths` (or carry an inline `/* state-registry: <category> */` annotation). Fields: category (kebab-case id) | description | scope (machine-local | must-be-coherent | derived-cache | coherent-on-demand) | freshness (real-time | eventual | session-boundary | n/a) | conflictShape (single-writer | append-only | lww | n/a) | transport (git | peer-http | none | deferred) | paths (glob-ish hints) | grandfathered (census marked uncertainty, §4e). New state declares its class here at birth.",
3
+ "version": 1,
4
+ "censusDate": "2026-06-05",
5
+ "sourceDoc": "docs/specs/STATE-COHERENCE-REGISTRY.md",
6
+ "entries": [
7
+ {
8
+ "category": "coherence-journal",
9
+ "description": "Per-machine append-only cross-machine event streams (topic-placement / session-lifecycle / autonomous-run); replicated first-hop over the mesh (COHERENCE-JOURNAL-SPEC P1).",
10
+ "scope": "must-be-coherent",
11
+ "freshness": "eventual",
12
+ "conflictShape": "append-only",
13
+ "transport": "peer-http",
14
+ "paths": [
15
+ "state/coherence-journal/"
16
+ ],
17
+ "grandfathered": false,
18
+ "retention": {
19
+ "class": "R",
20
+ "access": "protocol-reader",
21
+ "boundedBy": "replication-protocol",
22
+ "note": "CARVED OUT — bounded inside CoherenceJournal via KindRetention + the new seq-floor prune guard; never externally rotated"
23
+ }
24
+ },
25
+ {
26
+ "category": "pending-pulls",
27
+ "description": "Durable working-set pending-pull ledger - outstanding fetches whose producer was offline/unreachable/revoked/mid-run; re-fired on reappearance/run-stopped (WORKING-SET-HANDOFF-SPEC P2 §3.4). Machine-local: records describe THIS machine's outstanding fetches; single-writer serialized mutate() funnel.",
28
+ "scope": "machine-local",
29
+ "freshness": "live",
30
+ "conflictShape": "single-writer",
31
+ "transport": "none",
32
+ "paths": [
33
+ "state/coherence-journal/pending-pulls.json"
34
+ ],
35
+ "grandfathered": false
36
+ },
37
+ {
38
+ "category": "pull-opkeys",
39
+ "description": "Durable (topic,epoch) operation-key window for working-set pull dedupe - restart-proof at-most-once scheduling per move (WORKING-SET-HANDOFF-SPEC P2 §3.3). Machine-local, bounded window (200 keys), single-writer (the coordinator).",
40
+ "scope": "machine-local",
41
+ "freshness": "live",
42
+ "conflictShape": "single-writer",
43
+ "transport": "none",
44
+ "paths": [
45
+ "state/coherence-journal/pull-opkeys.json"
46
+ ],
47
+ "grandfathered": false
48
+ },
49
+ {
50
+ "category": "visibility-guard",
51
+ "description": "Peer-visibility guard dedupe state - which improper revocations were already surfaced (keyed on revokedAt, cross-boot) + per-machine disappearance episodes for flap bounding (WORKING-SET-HANDOFF-SPEC P2 §3.6). Machine-local notice hygiene, never authority.",
52
+ "scope": "machine-local",
53
+ "freshness": "live",
54
+ "conflictShape": "single-writer",
55
+ "transport": "none",
56
+ "paths": [
57
+ "state/coherence-journal/visibility-guard.json"
58
+ ],
59
+ "grandfathered": false
60
+ },
61
+ {
62
+ "category": "commitments",
63
+ "description": "CommitmentTracker single-writer CAS store of user-facing promises and follow-through state. P1.5 (COMMITMENTS-COHERENCE-SPEC) fulfills the peer-http transport: owner-routed mutation + first-hop delta replication; the census's earlier 'AO desired' note is resolved-as-won't-do (owner-routing achieves coherence without the append-only conversion).",
64
+ "scope": "must-be-coherent",
65
+ "freshness": "eventual",
66
+ "conflictShape": "single-writer",
67
+ "transport": "peer-http",
68
+ "paths": [
69
+ "state/commitments.json"
70
+ ],
71
+ "grandfathered": false
72
+ },
73
+ {
74
+ "category": "commitment-replicas",
75
+ "description": "Per-peer read-only replicas of other machines' commitment stores (COMMITMENTS-COHERENCE-SPEC P1.5 §3.2). Derived cache - rebuilt by a full re-pull; written ONLY by the commitments-sync receive path; first-hop sender-bound; incarnation-fenced.",
76
+ "scope": "derived-cache",
77
+ "freshness": "eventual",
78
+ "conflictShape": "single-writer",
79
+ "transport": "peer-http",
80
+ "paths": [
81
+ "state/commitment-replicas/"
82
+ ],
83
+ "grandfathered": false
84
+ },
85
+ {
86
+ "category": "commitment-pending-mutations",
87
+ "description": "Durable owner-routed mutation intents awaiting an offline owner (COMMITMENTS-COHERENCE-SPEC P1.5 §3.4). Stores INTENT only - a FRESH signed envelope is re-issued at fire time; single-writer serialized funnel; per-(origin,id) and per-owner enqueue bounds; TTL 7d with one honest expiry notice.",
88
+ "scope": "machine-local",
89
+ "freshness": "live",
90
+ "conflictShape": "single-writer",
91
+ "transport": "none",
92
+ "paths": [
93
+ "state/commitment-replicas/pending-mutations.json"
94
+ ],
95
+ "grandfathered": false
96
+ },
97
+ {
98
+ "category": "commitment-opkeys",
99
+ "description": "Owner-side durable opKey replay window for commitment-mutate (COMMITMENTS-COHERENCE-SPEC P1.5 §3.4) - the replay control beyond the 60s envelope nonce window; records verdicts, survives restarts, TTL >= pending-mutation TTL.",
100
+ "scope": "machine-local",
101
+ "freshness": "live",
102
+ "conflictShape": "single-writer",
103
+ "transport": "none",
104
+ "paths": [
105
+ "state/coherence-journal/commitment-opkeys.json"
106
+ ],
107
+ "grandfathered": false
108
+ },
109
+ {
110
+ "category": "attention-queue",
111
+ "description": "Attention items surfaced to the user, plus the per-source coalescing/suppression ledger.",
112
+ "scope": "must-be-coherent",
113
+ "freshness": "eventual",
114
+ "conflictShape": "single-writer",
115
+ "transport": "peer-http",
116
+ "paths": [
117
+ "state/attention-items.json",
118
+ "state/attention-suppressed.jsonl"
119
+ ],
120
+ "grandfathered": false
121
+ },
122
+ {
123
+ "category": "remote-ack-queue",
124
+ "description": "Operator-bound ack/resolve INTENT for a pooled attention item whose owner machine is briefly offline (WS4.1 follow-up, dark behind multiMachine.seamlessness.ws41DurableAck). Carries the authenticated operator principal; the owner revalidates it at apply time on return/boot. Append-then-compact, idempotent on (itemId,targetMachineId).",
125
+ "scope": "must-be-coherent",
126
+ "freshness": "eventual",
127
+ "conflictShape": "single-writer",
128
+ "transport": "peer-http",
129
+ "paths": [
130
+ "logs/remote-ack-queue.jsonl"
131
+ ],
132
+ "grandfathered": false
133
+ },
134
+ {
135
+ "category": "slack-permission-decisions",
136
+ "description": "Observe-only ledger of Slack org permission-gate decisions (allow/clarify/refuse/step-up) with the verified principal + basis. Append-only; feeds false-positive-rate measurement before any enforcement is enabled. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md.",
137
+ "scope": "machine-local",
138
+ "freshness": "eventual",
139
+ "conflictShape": "append-only",
140
+ "transport": "none",
141
+ "paths": [
142
+ "state/slack-permission-decisions.jsonl"
143
+ ],
144
+ "grandfathered": false
145
+ },
146
+ {
147
+ "category": "slack-pending-registrations",
148
+ "description": "Durable pending Slack self-registration requests awaiting admin approval (SlackUserRegistry). Cleared on approve/deny. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md §6.3.",
149
+ "scope": "machine-local",
150
+ "freshness": "eventual",
151
+ "conflictShape": "single-writer",
152
+ "transport": "none",
153
+ "paths": [
154
+ "state/slack-pending-registrations.json"
155
+ ],
156
+ "grandfathered": false
157
+ },
158
+ {
159
+ "category": "slack-relationship-baselines",
160
+ "description": "Durable per-principal behavioral baseline (Pillar 3 relationship-aware anomaly second factor): privacy-respecting SHAPE aggregates only — action repertoire, tier/hour histograms, coarse message-length stats, urgency rate — NEVER message content. Fed observe-only from authorized Slack traffic; read by RelationshipAnomalyScorer. Ships DARK. See docs/specs/SLACK-ORG-INTEGRATION-SPEC.md §7.1-7.2, §7.6.",
161
+ "scope": "machine-local",
162
+ "freshness": "eventual",
163
+ "conflictShape": "single-writer",
164
+ "transport": "none",
165
+ "paths": [
166
+ "state/slack-relationship-baselines.json"
167
+ ],
168
+ "grandfathered": false
169
+ },
170
+ {
171
+ "category": "topic-placement-history",
172
+ "description": "Topic<->machine placement history (does not exist as its own store yet; the journal's first stream materializes it). Distinct from current-owner pool state.",
173
+ "scope": "must-be-coherent",
174
+ "freshness": "eventual",
175
+ "conflictShape": "append-only",
176
+ "transport": "peer-http",
177
+ "paths": [
178
+ "state/coherence-journal/*.topic-placement.jsonl"
179
+ ],
180
+ "grandfathered": false,
181
+ "retention": {
182
+ "class": "R",
183
+ "access": "protocol-reader",
184
+ "boundedBy": "replication-protocol",
185
+ "note": "CARVED OUT — replication substrate"
186
+ }
187
+ },
188
+ {
189
+ "category": "autonomous-working-artifacts",
190
+ "description": "Autonomous run working files and their declared artifact paths (the EXO stranding). Coherent-on-demand: fetched via working-set pull when a topic moves.",
191
+ "scope": "coherent-on-demand",
192
+ "freshness": "session-boundary",
193
+ "conflictShape": "single-writer",
194
+ "transport": "deferred",
195
+ "paths": [
196
+ ".instar/autonomous/",
197
+ ".instar/autonomous/*.local.md",
198
+ "state/autonomous-emergency-stop",
199
+ "autonomous-emergency-stop"
200
+ ],
201
+ "grandfathered": false
202
+ },
203
+ {
204
+ "category": "threadline-conversation-state",
205
+ "description": "Threadline conversation store plus context-thread-map, thread-resume-map, telegram-bridge-bindings.",
206
+ "scope": "must-be-coherent",
207
+ "freshness": "eventual",
208
+ "conflictShape": "single-writer",
209
+ "transport": "peer-http",
210
+ "paths": [
211
+ "threadline/conversations.json",
212
+ "threadline/context-thread-map.json",
213
+ "threadline/thread-resume-map.json",
214
+ "threadline/telegram-bridge-bindings.json"
215
+ ],
216
+ "grandfathered": false
217
+ },
218
+ {
219
+ "category": "message-store-and-threads",
220
+ "description": "Cross-platform A2A message store, threads, and inbox/outbox JSONL indexes.",
221
+ "scope": "must-be-coherent",
222
+ "freshness": "eventual",
223
+ "conflictShape": "append-only",
224
+ "transport": "peer-http",
225
+ "paths": [
226
+ ".instar/messages/store/",
227
+ ".instar/messages/threads/",
228
+ ".instar/messages/inbox.jsonl",
229
+ ".instar/messages/outbox.jsonl"
230
+ ],
231
+ "grandfathered": false
232
+ },
233
+ {
234
+ "category": "topic-project-bindings",
235
+ "description": "Telegram-topic-to-project bindings.",
236
+ "scope": "must-be-coherent",
237
+ "freshness": "eventual",
238
+ "conflictShape": "lww",
239
+ "transport": "peer-http",
240
+ "paths": [
241
+ "topic-project-bindings.json",
242
+ "state/topic-project-bindings.json"
243
+ ],
244
+ "grandfathered": false
245
+ },
246
+ {
247
+ "category": "relationships",
248
+ "description": "Per-person relationship records (one file per identity).",
249
+ "scope": "must-be-coherent",
250
+ "freshness": "eventual",
251
+ "conflictShape": "lww",
252
+ "transport": "peer-http",
253
+ "paths": [
254
+ "relationships/",
255
+ "relationships/*.json"
256
+ ],
257
+ "grandfathered": false
258
+ },
259
+ {
260
+ "category": "users-registry",
261
+ "description": "Multi-user identity / permissions registry.",
262
+ "scope": "must-be-coherent",
263
+ "freshness": "eventual",
264
+ "conflictShape": "lww",
265
+ "transport": "peer-http",
266
+ "paths": [
267
+ "users.json"
268
+ ],
269
+ "grandfathered": false
270
+ },
271
+ {
272
+ "category": "job-definitions",
273
+ "description": "Declarative job definitions (cron / prompt / supervision). The coherent half of jobs.json plus markdown job specs; run state is machine-local (see job-run-state). Field split required before whole-file sync (census §5).",
274
+ "scope": "must-be-coherent",
275
+ "freshness": "eventual",
276
+ "conflictShape": "lww",
277
+ "transport": "git",
278
+ "paths": [
279
+ "jobs.json",
280
+ ".instar/jobs/",
281
+ ".instar/jobs/*.md"
282
+ ],
283
+ "grandfathered": false
284
+ },
285
+ {
286
+ "category": "soul-identity-documents",
287
+ "description": "Soul / identity narrative documents and self-knowledge facts (soul.md, identity.json, AGENT.md/USER.md/MEMORY.md/CLAUDE.md identity scaffold, self-knowledge facts).",
288
+ "scope": "must-be-coherent",
289
+ "freshness": "session-boundary",
290
+ "conflictShape": "single-writer",
291
+ "transport": "git",
292
+ "paths": [
293
+ "soul.md",
294
+ "soul.init.md",
295
+ "state/soul.init.md",
296
+ "identity.json",
297
+ "AGENT.md",
298
+ "USER.md",
299
+ "MEMORY.md",
300
+ "CLAUDE.md",
301
+ "state/self-knowledge-facts.json"
302
+ ],
303
+ "grandfathered": false
304
+ },
305
+ {
306
+ "category": "projects-registry",
307
+ "description": "Multi-spec project registry + plan docs + digest cache (claim-ownership verb already models owner-machine claim).",
308
+ "scope": "must-be-coherent",
309
+ "freshness": "eventual",
310
+ "conflictShape": "single-writer",
311
+ "transport": "peer-http",
312
+ "paths": [
313
+ ".instar/projects/",
314
+ ".instar/projects/*.md"
315
+ ],
316
+ "grandfathered": false
317
+ },
318
+ {
319
+ "category": "learned-preferences",
320
+ "description": "Learned preferences and correction-loop ledger.",
321
+ "scope": "must-be-coherent",
322
+ "freshness": "eventual",
323
+ "conflictShape": "append-only",
324
+ "transport": "peer-http",
325
+ "paths": [
326
+ ".instar/preferences.json",
327
+ "state/correction-ledger.db"
328
+ ],
329
+ "grandfathered": false
330
+ },
331
+ {
332
+ "category": "secret-vault",
333
+ "description": "Encrypted secret vault. The one category that truly replicates today (cross-machine secret sync, X25519-sealed push, receive-only default).",
334
+ "scope": "must-be-coherent",
335
+ "freshness": "eventual",
336
+ "conflictShape": "single-writer",
337
+ "transport": "peer-http",
338
+ "paths": [
339
+ "config.secrets.enc",
340
+ "state/secrets.enc"
341
+ ],
342
+ "grandfathered": false
343
+ },
344
+ {
345
+ "category": "topic-ownership-current",
346
+ "description": "Current topic ownership (session-pool CAS + lease). The live single-writer source of truth for placement; the journal records its mutations.",
347
+ "scope": "must-be-coherent",
348
+ "freshness": "real-time",
349
+ "conflictShape": "single-writer",
350
+ "transport": "peer-http",
351
+ "paths": [
352
+ ".instar/state/session-pool/",
353
+ "state/session-pool/"
354
+ ],
355
+ "grandfathered": false
356
+ },
357
+ {
358
+ "category": "topic-pin-skew-quarantine",
359
+ "description": "U4.1 sticky durable exclusion set for future-skewed replicated topic-pin records (key+HLC pairs; docs/specs/u4-1-pin-persistence.md §2C). Machine-local BY DESIGN: each fold quarantines what ITS skew gate rejected.",
360
+ "scope": "machine-local",
361
+ "freshness": "eventual",
362
+ "conflictShape": "single-writer",
363
+ "transport": "none",
364
+ "paths": [
365
+ "state/session-pool/topic-pin-skew-quarantine.json"
366
+ ],
367
+ "grandfathered": false,
368
+ "retention": {
369
+ "class": "R",
370
+ "access": "protocol-reader",
371
+ "boundedBy": "domain-cardinality",
372
+ "note": "One entry per poisoned record (rare by construction); entries prune on honest supersession (a newer honest HLC wins) or explicit per-record re-admission — never unbounded growth."
373
+ }
374
+ },
375
+ {
376
+ "category": "conversation-live-tail",
377
+ "description": "Conversation live-tail replicated holder->standby per the seamlessness spec.",
378
+ "scope": "must-be-coherent",
379
+ "freshness": "real-time",
380
+ "conflictShape": "single-writer",
381
+ "transport": "peer-http",
382
+ "paths": [
383
+ "state/live-tail/"
384
+ ],
385
+ "grandfathered": false
386
+ },
387
+ {
388
+ "category": "fleet-config",
389
+ "description": "Fleet-wide config: feature flags, messaging[] config, monitoring tunables, multiMachine policy. SHARES config.json with machine-local fields (port, paths) -- split-required before whole-file sync (census §5).",
390
+ "scope": "must-be-coherent",
391
+ "freshness": "eventual",
392
+ "conflictShape": "lww",
393
+ "transport": "git",
394
+ "paths": [
395
+ "config.json"
396
+ ],
397
+ "grandfathered": false
398
+ },
399
+ {
400
+ "category": "machine-identity-keys",
401
+ "description": "Machine identity + signing/encryption keypairs. Identity IS the machine; never synced by definition.",
402
+ "scope": "machine-local",
403
+ "freshness": "n/a",
404
+ "conflictShape": "single-writer",
405
+ "transport": "none",
406
+ "paths": [
407
+ "machine/identity.json",
408
+ "machine/*.pem",
409
+ "signing-private.pem",
410
+ "encryption-private.pem"
411
+ ],
412
+ "grandfathered": false
413
+ },
414
+ {
415
+ "category": "per-session-state",
416
+ "description": "Per-session state files. Sessions live and die on one machine; pool transfers create NEW sessions (CONTINUATION), not file copies.",
417
+ "scope": "machine-local",
418
+ "freshness": "real-time",
419
+ "conflictShape": "single-writer",
420
+ "transport": "none",
421
+ "paths": [
422
+ "state/sessions/",
423
+ "state/sessions/*.json"
424
+ ],
425
+ "grandfathered": false
426
+ },
427
+ {
428
+ "category": "job-run-state",
429
+ "description": "Job RUN state: executions, active-job, run-history ledger. Runs are machine events (definitions are the coherent half, job-definitions).",
430
+ "scope": "machine-local",
431
+ "freshness": "eventual",
432
+ "conflictShape": "single-writer",
433
+ "transport": "none",
434
+ "paths": [
435
+ "state/jobs/",
436
+ "state/active-job.json",
437
+ "state/job-runs.jsonl"
438
+ ],
439
+ "grandfathered": false
440
+ },
441
+ {
442
+ "category": "quota-state",
443
+ "description": "Per-account-seat per-machine quota state. Broadcast-view ships via capacity heartbeats (quota-aware placement); the file itself is machine-local.",
444
+ "scope": "machine-local",
445
+ "freshness": "real-time",
446
+ "conflictShape": "single-writer",
447
+ "transport": "none",
448
+ "paths": [
449
+ "quota-state.json",
450
+ "state/quota-state.json"
451
+ ],
452
+ "grandfathered": false
453
+ },
454
+ {
455
+ "category": "resource-samples",
456
+ "description": "ResourceLedger CPU/RSS samples. Physical per-machine telemetry.",
457
+ "scope": "machine-local",
458
+ "freshness": "real-time",
459
+ "conflictShape": "append-only",
460
+ "transport": "none",
461
+ "paths": [
462
+ "state/resource-ledger.db",
463
+ "state/resources.db"
464
+ ],
465
+ "grandfathered": false,
466
+ "retention": {
467
+ "class": "sqlite",
468
+ "access": "sqlite",
469
+ "maxAgeMs": 2592000000
470
+ }
471
+ },
472
+ {
473
+ "category": "lease-coordination-state",
474
+ "description": "Lease / coordination state and registry liveness. The lease IS the cross-machine protocol; its state is the protocol's own.",
475
+ "scope": "machine-local",
476
+ "freshness": "real-time",
477
+ "conflictShape": "single-writer",
478
+ "transport": "none",
479
+ "paths": [
480
+ "state/lease-local.json",
481
+ "state/registry-liveness.json"
482
+ ],
483
+ "grandfathered": false
484
+ },
485
+ {
486
+ "category": "nonce-sequence-watermarks",
487
+ "description": "NonceStore replay-protection watermarks. Per-channel per-machine by design.",
488
+ "scope": "machine-local",
489
+ "freshness": "real-time",
490
+ "conflictShape": "single-writer",
491
+ "transport": "none",
492
+ "paths": [
493
+ "state/nonce-store.json",
494
+ "state/nonces/"
495
+ ],
496
+ "grandfathered": false
497
+ },
498
+ {
499
+ "category": "relay-delivery-queues",
500
+ "description": "Pending-relay and message-ledger SQLite queues. Outbound queue drains on the machine that owns the channel seat.",
501
+ "scope": "machine-local",
502
+ "freshness": "real-time",
503
+ "conflictShape": "single-writer",
504
+ "transport": "none",
505
+ "paths": [
506
+ ".instar/state/pending-relay.*.sqlite",
507
+ "state/message-ledger.db"
508
+ ],
509
+ "grandfathered": false
510
+ },
511
+ {
512
+ "category": "messaging-adapter-state",
513
+ "description": "Telegram/iMessage/WhatsApp/Slack adapter state: poll offsets, chat.db, consent.json. Channel seat is held by one machine (lifeline); failover = seat transfer, not state merge.",
514
+ "scope": "machine-local",
515
+ "freshness": "real-time",
516
+ "conflictShape": "single-writer",
517
+ "transport": "none",
518
+ "paths": [
519
+ "state/telegram-offset.json",
520
+ "state/consent.json",
521
+ "state/adapter-state/"
522
+ ],
523
+ "grandfathered": false
524
+ },
525
+ {
526
+ "category": "platform-attachment-caches",
527
+ "description": "Telegram/document attachment caches. Fetchable from the platform on demand.",
528
+ "scope": "machine-local",
529
+ "freshness": "n/a",
530
+ "conflictShape": "single-writer",
531
+ "transport": "none",
532
+ "paths": [
533
+ "telegram-images/",
534
+ "documents/"
535
+ ],
536
+ "grandfathered": false
537
+ },
538
+ {
539
+ "category": "listener-daemon-internals",
540
+ "description": "Listener-daemon IPC internals: inbox/outbox.jsonl.active, pid, sentinels, hmac key. Daemon-local.",
541
+ "scope": "machine-local",
542
+ "freshness": "real-time",
543
+ "conflictShape": "append-only",
544
+ "transport": "none",
545
+ "paths": [
546
+ "state/listener/",
547
+ "state/listener/inbox.jsonl.active",
548
+ "state/listener/outbox.jsonl.active"
549
+ ],
550
+ "grandfathered": false
551
+ },
552
+ {
553
+ "category": "threadline-transport-internals",
554
+ "description": "Threadline transport internals: relay-tokens, mcp-tokens, rate-limits. Connection-scoped; identity-keys are local-secret like machine keys.",
555
+ "scope": "machine-local",
556
+ "freshness": "real-time",
557
+ "conflictShape": "single-writer",
558
+ "transport": "none",
559
+ "paths": [
560
+ "threadline/relay-tokens.json",
561
+ "threadline/mcp-tokens.json",
562
+ "threadline/rate-limits.json"
563
+ ],
564
+ "grandfathered": false
565
+ },
566
+ {
567
+ "category": "threadline-trust-profiles",
568
+ "description": "Per-peer agent trust profiles (AgentTrustManager) + audit trail. Now CREDENTIAL-GATING (Secure A2A Verified Pairing §3.8): the profile carries the pairing lifecycle state (pending-verification / mutual-verified / verification-failed / identity-verified) that the credential-share gate keys on. MACHINE-LOCAL: the SAS-bound pending state + the machine-local handshake's identity decision live here; the SAS words themselves are in a separate 0600 store (pairing-pending.json, never in the registry). The VERIFIED-IDENTITY RESULT alone replicates via the threadline-pairing stateSync transport (see threadline-pairing-result) — this file is never whole-file-synced.",
569
+ "scope": "machine-local",
570
+ "freshness": "real-time",
571
+ "conflictShape": "single-writer",
572
+ "transport": "none",
573
+ "paths": [
574
+ "threadline/trust-profiles.json",
575
+ "threadline/trust-audit.jsonl",
576
+ "threadline/pairing-pending.json"
577
+ ],
578
+ "grandfathered": false
579
+ },
580
+ {
581
+ "category": "threadline-pairing-result",
582
+ "description": "The replicated verified-IDENTITY RESULT of a Secure A2A pairing (Secure A2A Verified Pairing §3.8 / FD11). Replicates ONLY { peerFp, peerIdentityPub, state:'mutual-verified', verifiedAt, verifiedOnMachine } across the agent's OWN machines via the HLC replicated-store foundation (kind 'threadline-pairing-record') — NEVER the SAS words, shared secret, or relay token (those stay machine-local, bound to the machine-local handshake's ephemeral secret). Machine B honors a replicated record ONLY by pinning peerIdentityPub; a revoke/verification-failed propagates as a tombstone. Ships DARK behind multiMachine.stateSync.threadlinePairing (enabled:false, dryRun:true). Rides the coherence-journal stream files (no dedicated path).",
583
+ "scope": "must-be-coherent",
584
+ "freshness": "eventual",
585
+ "conflictShape": "lww",
586
+ "transport": "peer-http",
587
+ "paths": [
588
+ "state/coherence-journal/"
589
+ ],
590
+ "grandfathered": false
591
+ },
592
+ {
593
+ "category": "process-restart-coordination",
594
+ "description": "Process/restart coordination: boot-id, restart markers, auto-updater state, caffeinate pid, slept-marker. Per-process lifecycle.",
595
+ "scope": "machine-local",
596
+ "freshness": "real-time",
597
+ "conflictShape": "single-writer",
598
+ "transport": "none",
599
+ "paths": [
600
+ "state/boot-id",
601
+ "state/auto-updater.json",
602
+ "state/slept-marker.json",
603
+ "state/lifeline-restart-requested.json"
604
+ ],
605
+ "grandfathered": false
606
+ },
607
+ {
608
+ "category": "ephemeral-caches",
609
+ "description": "Per-boot/ephemeral caches: paste/, stop-gate.db, feature-registry.db, capability manifest. Recomputed or per-machine detection.",
610
+ "scope": "machine-local",
611
+ "freshness": "n/a",
612
+ "conflictShape": "single-writer",
613
+ "transport": "none",
614
+ "paths": [
615
+ "state/paste/",
616
+ "state/stop-gate.db",
617
+ "state/feature-registry.db"
618
+ ],
619
+ "grandfathered": false
620
+ },
621
+ {
622
+ "category": "trust-elevation-incidents",
623
+ "description": "External-op trust elevation / incident state. Debatable whether trust transfers across machines -- flagged for P3+ review rather than silently local.",
624
+ "scope": "machine-local",
625
+ "freshness": "eventual",
626
+ "conflictShape": "single-writer",
627
+ "transport": "none",
628
+ "paths": [
629
+ "state/trust-levels.json",
630
+ "state/trust-incidents.json",
631
+ "state/trust-*.json"
632
+ ],
633
+ "grandfathered": true
634
+ },
635
+ {
636
+ "category": "audit-destructive-ops",
637
+ "description": "Destructive-ops audit stream (411M live -- needs rotation, census §7). Append-only per-machine.",
638
+ "scope": "machine-local",
639
+ "freshness": "n/a",
640
+ "conflictShape": "append-only",
641
+ "transport": "none",
642
+ "paths": [
643
+ "state/destructive-ops.jsonl",
644
+ "logs/destructive-ops.jsonl"
645
+ ],
646
+ "grandfathered": false,
647
+ "retention": {
648
+ "class": "C",
649
+ "access": "streamed",
650
+ "complianceHold": true,
651
+ "keepSegments": 0,
652
+ "note": "forensic trail — archive, never drop-delete (replaces SafeGitExecutor.maybeRotateAuditLog drop-rotate)"
653
+ }
654
+ },
655
+ {
656
+ "category": "audit-job-runs",
657
+ "description": "Job-runs audit stream. Append-only per-machine.",
658
+ "scope": "machine-local",
659
+ "freshness": "n/a",
660
+ "conflictShape": "append-only",
661
+ "transport": "none",
662
+ "paths": [
663
+ "state/job-runs.jsonl",
664
+ "logs/job-runs.jsonl"
665
+ ],
666
+ "grandfathered": false,
667
+ "retention": {
668
+ "class": "A",
669
+ "access": "streamed",
670
+ "maxBytes": 33554432,
671
+ "keepSegments": 4
672
+ }
673
+ },
674
+ {
675
+ "category": "audit-reaper",
676
+ "description": "Reaper decision audit stream (keep/kill transitions stamped with pressure tier).",
677
+ "scope": "machine-local",
678
+ "freshness": "n/a",
679
+ "conflictShape": "append-only",
680
+ "transport": "none",
681
+ "paths": [
682
+ "logs/reaper-audit.jsonl"
683
+ ],
684
+ "grandfathered": false
685
+ },
686
+ {
687
+ "category": "audit-reap-log",
688
+ "description": "Reap-log: why a session vanished (one JSON line per shutoff/refused-shutoff).",
689
+ "scope": "machine-local",
690
+ "freshness": "n/a",
691
+ "conflictShape": "append-only",
692
+ "transport": "none",
693
+ "paths": [
694
+ "logs/reap-log.jsonl"
695
+ ],
696
+ "grandfathered": false
697
+ },
698
+ {
699
+ "category": "audit-sentinel-events",
700
+ "description": "Sentinel-events audit stream (silently-stopped family transitions).",
701
+ "scope": "machine-local",
702
+ "freshness": "n/a",
703
+ "conflictShape": "append-only",
704
+ "transport": "none",
705
+ "paths": [
706
+ "logs/sentinel-events.jsonl"
707
+ ],
708
+ "grandfathered": false
709
+ },
710
+ {
711
+ "category": "audit-security",
712
+ "description": "Security audit stream (auth/security events).",
713
+ "scope": "machine-local",
714
+ "freshness": "n/a",
715
+ "conflictShape": "append-only",
716
+ "transport": "none",
717
+ "paths": [
718
+ "security.jsonl",
719
+ "state/security.jsonl",
720
+ "logs/security.jsonl"
721
+ ],
722
+ "grandfathered": false,
723
+ "retention": {
724
+ "class": "C",
725
+ "access": "streamed",
726
+ "complianceHold": true,
727
+ "keepSegments": 0,
728
+ "note": "forensic trail — archive, never drop-delete (replaces SecurityLog maybeRotateJsonl keep-ratio trim)"
729
+ }
730
+ },
731
+ {
732
+ "category": "audit-decision-journal",
733
+ "description": "Decision-journal audit stream.",
734
+ "scope": "machine-local",
735
+ "freshness": "n/a",
736
+ "conflictShape": "append-only",
737
+ "transport": "none",
738
+ "paths": [
739
+ "logs/decision-journal.jsonl",
740
+ "state/decision-journal.jsonl"
741
+ ],
742
+ "grandfathered": false
743
+ },
744
+ {
745
+ "category": "audit-activity",
746
+ "description": "Activity audit streams (date-partitioned, ~37M).",
747
+ "scope": "machine-local",
748
+ "freshness": "n/a",
749
+ "conflictShape": "append-only",
750
+ "transport": "none",
751
+ "paths": [
752
+ "logs/activity-*.jsonl",
753
+ "state/activity/"
754
+ ],
755
+ "grandfathered": false
756
+ },
757
+ {
758
+ "category": "audit-watchdog-interventions",
759
+ "description": "Watchdog-interventions audit stream.",
760
+ "scope": "machine-local",
761
+ "freshness": "n/a",
762
+ "conflictShape": "append-only",
763
+ "transport": "none",
764
+ "paths": [
765
+ "logs/watchdog-interventions.jsonl"
766
+ ],
767
+ "grandfathered": false
768
+ },
769
+ {
770
+ "category": "audit-operation-log",
771
+ "description": "External-operation gate operation-log audit stream.",
772
+ "scope": "machine-local",
773
+ "freshness": "n/a",
774
+ "conflictShape": "append-only",
775
+ "transport": "none",
776
+ "paths": [
777
+ "logs/operation-log.jsonl",
778
+ "state/operation-log.jsonl"
779
+ ],
780
+ "grandfathered": false
781
+ },
782
+ {
783
+ "category": "audit-trust-chain",
784
+ "description": "Hash-chained trust-audit / mandate-decision chain.",
785
+ "scope": "machine-local",
786
+ "freshness": "n/a",
787
+ "conflictShape": "append-only",
788
+ "transport": "none",
789
+ "paths": [
790
+ "logs/trust-audit-chain.jsonl",
791
+ "state/trust-audit-chain.jsonl",
792
+ "threadline/trust-audit.jsonl"
793
+ ],
794
+ "grandfathered": false
795
+ },
796
+ {
797
+ "category": "audit-telegram-messages",
798
+ "description": "Telegram message history JSONL (5.2M).",
799
+ "scope": "machine-local",
800
+ "freshness": "n/a",
801
+ "conflictShape": "append-only",
802
+ "transport": "none",
803
+ "paths": [
804
+ "state/telegram-messages.jsonl",
805
+ "logs/telegram-messages.jsonl"
806
+ ],
807
+ "grandfathered": false,
808
+ "retention": {
809
+ "class": "A",
810
+ "access": "streamed",
811
+ "maxBytes": 33554432,
812
+ "keepSegments": 4
813
+ }
814
+ },
815
+ {
816
+ "category": "audit-a2a-messages",
817
+ "description": "Agent-to-agent sent/received audit streams.",
818
+ "scope": "machine-local",
819
+ "freshness": "n/a",
820
+ "conflictShape": "append-only",
821
+ "transport": "none",
822
+ "paths": [
823
+ ".instar/messages/a2a-sent.jsonl",
824
+ ".instar/messages/a2a-received.jsonl"
825
+ ],
826
+ "grandfathered": false
827
+ },
828
+ {
829
+ "category": "audit-prompt-gate",
830
+ "description": "Prompt-gate audit stream.",
831
+ "scope": "machine-local",
832
+ "freshness": "n/a",
833
+ "conflictShape": "append-only",
834
+ "transport": "none",
835
+ "paths": [
836
+ "logs/prompt-gate-audit.jsonl",
837
+ "state/prompt-gate-audit.jsonl"
838
+ ],
839
+ "grandfathered": false
840
+ },
841
+ {
842
+ "category": "audit-recovery-events",
843
+ "description": "Recovery-events audit stream (compaction/recovery lifecycle).",
844
+ "scope": "machine-local",
845
+ "freshness": "n/a",
846
+ "conflictShape": "append-only",
847
+ "transport": "none",
848
+ "paths": [
849
+ "logs/recovery-events.jsonl",
850
+ "state/recovery-events.jsonl"
851
+ ],
852
+ "grandfathered": false
853
+ },
854
+ {
855
+ "category": "audit-skill-telemetry",
856
+ "description": "Skill-telemetry audit stream.",
857
+ "scope": "machine-local",
858
+ "freshness": "n/a",
859
+ "conflictShape": "append-only",
860
+ "transport": "none",
861
+ "paths": [
862
+ "logs/skill-telemetry.jsonl",
863
+ "state/skill-telemetry.jsonl"
864
+ ],
865
+ "grandfathered": false
866
+ },
867
+ {
868
+ "category": "audit-feedback",
869
+ "description": "Feedback audit stream (Rising Tide feedback loop).",
870
+ "scope": "machine-local",
871
+ "freshness": "n/a",
872
+ "conflictShape": "append-only",
873
+ "transport": "none",
874
+ "paths": [
875
+ "state/feedback.jsonl",
876
+ "logs/feedback.jsonl"
877
+ ],
878
+ "grandfathered": false,
879
+ "retention": {
880
+ "class": "A",
881
+ "access": "streamed",
882
+ "maxBytes": 33554432,
883
+ "keepSegments": 4
884
+ }
885
+ },
886
+ {
887
+ "category": "audit-apprenticeship-decisions",
888
+ "description": "Apprenticeship lifecycle gate decisions audit stream.",
889
+ "scope": "machine-local",
890
+ "freshness": "n/a",
891
+ "conflictShape": "append-only",
892
+ "transport": "none",
893
+ "paths": [
894
+ "logs/apprenticeship-decisions.jsonl",
895
+ "state/apprenticeship-decisions.jsonl"
896
+ ],
897
+ "grandfathered": false
898
+ },
899
+ {
900
+ "category": "derived-token-ledger",
901
+ "description": "Token ledger SQLite, rebuilt from Claude Code JSONL transcripts.",
902
+ "scope": "derived-cache",
903
+ "freshness": "eventual",
904
+ "conflictShape": "n/a",
905
+ "transport": "none",
906
+ "paths": [
907
+ "state/token-ledger.db",
908
+ "state/tokens.db"
909
+ ],
910
+ "grandfathered": false,
911
+ "retention": {
912
+ "class": "sqlite",
913
+ "access": "sqlite",
914
+ "maxAgeMs": 2592000000,
915
+ "note": "incremental-vacuum + batched delete off-thread (Increment 2)"
916
+ }
917
+ },
918
+ {
919
+ "category": "derived-semantic-memory",
920
+ "description": "semantic.db / memory.db / episodes -- rebuildable from evidence. (Live-disk: stale since Jun 1 -- investigate separately, census §1.6/§7.)",
921
+ "scope": "derived-cache",
922
+ "freshness": "eventual",
923
+ "conflictShape": "n/a",
924
+ "transport": "none",
925
+ "paths": [
926
+ "state/semantic.db",
927
+ "state/memory.db",
928
+ "state/episodes.db",
929
+ "state/episodes/",
930
+ "memory/semantic.jsonl"
931
+ ],
932
+ "grandfathered": false,
933
+ "retention": {
934
+ "class": "sqlite",
935
+ "access": "sqlite",
936
+ "maxAgeMs": 7776000000,
937
+ "note": "mixed .db + memory/semantic.jsonl; jsonl arm is A-class streamed in retrofit"
938
+ }
939
+ },
940
+ {
941
+ "category": "derived-topic-memory",
942
+ "description": "topic-memory.db (16M, active). Master spec open Q2: promote to COHERENT? -- left derived-cache until P3 review (census honesty).",
943
+ "scope": "derived-cache",
944
+ "freshness": "eventual",
945
+ "conflictShape": "n/a",
946
+ "transport": "none",
947
+ "paths": [
948
+ "state/topic-memory.db"
949
+ ],
950
+ "grandfathered": true
951
+ },
952
+ {
953
+ "category": "derived-project-map",
954
+ "description": "Project-map spatial-awareness scan (refreshable).",
955
+ "scope": "derived-cache",
956
+ "freshness": "eventual",
957
+ "conflictShape": "n/a",
958
+ "transport": "none",
959
+ "paths": [
960
+ "state/project-map.json"
961
+ ],
962
+ "grandfathered": false
963
+ },
964
+ {
965
+ "category": "derived-projects-digest",
966
+ "description": "Projects-digest cache.",
967
+ "scope": "derived-cache",
968
+ "freshness": "eventual",
969
+ "conflictShape": "n/a",
970
+ "transport": "none",
971
+ "paths": [
972
+ "state/projects-digest.cache",
973
+ ".instar/projects/.digest.cache"
974
+ ],
975
+ "grandfathered": false
976
+ },
977
+ {
978
+ "category": "derived-docs-code-sync",
979
+ "description": "docs-code-sync.json derived index.",
980
+ "scope": "derived-cache",
981
+ "freshness": "eventual",
982
+ "conflictShape": "n/a",
983
+ "transport": "none",
984
+ "paths": [
985
+ "state/docs-code-sync.json"
986
+ ],
987
+ "grandfathered": false
988
+ },
989
+ {
990
+ "category": "derived-memory-index",
991
+ "description": "MemoryIndex derived index over memory artifacts.",
992
+ "scope": "derived-cache",
993
+ "freshness": "eventual",
994
+ "conflictShape": "n/a",
995
+ "transport": "none",
996
+ "paths": [
997
+ "state/memory-index.json",
998
+ "memory/index.json"
999
+ ],
1000
+ "grandfathered": false
1001
+ },
1002
+ {
1003
+ "category": "derived-framework-model-preferences",
1004
+ "description": "framework-model-preferences.db derived cache.",
1005
+ "scope": "derived-cache",
1006
+ "freshness": "eventual",
1007
+ "conflictShape": "n/a",
1008
+ "transport": "none",
1009
+ "paths": [
1010
+ "state/framework-model-preferences.db"
1011
+ ],
1012
+ "grandfathered": false
1013
+ },
1014
+ {
1015
+ "category": "derived-discovery",
1016
+ "description": "discovery.db derived cache (agent discovery).",
1017
+ "scope": "derived-cache",
1018
+ "freshness": "eventual",
1019
+ "conflictShape": "n/a",
1020
+ "transport": "none",
1021
+ "paths": [
1022
+ "state/discovery.db",
1023
+ "threadline/discovery.db"
1024
+ ],
1025
+ "grandfathered": false
1026
+ },
1027
+ {
1028
+ "category": "uncertain-instructions-tracking",
1029
+ "description": "state/instructions-tracking/ (59M, 15,180 UUID-keyed JSONL files). Census did not map an owner; volume says it matters. Owner + rotation + class needed (census §4e).",
1030
+ "scope": "machine-local",
1031
+ "freshness": "eventual",
1032
+ "conflictShape": "append-only",
1033
+ "transport": "none",
1034
+ "paths": [
1035
+ "state/instructions-tracking/"
1036
+ ],
1037
+ "grandfathered": true
1038
+ },
1039
+ {
1040
+ "category": "uncertain-topic-intent-store",
1041
+ "description": "TopicIntentStore. Code references it; on-disk location unverified (census §4e).",
1042
+ "scope": "derived-cache",
1043
+ "freshness": "eventual",
1044
+ "conflictShape": "n/a",
1045
+ "transport": "none",
1046
+ "paths": [
1047
+ "state/topic-intent/",
1048
+ "state/topic-intent.json"
1049
+ ],
1050
+ "grandfathered": true
1051
+ },
1052
+ {
1053
+ "category": "uncertain-shared-state-ledger",
1054
+ "description": "shared-state.jsonl (SharedStateLedger). Nominally the git-synced cross-machine ledger -- is anything consuming it on real machines? May be the vestigial ancestor of the P1 journal (census §4e).",
1055
+ "scope": "must-be-coherent",
1056
+ "freshness": "eventual",
1057
+ "conflictShape": "append-only",
1058
+ "transport": "git",
1059
+ "paths": [
1060
+ "state/shared-state.jsonl",
1061
+ "shared-state.jsonl"
1062
+ ],
1063
+ "grandfathered": true
1064
+ },
1065
+ {
1066
+ "category": "uncertain-correction-capture-backlog",
1067
+ "description": "correction-capture-backlog.db vs correction-ledger.db: two stores, one sentinel -- which is canonical? (census §4e).",
1068
+ "scope": "machine-local",
1069
+ "freshness": "eventual",
1070
+ "conflictShape": "append-only",
1071
+ "transport": "none",
1072
+ "paths": [
1073
+ "state/correction-capture-backlog.db"
1074
+ ],
1075
+ "grandfathered": true
1076
+ },
1077
+ {
1078
+ "category": "uncertain-project-round-worktrees",
1079
+ "description": "ProjectRoundWorktrees / TaskFlow stores. Routes-managed; durable form unverified (census §4e).",
1080
+ "scope": "machine-local",
1081
+ "freshness": "eventual",
1082
+ "conflictShape": "single-writer",
1083
+ "transport": "none",
1084
+ "paths": [
1085
+ "state/project-round-worktrees.json",
1086
+ "state/taskflow/"
1087
+ ],
1088
+ "grandfathered": true
1089
+ },
1090
+ {
1091
+ "category": "legacy-singletons",
1092
+ "description": "Stale legacy singletons (anti-patterns.json, quick-facts.json, project-registry.json, May 20 vintage, no live writers found). Retire per census §7.",
1093
+ "scope": "machine-local",
1094
+ "freshness": "n/a",
1095
+ "conflictShape": "single-writer",
1096
+ "transport": "none",
1097
+ "paths": [
1098
+ "state/anti-patterns.json",
1099
+ "state/quick-facts.json",
1100
+ "state/project-registry.json"
1101
+ ],
1102
+ "grandfathered": true
1103
+ },
1104
+ {
1105
+ "category": "session-monitor-ctx-notified",
1106
+ "description": "Persisted context-exhaustion notify ledger - topicId -> {sessionName, at} already announced as dead, so the once-per-death-episode dedup survives server restarts (update-train churn previously re-announced the same death once per boot; 2026-06-06 residual on topics 16566/19437). Machine-local, single-writer (SessionMonitor), pruned at 7 days on load.",
1107
+ "scope": "machine-local",
1108
+ "freshness": "live",
1109
+ "conflictShape": "single-writer",
1110
+ "transport": "none",
1111
+ "paths": [
1112
+ "state/session-monitor-ctx-notified.json"
1113
+ ],
1114
+ "grandfathered": false
1115
+ },
1116
+ {
1117
+ "category": "stream-tickets",
1118
+ "description": "Pool Dashboard Streaming single-use bearer tickets (POOL-DASHBOARD-STREAM-SPEC §2.3). Minted by the pool-stream-ticket mesh verb, consumed once on the /pool-stream WS upgrade. Persisted so a captured ticket cannot replay across a serving-machine restart (consumed-set survives). Machine-local; single-writer (the store's own funnel); TTL-bounded + GC'd.",
1119
+ "scope": "machine-local",
1120
+ "freshness": "live",
1121
+ "conflictShape": "single-writer",
1122
+ "transport": "none",
1123
+ "paths": [
1124
+ "state/stream-tickets.json"
1125
+ ],
1126
+ "grandfathered": false
1127
+ },
1128
+ {
1129
+ "category": "guard-posture-snapshot",
1130
+ "description": "Boot-time guard posture snapshot written by the GuardPostureTripwire at every server boot; read by GET /guards for diverged-pending-restart derivation (GUARD-POSTURE-ENDPOINT-SPEC §2.2). Machine-local observability, never authority.",
1131
+ "scope": "machine-local",
1132
+ "freshness": "boot",
1133
+ "conflictShape": "single-writer",
1134
+ "transport": "none",
1135
+ "paths": [
1136
+ "state/guard-posture.json"
1137
+ ],
1138
+ "grandfathered": false
1139
+ },
1140
+ {
1141
+ "category": "guard-posture-peers",
1142
+ "description": "Durable last-known guard posture per peer machine with RECEIVER-side receipt time (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)) - survives local restarts so a dark peer's posture renders with its honest age. Written only at the heartbeat-ingestion chokepoint (registry-keyed identity). Machine-local observability, never authority.",
1143
+ "scope": "machine-local",
1144
+ "freshness": "live",
1145
+ "conflictShape": "single-writer",
1146
+ "transport": "none",
1147
+ "paths": [
1148
+ "state/guard-posture-peers.json"
1149
+ ],
1150
+ "grandfathered": false
1151
+ },
1152
+ {
1153
+ "category": "guard-posture-episodes",
1154
+ "description": "GuardPostureProbe episode state - per-anomaly first/last-seen for the persist-across-ticks rule, flap windows, and the open-episode marker that keeps alerts to ONE aggregated Attention item per episode (GUARD-POSTURE-ENDPOINT-SPEC §2.4). Machine-local notice hygiene, never authority.",
1155
+ "scope": "machine-local",
1156
+ "freshness": "live",
1157
+ "conflictShape": "single-writer",
1158
+ "transport": "none",
1159
+ "paths": [
1160
+ "state/guard-posture-episodes.json"
1161
+ ],
1162
+ "grandfathered": false
1163
+ },
1164
+ {
1165
+ "category": "guard-accepted-fallbacks",
1166
+ "description": "Durable, per-machine OWNED operator-accept records for the G3 dark-but-load-bearing classification (g3-dark-but-load-bearing-guards §2.4) - keyed <machineId>:<guardKey> -> {reason, owner, acceptedAt}. Suppresses a load-bearing guard's loadBearingGap into a VISIBLE accepted-risk row. Reserved for a genuine PIN-authenticated operator decision; per-machine (an accept on one machine never silences a peer's gap). Machine-local decision record, never authority over a peer.",
1167
+ "scope": "machine-local",
1168
+ "freshness": "live",
1169
+ "conflictShape": "single-writer",
1170
+ "transport": "none",
1171
+ "paths": [
1172
+ "state/guard-accepted-fallbacks.json"
1173
+ ],
1174
+ "grandfathered": false,
1175
+ "retention": {
1176
+ "class": "resolution",
1177
+ "boundedByResolution": true,
1178
+ "maxOpenItems": 100,
1179
+ "note": "Bounded by the curated load-bearing guard set (currently small): one record per <machineId>:<guardKey>. Each record is RESOLVED by graduating the guard or by an operator DELETE-revoke; never grows unbounded."
1180
+ }
1181
+ },
1182
+ {
1183
+ "category": "remote-close-audit",
1184
+ "description": "Relaying machine's append-only record of every relayed session-close ORDER (REMOTE-SESSION-CLOSE-SPEC §2.3) - target machine, sessionUuid, observed outcome. The owner's reap-log is the authoritative record of the kill; this is the order-end manifest so a relayed kill sweep cannot be traceless on the relayer. Machine-local audit history, never authority.",
1185
+ "scope": "machine-local",
1186
+ "freshness": "live",
1187
+ "conflictShape": "single-writer",
1188
+ "transport": "none",
1189
+ "paths": [
1190
+ "logs/remote-close-audit.jsonl"
1191
+ ],
1192
+ "grandfathered": false
1193
+ },
1194
+ {
1195
+ "category": "resume-queue",
1196
+ "description": "Durable mid-work resume queue + single-writer lockfile + decision audit (reap-notify spec R2.3): entries for autonomously-reaped mid-work sessions awaiting ordered revival, plus the resurrection tombstone ledger. Machine-local BY DESIGN — entries reference local tmux sessions/worktrees; deliberately EXCLUDED from backup/restore and never replicated (a foreign-host lock disables the queue loudly).",
1197
+ "scope": "machine-local",
1198
+ "freshness": "live",
1199
+ "conflictShape": "single-writer",
1200
+ "transport": "none",
1201
+ "paths": [
1202
+ "state/resume-queue.json",
1203
+ "state/resume-queue.lock"
1204
+ ],
1205
+ "grandfathered": false
1206
+ },
1207
+ {
1208
+ "category": "rope-health-monitor",
1209
+ "description": "U4.5 RopeHealthMonitor durable debounce/episode memory (u4-5-rope-health-alerts §2) - per peer: condition, all-down onset, episodeKey, lastAlertAt, detected-not-notified flag. Transition-only writes with a short debounce; intra-episode counters lost to a restart are ACCEPTED (a restart re-debounces, never fabricates an episode). Machine-local BY DESIGN (rope health is per-machine-pair and directional); never authority.",
1210
+ "scope": "machine-local",
1211
+ "freshness": "live",
1212
+ "conflictShape": "single-writer",
1213
+ "transport": "none",
1214
+ "paths": [
1215
+ "state/rope-health.json"
1216
+ ],
1217
+ "grandfathered": false,
1218
+ "retention": {
1219
+ "class": "bounded-set",
1220
+ "maxOpenItems": 100,
1221
+ "note": "One record per known peer machine (peers x 1) - bounded by the machine registry size; a peer's record is overwritten in place on every transition, never appended."
1222
+ }
1223
+ },
1224
+ {
1225
+ "category": "provider-cost-reports",
1226
+ "description": "routing-control-room-spend Layer 1c: immutable append-only provider-reported cost/usage records (provider_cost_report) + reconciliation records (recon_record), joined on meteredCallId. REPORTING-only — structurally excluded from the money gate (FD-21).",
1227
+ "scope": "machine-local",
1228
+ "freshness": "eventual",
1229
+ "conflictShape": "append-only",
1230
+ "transport": "none",
1231
+ "paths": [
1232
+ "state/server-data/provider-cost-reports.db"
1233
+ ],
1234
+ "grandfathered": false,
1235
+ "retention": {
1236
+ "class": "sqlite",
1237
+ "access": "sqlite",
1238
+ "maxAgeMs": 34560000000,
1239
+ "note": "400d (routingSpend.providerReportRetentionDays) — NOT re-derivable, volume bounded by metered calls only; batched-delete prune (scal-F4) at boot + daily"
1240
+ }
1241
+ }
1242
+ ]
1225
1243
  }