Restore the scale target as design, not load fixture

The operator's design is detail first, then a ten-percent choke: generate
goal-bearing actors at every level, then budget cells so attention is scarce
and selection is forced. The mvp doc's teardown-era sentence calling the
2,400-subject profile "test data, not a production elaboration target"
contradicted that and is amended. The ontology now carries an authored
WorldScaleIntent with a structurally counted deficit that elaborators pursue
after boundaries, a budgeted connected cover every tick with singleton detail
cells and grouped coarse cells, partitioned views and per-constituent
attribution in groups, and debt rotation. Gestalt as canonical identity,
arena knowledge union, and semantic qualification stay deleted. Plan step six
is nine passes; two proofs added; evidence records the correction.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-04 16:14:44 +02:00
commit 4ae1d6181d
6 changed files with 106 additions and 48 deletions

View file

@ -20,8 +20,13 @@ world owners, and actor-private experience.
The world grows when committed pressure reaches a typed boundary: a new
destination becomes relevant, an existing polity or population enters causal
range, a person must be individuated, or an effect needs a missing primitive.
Population totals and cover ratios are load and evaluation profiles. They do
not define whether a world is complete.
A world also grows toward an authored `WorldScaleIntent`: how many goal-bearing
subjects it should hold at each level and realm. Elaborators work that deficit
down; structural validity never waits on it. Cover budget is the deliberate
choke: with subjects several times the cell budget, the scheduler must choose
where attention goes, and actors pursuing their own goals at every level is
what makes the world feel alive. Neither number gates activation or admits a
mutation.
## Prime invariants
@ -277,7 +282,11 @@ or reload repair path.
Ghostlight supports two first-class decision interfaces. The ontology assigns
each exact authority scope to one `DecisionController`; the scheduler does not
choose a mode opportunistically. A controller changes representation and model
choose a mode opportunistically. The scheduler does choose resolution: a
`NarrativePersona` controller receives its prose membrane in a singleton cell
and is represented operationally, at coarse resolution, when grouped. That is
a budget decision, not a mode change; the controller, its scope, and its
authority are unchanged. A controller changes representation and model
ergonomics, never permission or commit authority.
An opportunity is issued to exactly one controller. An untranslated intent or
@ -429,9 +438,14 @@ commit the planner derives a fresh queue. Parallel inference may speculate on
one snapshot, but stale proposals are discarded rather than rebased.
Resolution covers and grouping are compute budgets for projection. They do not
create, merge, fission, or qualify identities. A synthetic fixture may create
1,200 action owners to pressure-test scheduling and projection; it is test data,
not canonical lore and not a production elaboration target.
create, merge, fission, or qualify identities. Every active subject is in the
cover every tick; the budget decides at what resolution. Singleton cells give
detail focus and the prose membrane; grouped cells represent their constituents
operationally at coarse resolution with per-constituent attribution. Debt
rotation guarantees every subject reaches detail focus within bounded ticks.
The 2,400-subject, 240-cell profile is a design target for a living world, not
only a load fixture: it tests the elaborators and the simulation for quality
under scarcity of attention.
## Source grounding and open-world expansion

View file

@ -5,9 +5,11 @@ strategic waves, demand/deficit elaboration, and the wave-level outcome
resolver, all on the deletion line. The current vocabulary is
`docs/architecture/ghostlight-world-ontology.md`. It keeps the resumable
per-jurisdiction elaborator session, compact mutation drafts, the complete
deterministic mismatch set, deterministic clocks that advance regardless of
attention, debt-ordered scheduling, and batched cells as runner-owned
representation with per-constituent attribution. It drops gestalt as identity:
deterministic mismatch set, the authored `WorldScaleIntent` and its
deterministically derived deficit, the budgeted connected cover with singleton
detail focus and grouped coarse cells, debt rotation, and deterministic clocks
that advance regardless of attention. Detail first, then the ten-percent choke,
is the operator's design and survives. It drops gestalt as identity:
`GestaltPersonaState`, member deltas, arena knowledge union, fission as a scale
loop, promotion and folding, and cover-completeness targets.

View file

