diff --git a/corpus/candidates/darwin-origin-species-rachinsky-1864-ru-var-live-snapshot-closure.md b/corpus/candidates/darwin-origin-species-rachinsky-1864-ru-var-live-snapshot-closure.md
new file mode 100644
index 00000000..ebfc2912
--- /dev/null
+++ b/corpus/candidates/darwin-origin-species-rachinsky-1864-ru-var-live-snapshot-closure.md
@@ -0,0 +1,17 @@
+# Darwin/Rachinsky 1864 — `{{ВАР}}` observed-live snapshot closure
+
+This source-free companion narrows the unresolved Darwin/Rachinsky `{{ВАР}}` replay to one explicit provider snapshot observed on **2026-09-24**. It is a replay-preparation artifact, not a historical-transclusion claim and not a renderer promotion.
+
+The observed root/load chain is:
+
+`Шаблон:ВАР@3684602` → `Модуль:Дореформенная орфография@5721277` → `Module:Header@5746249` → `Module:BEED@5746253` + `Module:Util@5750249`; loading BEED also loads `Module:RomanNumber@3684553`.
+
+The template root delegates to the orthography module. The orthography module loads Header for `parse_title(..., "isPRS")`. At Header revision `5746249`, module initialization loads BEED and Util; BEED initialization in turn loads RomanNumber. Source inspection keeps function-body-only dependencies such as `Module:Header/Data`, `Module:BEED/scans`, `Module:BEED/lists`, `Модуль:Math`, and `Модуль:Отексте/ЭСБЕ` outside this candidate's observed load-time path because the retained Darwin replay reaches only Header's title classifier.
+
+The revision-ID topology is now explicit, but the identity gate remains closed. The current execution environment could not retrieve MediaWiki `rvprop=sha1`, so none of the six revisions is claimed SHA-1-frozen. Therefore `mediawiki_sha1_complete=false`, `replay_ready=false`, and no full `{{ВАР}}` invocation has been replayed.
+
+The machine-readable contract is [`source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json`](source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json), SHA-256 `245f77bf3d99d6610ca5fbbe4fcdcdb4ef68bebca612c5bb81db6c2d77f26509`.
+
+`ВАР` remains unresolved at **388 invocations**. The effective backlog remains unchanged at **4 tag shapes / 130 tag tokens** and **37 template shapes / 2,356 template invocations**. Historical transclusion, an offline/version-pinned Scribunto runtime, complete renderer/body identity, `>=300k` admission, FantLab analyzer-input identity, and M2 parity all remain open.
+
+The next step is mechanical and deliberately separate: acquire MediaWiki SHA-1 for exactly these six revisions, then perform a bounded full candidate invocation replay without substituting later live descendants.
diff --git a/corpus/candidates/source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json b/corpus/candidates/source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json
new file mode 100644
index 00000000..8ddcce20
--- /dev/null
+++ b/corpus/candidates/source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json
@@ -0,0 +1,121 @@
+{
+ "candidate_id": "darwin-origin-species-rachinsky-1864-ru",
+ "evidence_sha256": "245f77bf3d99d6610ca5fbbe4fcdcdb4ef68bebca612c5bb81db6c2d77f26509",
+ "execution_boundary": {
+ "candidate_title": "О происхождении видов (Дарвин; Рачинский)/1864 (ВТ:Ё)",
+ "expected_classification_isPRS": false,
+ "latent_not_reached": [
+ "Module:Header/Data via mw.loadData inside Header.data()",
+ "Module:BEED/scans via mw.loadData inside BEED scan helpers",
+ "Module:BEED/lists via mw.loadData inside BEED list helpers",
+ "Модуль:Math via require inside BEED.duplicate()",
+ "Модуль:Отексте/ЭСБЕ via mw.loadData inside BEED.duplicate()"
+ ],
+ "load_time_closure_complete_by_source_inspection": true,
+ "path": "Шаблон:ВАР -> Модуль:Дореформенная орфография.variative -> Module:Header.parse_title(..., \"isPRS\")",
+ "selected_argument_if_replayed": "second_parameter_modern"
+ },
+ "fantlab_source_edition_match": "unknown",
+ "identity_gate": {
+ "mediawiki_sha1_complete": false,
+ "missing_mediawiki_sha1_titles": [
+ "Шаблон:ВАР",
+ "Модуль:Дореформенная орфография",
+ "Module:Header",
+ "Module:BEED",
+ "Module:Util",
+ "Module:RomanNumber"
+ ],
+ "provider_api_attempted": true,
+ "provider_api_result": "unavailable_from_execution_environment",
+ "reason": "revision IDs and observed load-time topology are bound, but MediaWiki SHA-1 identities were not retrievable; exact replay remains fail-closed",
+ "replay_ready": false,
+ "revision_ids_complete": true
+ },
+ "literary_body_count_and_digests_frozen": false,
+ "m2_parity_admissible": false,
+ "minimum_300k_proved": false,
+ "offline_version_pinned_runtime_proven": false,
+ "prior_evidence": {
+ "evidence_sha256": "6126adbc966c7120ca487fb940bd0e01aafa0d7350d332e6422edbf8b3846cb8",
+ "schema_version": "scriptorium-darwin-var-provider-drift-evidence-v1"
+ },
+ "promotion_decision": {
+ "backlog_item_removed": false,
+ "effective_backlog_changed": false,
+ "full_var_candidate_branch_replayed": false,
+ "next_evidence_required": "obtain MediaWiki SHA-1 for the exact six-revision snapshot, then perform a separately bounded full candidate invocation replay",
+ "render_profile_rule_promoted": false,
+ "var_invocations_unresolved": 388
+ },
+ "renderer_implementation_ready": false,
+ "renderer_semantics_complete": false,
+ "researched_on": "2026-09-24",
+ "schema_version": "scriptorium-darwin-var-live-snapshot-closure-v1",
+ "snapshot": {
+ "historical_transclusion_proven": false,
+ "kind": "observed_live_snapshot",
+ "observed_on": "2026-09-24",
+ "provider": "Russian Wikisource",
+ "resources": [
+ {
+ "loads": [
+ "Модуль:Дореформенная орфография"
+ ],
+ "mediawiki_sha1": null,
+ "revision_date": "2019-06-04",
+ "revision_id": 3684602,
+ "role": "template_root",
+ "title": "Шаблон:ВАР"
+ },
+ {
+ "loads": [
+ "Module:Header"
+ ],
+ "mediawiki_sha1": null,
+ "revision_date": "2026-06-08",
+ "revision_id": 5721277,
+ "role": "implementation_module",
+ "title": "Модуль:Дореформенная орфография"
+ },
+ {
+ "loads": [
+ "Module:BEED",
+ "Module:Util"
+ ],
+ "mediawiki_sha1": null,
+ "revision_date": "2026-09-10",
+ "revision_id": 5746249,
+ "role": "title_classifier",
+ "title": "Module:Header"
+ },
+ {
+ "loads": [
+ "Module:RomanNumber"
+ ],
+ "mediawiki_sha1": null,
+ "revision_date": "2026-09-10",
+ "revision_id": 5746253,
+ "role": "header_load_dependency",
+ "title": "Module:BEED"
+ },
+ {
+ "loads": [],
+ "mediawiki_sha1": null,
+ "revision_date": "2026-09-18",
+ "revision_id": 5750249,
+ "role": "header_load_dependency",
+ "title": "Module:Util"
+ },
+ {
+ "loads": [],
+ "mediawiki_sha1": null,
+ "revision_date": "2019-06-04",
+ "revision_id": 3684553,
+ "role": "beed_load_dependency",
+ "title": "Module:RomanNumber"
+ }
+ ]
+ },
+ "source_text_included": false
+}
diff --git a/project/CHANGELOG.d/SCRIP-CORPUS-083.md b/project/CHANGELOG.d/SCRIP-CORPUS-083.md
new file mode 100644
index 00000000..cdc20c87
--- /dev/null
+++ b/project/CHANGELOG.d/SCRIP-CORPUS-083.md
@@ -0,0 +1,10 @@
+## 2026-09-24 — Darwin `{{ВАР}}` observed-live snapshot closure candidate
+
+- Selected SCRIP-CORPUS-083 / Issue #255 from the normal-flow P2 corpus queue after confirming no interrupted/open PR or issue recovery work.
+- Re-checked official Russian Wikisource provider state and bound one explicit observed-live replay topology: `Шаблон:ВАР@3684602` -> `Модуль:Дореформенная орфография@5721277` -> `Module:Header@5746249` -> `Module:BEED@5746253` + `Module:Util@5750249`, with BEED loading `Module:RomanNumber@3684553`.
+- Distinguished load-time dependencies from latent function-body-only dependencies (`Module:Header/Data`, `Module:BEED/scans`, `Module:BEED/lists`, `Модуль:Math`, `Модуль:Отексте/ЭСБЕ`) not reached by the retained Darwin `parse_title(..., "isPRS")` path.
+- The provider API route needed for `rvprop=sha1` was unavailable from this execution environment. The new source-free contract therefore binds revision IDs/topology but keeps all six `mediawiki_sha1` values null, `mediawiki_sha1_complete=false`, and `replay_ready=false` instead of manufacturing identity evidence.
+- Evidence SHA-256: `245f77bf3d99d6610ca5fbbe4fcdcdb4ef68bebca612c5bb81db6c2d77f26509`.
+- Added deterministic reconstruction/validation plus five focused regressions and a public source-free companion. No source prose is committed.
+- `ВАР` remains unresolved at 388 candidate invocations. Effective backlog remains 4 tag shapes / 130 tag tokens and 37 template shapes / 2,356 template invocations. Historical transclusion, offline/version-pinned runtime, complete renderer/body, >=300k, FantLab-input and M2 gates remain closed; M2 stays 0/5.
+- The next evidence step is mechanical: obtain MediaWiki SHA-1 for exactly the six bound revisions, then run a separately bounded full candidate invocation replay. This authoring run does not self-review or merge its substantive PR.
diff --git a/project/STATE_AND_QUEUE.md b/project/STATE_AND_QUEUE.md
index b611c2a9..e9b627b8 100644
--- a/project/STATE_AND_QUEUE.md
+++ b/project/STATE_AND_QUEUE.md
@@ -1,21 +1,22 @@
# STATE_AND_QUEUE — Scriptorium
-STATE_REVISION: 278
+STATE_REVISION: 279
PHASE: M1 — Deterministic FantLab surface
-LAST_COMMITTED_RUN_AT: 2026-09-24T09:54:00Z
-LAST_RESULT: SCRIP-CORPUS-082 / Issue #253 / PR #254 independently reviewed and merged. Exact final authored head `5d396d3647d69779a0e321727bb6a0561a93d60b` was re-read across all 7 changed files against unchanged `master@bd291227733155672f8dd6d9d3a634348615cdbe`; review `5302746201` found no merge blocker or open review thread. Fresh Russian Wikisource evidence independently corroborated `Модуль:Header@5746249` as a 2026-09-10 revision, the 2026-09-08 forum warning as provider-drift risk rather than a proven outage, and the pinned `Модуль:Дореформенная орфография@5721277` dependency on Header title classification. The committed evidence self-digest independently recomputed to `6126adbc966c7120ca487fb940bd0e01aafa0d7350d332e6422edbf8b3846cb8`. All 22 PR-triggered workflow runs for the exact head completed `success`; frozen-diagnostic run `35979105385` checked out that exact SHA and both jobs completed their standard-library and replay steps successfully. PR #254 was marked Ready and squash-merged with expected-head protection as `1e55d987b44b7159aaf0f6c308e4dee98f954e15`; Issue #253 closed completed. `ВАР` remains unresolved and effective backlog totals remain unchanged.
-LAST_VERIFIED_PROGRESS: M1 deterministic metric families remain executable inferred candidates. Public corpus/showcase evidence includes exact frozen/admitted works and source-free derived outputs, while no retained work has an independently established FantLab analyzer-input identity. Perelman retains independently reviewed exact PDF/DjVu identities, pagination, current Wikisource/FantLab surface boundaries, zero-PDF-PageLabels evidence, front-matter anchors, transition/tail anchors and bounded restored-page interior observations. Darwin/Rachinsky has independently reviewed v5 dependency closure, v6 zero-argument `{{ё}}` output evidence, canonical SCRIP-CORPUS-078 one-shape promotion, canonical SCRIP-CORPUS-079 388/388 `` noinclude-containment evidence, canonical SCRIP-CORPUS-080 candidate-local promotion/backlog reduction, canonical SCRIP-CORPUS-081 revision-pinned `{{ВАР}}` documentation/module evidence with no promotion, and canonical SCRIP-CORPUS-082 provider-drift evidence narrowing replay-snapshot selection without changing the effective backlog. M2 stays 0/5.
+LAST_COMMITTED_RUN_AT: 2026-09-24T10:57:00Z
+LAST_RESULT: SCRIP-CORPUS-083 / Issue #255 / Draft PR #256 authored from `master@ee57313a6974abd326311a7b70f010ae647781a2`. Fresh official Russian Wikisource evidence bound one explicit observed-live `{{ВАР}}` replay topology: `Шаблон:ВАР@3684602` -> `Модуль:Дореформенная орфография@5721277` -> `Module:Header@5746249` -> `Module:BEED@5746253` + `Module:Util@5750249`, with BEED loading `Module:RomanNumber@3684553`. Source inspection separates that load-time closure from latent function-body dependencies not reached by the retained Darwin `parse_title(..., "isPRS")` path. The execution environment could not retrieve MediaWiki `rvprop=sha1`, so the source-free contract deliberately keeps all six SHA-1 values unset, `mediawiki_sha1_complete=false`, `replay_ready=false`, and promotion/backlog unchanged. Evidence self-digest is `245f77bf3d99d6610ca5fbbe4fcdcdb4ef68bebca612c5bb81db6c2d77f26509`. Draft PR #256 is left for a later independent exact-head review; no self-merge was performed.
+LAST_VERIFIED_PROGRESS: M1 deterministic metric families remain executable inferred candidates. Public corpus/showcase evidence includes exact frozen/admitted works and source-free derived outputs, while no retained work has an independently established FantLab analyzer-input identity. Perelman retains independently reviewed exact PDF/DjVu identities, pagination, current Wikisource/FantLab surface boundaries, zero-PDF-PageLabels evidence, front-matter anchors, transition/tail anchors and bounded restored-page interior observations. Darwin/Rachinsky has independently reviewed v5 dependency closure, v6 zero-argument `{{ё}}` output evidence, canonical SCRIP-CORPUS-078 one-shape promotion, canonical SCRIP-CORPUS-079 388/388 `` noinclude-containment evidence, canonical SCRIP-CORPUS-080 candidate-local promotion/backlog reduction, canonical SCRIP-CORPUS-081 revision-pinned `{{ВАР}}` documentation/module evidence with no promotion, canonical SCRIP-CORPUS-082 provider-drift evidence, and review-pending SCRIP-CORPUS-083 observed-live load-closure evidence that binds six revision IDs but explicitly fails the MediaWiki SHA-1/replay gate. M2 stays 0/5.
## Current unit
```text
-UNIT_ID: SCRIP-CORPUS-082
-ISSUE: #253 (closed completed)
-STATUS: COMPLETE
-PR: #254 (squash-merged as 1e55d987b44b7159aaf0f6c308e4dee98f954e15)
-NEXT_ACTION: Resume normal-flow P2 SCRIP-CORPUS selection.
- For the subsequent Darwin/Rachinsky `ВАР` replay, deliberately choose one coherent snapshot and freeze exact `Шаблон:ВАР`, `Модуль:Дореформенная орфография`, `Module:Header` identities including MediaWiki SHA-1 plus the execution-relevant nested closure before replaying the candidate invocation.
- Do not silently substitute a later live Header as historical/equivalent provenance. Keep historical-transclusion, offline-runtime, complete renderer/inter-page/body, >=300k, FantLab-input and M2 gates closed until separately evidenced.
+UNIT_ID: SCRIP-CORPUS-083
+ISSUE: #255 (open)
+STATUS: REVIEW_PENDING
+PR: #256 (Draft)
+NEXT_ACTION: Independently re-read every changed file and exact-head CI evidence for PR #256.
+ Verify the six-revision observed-live topology against official provider evidence and recompute the evidence self-digest.
+ Keep MediaWiki SHA-1/replay/promotion gates closed unless exact identity evidence exists; if clean, mark Ready and merge with expected-head protection.
+ After merge, the next separate unit may acquire SHA-1 for exactly the bound six revisions before any full `{{ВАР}}` invocation replay.
```
## Current milestone gate
@@ -51,7 +52,7 @@ Detailed evidence is canonical in `corpus/candidates/`, `benchmarks/`, `project/
- **The Twelve Chairs** — exact Page/PDF surfaces retained; template/reference semantics and body identity remain unresolved.
- **The Life of Klim Samgin** — source graph/extractor/body identities retained; historical renderer equivalence and FantLab input remain unresolved.
- **Children of Captain Grant — Beketova translation** — exact 1,095,467-character body with reviewed source-free deterministic showcase; no FantLab result/input identity for this translation.
-- **On the Origin of Species — Rachinsky translation** — exact Page set/scan/render contracts retained. Independently reviewed v5/v6 and SCRIP-CORPUS-078 canonically resolve zero-argument `{{ё}}` for the selected live-snapshot evidence. Independently reviewed SCRIP-CORPUS-079 proves all 388 frozen self-closing `` tokens are inside stripped `` regions. Independently reviewed SCRIP-CORPUS-080 consumes only that containment fact to remove the candidate-local shape from the effective provider-reference backlog. Independently reviewed SCRIP-CORPUS-081 canonically freezes revision-pinned documentation/module evidence for `ВАР` (388) without promoting it. Independently reviewed SCRIP-CORPUS-082 canonically records current Header/provider drift plus a narrow `isPRS=false` classification replay without binding a complete VAR runtime. Effective unresolved surface therefore remains 4 tag shapes / 130 tag tokens and 37 template shapes / 2,356 invocations. Historical transclusion, complete renderer, literary body/>=300k and FantLab gates remain open.
+- **On the Origin of Species — Rachinsky translation** — exact Page set/scan/render contracts retained. Independently reviewed v5/v6 and SCRIP-CORPUS-078 canonically resolve zero-argument `{{ё}}` for the selected live-snapshot evidence. Independently reviewed SCRIP-CORPUS-079 proves all 388 frozen self-closing `` tokens are inside stripped `` regions. Independently reviewed SCRIP-CORPUS-080 consumes only that containment fact to remove the candidate-local shape from the effective provider-reference backlog. Independently reviewed SCRIP-CORPUS-081 canonically freezes revision-pinned documentation/module evidence for `ВАР` (388) without promoting it. Independently reviewed SCRIP-CORPUS-082 canonically records current Header/provider drift plus a narrow `isPRS=false` classification replay. Review-pending SCRIP-CORPUS-083 binds one observed-live six-revision root/load topology but keeps SHA-1/replay/promotion gates closed. Effective unresolved surface remains 4 tag shapes / 130 tag tokens and 37 template shapes / 2,356 invocations. Historical transclusion, complete renderer, literary body/>=300k and FantLab gates remain open.
- **Entertaining Physics, Book 1 — Perelman 1913** — exact PDF/DjVu carriers and reviewed pagination/facsimile boundaries retained. Complete interior mapping, global offset, PDF↔DjVu equivalence, OCR correctness, canonical carrier, literary body/>=300k, FantLab input identity and M2 remain open.
## Deterministic / morphology orientation
@@ -65,7 +66,7 @@ Detailed evidence is canonical in `corpus/candidates/`, `benchmarks/`, `project/
## Public repository representation
-Public surfaces must remain source-free and synchronized with actual capability. Publish metadata, provenance, hashes and derived analysis only; never publish unlicensed source text. Perelman's transition/tail and restored-page interior companions are independently reviewed. Darwin's dependency and output-replay companions expose the selected `{{ё}}` live-snapshot evidence; SCRIP-CORPUS-078 canonically exposes that one-shape promotion; SCRIP-CORPUS-079 canonically exposes 388/388 `` noinclude containment; SCRIP-CORPUS-080 canonically exposes the separate candidate-local promotion/reduced effective backlog; SCRIP-CORPUS-081 canonically exposes independently reviewed `{{ВАР}}` documentation/module semantics without changing the effective backlog. SCRIP-CORPUS-082 now canonically exposes independently reviewed later-Header/provider-drift evidence and the narrow Darwin `isPRS=false` rule replay without implying a complete VAR replay.
+Public surfaces must remain source-free and synchronized with actual capability. Publish metadata, provenance, hashes and derived analysis only; never publish unlicensed source text. Perelman's transition/tail and restored-page interior companions are independently reviewed. Darwin's dependency and output-replay companions expose the selected `{{ё}}` live-snapshot evidence; SCRIP-CORPUS-078 canonically exposes that one-shape promotion; SCRIP-CORPUS-079 canonically exposes 388/388 `` noinclude containment; SCRIP-CORPUS-080 canonically exposes the separate candidate-local promotion/reduced effective backlog; SCRIP-CORPUS-081 canonically exposes independently reviewed `{{ВАР}}` documentation/module semantics without changing the effective backlog; SCRIP-CORPUS-082 canonically exposes independently reviewed later-Header/provider-drift evidence. Review-pending SCRIP-CORPUS-083 adds a source-free companion for the explicit six-revision observed-live load closure while visibly keeping SHA-1/replay/promotion gates closed.
## Known blockers / invariants
@@ -73,5 +74,5 @@ Public surfaces must remain source-free and synchronized with actual capability.
2. FantLab corrective coefficients and several parser/tokenization/dialogue semantics remain partly unpublished.
3. No corpus or showcase evidence may be promoted to parity without source-edition/input matching and explicit benchmark tolerances.
4. Perelman complete exact-carrier mapping is still required; current facsimile anchors do not prove every interior page, global offset, PDF↔DjVu equivalence, OCR correctness, body identity or >=300k admission.
-5. Darwin/Rachinsky SCRIP-CORPUS-082 deliberately does not freeze the live `Шаблон:ВАР` root, Header MediaWiki SHA-1 or nested replay closure, replay the full candidate invocation, prove historical transclusion, or establish an offline/version-pinned MediaWiki runtime. The 2026-09-08 community warning is provider-drift risk evidence, not proof of a broken runtime. Complete renderer/body/FantLab gates remain open.
+5. Darwin/Rachinsky SCRIP-CORPUS-083 binds the observed-live revision-ID/load topology but MediaWiki SHA-1 remains unavailable for the six exact revisions in this execution environment. Therefore full VAR replay, historical transclusion, offline/version-pinned MediaWiki runtime and promotion remain closed. The 2026-09-08 community warning remains provider-drift risk evidence, not proof of a broken runtime. Complete renderer/body/FantLab gates remain open.
6. Live Pages deployment remains subject to repository policy/administration and must not be implied by static build success.
diff --git a/project/run-receipts/SCRIP-CORPUS-083.md b/project/run-receipts/SCRIP-CORPUS-083.md
new file mode 100644
index 00000000..fd2e16e5
--- /dev/null
+++ b/project/run-receipts/SCRIP-CORPUS-083.md
@@ -0,0 +1,42 @@
+# Run receipt — SCRIP-CORPUS-083
+
+Status: REVIEW_PENDING
+
+## Orientation
+
+- Connected GitHub identity: `andy-zen-dev`.
+- Repository: `drevendev/Scriptorium`; write permission available.
+- Exact authoring base: `ee57313a6974abd326311a7b70f010ae647781a2`.
+- Issue: #255.
+- Draft PR: #256.
+
+## Produced
+
+- Source-free observed-live `{{ВАР}}` replay-snapshot closure for the retained Darwin/Rachinsky candidate.
+- Exact observed revision-ID topology: `Шаблон:ВАР@3684602` -> `Модуль:Дореформенная орфография@5721277` -> `Module:Header@5746249` -> `Module:BEED@5746253` + `Module:Util@5750249`; BEED -> `Module:RomanNumber@3684553`.
+- Explicit separation of load-time dependencies from latent function-body dependencies that are not reached by the candidate `parse_title(..., "isPRS")` path.
+- Deterministic contract builder/validator, five focused regressions, and a public source-free companion.
+
+Evidence SHA-256: `245f77bf3d99d6610ca5fbbe4fcdcdb4ef68bebca612c5bb81db6c2d77f26509`.
+
+## Research evidence
+
+- Current Russian Wikisource `Шаблон:ВАР` remains revision `3684602` and delegates to `Модуль:Дореформенная орфография`.
+- `Модуль:Дореформенная орфография@5721277` loads `Module:Header` and uses `header.parse_title(..., "isPRS")` on non-Page namespaces.
+- Current `Module:Header@5746249` loads `Module:BEED` and `Module:Util` at module initialization.
+- Current `Module:BEED@5746253` loads `Module:RomanNumber`; current `Module:Util@5750249` and `Module:RomanNumber@3684553` expose no additional load-time module dependency in the observed source.
+- The environment's direct MediaWiki API route for `rvprop=sha1` was unavailable, so revision IDs are recorded but SHA-1 identities are deliberately not invented.
+
+## Evidence boundary
+
+`revision_ids_complete=true`, but `mediawiki_sha1_complete=false` and `replay_ready=false`. All six `mediawiki_sha1` fields are null. Historical transclusion is unproven; no offline/version-pinned Scribunto runtime is established; no full candidate `{{ВАР}}` invocation is replayed; no render-profile or backlog promotion occurs. `ВАР` remains unresolved at 388 invocations and effective unresolved counts remain 4 tag shapes / 130 tag tokens and 37 template shapes / 2,356 template invocations. Literary-body identity, >=300k admission, FantLab analyzer-input identity and parity remain closed; M2 stays 0/5.
+
+## Verification performed in authoring run
+
+- Official provider pages/search evidence were re-read for the six revision IDs and their load relationships.
+- The evidence contract was generated from the same deterministic structure used by the committed builder; its self-digest is pinned above.
+- Substantive changes were left in Draft PR #256 for later independent exact-head review. This authoring run did not approve or merge its own work.
+
+## Next action
+
+Independently re-read all changed files and exact-head CI for PR #256. If clean, mark Ready and merge with expected-head protection. Only after that, in a separate bounded unit, acquire MediaWiki SHA-1 for exactly these six revisions before attempting a full invocation replay.
diff --git a/scriptorium/darwin_var_live_snapshot_closure.py b/scriptorium/darwin_var_live_snapshot_closure.py
new file mode 100644
index 00000000..7d211a41
--- /dev/null
+++ b/scriptorium/darwin_var_live_snapshot_closure.py
@@ -0,0 +1,184 @@
+"""Freeze a source-free observed-live dependency closure for Darwin/Rachinsky ``{{ВАР}}``.
+
+This contract follows the independently reviewed provider-drift guard. It binds the
+exact revision IDs observed for the template root and the load-time Lua closure used by
+the retained Darwin mainspace path, while failing closed because MediaWiki revision
+SHA-1 identities could not be retrieved from the provider API in this execution
+environment. It does not claim historical transclusion, a full Scribunto replay, or a
+render-profile promotion.
+"""
+
+from __future__ import annotations
+
+import argparse
+from hashlib import sha256
+import json
+from pathlib import Path
+from typing import Mapping, Sequence
+
+
+EVIDENCE_VERSION = "scriptorium-darwin-var-live-snapshot-closure-v1"
+CANDIDATE_ID = "darwin-origin-species-rachinsky-1864-ru"
+PRIOR_VERSION = "scriptorium-darwin-var-provider-drift-evidence-v1"
+PRIOR_SHA256 = "6126adbc966c7120ca487fb940bd0e01aafa0d7350d332e6422edbf8b3846cb8"
+RESEARCH_DATE = "2026-09-24"
+CANDIDATE_TITLE = "О происхождении видов (Дарвин; Рачинский)/1864 (ВТ:Ё)"
+
+RESOURCES = (
+ ("Шаблон:ВАР", 3684602, "2019-06-04", "template_root", ("Модуль:Дореформенная орфография",)),
+ ("Модуль:Дореформенная орфография", 5721277, "2026-06-08", "implementation_module", ("Module:Header",)),
+ ("Module:Header", 5746249, "2026-09-10", "title_classifier", ("Module:BEED", "Module:Util")),
+ ("Module:BEED", 5746253, "2026-09-10", "header_load_dependency", ("Module:RomanNumber",)),
+ ("Module:Util", 5750249, "2026-09-18", "header_load_dependency", ()),
+ ("Module:RomanNumber", 3684553, "2019-06-04", "beed_load_dependency", ()),
+)
+
+
+def _canonical_json(value: object) -> str:
+ return json.dumps(value, ensure_ascii=False, sort_keys=True, separators=(",", ":"))
+
+
+def _sha256_json(value: object) -> str:
+ return sha256(_canonical_json(value).encode("utf-8")).hexdigest()
+
+
+def _validate_prior(prior: Mapping[str, object]) -> None:
+ if prior.get("schema_version") != PRIOR_VERSION:
+ raise ValueError("Darwin VAR provider-drift evidence schema drift")
+ if prior.get("candidate_id") != CANDIDATE_ID:
+ raise ValueError("Darwin VAR provider-drift evidence candidate drift")
+ if prior.get("evidence_sha256") != PRIOR_SHA256:
+ raise ValueError("Darwin VAR provider-drift evidence digest drift")
+ unsigned = dict(prior)
+ stored = unsigned.pop("evidence_sha256", None)
+ if _sha256_json(unsigned) != stored:
+ raise ValueError("Darwin VAR provider-drift evidence self-digest drift")
+
+
+def build_evidence(prior: Mapping[str, object]) -> dict[str, object]:
+ """Build the deterministic source-free live-snapshot closure contract."""
+
+ _validate_prior(prior)
+ resources = [
+ {
+ "title": title,
+ "revision_id": revision_id,
+ "revision_date": revision_date,
+ "role": role,
+ "loads": list(loads),
+ "mediawiki_sha1": None,
+ }
+ for title, revision_id, revision_date, role, loads in RESOURCES
+ ]
+ evidence: dict[str, object] = {
+ "schema_version": EVIDENCE_VERSION,
+ "candidate_id": CANDIDATE_ID,
+ "source_text_included": False,
+ "researched_on": RESEARCH_DATE,
+ "prior_evidence": {
+ "schema_version": PRIOR_VERSION,
+ "evidence_sha256": PRIOR_SHA256,
+ },
+ "snapshot": {
+ "provider": "Russian Wikisource",
+ "kind": "observed_live_snapshot",
+ "observed_on": RESEARCH_DATE,
+ "historical_transclusion_proven": False,
+ "resources": resources,
+ },
+ "execution_boundary": {
+ "candidate_title": CANDIDATE_TITLE,
+ "path": (
+ "Шаблон:ВАР -> Модуль:Дореформенная орфография.variative -> "
+ 'Module:Header.parse_title(..., "isPRS")'
+ ),
+ "expected_classification_isPRS": False,
+ "selected_argument_if_replayed": "second_parameter_modern",
+ "load_time_closure_complete_by_source_inspection": True,
+ "latent_not_reached": [
+ "Module:Header/Data via mw.loadData inside Header.data()",
+ "Module:BEED/scans via mw.loadData inside BEED scan helpers",
+ "Module:BEED/lists via mw.loadData inside BEED list helpers",
+ "Модуль:Math via require inside BEED.duplicate()",
+ "Модуль:Отексте/ЭСБЕ via mw.loadData inside BEED.duplicate()",
+ ],
+ },
+ "identity_gate": {
+ "revision_ids_complete": True,
+ "mediawiki_sha1_complete": False,
+ "missing_mediawiki_sha1_titles": [item["title"] for item in resources],
+ "provider_api_attempted": True,
+ "provider_api_result": "unavailable_from_execution_environment",
+ "replay_ready": False,
+ "reason": (
+ "revision IDs and observed load-time topology are bound, but MediaWiki "
+ "SHA-1 identities were not retrievable; exact replay remains fail-closed"
+ ),
+ },
+ "promotion_decision": {
+ "full_var_candidate_branch_replayed": False,
+ "render_profile_rule_promoted": False,
+ "backlog_item_removed": False,
+ "effective_backlog_changed": False,
+ "var_invocations_unresolved": 388,
+ "next_evidence_required": (
+ "obtain MediaWiki SHA-1 for the exact six-revision snapshot, then perform "
+ "a separately bounded full candidate invocation replay"
+ ),
+ },
+ "renderer_semantics_complete": False,
+ "renderer_implementation_ready": False,
+ "offline_version_pinned_runtime_proven": False,
+ "literary_body_count_and_digests_frozen": False,
+ "minimum_300k_proved": False,
+ "fantlab_source_edition_match": "unknown",
+ "m2_parity_admissible": False,
+ }
+ evidence["evidence_sha256"] = _sha256_json(evidence)
+ return evidence
+
+
+def validate_evidence(evidence: Mapping[str, object], prior: Mapping[str, object]) -> None:
+ expected = build_evidence(prior)
+ if dict(evidence) != expected:
+ raise ValueError("Darwin VAR live-snapshot closure evidence drift")
+ gate = evidence.get("identity_gate")
+ if not isinstance(gate, dict):
+ raise ValueError("identity gate missing")
+ if gate.get("revision_ids_complete") is not True:
+ raise ValueError("revision IDs must be complete")
+ if gate.get("mediawiki_sha1_complete") is not False or gate.get("replay_ready") is not False:
+ raise ValueError("SHA-1/replay gates must remain closed")
+ snapshot = evidence.get("snapshot")
+ if not isinstance(snapshot, dict) or snapshot.get("historical_transclusion_proven") is not False:
+ raise ValueError("historical transclusion must remain unproven")
+ decision = evidence.get("promotion_decision")
+ if not isinstance(decision, dict):
+ raise ValueError("promotion decision missing")
+ for key in ("full_var_candidate_branch_replayed", "render_profile_rule_promoted", "backlog_item_removed", "effective_backlog_changed"):
+ if decision.get(key) is not False:
+ raise ValueError(f"{key} must remain false")
+ for key in ("renderer_semantics_complete", "renderer_implementation_ready", "offline_version_pinned_runtime_proven", "literary_body_count_and_digests_frozen", "minimum_300k_proved", "m2_parity_admissible"):
+ if evidence.get(key) is not False:
+ raise ValueError(f"{key} must remain false")
+ if evidence.get("fantlab_source_edition_match") != "unknown":
+ raise ValueError("FantLab source match must remain unknown")
+
+
+def main(argv: Sequence[str] | None = None) -> int:
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument("--prior", type=Path, required=True)
+ parser.add_argument("--output", type=Path, required=True)
+ args = parser.parse_args(argv)
+ prior = json.loads(args.prior.read_text(encoding="utf-8"))
+ if not isinstance(prior, dict):
+ raise ValueError("Darwin VAR provider-drift evidence must be a JSON object")
+ evidence = build_evidence(prior)
+ args.output.parent.mkdir(parents=True, exist_ok=True)
+ args.output.write_text(json.dumps(evidence, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
+ print(evidence["evidence_sha256"])
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/tests/test_darwin_var_live_snapshot_closure.py b/tests/test_darwin_var_live_snapshot_closure.py
new file mode 100644
index 00000000..aa828555
--- /dev/null
+++ b/tests/test_darwin_var_live_snapshot_closure.py
@@ -0,0 +1,66 @@
+from __future__ import annotations
+
+import json
+from pathlib import Path
+import unittest
+
+from scriptorium.darwin_var_live_snapshot_closure import (
+ RESOURCES,
+ build_evidence,
+ validate_evidence,
+)
+
+
+ROOT = Path(__file__).resolve().parents[1]
+PRIOR = ROOT / "corpus/candidates/source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-provider-drift-evidence.json"
+EVIDENCE = ROOT / "corpus/candidates/source-edition-traces/darwin-origin-species-rachinsky-1864-ru.var-live-snapshot-closure-evidence.json"
+
+
+class DarwinVarLiveSnapshotClosureTests(unittest.TestCase):
+ def setUp(self) -> None:
+ self.prior = json.loads(PRIOR.read_text(encoding="utf-8"))
+ self.evidence = json.loads(EVIDENCE.read_text(encoding="utf-8"))
+
+ def test_committed_evidence_rebuilds_semantically(self) -> None:
+ self.assertEqual(self.evidence, build_evidence(self.prior))
+ validate_evidence(self.evidence, self.prior)
+
+ def test_exact_observed_revision_set_is_bound(self) -> None:
+ resources = self.evidence["snapshot"]["resources"]
+ self.assertEqual(
+ [(item["title"], item["revision_id"]) for item in resources],
+ [(title, revision_id) for title, revision_id, _date, _role, _loads in RESOURCES],
+ )
+ self.assertEqual(len(resources), 6)
+
+ def test_load_time_topology_is_explicit(self) -> None:
+ resources = {item["title"]: item for item in self.evidence["snapshot"]["resources"]}
+ self.assertEqual(resources["Шаблон:ВАР"]["loads"], ["Модуль:Дореформенная орфография"])
+ self.assertEqual(resources["Модуль:Дореформенная орфография"]["loads"], ["Module:Header"])
+ self.assertEqual(resources["Module:Header"]["loads"], ["Module:BEED", "Module:Util"])
+ self.assertEqual(resources["Module:BEED"]["loads"], ["Module:RomanNumber"])
+ self.assertEqual(resources["Module:Util"]["loads"], [])
+ self.assertEqual(resources["Module:RomanNumber"]["loads"], [])
+
+ def test_sha1_and_replay_fail_closed(self) -> None:
+ gate = self.evidence["identity_gate"]
+ self.assertTrue(gate["revision_ids_complete"])
+ self.assertFalse(gate["mediawiki_sha1_complete"])
+ self.assertFalse(gate["replay_ready"])
+ self.assertEqual(len(gate["missing_mediawiki_sha1_titles"]), 6)
+ self.assertTrue(all(item["mediawiki_sha1"] is None for item in self.evidence["snapshot"]["resources"]))
+
+ def test_promotion_and_parity_gates_stay_closed(self) -> None:
+ decision = self.evidence["promotion_decision"]
+ self.assertEqual(decision["var_invocations_unresolved"], 388)
+ self.assertFalse(decision["full_var_candidate_branch_replayed"])
+ self.assertFalse(decision["render_profile_rule_promoted"])
+ self.assertFalse(decision["backlog_item_removed"])
+ self.assertFalse(decision["effective_backlog_changed"])
+ self.assertFalse(self.evidence["snapshot"]["historical_transclusion_proven"])
+ self.assertFalse(self.evidence["offline_version_pinned_runtime_proven"])
+ self.assertFalse(self.evidence["m2_parity_admissible"])
+
+
+if __name__ == "__main__":
+ unittest.main()