project

Impossible Archive Engine

A C++ fictional-history engine separating hidden causes, unreliable evidence, and changing interpretations, developed through narrow, auditable implementation slices.

I wanted an archive full of histories that could disagree without the world behind them becoming arbitrary. A damaged manuscript, a ruin, a forged decree, and a map drawn by someone who misunderstood it should not be four random lore drops. I wanted an underlying sequence of events that could produce all four, while characters in the world would still have to argue from incomplete evidence.

That premise kept turning into implementation boundaries. As the C++ work advanced, I pressed for artifacts to carry provenance and for interpretations to remain separate from hidden causes. A possibility could be loaded for inspection without becoming the active world. A mutation had to be narrow enough that the engine could explain what changed afterward. The project became a series of small, auditable pieces because that was the only way the fiction’s uncertainty could remain coherent rather than simply confusing.

Three layers of history

The original brief separated world generation, archive generation, and interpretation.

Layer What it represents
Hidden history Events, entities, and causal relationships
Public evidence Artifacts shaped by knowledge, motive, preservation, and error
Interpretation Theories formed from the evidence available to a particular reader

An inscription could be wrong without the hidden history becoming inconsistent. The wrongness needed a cause: forgery, mistranslation, damage, mistaken dating, later interpolation, deliberate suppression, or uncertainty. An unexplained contradiction was a generation problem to detect, not a convenient way to make the world mysterious.

Temporal constraints followed from that separation. An artifact could not casually mention a person, word, or technology that did not exist when it was made. A later copy or a false date might explain the appearance, but that explanation had to be represented.

What an artifact needed to carry

The proposed metadata included its creator or attributed creator, true and claimed creation dates, discovery date, place, language, preservation quality, bias, reliability, connection to hidden truth, and contradiction links. Interpretations would cite the artifacts supporting them.

That structure creates several different questions. What really happened is a hidden-history query. What a scholar could believe at a particular time depends on access to evidence. Whether a public account is convincing is different again from whether it is correct.

New discoveries should change interpretations without silently rewriting the canonical past. This is the central rule that makes discovery meaningful.

A concrete mutation boundary

The later C++ work arrived in many small implementation reports. One useful example is v24, Controlled Hidden Cluster Materialization. Its reported entry point accepted an engine state, a proposed hidden timeline cluster, and an access level.

The reported sequence was explicit:

check authority
→ evaluate the proposal again
→ snapshot state
→ insert proposed entities and events
→ validate hidden graph
→ validate the full archive
→ commit or roll back

Public and scholar access could not use that operation to change hidden truth. Curator or debug access could proceed through the validation path. The report also described rollback for duplicate deterministic materialization and redaction of inserted hidden identifiers from lower-access output.

It reported C++17, C++20, and strict-warning builds with self-tests passing, while saying that a completed sanitizer pass had not been run for that slice. Those remain implementation reports supplied during development, not checks rerun for this article.

Loading a possibility was not activating it

Another instructive boundary appeared in v28.0. CivilizationSpecFragment records could be loaded, inspected, and validated, but were inert. The reported slice did not resolve compositions, apply patches, alter runtime selection, generate from fragments, or mutate the archive.

This distinction prevented a catalog of possible variations from being mistaken for an active world-generation system. I also explicitly corrected an advisory conversation that had begun treating persistent runtime ideas as implemented features. Discussion was not implementation.

v28.10 then tightened candidate-artifact proposal audits. The report introduced explicit policy thresholds, deterministic reason codes, and required revisions for nonpassing audits. Its default summary contained 35 proposals requiring curator review, with generation, materialization, and archive mutation all disabled.

That was useful progress in the control and review layer, even though it did not generate new public artifact text.

What the work was building toward

The wider concept could support a disputed translation, museum exhibit, new inscription, reconstructed city, or debate between fictional historians. Each would have to remain consistent with the engine’s evidence and access rules.

The selected history later reached a request to audit v28.13 before v29. It does not establish that v29 was implemented. I also made clear that the hardening work was intended to strengthen the development base, not announce a release.

I kept returning to one standard: every fragment should be able to mislead a character without leaving the engine unable to say where it came from. The C++ slices were an attempt to make that standard enforceable, one artifact and one change at a time.

Related rabbit holes

PublishedOct 3, 2026
note / experiment

A thin-client Linux experiment

A network-boot question became a comparison of separate remote desktops and shared physical desktops, ending with a usable Linux thin-client session and working audio.

Documented activity: September 20, 2026 – September 26, 2026
PublishedOct 3, 2026
note / investigation

Assembling a Hytale technology-mod collection

A proposed technology-mod stack became a practical test of what was installed, enabled for a world, and actually visible in the workbench.

Documented activity: September 15, 2026 – September 17, 2026