@ -11,8 +11,8 @@ It may not introduce a writer, a semantic gate, or a second commit path.
`docs/architecture/ghostlight-transition-algebra.md` and
`docs/architecture/ghostlight-multiresolution-agency.md` describe the
pre-rebuild machine and are teardown evidence. Three of their ideas survive
here, named where they are used: one mutation vocabulary across every admission
pre-rebuild machine and are teardown evidence. Their surviving ideas are named
where they are used: one mutation vocabulary across every admission
lane; compact mutation drafts with a complete deterministic mismatch set; and a
resumable per-jurisdiction elaborator session checkpointed against admitted
commit ancestry.
@ -97,9 +97,10 @@ resolver, or reconciler is needed.
8. Persona material enriches and never substitutes. Values, voice, memory, and
relationship reads cannot stand in for authority, custody, topology, or
knowledge.
9. Elaboration answers a derived causal boundary or an authored seed request.
There is no wave, quota, round budget, coverage ratio, or completeness
metric.
9. Elaboration answers a derived causal boundary, an authored seed request,
or an authored scale deficit. Structural validity never waits on a count;
liveness is an authored target the elaborators pursue. There is no
semantic qualification, round budget, or model-owned completeness verdict.
10. A proposal binds to the digest of the components its verification reads,
not to the whole world digest. It commits at any later revision where that
scope digest is unchanged, and is rejected when it is not.
@ -364,21 +365,34 @@ own, because it is derived from the reducer's vocabulary.
```text
loop:
take the oldest open boundary (or seed request) in my jurisdiction
take the oldest open boundary or seed request in my jurisdiction;
if none, take my jurisdiction's scale deficit
retrieve evidence from the Vault for its referents; keep exact receipts
build one WorldPatch with declaration and operation tools
submit; on rejection, repair the same draft from the complete mismatch set
on commit, checkpoint: admitted commit ancestry, open leads, exact rejections
stop when my jurisdiction has no open boundary
stop when my jurisdiction has no open boundary and no deficit
```
The scale deficit is derived, not owned. The seed carries a `WorldScaleIntent`:
a target count of qualified subjects per level (person, institution,
population) and per realm, with realm weights that distribute the target and
never raise it. A subject qualifies structurally: active, one controller, at
least one `Goal` commitment, at least one executable affordance. The kernel
recounts after every commit and publishes the deficit per jurisdiction as
derived state. Only admitted subjects reduce it; a rejected patch leaves it
visible. Elaborators answering a deficit declare goal-bearing subjects at the
level the deficit names — a person with a want, an office with a mandate, a
slice with a grievance — grounded in evidence like any other patch. Detail
first, then scarcity of attention; that order is what makes actors at every
level pursue their own ends rather than wait to be noticed.
An elaborator session is resumable and checkpointed against admitted commit
ancestry; raw conversation is never authority. Elaborators own no fictional
truth, no target count, no deficit, and no round budget. They stop when the
horizon is structurally sufficient, which is the definition of a valid sparse
world. One elaborator may fill semantic fields — names, labels, Persona
material — inside a typed patch; it is not a Persona, receives no prose
membrane, and holds no authority.
truth and no completeness verdict; the target is authored, the count is
structural, and the reducer alone admits. One elaborator may fill semantic
fields — names, labels, Persona material — inside a typed patch; it is not a
Persona, receives no prose membrane, and holds no authority.
Eight loops do not serialize on one another. A boundary binds to its own scope
digest, so a patch answering it commits at any revision where that digest is
@ -391,14 +405,22 @@ that extension is a code change, not a world patch.
## Scale: many subjects, few inferences
A world may hold thousands of subjects while a tick affords a few hundred
inferences. Four mechanisms carry that, none of which is a second identity
layer:
A living world holds subjects several times its cell budget on purpose. The
2,400-subject, 240-cell profile is the design target: enough goal-bearing
actors at every level that the world has its own ends, and few enough cells
that attention is scarce and the scheduler must choose. Scarcity is the
choke that produces selection, offscreen consequence, and the feeling that
things happen whether or not anyone is watching. Four mechanisms carry that,
none of which is a second identity layer:
1. **Coarse by construction.** Populations and institutions are subjects. A
realm is a handful of deciding subjects until `IndividuationRequired`
fires, and it fires only when a pressure needs a person to bear it.
Individuals are not manufactured toward a count and then compressed back.
1. **Budgeted connected cover.** Every active subject is in the cover every
tick. The scheduler partitions the agency graph — containment, membership,
jurisdiction, shared place, relation, pressure — into at most the cell
budget, giving singleton cells to the highest-pressure and highest-debt
subjects and grouping the rest by adjacency. The cover is derived and
disposable; the kernel never sees it. Populations and institutions are
subjects in their own right, and `IndividuationRequired` still fires when
a pressure needs a person no slice can bear.
2. **Zero-inference motion.** `Time.advance` applies every due clock
deterministically: a `Routine` commitment whose preconditions hold
auto-fulfills, so ordinary life proceeds for unattended subjects; an
@ -410,16 +432,21 @@ layer:
readiness, and time since last opportunity, so every subject receives
direct attention within bounded ticks absent a mandatory foreground
override.
4. **Batched representation.** The runner may present several
`OperationalAgent` opportunities that share a place or pressure to one
inference. Each returned proposal is attributed to its own controller and
verified separately by the action pipeline. The batch is derived,
disposable, and invisible to the kernel; it changes representation, never
authority, and can emit no batch-owned mutation.
4. **Cell resolution.** A singleton cell is detail focus: a `NarrativePersona`
controller receives its prose membrane, an `OperationalAgent` its full
permissioned view. A grouped cell is one inference over its constituents'
partitioned views — each constituent's private knowledge stays labeled as
its own, never unioned — returning zero or one attributed proposal per
constituent, each verified separately by the action pipeline. A
`NarrativePersona` subject in a grouped cell is represented operationally
at coarse resolution this tick; its controller, scope, and authority do not
change. The cell can emit no cell-owned mutation, and no subject is ever
spoken for by an arena.
A `NarrativePersona` subject not selected for attention does not act this
tick; its collective acts at the collective level and reaches it through
typed commitments. No subject is ever spoken for by an arena.
Debt rotation makes the choke fair: with N subjects and budget B, every
subject reaches a singleton cell within about N/B ticks absent a mandatory
foreground override, and the deterministic clocks keep its commitments moving
in between.
## What stays open
@ -432,10 +459,11 @@ that are structural rather than promissory:
anything; the Interpreter lowers what the vocabulary can carry and records
exact gaps for the rest. Unrepresentable meaning is preserved as evidence,
never rejected or invented.
- **Structure is sparse.** A world needs only enough components for its current
horizon. Ordinary life is a recurring `Commitment`; a rite is a `Channel`
with a reach set; a private joke is `PersonaMaterial`. None of that requires
a count to be satisfied first.
- **Structure is sparse; liveness is authored.** A world activates with enough
components for its current horizon, and grows toward the scale it was given.
Ordinary life is a recurring `Commitment`; a rite is a `Channel` with a
reach set; a private joke is `PersonaMaterial`. None of that waits on a
count, and no count admits any of it.
The ontology does bound one thing on purpose: a consequence exists only if a
component changed. Speech cannot imply an uncommitted effect. That is what
@ -470,8 +498,8 @@ Deleted before replacement behavior is added, with no compatibility path:
under 1 patch primitive, replacing both the mutation enum and the separate
outcome-effect sum;
- 5 qualification and verification types plus 1 outcome resolver → 0;
- elaborator titles, waves, quotas, demand, deficit, and debt rotation → 4
derived boundaries and 1 seed request;
- elaborator titles, semantic qualification, and round budgets → 4 derived
boundaries, 1 seed request, and 1 structurally counted scale deficit;
- 2 seed admission paths → 1;
- N model-facing tool schemas hand-written per stage → 1 derived catalog.
@ -543,3 +571,10 @@ Beyond the existing kernel proofs, focused tests must prove:
20. A batched inference returning proposals for several controllers commits
only those that pass their own precondition and effect checks; a proposal
attributed to a controller outside the batch is rejected.
21. With N qualified subjects and cell budget B, the derived cover contains
every active subject, at most B cells, and the highest-pressure and
highest-debt subjects as singletons; every subject reaches a singleton
within bounded ticks.
22. A subject counts toward the scale deficit only when active with one
controller, one `Goal`, and one executable affordance; a rejected patch
leaves the deficit unchanged and visible.

