* feat(i18n): key translation pairing records by heading section Replace the whole-file blob hashes in *.i18n.yaml with one entry per heading section that still holds language-specific content, keyed by the English heading-slug path. Blocks identical across the pair (generated table rows, code blocks, shared regions) stay out of the hash, so edits to different sections and identical regenerations merge with Git's default text merge, including on GitHub. Remove the dsh-translation-pairing merge driver, its resolver command and installer wiring; gen-translation-brief recovers last-confirmed text from commit history. Migrate all active records, archive the superseded Agent Note, and record the replayed conflict reduction in the new one. * test(i18n): refresh translation prompt snapshot for the terminology note * feat(i18n): exclude only code blocks and generated regions from pairing records Replace byte-equality masking with an explicit rule: a record hash skips fenced code blocks and BEGIN/END GENERATED regions, the two kinds of content the pairing gate already requires to be identical on both sides. Move generated data into regions written into both pages: gen-config-catalog renders both languages and the record with per-package regions labelled by code identifiers; gen-module-graph keeps its table in a region; gen-doc-graphs splices the event matrix regions into the Chinese page. Add a generic region splice beside the region grammar.
description
| description |
|---|
| Browse Session persistence-type changes across every captured DSH alpha/RC tag and validate the historical snapshots offline. |
Persistence changes across DSH prereleases
English | 中文
Summary
This archive provides an approximate historical view of 26 DSH alpha/RC tags and their 25 adjacent transitions. Each release includes a short explanation, source tag, before/after digests, and complete snapshots of changed types for reading and format validation. It does not establish historical runtime compatibility or replace current-source acknowledgements.
Table of Contents
Archived releases
The manifest records every DSH alpha/RC tag captured on 2026-09-12: 16 have release records, and the earliest 10 are tag-only. Entries follow semantic-version order; absent tags are not invented. The first entry establishes the historical starting point, so its change count includes every root.
| Tag | Source date (UTC) | Session version | Roots / types | Changed roots |
|---|---|---|---|---|
| dsh-v0.0.1-rc.1 | 2026-08-10 | 0 | 42 / 341 | 42 |
| dsh-v0.0.1-rc.2 | 2026-08-11 | 0 | 47 / 374 | 45 |
| dsh-v0.0.1-rc.3 | 2026-08-12 | 0 | 47 / 374 | 12 |
| dsh-v0.0.1-rc.4 | 2026-08-12 | 0 | 47 / 374 | 0 |
| dsh-v0.0.1-rc.5 | 2026-08-12 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.1 | 2026-08-13 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.2 | 2026-08-13 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.3 | 2026-08-13 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.5 | 2026-08-13 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.6 | 2026-08-13 | 0 | 47 / 374 | 0 |
| dsh-v0.1.0-rc.7 | 2026-08-17 | 0 | 47 / 376 | 1 |
| dsh-v0.1.0-rc.8 | 2026-08-19 | 0 | 51 / 403 | 8 |
| dsh-v0.1.1-rc.1 | 2026-08-21 | 0 | 51 / 407 | 1 |
| dsh-v0.1.1-rc.2 | 2026-08-21 | 0 | 51 / 404 | 10 |
| dsh-v0.1.2-alpha.1 | 2026-08-27 | 0 | 54 / 417 | 52 |
| dsh-v0.1.2-alpha.2 | 2026-08-30 | 0 | 54 / 417 | 52 |
| dsh-v0.1.2-alpha.3 | 2026-08-31 | 0 | 54 / 417 | 0 |
| dsh-v0.1.2-alpha.4 | 2026-09-01 | 0 | 54 / 415 | 4 |
| dsh-v0.1.2-alpha.5 | 2026-09-02 | 0 | 54 / 415 | 0 |
| dsh-v0.1.2-rc.1 | 2026-09-03 | 0 | 54 / 415 | 0 |
| dsh-v0.1.3-alpha.1 | 2026-09-04 | 2 | 54 / 425 | 17 |
| dsh-v0.1.3-alpha.2 | 2026-09-07 | 2 | 56 / 435 | 2 |
| dsh-v0.1.5-alpha.1 | 2026-09-08 | 3 | 57 / 443 | 12 |
| dsh-v0.1.5-alpha.2 | 2026-09-09 | 3 | 59 / 462 | 4 |
| dsh-v0.1.5-rc.1 | 2026-09-10 | 3 | 59 / 462 | 0 |
| dsh-v0.1.5-rc.2 | 2026-09-10 | 3 | 59 / 462 | 0 |
Files and scope
Each tag has an English/Chinese record with kind: persistence-release, a pairing sidecar, and .schema.json. Its machine declaration contains the tag, immediate predecessor, observed writer version, and each changed root’s before/after digest. The first snapshot contains every root; later snapshots retain only changed roots that remain present and all their reachable types. Deletions use a null after value; unchanged releases retain empty changes and snapshots.
Snapshots cover the logical Session header, physical JSONL header, event envelope, and every first-party event and transitive reference at that tag. Type counts include only definitions reachable after normalization. Historical source references retain file paths without line numbers.
These retrospective records are validated separately from the current acknowledgement chain in the parent directory. Current-rule classifications of old changes are reading aids: historical version 0 did contain structural changes without version increases. A backfilled record cannot authorize a current PR to omit acknowledgement or a required version increase.
Extraction and limitations
Reconstruction used source at each tag, TypeScript 6.0.3, and the merged schema extractor. The only extraction adaptation omits a redundant object member from intersections of early concrete event records. Existing any / unknown remain opaque; no additional opaque types were substituted for unresolved references. Release schema JSON retains historical identifiers; terminology checks still apply to authored records and current schemas.
The first 22 tags legitimately declare optional surfaceOp on surface events. Historical parsing preserves that optionality; current-source parsing still requires the field. Earlier SessionHeader.version: number declarations also remain intact, with actual writer version constants recorded separately. A broad number declaration cannot supply that constant.
The captured tags use writer versions 0, 2, and 3; no tag uses writer version 1.
Digests describe normalized reconstructed types, not verbatim source text or reproduction of the original toolchain. Summaries provide rough structural context; old applications were not replayed, complete codec behavior was not validated, and migration safety was not proved. An unchanged digest does not establish unchanged behavior.
Verification
All 26 snapshots passed canonical-graph, root-digest, and reachable-type-digest validation. The release-archive check reads only the manifest, records, and snapshots in this tree, without Git, network access, or old-version checkouts; it validates manifest coverage, predecessors, before/after values, snapshot type completeness, and bilingual machine declarations.
pnpm run verify-persistence-releases
pnpm run doc-sync
The marker-delimited index, inventory cells, and structural-change facts are generated from the snapshots. Default verification rejects stale facts. Run pnpm run verify-persistence-releases --write to refresh those regions and pairing records after validating all machine data; authored summaries, source evidence, machine declarations, and schema files are preserved.
Tag completeness is relative to the manifest’s captured scope; offline checks do not discover later tags automatically. Standard documentation checks validate pairing records and Markdown links. The format template defines each record’s fields.
Dev Note
Working context for maintainers — click to expand
None.