Source Reconstruction 2.1 is the compatible follow-up to the published 2.0
tag. It does not redefine the USA/European preservation profiles, their ROM
identities, runtime modes, authoring schemas, or fixed-layout capacity rules.
Those contracts remain anchored by source-reconstruction-2.0; the 2.1
manifest hashes every inherited section and rejects silent baseline drift.
The accepted compatible delta adds audible and channel-selectable Sound
Studio playback, more faithful native level previews, decoded procedural bonus
rooms, and a consolidated semantic assembly layout. Repository preparation adds
responsibility-owned Make fragments, categorized command help, a ROM-less
scaffold gate, mirrored tool/test responsibility packages behind
scripts/run.py, and a self-contained release manifest whose claims resolve
only to project-owned evidence. A separate workstation smoke now drives Save,
Build, Preview
or Play, and dirty-close behavior through all four public studios for both
accepted profiles.
The reader-facing documentation was reviewed as one corpus. Short routine notes
are consolidated into subsystem and lifecycle guides, the index follows reader
tasks, and config/reconstruction/documentation_corpus.json records every
document, retained filename family, consolidation, and size exception. The sole
label rename registry now lives with reconstruction configuration at
config/reconstruction/label_renames.json.
The full substantive commit interval starts immediately after the annotated 2.0
tag at de0b7c764406f5ec2c6c887c0c19272d53f8cae9 and currently ends at
579cd28e04e73ca64e2bdb182f6eadfae8234631. The 30 commits in that interval
cover every source, tooling, evidence, and documentation change accepted for the
candidate. Later commits may change only the release manifest and this boundary
document unless the terminal commit and count are advanced again.
The compatible manifest is self-describing even though its preservation facts
remain inherited. It repeats the effective profile inventory, direct runtime
matrix, toolchain reference, artifact identities, and licensing declarations
from the immutable 2.0 manifest. Every requirement uses structured
targets, files, scenarios, and artifacts evidence; the minor aggregate
is satisfied by the complete compatible-minor gate.
Important authoring and evidence outputs are now atomically published through
a shared same-directory temporary writer. The same policy covers runtime Lua
results, and make lint prevents a new Python tool from bypassing the writer.
Public text is also checked as a repository boundary. make validate-public-text scans tracked text and candidate-reachable commit metadata,
paths, and historical public-text blobs so removed drafts cannot silently leave
non-English material in the release history.
Python tools and tests now occupy mirrored authoring, build, runtime, and
validation packages. Public Make targets dispatch them through the stable
scripts/run.py entry point, and make lint rejects new uncategorized Python
tools. Historical 1.0 and 2.0 tagged trees remain immutable; the current
project-owned manifest snapshots use neutral release-line metadata and resolve
former script paths through an explicit compatibility map.
Configuration follows the same ownership model: authoring, debugger,
reconstruction, and validation manifests live in named subdirectories, while
shared revision, toolchain, and release contracts stay at config/ root.
make lint rejects a new uncategorized JSON file. The published 2.0 tag and
its recorded tagged manifest remain immutable; current validators compare its
project-owned fields through the same compatibility map used for moved tools.
Use the fast contract audit while developing:
make source-2-minor-auditThe complete compatible-minor gate first executes the accepted 2.0 regression
gate, including the transitive Source 1.0 checks, and only then validates the
2.1 delta. It also runs make lint as a real public command inside a disposable
tracked-only clone, proving that the documented interface does not depend on
untracked local files or mutate a clean checkout. Before that command smoke,
the gate also exercises the editor workstation actions for USA and Europe:
make source-2-minor-checkThe editor interaction check is also available directly as
make editor-ui-smoke-profiles; select one revision with
make editor-ui-smoke-profile PROFILE=usa|europe.
source-2-minor-pre-tag-check validates the clean tag-ready candidate;
source-2-minor-tag-check is reserved for its future annotated published tag.
The Japanese profile, systematic relocation, expanded ROMs, and sibling
engines remain outside this compatible release.