View file

@ -268,8 +268,13 @@ Implementation order, each pass landing tests before the next begins:
6. `Knowledge`, `Channel`, `Fact` standing, and scoped-projection non-leakage.
7. `Commitment`, `Pressure`, obligation → pressure → opportunity flow, and
boundary derivation.
8. `AdmitPatch` with boundary and seed-request binding, and the derived
elaborator tool catalog.
8. `AdmitPatch` with boundary, seed-request, and scale-deficit binding;
`WorldScaleIntent` with structural qualification and per-jurisdiction
deficit derivation; and the derived elaborator tool catalog.
9. Budgeted connected cover: agency-graph partition under the cell budget,
singleton detail focus, grouped coarse cells with partitioned views and
per-constituent attribution, debt rotation. Scheduler-owned; the kernel
never sees a cell.
The deployment cutover (step 5) is deferred behind this stage, not cancelled. No
world acceptance run may start while Yggdrasil serves the legacy body.

View file

@ -33,4 +33,5 @@
{"note": "Odin 27cc815 consumes CultCache and CultNet from CultLib; vendor/cultmesh-rs is the last fork and itself consumes CultLib, so exactly one version of each crate spans the graph. The commit had to carry the operator's in-flight CultMesh RUDP document server because it is a prerequisite rather than a coincidence: the previously committed CultMesh calls assume_connected(), a CultNet method the fork carried and CultLib does not, so the old code cannot build against CultLib at all. That was established by reverting the file and watching it fail, after an attempt to split the repoint into two independently building commits. The same test was run on the in-flight idunn-daemon work and it passed, so those five files were left uncommitted and the committed tree was verified to build without them. Three CultLib API differences needed adapting in Odin: transport options carry a reconnect_policy the fork lacked at seven sites, create_ack builds from ack state and cannot fail, and the transport profile owns each channel's reliable expiry. Odin's Idunn recipe still declares required_gitlinks = [vendor/cultnet-rs] and will refuse admission until that line is dropped; the fix exists in the working tree but the deployment directory is untracked, so it could not be committed. Source custody for the core stack now rests on the revision pinned in Cargo.lock inside the frozen source tree rather than on a gitlink Idunn verifies directly.", "status": "ok", "ts": "2026-09-04T12:56:04+00:00", "type": "architecture"}
{"note": "Swarm triage: every repo under F:/Projects is now clean and pushed. Two findings bear directly on Ghostlight's deployment gate, both caused by the core-stack consolidation removing submodules that Idunn was still told to expect. Odin's deployment/idunn/recipe.toml declared required_gitlinks = [vendor/cultnet-rs], and gamecult-ops' operator binding templates declared gitlinks for vendor/cultcache-rs and vendor/cultnet-rs on codex-connector and vendor/cultnet-rs on odin; Idunn would have refused to admit those targets for gitlinks it could not find. All are corrected and committed at Odin eedce4f and gamecult-ops 8f7ae2a. Ghostlight's own binding is untouched because vendor/cultcache-py and vendor/eve still exist. The rest of the triage: Odin eedce4f also lands 4,167 lines of real in-flight work including UDP route actuation via RouteBinding::stable_socket and an NginxStreamUdp driver, plus the new odin-daemon crate, which cannot compile on Windows because it reads systemd listen file descriptors through std::os::fd, so Linux CI is its first witness. Epiphany 616a2c8e was an interrupted cargo fmt run rather than a feature, finished rather than reverted. Aetheria reclaimed about 1.6GB of scratch checkouts and sandboxed toolchain caches, all verified clean with no unpushed commits first, and the cleanup was scoped to the debris so Unity's Library and Build survived. Two apparently stranded commits turned out to be duplicates already upstream under different SHAs, found by patch-id rather than by subject.", "status": "ok", "ts": "2026-09-04T13:17:04+00:00", "type": "architecture"}
{"note": "Run 115 root cause is vocabulary-shaped, not model-shaped. Legacy transition.rs used caller-supplied SubjectRef{kind,id:String}, two-phase AdmitEntity{initial_components}, and a flat Vec<PermittedWorldMutation>, so a dangling reference like inst:kharad-road-keepers -> loc:kharad-rhythm-road was a runtime discovery rather than an unrepresentable input; reconciliation existed only to repair that class and exhausted after four steps. Depth lived in free strings (posture, resource_kind, capability_id, persistent_features), so the prior attempt to fix shallowness added model tribunals (ElaboratorTitle, WorldComplexity*Qualification, *Verification) as compensators for an ontology with nowhere to hold depth. Adopted cut: reducer-issued typed ID namespaces, draft handles resolved inside one closed WorldPatch before any ID allocates, twelve decision-constraining components, and elaboration that answers a derived CausalBoundary instead of running waves and quotas. Recorded in docs/architecture/ghostlight-world-ontology.md.", "status": "ok", "ts": "2026-09-04T13:39:08+00:00", "type": "research"}
{"ts": "2026-09-04T14:01:12+00:00", "type": "research", "status": "ok", "note": "Ontology v2 unifies elaboration and character action under one WorldPatch and one deterministic verifier. Three decisions change future belief: (1) affordances are world-authored data (preconditions, effect slots, weighted outcome bands) over a closed 29-operation kernel set, so genre lives in the seed and the kernel never learns one; (2) uncertainty is resolved by kernel entropy seeded from world/revision/command, so no model ever chooses success, which deletes the legacy wave-level outcome resolver; (3) proposals bind to a scope digest of the components their verification reads rather than the whole state digest, so eight elaborator loops and many subjects do not serialize on one revision, replacing the stale-means-discard rule. Elaborator tools are a derived projection of the operation set and cannot drift. ghostlight-multiresolution-agency.md is demoted to teardown evidence keeping only resumable sessions, compact drafts, and the complete mismatch set."}
{"note": "Ontology v2 unifies elaboration and character action under one WorldPatch and one deterministic verifier. Three decisions change future belief: (1) affordances are world-authored data (preconditions, effect slots, weighted outcome bands) over a closed 29-operation kernel set, so genre lives in the seed and the kernel never learns one; (2) uncertainty is resolved by kernel entropy seeded from world/revision/command, so no model ever chooses success, which deletes the legacy wave-level outcome resolver; (3) proposals bind to a scope digest of the components their verification reads rather than the whole state digest, so eight elaborator loops and many subjects do not serialize on one revision, replacing the stale-means-discard rule. Elaborator tools are a derived projection of the operation set and cannot drift. ghostlight-multiresolution-agency.md is demoted to teardown evidence keeping only resumable sessions, compact drafts, and the complete mismatch set.", "status": "ok", "ts": "2026-09-04T14:01:12+00:00", "type": "research"}
{"ts": "2026-09-04T14:14:10+00:00", "type": "research", "status": "ok", "note": "Operator correction, 2026-09-04: the 2,400-subject / 240-cell / 10% cover profile is a design target, not a load fixture. A world feels alive only when actors at every level pursue their own goals; that requires generating that detail first and then choking multiresolution simulation so attention is scarce and selection is forced. The mvp doc sentence calling the profile \"test data, not a production elaboration target\" was teardown-era text, not operator design, and is amended. Ontology v2 now carries: an authored WorldScaleIntent with a structurally counted deficit (qualified subject = active, one controller, one Goal commitment, one affordance) that elaborators pursue after boundaries; a budgeted connected cover every tick with singleton detail cells and grouped coarse cells; per-constituent attribution and partitioned knowledge in grouped cells; debt rotation. Still deleted: gestalt as canonical identity, arena knowledge union, semantic qualification and verification models, fission quotas as mutation, string identifiers."}

