@fundamental-engine/core 0.9.4 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/engine/field.d.ts.map +1 -1
  2. package/dist/engine/field.js +10 -0
  3. package/dist/engine/field.js.map +1 -1
  4. package/dist/engine/types.d.ts +29 -0
  5. package/dist/engine/types.d.ts.map +1 -1
  6. package/dist/inspect/report.js +2 -2
  7. package/dist/inspect/report.js.map +1 -1
  8. package/dist/recipes/catalog.d.ts +14 -9
  9. package/dist/recipes/catalog.d.ts.map +1 -1
  10. package/dist/recipes/catalog.js +9 -5
  11. package/dist/recipes/catalog.js.map +1 -1
  12. package/dist/recipes/compile.d.ts +26 -16
  13. package/dist/recipes/compile.d.ts.map +1 -1
  14. package/dist/recipes/compile.js +14 -10
  15. package/dist/recipes/compile.js.map +1 -1
  16. package/dist/recipes/index.d.ts +2 -0
  17. package/dist/recipes/index.d.ts.map +1 -1
  18. package/dist/recipes/index.js +5 -3
  19. package/dist/recipes/index.js.map +1 -1
  20. package/dist/recipes/schema.d.ts +27 -17
  21. package/dist/recipes/schema.d.ts.map +1 -1
  22. package/dist/recipes/schema.js +11 -6
  23. package/dist/recipes/schema.js.map +1 -1
  24. package/dist/recipes/wayfinding.d.ts +1 -1
  25. package/dist/version.d.ts +1 -1
  26. package/dist/version.d.ts.map +1 -1
  27. package/dist/version.js +1 -1
  28. package/dist/version.js.map +1 -1
  29. package/dist/world/ablation/ablation.d.ts +39 -0
  30. package/dist/world/ablation/ablation.d.ts.map +1 -0
  31. package/dist/world/ablation/ablation.js +449 -0
  32. package/dist/world/ablation/ablation.js.map +1 -0
  33. package/dist/world/adapters/field-runtime.d.ts +56 -0
  34. package/dist/world/adapters/field-runtime.d.ts.map +1 -0
  35. package/dist/world/adapters/field-runtime.js +250 -0
  36. package/dist/world/adapters/field-runtime.js.map +1 -0
  37. package/dist/world/adapters/fsm-runtime.d.ts +18 -0
  38. package/dist/world/adapters/fsm-runtime.d.ts.map +1 -0
  39. package/dist/world/adapters/fsm-runtime.js +153 -0
  40. package/dist/world/adapters/fsm-runtime.js.map +1 -0
  41. package/dist/world/adapters/governor-runtime.d.ts +23 -0
  42. package/dist/world/adapters/governor-runtime.d.ts.map +1 -0
  43. package/dist/world/adapters/governor-runtime.js +185 -0
  44. package/dist/world/adapters/governor-runtime.js.map +1 -0
  45. package/dist/world/adapters/planner-runtime.d.ts +20 -0
  46. package/dist/world/adapters/planner-runtime.d.ts.map +1 -0
  47. package/dist/world/adapters/planner-runtime.js +144 -0
  48. package/dist/world/adapters/planner-runtime.js.map +1 -0
  49. package/dist/world/conformance/corpus.d.ts +89 -0
  50. package/dist/world/conformance/corpus.d.ts.map +1 -0
  51. package/dist/world/conformance/corpus.js +195 -0
  52. package/dist/world/conformance/corpus.js.map +1 -0
  53. package/dist/world/conformance/discoveries.d.ts +50 -0
  54. package/dist/world/conformance/discoveries.d.ts.map +1 -0
  55. package/dist/world/conformance/discoveries.js +71 -0
  56. package/dist/world/conformance/discoveries.js.map +1 -0
  57. package/dist/world/conformance/evidence.d.ts +37 -0
  58. package/dist/world/conformance/evidence.d.ts.map +1 -0
  59. package/dist/world/conformance/evidence.js +53 -0
  60. package/dist/world/conformance/evidence.js.map +1 -0
  61. package/dist/world/conformance/negative-results.d.ts +57 -0
  62. package/dist/world/conformance/negative-results.d.ts.map +1 -0
  63. package/dist/world/conformance/negative-results.js +73 -0
  64. package/dist/world/conformance/negative-results.js.map +1 -0
  65. package/dist/world/conformance/predictions.d.ts +66 -0
  66. package/dist/world/conformance/predictions.d.ts.map +1 -0
  67. package/dist/world/conformance/predictions.js +141 -0
  68. package/dist/world/conformance/predictions.js.map +1 -0
  69. package/dist/world/cross-substrate.d.ts +19 -0
  70. package/dist/world/cross-substrate.d.ts.map +1 -0
  71. package/dist/world/cross-substrate.js +123 -0
  72. package/dist/world/cross-substrate.js.map +1 -0
  73. package/dist/world/dynamics.d.ts +166 -0
  74. package/dist/world/dynamics.d.ts.map +1 -0
  75. package/dist/world/dynamics.js +30 -0
  76. package/dist/world/dynamics.js.map +1 -0
  77. package/dist/world/envelope.d.ts +44 -0
  78. package/dist/world/envelope.d.ts.map +1 -0
  79. package/dist/world/envelope.js +77 -0
  80. package/dist/world/envelope.js.map +1 -0
  81. package/dist/world/episodes/episodes.d.ts +64 -0
  82. package/dist/world/episodes/episodes.d.ts.map +1 -0
  83. package/dist/world/episodes/episodes.js +104 -0
  84. package/dist/world/episodes/episodes.js.map +1 -0
  85. package/dist/world/equivalence.d.ts +70 -0
  86. package/dist/world/equivalence.d.ts.map +1 -0
  87. package/dist/world/equivalence.js +205 -0
  88. package/dist/world/equivalence.js.map +1 -0
  89. package/dist/world/experiments/declarative-dynamics.d.ts +87 -0
  90. package/dist/world/experiments/declarative-dynamics.d.ts.map +1 -0
  91. package/dist/world/experiments/declarative-dynamics.js +153 -0
  92. package/dist/world/experiments/declarative-dynamics.js.map +1 -0
  93. package/dist/world/governor-equivalence.d.ts +51 -0
  94. package/dist/world/governor-equivalence.d.ts.map +1 -0
  95. package/dist/world/governor-equivalence.js +126 -0
  96. package/dist/world/governor-equivalence.js.map +1 -0
  97. package/dist/world/kernel.d.ts +49 -0
  98. package/dist/world/kernel.d.ts.map +1 -0
  99. package/dist/world/kernel.js +64 -0
  100. package/dist/world/kernel.js.map +1 -0
  101. package/dist/world/observatory/capture.d.ts +10 -0
  102. package/dist/world/observatory/capture.d.ts.map +1 -0
  103. package/dist/world/observatory/capture.js +371 -0
  104. package/dist/world/observatory/capture.js.map +1 -0
  105. package/dist/world/observatory/evidence-log.d.ts +131 -0
  106. package/dist/world/observatory/evidence-log.d.ts.map +1 -0
  107. package/dist/world/observatory/evidence-log.js +43 -0
  108. package/dist/world/observatory/evidence-log.js.map +1 -0
  109. package/dist/world/opportunity/opportunity.d.ts +85 -0
  110. package/dist/world/opportunity/opportunity.d.ts.map +1 -0
  111. package/dist/world/opportunity/opportunity.js +67 -0
  112. package/dist/world/opportunity/opportunity.js.map +1 -0
  113. package/dist/world/projection/evidence-profile.d.ts +51 -0
  114. package/dist/world/projection/evidence-profile.d.ts.map +1 -0
  115. package/dist/world/projection/evidence-profile.js +93 -0
  116. package/dist/world/projection/evidence-profile.js.map +1 -0
  117. package/dist/world/projection/projection.d.ts +162 -0
  118. package/dist/world/projection/projection.d.ts.map +1 -0
  119. package/dist/world/projection/projection.js +145 -0
  120. package/dist/world/projection/projection.js.map +1 -0
  121. package/dist/world/properties/properties.d.ts +87 -0
  122. package/dist/world/properties/properties.d.ts.map +1 -0
  123. package/dist/world/properties/properties.js +172 -0
  124. package/dist/world/properties/properties.js.map +1 -0
  125. package/dist/world/substrates/fsm.d.ts +59 -0
  126. package/dist/world/substrates/fsm.d.ts.map +1 -0
  127. package/dist/world/substrates/fsm.js +57 -0
  128. package/dist/world/substrates/fsm.js.map +1 -0
  129. package/dist/world/substrates/governor.d.ts +53 -0
  130. package/dist/world/substrates/governor.d.ts.map +1 -0
  131. package/dist/world/substrates/governor.js +73 -0
  132. package/dist/world/substrates/governor.js.map +1 -0
  133. package/dist/world/substrates/planner.d.ts +82 -0
  134. package/dist/world/substrates/planner.d.ts.map +1 -0
  135. package/dist/world/substrates/planner.js +114 -0
  136. package/dist/world/substrates/planner.js.map +1 -0
  137. package/dist/world/world.d.ts +73 -0
  138. package/dist/world/world.d.ts.map +1 -0
  139. package/dist/world/world.js +2 -0
  140. package/dist/world/world.js.map +1 -0
  141. package/package.json +1 -1
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Instrumentation adapter (EXPERIMENTAL, internal) — Phase O1/O2.
3
+ *
4
+ * Drives real substrates through their real `DynamicsContract` adapters and RECORDS what the runtime
5
+ * emitted. It contains no findings of its own: every derivation in the resulting bundle is the return
6
+ * value of a runtime function (`runConformance`, `evaluateOpportunity`, `project`, `detectEpisodes`,
7
+ * `runAblations`, the registries), and every registry section is passed through verbatim.
8
+ *
9
+ * The rule this file must never break: **if the runtime did not produce it, the bundle does not carry
10
+ * it.** A substrate with no captured run appears in `pendingSubstrates`, never as an empty run that
11
+ * looks like a result.
12
+ */
13
+ import { hostWorld } from "../kernel.js";
14
+ import { createWorldEnvelope } from "../envelope.js";
15
+ import { runConformance, corpus, corpusLedger } from "../conformance/corpus.js";
16
+ import { discoveries } from "../conformance/discoveries.js";
17
+ import { predictions, predictionAccuracy } from "../conformance/predictions.js";
18
+ import { negativeResults, negativeLedger } from "../conformance/negative-results.js";
19
+ import { projectionClaims, projectionEvidenceProfile } from "../projection/evidence-profile.js";
20
+ import { evaluateOpportunity } from "../opportunity/opportunity.js";
21
+ import { detectEpisodes } from "../episodes/episodes.js";
22
+ import { runAblations } from "../ablation/ablation.js";
23
+ import { project, toOpportunityProjection } from "../projection/projection.js";
24
+ import { governorDynamics } from "../adapters/governor-runtime.js";
25
+ import { fsmDynamics } from "../adapters/fsm-runtime.js";
26
+ import { plannerDynamics } from "../adapters/planner-runtime.js";
27
+ import { fieldRuntimeDynamics, worldFromCompiledPattern } from "../adapters/field-runtime.js";
28
+ import { structuralCoverage } from "../equivalence.js";
29
+ import { BUNDLE_SCHEMA, evidenceNodesFrom, } from "./evidence-log.js";
30
+ function world(id) {
31
+ return { envelope: createWorldEnvelope(id), entities: [], relations: [], invariants: [], projections: [] };
32
+ }
33
+ // ───────────────────────────────────────────────────────────────────── fixtures (inputs, not results)
34
+ const DOOR = {
35
+ id: 'door',
36
+ initial: 'closed',
37
+ states: ['closed', 'open', 'locked', 'destroyed'],
38
+ accepting: ['destroyed'],
39
+ transitions: [
40
+ { from: 'closed', on: 'open', to: 'open' },
41
+ { from: 'open', on: 'close', to: 'closed' },
42
+ { from: 'closed', on: 'lock', to: 'locked', guard: { key: 'hasKey', equals: true } },
43
+ { from: 'open', on: 'smash', to: 'destroyed', assign: { intact: false } },
44
+ ],
45
+ context: { hasKey: false, intact: true },
46
+ };
47
+ const GRAPH = {
48
+ id: 'grid',
49
+ nodes: [{ id: 'a', x: 0, y: 0 }, { id: 'b', x: 1, y: 0 }, { id: 'c', x: 2, y: 0 }, { id: 'd', x: 1, y: 1 }, { id: 'z', x: 3, y: 0 }],
50
+ edges: [
51
+ { from: 'a', to: 'b', cost: 1 }, { from: 'a', to: 'd', cost: 4 },
52
+ { from: 'b', to: 'c', cost: 1 }, { from: 'd', to: 'z', cost: 1 }, { from: 'c', to: 'z', cost: 1 },
53
+ ],
54
+ start: 'a',
55
+ goal: 'z',
56
+ heuristic: { kind: 'euclidean' },
57
+ };
58
+ function compiledPattern() {
59
+ return {
60
+ id: 'observatory', recipe: { id: 'observatory' },
61
+ bodies: [{ attributes: { 'data-body': 'attract' }, tokens: ['attract'] }],
62
+ relationships: [], feedback: [], diagnostics: [], metrics: [], conditions: [],
63
+ render: { underlay: null, overlay: [], heatmap: false, unapplied: [] },
64
+ reducedMotion: { reducedMotion: 'none', meaningWithoutMotion: '', staticOutputs: [] },
65
+ };
66
+ }
67
+ // ─────────────────────────────────────────────────────────────────────────────────── run recording
68
+ /**
69
+ * Record one substrate's execution. The transitions come from `hostWorld`, the conformance verdict
70
+ * from `runConformance` — this function decides nothing about either.
71
+ */
72
+ function recordRun(substrate, makeWorld, makeContract, inputs, extraFacts = []) {
73
+ const w = makeWorld();
74
+ const contract = makeContract(w);
75
+ const host = hostWorld(w, contract);
76
+ const transitions = [];
77
+ const evidence = [];
78
+ for (const [i, input] of inputs.entries()) {
79
+ const prefix = `${substrate}:${i}`;
80
+ const r = host.advance(input);
81
+ const nodes = evidenceNodesFrom(r.evidence, i, prefix, `${substrate}.advance`);
82
+ evidence.push(...nodes);
83
+ const snap = contract.capabilities.snapshot ? host.readState() : undefined;
84
+ const reading = snap && 'ok' in snap && snap.ok ? snap.value.reading.metrics : undefined;
85
+ transitions.push({
86
+ step: i,
87
+ input,
88
+ output: r.ok ? r.value : undefined,
89
+ lifecycle: host.lastLifecycle,
90
+ failure: r.ok ? undefined : { code: r.error.code, message: r.error.message },
91
+ reading,
92
+ evidenceIds: nodes.map((n) => n.id),
93
+ });
94
+ if (host.lastLifecycle === 'terminal')
95
+ break;
96
+ }
97
+ // state visibility, sourced from the contract's own declarations — never assumed
98
+ const last = transitions[transitions.length - 1];
99
+ const stateFacts = [
100
+ ...Object.entries(last?.reading ?? {}).map(([key, value]) => ({
101
+ key,
102
+ visibility: 'observed',
103
+ value,
104
+ basis: 'contract.snapshot() reading',
105
+ })),
106
+ ...extraFacts,
107
+ ];
108
+ if (contract.capabilities.restore) {
109
+ stateFacts.push({ key: '<full state>', visibility: 'reconstructed', basis: 'capabilities.restore = true; snapshot is restorable' });
110
+ }
111
+ const law = contract.capabilities.declareTransitionLaw && contract.describeTransitionLaw
112
+ ? contract.describeTransitionLaw()
113
+ : undefined;
114
+ const conformance = runConformance(makeWorld, makeContract, inputs);
115
+ host.dispose();
116
+ return {
117
+ run: {
118
+ substrate,
119
+ contractId: contract.identity.id,
120
+ executionKind: contract.executionKind,
121
+ capabilities: contract.capabilities,
122
+ determinism: contract.determinism,
123
+ transitions,
124
+ stateFacts,
125
+ conformance,
126
+ transitionLaw: law && law.ok ? law.value : undefined,
127
+ terminated: host.lastLifecycle === 'terminal',
128
+ },
129
+ evidence,
130
+ };
131
+ }
132
+ // ────────────────────────────────────────────────────────────────────────── projection recording
133
+ const PROJECTION_OPERATIONS = [
134
+ { id: 'publish', reversible: false, recoveryPaths: ['unpublish'] },
135
+ { id: 'unpublish', reversible: true, recoveryPaths: [] },
136
+ { id: 'delete', reversible: false, recoveryPaths: [] },
137
+ { id: 'audit', reversible: true, recoveryPaths: [] },
138
+ ];
139
+ const PROJECTION_AUTHORITY = [
140
+ { operation: 'publish', scope: 'editor', authoritySource: 'editorial-policy-v2' },
141
+ { operation: 'audit', scope: 'auditor', authoritySource: 'compliance-charter' },
142
+ ];
143
+ function projectionSource() {
144
+ const envelope = createWorldEnvelope('projection-world');
145
+ return {
146
+ envelope,
147
+ operations: PROJECTION_OPERATIONS,
148
+ snapshot: { envelope, step: 7, entities: [], metrics: { drafts: 3, published: 2, internalRiskScore: 91, moderationQueue: 5 } },
149
+ capabilities: ['publish', 'unpublish', 'audit'],
150
+ authority: PROJECTION_AUTHORITY,
151
+ evidenceIds: ['ev-publish-log', 'ev-risk-model', 'ev-moderation-trace'],
152
+ };
153
+ }
154
+ function projectionDefinitions() {
155
+ const envelope = projectionSource().envelope;
156
+ const base = {
157
+ sourceEnvelope: envelope,
158
+ invariants: [{ id: 'drafts-bounded', statement: 'drafts <= 10', reads: ['drafts'] }],
159
+ provenance: [{ id: 't1', kind: 'redact', detail: 'risk score redacted' }],
160
+ };
161
+ return [
162
+ {
163
+ ...base,
164
+ identity: { id: 'editor', version: '1' },
165
+ scope: { consumer: 'editor', kind: 'participant' },
166
+ observation: { observable: ['drafts', 'published'], hidden: ['internalRiskScore'] },
167
+ operations: { exposed: ['publish'], hidden: ['audit'], signaled: ['publish'] },
168
+ evidence: { accessible: ['ev-publish-log'], withheld: ['ev-risk-model'] },
169
+ authority: { presented: ['publish'] },
170
+ },
171
+ {
172
+ ...base,
173
+ identity: { id: 'auditor', version: '1' },
174
+ scope: { consumer: 'auditor', kind: 'agent' },
175
+ observation: { observable: ['drafts', 'internalRiskScore'], hidden: [] },
176
+ operations: { exposed: ['audit'], hidden: ['publish'], signaled: ['audit'] },
177
+ evidence: { accessible: ['ev-risk-model', 'ev-moderation-trace'], withheld: [] },
178
+ authority: { presented: ['audit'] },
179
+ },
180
+ {
181
+ ...base,
182
+ identity: { id: 'overreaching', version: '1' },
183
+ scope: { consumer: 'untrusted', kind: 'external-system' },
184
+ observation: { observable: ['drafts'], hidden: ['internalRiskScore'] },
185
+ operations: { exposed: ['publish', 'delete'], hidden: [], signaled: ['delete'] },
186
+ evidence: { accessible: ['ev-publish-log'], withheld: [] },
187
+ authority: { presented: ['publish', 'delete'] },
188
+ },
189
+ ];
190
+ }
191
+ function recordProjections() {
192
+ const source = projectionSource();
193
+ const evidence = [];
194
+ const projections = projectionDefinitions().map((definition) => {
195
+ const result = project(definition, source);
196
+ const surfaceId = `projection:${definition.identity.id}`;
197
+ evidence.push({
198
+ id: surfaceId,
199
+ kind: 'runtime-derivation',
200
+ origin: 'project()',
201
+ label: `surface ${definition.identity.id}`,
202
+ payload: result.surface,
203
+ derivedFrom: [],
204
+ });
205
+ result.anomalies.forEach((a, i) => {
206
+ evidence.push({
207
+ id: `${surfaceId}:anomaly:${i}`,
208
+ kind: 'runtime-derivation',
209
+ origin: 'project()',
210
+ label: `${a.code}: ${a.subject}`,
211
+ payload: a,
212
+ derivedFrom: [surfaceId],
213
+ });
214
+ });
215
+ const omegaProjection = toOpportunityProjection(result.surface);
216
+ const opportunities = PROJECTION_OPERATIONS.map((op) => {
217
+ const r = evaluateOpportunity({
218
+ world: { envelope: source.envelope, operations: PROJECTION_OPERATIONS },
219
+ participant: definition.scope.consumer,
220
+ state: { enabled: ['publish', 'audit', 'unpublish'], reachableOutcomes: ['publish', 'audit', 'unpublish'] },
221
+ projection: omegaProjection,
222
+ history: [],
223
+ capabilities: source.capabilities,
224
+ authority: source.authority,
225
+ }, op.id);
226
+ evidence.push({
227
+ id: `${surfaceId}:omega:${op.id}`,
228
+ kind: 'runtime-derivation',
229
+ origin: 'evaluateOpportunity()',
230
+ label: `Ω_sys ${definition.identity.id}/${op.id} → ${r.available ? 'available' : 'unavailable'}`,
231
+ payload: r,
232
+ derivedFrom: [surfaceId],
233
+ });
234
+ return r;
235
+ });
236
+ return {
237
+ definitionId: definition.identity.id,
238
+ scope: `${definition.scope.consumer} (${definition.scope.kind})`,
239
+ result,
240
+ opportunities,
241
+ evidenceIds: [surfaceId],
242
+ };
243
+ });
244
+ return { projections, evidence };
245
+ }
246
+ // ───────────────────────────────────────────────────────────────────────────── episode recording
247
+ const EPISODE_TRACE = [
248
+ { step: 1, from: 'A', to: 'B', operation: 'request', influence: 0.8 },
249
+ { step: 2, from: 'B', to: 'A', operation: 'respond', influence: 0.7 },
250
+ { step: 3, from: 'A', to: 'B', operation: 'confirm', influence: 0.6 },
251
+ { step: 9, from: 'C', to: 'D', operation: 'notify', influence: 0.5 },
252
+ { step: 11, from: 'C', to: 'E', operation: 'notify', influence: 0.5 },
253
+ { step: 20, from: 'B', to: 'A', operation: 'followup', influence: 0.2 },
254
+ ];
255
+ /** Several parameterizations, ALL retained — the mission requires alternates never overwrite. */
256
+ function recordDetections() {
257
+ const participants = ['A', 'B', 'C', 'D', 'E'];
258
+ const variants = [
259
+ {
260
+ label: 'baseline (window 5, influence ≥ 0.3)',
261
+ contract: { boundary: { participants, start: 0, end: 30 }, timescale: 1, coupling: { kind: 'direct-influence', minInfluence: 0.3 }, recurrenceWindow: 5, minimumInfluence: 0.3 },
262
+ },
263
+ {
264
+ label: 'wide window (25)',
265
+ contract: { boundary: { participants, start: 0, end: 30 }, timescale: 1, coupling: { kind: 'direct-influence', minInfluence: 0.3 }, recurrenceWindow: 25, minimumInfluence: 0.3 },
266
+ },
267
+ {
268
+ label: 'strict influence (≥ 0.65)',
269
+ contract: { boundary: { participants, start: 0, end: 30 }, timescale: 1, coupling: { kind: 'direct-influence', minInfluence: 0.65 }, recurrenceWindow: 5, minimumInfluence: 0.65 },
270
+ },
271
+ {
272
+ label: 'narrow boundary (A,B only)',
273
+ contract: { boundary: { participants: ['A', 'B'], start: 0, end: 30 }, timescale: 1, coupling: { kind: 'direct-influence', minInfluence: 0.3 }, recurrenceWindow: 5, minimumInfluence: 0.3 },
274
+ },
275
+ ];
276
+ const evidence = [];
277
+ const detections = variants.map(({ label, contract }, i) => {
278
+ const result = detectEpisodes(EPISODE_TRACE, contract, participants);
279
+ const id = `detection:${i}`;
280
+ evidence.push({
281
+ id,
282
+ kind: 'runtime-derivation',
283
+ origin: 'detectEpisodes()',
284
+ label: `${label} → ${result.episodes.length} candidate episode(s)`,
285
+ payload: result,
286
+ derivedFrom: [],
287
+ });
288
+ return { label, contract, result, evidenceId: id };
289
+ });
290
+ return { detections, evidence };
291
+ }
292
+ // ─────────────────────────────────────────────────────────────────────────────── bundle assembly
293
+ /**
294
+ * Assemble the whole bundle. Registry sections are passed through VERBATIM — a test asserts they
295
+ * deep-equal the live registries, so the Observatory cannot show a discovery the runtime does not hold.
296
+ */
297
+ export function captureBundle(revision) {
298
+ const evidence = [];
299
+ const runs = [];
300
+ const fsm = recordRun('FiniteStateMachine', () => world('fsm-world'), (w) => fsmDynamics(w, DOOR), [{ event: 'open' }, { event: 'close' }, { event: 'open' }, { event: 'smash' }, { event: 'open' }]);
301
+ runs.push(fsm.run);
302
+ evidence.push(...fsm.evidence);
303
+ const planner = recordRun('SearchPlanner', () => world('planner-world'), (w) => plannerDynamics(w, GRAPH), Array.from({ length: 12 }, () => ({ expand: 1 })));
304
+ runs.push(planner.run);
305
+ evidence.push(...planner.evidence);
306
+ const governor = recordRun('QualityGovernor', () => world('governor-world'), (w) => governorDynamics(w), [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 10, 10, 10].map((durationMs) => ({ durationMs })));
307
+ runs.push(governor.run);
308
+ evidence.push(...governor.evidence);
309
+ // the field is lossy: its coverage classification is the runtime's own, not a judgement made here
310
+ const fieldFacts = structuralCoverage()
311
+ .filter((c) => c.classification !== 'represented')
312
+ .map((c) => ({
313
+ key: c.construct,
314
+ visibility: c.classification === 'lossy' || c.classification === 'unavailable' ? 'unavailable' : 'observed',
315
+ basis: `structuralCoverage(): ${c.classification}`,
316
+ }));
317
+ const field = recordRun('FieldRuntime', () => worldFromCompiledPattern(compiledPattern()).world, (w) => fieldRuntimeDynamics(w), Array.from({ length: 6 }, () => ({ steps: 1 })), fieldFacts);
318
+ runs.push(field.run);
319
+ evidence.push(...field.evidence);
320
+ const { projections, evidence: projectionEvidence } = recordProjections();
321
+ evidence.push(...projectionEvidence);
322
+ const { detections, evidence: detectionEvidence } = recordDetections();
323
+ evidence.push(...detectionEvidence);
324
+ const ablations = runAblations();
325
+ ablations.forEach((a, i) => {
326
+ evidence.push({
327
+ id: `ablation:${i}`,
328
+ kind: 'runtime-derivation',
329
+ origin: 'runAblations()',
330
+ label: `${a.element} / ${a.form} → ${a.classification}`,
331
+ payload: a,
332
+ derivedFrom: [],
333
+ });
334
+ });
335
+ // registry entries become evidence nodes so the Observatory can cite them like anything else
336
+ discoveries().forEach((d) => {
337
+ evidence.push({ id: d.id, kind: 'discovery', origin: 'discoveries()', label: `${d.id} ${d.concept}`, payload: d, derivedFrom: [] });
338
+ });
339
+ predictions().forEach((p) => {
340
+ evidence.push({ id: p.id, kind: 'prediction', origin: 'predictions()', label: `${p.id} ${p.grade}`, payload: p, derivedFrom: [] });
341
+ });
342
+ negativeResults().forEach((n) => {
343
+ evidence.push({ id: n.id, kind: 'negative-result', origin: 'negativeResults()', label: `${n.id} ${n.status}`, payload: n, derivedFrom: [] });
344
+ });
345
+ corpus().forEach((e) => {
346
+ evidence.push({ id: `corpus:${e.substrate}`, kind: 'registry-entry', origin: 'corpus()', label: `${e.substrate} (${e.status})`, payload: e, derivedFrom: [] });
347
+ });
348
+ const captured = new Set(runs.map((r) => r.substrate));
349
+ const pendingSubstrates = corpus().filter((e) => !captured.has(e.substrate)).map((e) => e.substrate);
350
+ return {
351
+ revision: { ...revision, bundleSchema: BUNDLE_SCHEMA },
352
+ registries: {
353
+ corpus: corpus(),
354
+ corpusLedger: corpusLedger(),
355
+ discoveries: discoveries(),
356
+ predictions: predictions(),
357
+ predictionAccuracy: predictionAccuracy(),
358
+ negativeResults: negativeResults(),
359
+ negativeLedger: negativeLedger(),
360
+ projectionClaims: projectionClaims(),
361
+ projectionProfile: projectionEvidenceProfile(),
362
+ },
363
+ runs,
364
+ projections,
365
+ detections,
366
+ ablations,
367
+ evidence,
368
+ pendingSubstrates,
369
+ };
370
+ }
371
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/world/observatory/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Normalized evidence log (EXPERIMENTAL, internal) — Phase O2.
3
+ *
4
+ * The Observatory is an inspection instrument, not a source of findings. This file defines the
5
+ * artifact that separates the two: the runtime EMITS an evidence log; the Observatory RENDERS it and
6
+ * derives nothing. Core exports nothing publicly and imports no DOM, so this boundary is enforced by
7
+ * the package layout rather than by convention.
8
+ *
9
+ * living system → instrumentation adapter → normalized evidence log → observatory
10
+ *
11
+ * Every visible statement in the Observatory must reduce to a node in this log, and every node names
12
+ * the runtime function that produced it (`origin`). A node with no origin cannot be displayed as a
13
+ * finding, because nothing in the runtime claimed it.
14
+ *
15
+ * Deliberately reuses existing runtime types (`OpportunityResult`, `DetectionResult`, `AblationRecord`,
16
+ * `ProjectionResult`, `DynamicsEvidence`, …) rather than restating them. New types appear ONLY where
17
+ * several sources had to be represented uniformly — the evidence node and the recorded transition.
18
+ */
19
+ import type { DynamicsCapabilities, DynamicsEvidence, DynamicsExecutionKind, DeterminismDeclaration, TransitionLifecycle } from '../dynamics.ts';
20
+ import type { OpportunityResult } from '../opportunity/opportunity.ts';
21
+ import type { DetectionContract, DetectionResult } from '../episodes/episodes.ts';
22
+ import type { AblationRecord } from '../ablation/ablation.ts';
23
+ import type { ProjectionResult } from '../projection/projection.ts';
24
+ import type { ConformanceReport, CorpusEntry, CorpusLedger } from '../conformance/corpus.ts';
25
+ import type { Discovery } from '../conformance/discoveries.ts';
26
+ import type { Prediction, PredictionAccuracy } from '../conformance/predictions.ts';
27
+ import type { NegativeResult, NegativeLedger } from '../conformance/negative-results.ts';
28
+ import type { ProjectionClaim, EvidenceProfile } from '../projection/evidence-profile.ts';
29
+ /** What a piece of evidence IS. The Observatory groups and filters by this, never by substrate. */
30
+ export type EvidenceNodeKind = 'raw-event' | 'adapter-output' | 'runtime-derivation' | 'registry-entry' | 'prediction' | 'discovery' | 'negative-result';
31
+ /**
32
+ * One node in the evidence DAG. `derivedFrom` makes every edge citable: an Observatory pane showing a
33
+ * conclusion can walk back to the inputs the runtime actually used.
34
+ */
35
+ export interface EvidenceNode {
36
+ readonly id: string;
37
+ readonly kind: EvidenceNodeKind;
38
+ /** The runtime function that produced this. Provenance — never a UI label. */
39
+ readonly origin: string;
40
+ readonly label: string;
41
+ readonly step?: number;
42
+ readonly payload: unknown;
43
+ readonly derivedFrom: readonly string[];
44
+ }
45
+ /**
46
+ * How a piece of world state became visible. `inferred` exists in the vocabulary so the Observatory can
47
+ * show that the count is ZERO — the runtime never infers state, and an absent category is invisible.
48
+ */
49
+ export type StateVisibility = 'declared' | 'observed' | 'reconstructed' | 'inferred' | 'unavailable';
50
+ export interface StateFact {
51
+ readonly key: string;
52
+ readonly visibility: StateVisibility;
53
+ readonly value?: number;
54
+ /** Why it carries this visibility, sourced from the runtime (e.g. a coverage classification). */
55
+ readonly basis: string;
56
+ readonly evidenceId?: string;
57
+ }
58
+ export interface RecordedTransition {
59
+ readonly step: number;
60
+ readonly input: unknown;
61
+ readonly output?: unknown;
62
+ readonly lifecycle: TransitionLifecycle;
63
+ readonly failure?: {
64
+ readonly code: string;
65
+ readonly message: string;
66
+ };
67
+ /** Snapshot reading AFTER this transition, when the substrate advertises snapshot. */
68
+ readonly reading?: Readonly<Record<string, number>>;
69
+ readonly evidenceIds: readonly string[];
70
+ }
71
+ export interface RecordedRun {
72
+ readonly substrate: string;
73
+ readonly contractId: string;
74
+ readonly executionKind: DynamicsExecutionKind;
75
+ readonly capabilities: DynamicsCapabilities;
76
+ readonly determinism: DeterminismDeclaration;
77
+ readonly transitions: readonly RecordedTransition[];
78
+ readonly stateFacts: readonly StateFact[];
79
+ readonly conformance: ConformanceReport;
80
+ /** Present only when the substrate can declare its law; absent is meaningful, not missing. */
81
+ readonly transitionLaw?: unknown;
82
+ readonly terminated: boolean;
83
+ }
84
+ /** One projection applied to one snapshot, with the Ω_sys it produced. Both from runtime calls. */
85
+ export interface RecordedProjection {
86
+ readonly definitionId: string;
87
+ readonly scope: string;
88
+ readonly result: ProjectionResult;
89
+ readonly opportunities: readonly OpportunityResult[];
90
+ readonly evidenceIds: readonly string[];
91
+ }
92
+ /** Episode detection at ONE parameterization. Multiple are kept; none overwrites another. */
93
+ export interface RecordedDetection {
94
+ readonly label: string;
95
+ readonly contract: DetectionContract;
96
+ readonly result: DetectionResult;
97
+ readonly evidenceId: string;
98
+ }
99
+ export interface ObservatoryRegistries {
100
+ readonly corpus: readonly CorpusEntry[];
101
+ readonly corpusLedger: CorpusLedger;
102
+ readonly discoveries: readonly Discovery[];
103
+ readonly predictions: readonly Prediction[];
104
+ readonly predictionAccuracy: PredictionAccuracy;
105
+ readonly negativeResults: readonly NegativeResult[];
106
+ readonly negativeLedger: NegativeLedger;
107
+ readonly projectionClaims: readonly ProjectionClaim[];
108
+ readonly projectionProfile: EvidenceProfile;
109
+ }
110
+ export interface BundleRevision {
111
+ /** Commit the bundle was captured at. Supplied by the emitter; the runtime does not read git. */
112
+ readonly commit: string;
113
+ readonly coreVersion: string;
114
+ readonly bundleSchema: string;
115
+ }
116
+ export interface ObservatoryBundle {
117
+ readonly revision: BundleRevision;
118
+ readonly registries: ObservatoryRegistries;
119
+ readonly runs: readonly RecordedRun[];
120
+ readonly projections: readonly RecordedProjection[];
121
+ readonly detections: readonly RecordedDetection[];
122
+ readonly ablations: readonly AblationRecord[];
123
+ /** Flat evidence DAG. Every id referenced anywhere in the bundle resolves here. */
124
+ readonly evidence: readonly EvidenceNode[];
125
+ /** Substrates in the corpus with no captured run — shown as pending, never fabricated. */
126
+ readonly pendingSubstrates: readonly string[];
127
+ }
128
+ export declare const BUNDLE_SCHEMA = "observatory-bundle/1";
129
+ /** Flattens a contract's evidence channel into log nodes. Pure re-expression; nothing is computed. */
130
+ export declare function evidenceNodesFrom(evidence: DynamicsEvidence, step: number, prefix: string, origin: string): EvidenceNode[];
131
+ //# sourceMappingURL=evidence-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-log.d.ts","sourceRoot":"","sources":["../../../src/world/observatory/evidence-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export const BUNDLE_SCHEMA = 'observatory-bundle/1';
2
+ /** Flattens a contract's evidence channel into log nodes. Pure re-expression; nothing is computed. */
3
+ export function evidenceNodesFrom(evidence, step, prefix, origin) {
4
+ const nodes = [];
5
+ evidence.declaredInputs.forEach((r, i) => {
6
+ nodes.push({ id: `${prefix}:in:${i}`, kind: 'raw-event', origin, label: `input ${r.kind}`, step, payload: r, derivedFrom: [] });
7
+ });
8
+ evidence.substrateResponses.forEach((r, i) => {
9
+ nodes.push({
10
+ id: `${prefix}:out:${i}`,
11
+ kind: 'adapter-output',
12
+ origin,
13
+ label: `response ${r.kind}`,
14
+ step,
15
+ payload: r,
16
+ derivedFrom: evidence.declaredInputs.map((_, j) => `${prefix}:in:${j}`),
17
+ });
18
+ });
19
+ evidence.executionTrace.forEach((t, i) => {
20
+ nodes.push({
21
+ id: `${prefix}:trace:${i}`,
22
+ kind: 'runtime-derivation',
23
+ origin,
24
+ label: t.summary,
25
+ step,
26
+ payload: t,
27
+ derivedFrom: evidence.substrateResponses.map((_, j) => `${prefix}:out:${j}`),
28
+ });
29
+ });
30
+ evidence.unresolvedInterpretations.forEach((o, i) => {
31
+ nodes.push({
32
+ id: `${prefix}:obligation:${i}`,
33
+ kind: 'runtime-derivation',
34
+ origin,
35
+ label: `unresolved: ${o.claim}`,
36
+ step,
37
+ payload: o,
38
+ derivedFrom: [],
39
+ });
40
+ });
41
+ return nodes;
42
+ }
43
+ //# sourceMappingURL=evidence-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-log.js","sourceRoot":"","sources":["../../../src/world/observatory/evidence-log.ts"],"names":[],"mappings":"AA+IA,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEpD,sGAAsG;AACtG,MAAM,UAAU,iBAAiB,CAC/B,QAA0B,EAC1B,IAAY,EACZ,MAAc,EACd,MAAc;IAEd,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAClI,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE;YACxB,IAAI,EAAE,gBAAgB;YACtB,MAAM;YACN,KAAK,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE;YAC3B,IAAI;YACJ,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC;SACxE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE;YAC1B,IAAI,EAAE,oBAAoB;YAC1B,MAAM;YACN,KAAK,EAAE,CAAC,CAAC,OAAO;YAChB,IAAI;YACJ,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC;SAC7E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClD,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE;YAC/B,IAAI,EAAE,oBAAoB;YAC1B,MAAM;YACN,KAAK,EAAE,eAAe,CAAC,CAAC,KAAK,EAAE;YAC/B,IAAI;YACJ,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}