View file

@ -35,3 +35,4 @@
{"key": "2026-09-04T131704Z0000-0033-28cbf7be3c30", "payload": "eyJub3RlIjogIlN3YXJtIHRyaWFnZTogZXZlcnkgcmVwbyB1bmRlciBGOi9Qcm9qZWN0cyBpcyBub3cgY2xlYW4gYW5kIHB1c2hlZC4gVHdvIGZpbmRpbmdzIGJlYXIgZGlyZWN0bHkgb24gR2hvc3RsaWdodCdzIGRlcGxveW1lbnQgZ2F0ZSwgYm90aCBjYXVzZWQgYnkgdGhlIGNvcmUtc3RhY2sgY29uc29saWRhdGlvbiByZW1vdmluZyBzdWJtb2R1bGVzIHRoYXQgSWR1bm4gd2FzIHN0aWxsIHRvbGQgdG8gZXhwZWN0LiBPZGluJ3MgZGVwbG95bWVudC9pZHVubi9yZWNpcGUudG9tbCBkZWNsYXJlZCByZXF1aXJlZF9naXRsaW5rcyA9IFt2ZW5kb3IvY3VsdG5ldC1yc10sIGFuZCBnYW1lY3VsdC1vcHMnIG9wZXJhdG9yIGJpbmRpbmcgdGVtcGxhdGVzIGRlY2xhcmVkIGdpdGxpbmtzIGZvciB2ZW5kb3IvY3VsdGNhY2hlLXJzIGFuZCB2ZW5kb3IvY3VsdG5ldC1ycyBvbiBjb2RleC1jb25uZWN0b3IgYW5kIHZlbmRvci9jdWx0bmV0LXJzIG9uIG9kaW47IElkdW5uIHdvdWxkIGhhdmUgcmVmdXNlZCB0byBhZG1pdCB0aG9zZSB0YXJnZXRzIGZvciBnaXRsaW5rcyBpdCBjb3VsZCBub3QgZmluZC4gQWxsIGFyZSBjb3JyZWN0ZWQgYW5kIGNvbW1pdHRlZCBhdCBPZGluIGVlZGNlNGYgYW5kIGdhbWVjdWx0LW9wcyA4ZjdhZTJhLiBHaG9zdGxpZ2h0J3Mgb3duIGJpbmRpbmcgaXMgdW50b3VjaGVkIGJlY2F1c2UgdmVuZG9yL2N1bHRjYWNoZS1weSBhbmQgdmVuZG9yL2V2ZSBzdGlsbCBleGlzdC4gVGhlIHJlc3Qgb2YgdGhlIHRyaWFnZTogT2RpbiBlZWRjZTRmIGFsc28gbGFuZHMgNCwxNjcgbGluZXMgb2YgcmVhbCBpbi1mbGlnaHQgd29yayBpbmNsdWRpbmcgVURQIHJvdXRlIGFjdHVhdGlvbiB2aWEgUm91dGVCaW5kaW5nOjpzdGFibGVfc29ja2V0IGFuZCBhbiBOZ2lueFN0cmVhbVVkcCBkcml2ZXIsIHBsdXMgdGhlIG5ldyBvZGluLWRhZW1vbiBjcmF0ZSwgd2hpY2ggY2Fubm90IGNvbXBpbGUgb24gV2luZG93cyBiZWNhdXNlIGl0IHJlYWRzIHN5c3RlbWQgbGlzdGVuIGZpbGUgZGVzY3JpcHRvcnMgdGhyb3VnaCBzdGQ6Om9zOjpmZCwgc28gTGludXggQ0kgaXMgaXRzIGZpcnN0IHdpdG5lc3MuIEVwaXBoYW55IDYxNmEyYzhlIHdhcyBhbiBpbnRlcnJ1cHRlZCBjYXJnbyBmbXQgcnVuIHJhdGhlciB0aGFuIGEgZmVhdHVyZSwgZmluaXNoZWQgcmF0aGVyIHRoYW4gcmV2ZXJ0ZWQuIEFldGhlcmlhIHJlY2xhaW1lZCBhYm91dCAxLjZHQiBvZiBzY3JhdGNoIGNoZWNrb3V0cyBhbmQgc2FuZGJveGVkIHRvb2xjaGFpbiBjYWNoZXMsIGFsbCB2ZXJpZmllZCBjbGVhbiB3aXRoIG5vIHVucHVzaGVkIGNvbW1pdHMgZmlyc3QsIGFuZCB0aGUgY2xlYW51cCB3YXMgc2NvcGVkIHRvIHRoZSBkZWJyaXMgc28gVW5pdHkncyBMaWJyYXJ5IGFuZCBCdWlsZCBzdXJ2aXZlZC4gVHdvIGFwcGFyZW50bHkgc3RyYW5kZWQgY29tbWl0cyB0dXJuZWQgb3V0IHRvIGJlIGR1cGxpY2F0ZXMgYWxyZWFkeSB1cHN0cmVhbSB1bmRlciBkaWZmZXJlbnQgU0hBcywgZm91bmQgYnkgcGF0Y2gtaWQgcmF0aGVyIHRoYW4gYnkgc3ViamVjdC4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDRUMTM6MTc6MDQrMDA6MDAiLCAidHlwZSI6ICJhcmNoaXRlY3R1cmUifQ==", "stored_at": "2026-09-04T13:17:04.688694+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-04T133908Z0000-0034-4558985fc604", "payload": "eyJub3RlIjogIlJ1biAxMTUgcm9vdCBjYXVzZSBpcyB2b2NhYnVsYXJ5LXNoYXBlZCwgbm90IG1vZGVsLXNoYXBlZC4gTGVnYWN5IHRyYW5zaXRpb24ucnMgdXNlZCBjYWxsZXItc3VwcGxpZWQgU3ViamVjdFJlZntraW5kLGlkOlN0cmluZ30sIHR3by1waGFzZSBBZG1pdEVudGl0eXtpbml0aWFsX2NvbXBvbmVudHN9LCBhbmQgYSBmbGF0IFZlYzxQZXJtaXR0ZWRXb3JsZE11dGF0aW9uPiwgc28gYSBkYW5nbGluZyByZWZlcmVuY2UgbGlrZSBpbnN0OmtoYXJhZC1yb2FkLWtlZXBlcnMgLT4gbG9jOmtoYXJhZC1yaHl0aG0tcm9hZCB3YXMgYSBydW50aW1lIGRpc2NvdmVyeSByYXRoZXIgdGhhbiBhbiB1bnJlcHJlc2VudGFibGUgaW5wdXQ7IHJlY29uY2lsaWF0aW9uIGV4aXN0ZWQgb25seSB0byByZXBhaXIgdGhhdCBjbGFzcyBhbmQgZXhoYXVzdGVkIGFmdGVyIGZvdXIgc3RlcHMuIERlcHRoIGxpdmVkIGluIGZyZWUgc3RyaW5ncyAocG9zdHVyZSwgcmVzb3VyY2Vfa2luZCwgY2FwYWJpbGl0eV9pZCwgcGVyc2lzdGVudF9mZWF0dXJlcyksIHNvIHRoZSBwcmlvciBhdHRlbXB0IHRvIGZpeCBzaGFsbG93bmVzcyBhZGRlZCBtb2RlbCB0cmlidW5hbHMgKEVsYWJvcmF0b3JUaXRsZSwgV29ybGRDb21wbGV4aXR5KlF1YWxpZmljYXRpb24sICpWZXJpZmljYXRpb24pIGFzIGNvbXBlbnNhdG9ycyBmb3IgYW4gb250b2xvZ3kgd2l0aCBub3doZXJlIHRvIGhvbGQgZGVwdGguIEFkb3B0ZWQgY3V0OiByZWR1Y2VyLWlzc3VlZCB0eXBlZCBJRCBuYW1lc3BhY2VzLCBkcmFmdCBoYW5kbGVzIHJlc29sdmVkIGluc2lkZSBvbmUgY2xvc2VkIFdvcmxkUGF0Y2ggYmVmb3JlIGFueSBJRCBhbGxvY2F0ZXMsIHR3ZWx2ZSBkZWNpc2lvbi1jb25zdHJhaW5pbmcgY29tcG9uZW50cywgYW5kIGVsYWJvcmF0aW9uIHRoYXQgYW5zd2VycyBhIGRlcml2ZWQgQ2F1c2FsQm91bmRhcnkgaW5zdGVhZCBvZiBydW5uaW5nIHdhdmVzIGFuZCBxdW90YXMuIFJlY29yZGVkIGluIGRvY3MvYXJjaGl0ZWN0dXJlL2dob3N0bGlnaHQtd29ybGQtb250b2xvZ3kubWQuIiwgInN0YXR1cyI6ICJvayIsICJ0cyI6ICIyMDI2LTA5LTA0VDEzOjM5OjA4KzAwOjAwIiwgInR5cGUiOiAicmVzZWFyY2gifQ==", "stored_at": "2026-09-04T13:39:08.623701+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-04T140112Z0000-0035-4f8eaa7056cc", "payload": "eyJub3RlIjogIk9udG9sb2d5IHYyIHVuaWZpZXMgZWxhYm9yYXRpb24gYW5kIGNoYXJhY3RlciBhY3Rpb24gdW5kZXIgb25lIFdvcmxkUGF0Y2ggYW5kIG9uZSBkZXRlcm1pbmlzdGljIHZlcmlmaWVyLiBUaHJlZSBkZWNpc2lvbnMgY2hhbmdlIGZ1dHVyZSBiZWxpZWY6ICgxKSBhZmZvcmRhbmNlcyBhcmUgd29ybGQtYXV0aG9yZWQgZGF0YSAocHJlY29uZGl0aW9ucywgZWZmZWN0IHNsb3RzLCB3ZWlnaHRlZCBvdXRjb21lIGJhbmRzKSBvdmVyIGEgY2xvc2VkIDI5LW9wZXJhdGlvbiBrZXJuZWwgc2V0LCBzbyBnZW5yZSBsaXZlcyBpbiB0aGUgc2VlZCBhbmQgdGhlIGtlcm5lbCBuZXZlciBsZWFybnMgb25lOyAoMikgdW5jZXJ0YWludHkgaXMgcmVzb2x2ZWQgYnkga2VybmVsIGVudHJvcHkgc2VlZGVkIGZyb20gd29ybGQvcmV2aXNpb24vY29tbWFuZCwgc28gbm8gbW9kZWwgZXZlciBjaG9vc2VzIHN1Y2Nlc3MsIHdoaWNoIGRlbGV0ZXMgdGhlIGxlZ2FjeSB3YXZlLWxldmVsIG91dGNvbWUgcmVzb2x2ZXI7ICgzKSBwcm9wb3NhbHMgYmluZCB0byBhIHNjb3BlIGRpZ2VzdCBvZiB0aGUgY29tcG9uZW50cyB0aGVpciB2ZXJpZmljYXRpb24gcmVhZHMgcmF0aGVyIHRoYW4gdGhlIHdob2xlIHN0YXRlIGRpZ2VzdCwgc28gZWlnaHQgZWxhYm9yYXRvciBsb29wcyBhbmQgbWFueSBzdWJqZWN0cyBkbyBub3Qgc2VyaWFsaXplIG9uIG9uZSByZXZpc2lvbiwgcmVwbGFjaW5nIHRoZSBzdGFsZS1tZWFucy1kaXNjYXJkIHJ1bGUuIEVsYWJvcmF0b3IgdG9vbHMgYXJlIGEgZGVyaXZlZCBwcm9qZWN0aW9uIG9mIHRoZSBvcGVyYXRpb24gc2V0IGFuZCBjYW5ub3QgZHJpZnQuIGdob3N0bGlnaHQtbXVsdGlyZXNvbHV0aW9uLWFnZW5jeS5tZCBpcyBkZW1vdGVkIHRvIHRlYXJkb3duIGV2aWRlbmNlIGtlZXBpbmcgb25seSByZXN1bWFibGUgc2Vzc2lvbnMsIGNvbXBhY3QgZHJhZnRzLCBhbmQgdGhlIGNvbXBsZXRlIG1pc21hdGNoIHNldC4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDRUMTQ6MDE6MTIrMDA6MDAiLCAidHlwZSI6ICJyZXNlYXJjaCJ9", "stored_at": "2026-09-04T14:01:12.055210+00:00", "type": "ghostlight.evidence_record.v0"}
{"key": "2026-09-04T141410Z0000-0036-a61849b93cf5", "payload": "eyJub3RlIjogIk9wZXJhdG9yIGNvcnJlY3Rpb24sIDIwMjYtMDktMDQ6IHRoZSAyLDQwMC1zdWJqZWN0IC8gMjQwLWNlbGwgLyAxMCUgY292ZXIgcHJvZmlsZSBpcyBhIGRlc2lnbiB0YXJnZXQsIG5vdCBhIGxvYWQgZml4dHVyZS4gQSB3b3JsZCBmZWVscyBhbGl2ZSBvbmx5IHdoZW4gYWN0b3JzIGF0IGV2ZXJ5IGxldmVsIHB1cnN1ZSB0aGVpciBvd24gZ29hbHM7IHRoYXQgcmVxdWlyZXMgZ2VuZXJhdGluZyB0aGF0IGRldGFpbCBmaXJzdCBhbmQgdGhlbiBjaG9raW5nIG11bHRpcmVzb2x1dGlvbiBzaW11bGF0aW9uIHNvIGF0dGVudGlvbiBpcyBzY2FyY2UgYW5kIHNlbGVjdGlvbiBpcyBmb3JjZWQuIFRoZSBtdnAgZG9jIHNlbnRlbmNlIGNhbGxpbmcgdGhlIHByb2ZpbGUgXCJ0ZXN0IGRhdGEsIG5vdCBhIHByb2R1Y3Rpb24gZWxhYm9yYXRpb24gdGFyZ2V0XCIgd2FzIHRlYXJkb3duLWVyYSB0ZXh0LCBub3Qgb3BlcmF0b3IgZGVzaWduLCBhbmQgaXMgYW1lbmRlZC4gT250b2xvZ3kgdjIgbm93IGNhcnJpZXM6IGFuIGF1dGhvcmVkIFdvcmxkU2NhbGVJbnRlbnQgd2l0aCBhIHN0cnVjdHVyYWxseSBjb3VudGVkIGRlZmljaXQgKHF1YWxpZmllZCBzdWJqZWN0ID0gYWN0aXZlLCBvbmUgY29udHJvbGxlciwgb25lIEdvYWwgY29tbWl0bWVudCwgb25lIGFmZm9yZGFuY2UpIHRoYXQgZWxhYm9yYXRvcnMgcHVyc3VlIGFmdGVyIGJvdW5kYXJpZXM7IGEgYnVkZ2V0ZWQgY29ubmVjdGVkIGNvdmVyIGV2ZXJ5IHRpY2sgd2l0aCBzaW5nbGV0b24gZGV0YWlsIGNlbGxzIGFuZCBncm91cGVkIGNvYXJzZSBjZWxsczsgcGVyLWNvbnN0aXR1ZW50IGF0dHJpYnV0aW9uIGFuZCBwYXJ0aXRpb25lZCBrbm93bGVkZ2UgaW4gZ3JvdXBlZCBjZWxsczsgZGVidCByb3RhdGlvbi4gU3RpbGwgZGVsZXRlZDogZ2VzdGFsdCBhcyBjYW5vbmljYWwgaWRlbnRpdHksIGFyZW5hIGtub3dsZWRnZSB1bmlvbiwgc2VtYW50aWMgcXVhbGlmaWNhdGlvbiBhbmQgdmVyaWZpY2F0aW9uIG1vZGVscywgZmlzc2lvbiBxdW90YXMgYXMgbXV0YXRpb24sIHN0cmluZyBpZGVudGlmaWVycy4iLCAic3RhdHVzIjogIm9rIiwgInRzIjogIjIwMjYtMDktMDRUMTQ6MTQ6MTArMDA6MDAiLCAidHlwZSI6ICJyZXNlYXJjaCJ9", "stored_at": "2026-09-04T14:14:10.337953+00:00", "type": "ghostlight.evidence_record.v0"}