From 6ad7878c89b3044cfcafd86b66ae0d7a0149c26a Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:00:01 +0300 Subject: [PATCH 01/13] docs: start D1.4 two-book architecture --- WORK_STATUS.md | 122 +++++++++++++++++++++++++++---------------------- 1 file changed, 67 insertions(+), 55 deletions(-) diff --git a/WORK_STATUS.md b/WORK_STATUS.md index 7485f97..563b8d9 100644 --- a/WORK_STATUS.md +++ b/WORK_STATUS.md @@ -8,69 +8,81 @@ | Поле | Текущее значение | |---|---| -| Состояние | **READY** — незавершённой активной задачи нет | -| Рабочая ветка | `main` | -| Открытый Pull Request | нет | +| Состояние | **IN_PROGRESS** — начат architecture-only этап D1.4 | +| Рабочая ветка | `docs/two-book-architecture-d1.4` | +| Открытый Pull Request | ещё не открыт | | Стабильный функциональный релиз | `v23.8.0` | -| Документационный/data baseline | `23.8.10` — D1.3 data-quality audit завершён | -| Последнее завершённое изменение | PR #29, squash merge `d4c100c8f3430bdfe57d294f3c81217efb5a4186` | -| Закрытая задача | Issue #28 — D1.3 completed | -| Следующая утверждённая задача | D1.4 — two-book product architecture | - -## Завершённый этап D1.3 - -- создан permanent read-only `scripts/audit-data-quality.mjs`; -- созданы deterministic reports `reports/data-quality-audit.json` и `reports/data-quality-audit.md`; -- GitHub Actions проверяет report freshness и structural gate; -- проверены logical datasets `source-divinity-code-en` и `ru-current-v1`; -- подтверждены 4 086 unique ordered IDs `1–4086` в каждом наборе; -- source/current IDs полностью aligned; -- preserved fields `id`, `symbol`, `description`, `source`, `date_added` имеют 0 differences; -- expected changed fields: aliases 4 083, notes 4 086, tags 4 086; -- structural gate: PASS; -- structural errors: 0; -- warnings: 0; -- human-review instances: 5 022 в пяти aggregated groups; -- 5 022 — пересекающиеся кандидаты на source/human review, а не доказанные ошибки; -- factual uNews patchnote `23.8.10` и новое real Chromium report image сохранены; -- существующие data files, runtime, PWA, package metadata, `versions/` и `_archive/` не изменены. - -## Текущие зарегистрированные данные - -```text -source-divinity-code-en - canonical physical: data/bd2.json - retained equivalent: data/db.json - -ru-current-v1 - active runtime: data/divinity_code_ru.json - -physical migration: planned-not-executed -remove_or_rename_approved: false -``` +| Документационный/data baseline | `23.8.10` — D1.3 завершён | +| Актуальный `main` при старте | `d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` | +| Активная задача | Issue #30 — спроектировать архитектуру двух книг без изменения runtime | +| Следующая утверждённая задача после D1.4 | определить отдельную functional/data phase только после завершения архитектуры | -## Следующий точный шаг +## Текущая точка продолжения + +Статус: `IN_PROGRESS` + +Начато: `2026-07-23 Europe/Berlin` + +Среда: `ChatGPT + GitHub connector + GitHub Actions` + +Ветка: `docs/two-book-architecture-d1.4` + +Issue: `#30` — `https://github.com/sunpole/udream/issues/30` + +Цель: создать проверяемую архитектуру работы uDream с двумя исходными книгами до любой реализации selector, combined search, side-by-side comparison или второй базы. -Начать D1.4 только в новой отдельной ветке после создания/чтения Issue и обновления этого файла до `IN_PROGRESS`. +## Планируемые файлы -D1.4 должна быть architecture-only и определить: +- `docs/TWO_BOOK_ARCHITECTURE.md`; +- при необходимости machine-readable architecture registry under `data/` или `docs/`, но без изменения существующих data files; +- постоянный validator архитектурного реестра, если registry добавляется; +- `README.md`; +- `ROADMAP.md`; +- `VERSION.md`; +- `CHANGELOG.md`; +- `docs/PROJECT_STATE.md`; +- `docs/ARCHITECTURE.md`; +- `docs/FILE_MAP.md`; +- `docs/DATASET_REGISTRY.md`; +- `AGENTS.md`; +- `WORK_STATUS.md`; +- factual uNews patchnote и новый real PNG/JPEG. + +## Критерии завершения + +- source works и documents имеют stable IDs и evidence status; +- current dataset и future second-book dataset разделены; +- global identity использует `(dataset_id, record_id)`; +- separate switching, federated combined search и side-by-side comparison сравнены и сведены в staged recommendation; +- visible provenance, URLs, history, sharing, cache/fallback и relation-map contracts определены; +- migration/rollback описаны до implementation; +- validators и GitHub Actions проходят; +- data/runtime/PWA/package metadata/`versions/`/`_archive/` отсутствуют в diff; +- factual patchnote и новое реальное изображение добавлены; +- PR объединён после полного diff review; +- Issue #30 закрыт completed; +- `main/WORK_STATUS.md` возвращён в `READY`. + +## Последний проверенный commit + +`d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` — D1.3 завершён и `main` готов к D1.4. + +## Следующий точный шаг -- identity и provenance второй исходной книги; -- separate switching, combined search и side-by-side modes; -- visible source/dataset/translation provenance; -- dataset-aware history, sharing и deep links; -- validation, reload, cache-clearing и stable fallback contracts; -- migration и rollback до любой user-facing реализации. +Прочитать поддерживаемые architecture/data документы и зарегистрированные datasets, затем подготовить `docs/TWO_BOOK_ARCHITECTURE.md` и, только если это повышает проверяемость, machine-readable architecture registry с validator. ## Главные запреты -- не менять и не удалять существующие data files; -- не исправлять audit findings без отдельного evidence-based data PR; -- не выполнять physical migration; -- не реализовывать selector в architecture-only D1.4; -- не начинать D1.5 AI-assisted translation до завершения D1.4; -- не выдавать heuristic findings или неизвестный translation pipeline за доказанный факт. +- не менять существующие data files; +- не извлекать и не генерировать вторую базу; +- не менять runtime, PWA, Service Worker, package metadata, `versions/` или `_archive/`; +- не добавлять user-facing selector; +- не считать наличие PDF готовым dataset; +- не назначать одинаковые IDs между книгами без evidence; +- не начинать D1.5 DeepSeek translation experiment; +- не добавлять API keys; +- не заявлять source URLs или permissions, которых нет в GitHub. ## Источник истины -Реальные GitHub-факты — `main`, открытые Pull Request, commits, Actions и Issues — имеют приоритет над памятью ИИ, старыми чатами и локальными незапушенными изменениями. +Реальные GitHub-факты — `main`, текущая ветка, commits, Pull Request, Actions и Issues — имеют приоритет над памятью ИИ, старыми чатами и локальными незапушенными изменениями. \ No newline at end of file From 9ce259bbb4c02c99e4a849af5c11af436056c5a2 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:01:24 +0300 Subject: [PATCH 02/13] docs: add machine-readable two-book architecture --- docs/two-book-architecture.json | 240 ++++++++++++++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 docs/two-book-architecture.json diff --git a/docs/two-book-architecture.json b/docs/two-book-architecture.json new file mode 100644 index 0000000..569e64f --- /dev/null +++ b/docs/two-book-architecture.json @@ -0,0 +1,240 @@ +{ + "schema_version": 1, + "architecture_id": "udream-two-book-architecture", + "baseline": "23.8.11", + "functional_release": "v23.8.0", + "status": "architecture-only", + "default_dataset_id": "ru-current-v1", + "source_works": [ + { + "id": "work-divinity-code", + "title": "The Divinity Code to Understanding Your Dreams and Visions", + "evidence_status": "registered-dataset-and-retained-document", + "registered_dataset_ids": [ + "source-divinity-code-en", + "ru-current-v1" + ], + "document_ids": [ + "document-divinity-code-pdf" + ] + }, + { + "id": "work-unlocking-your-dreams", + "title": "Unlocking Your Dreams", + "evidence_status": "retained-document-only-dataset-not-created", + "registered_dataset_ids": [], + "document_ids": [ + "document-unlocking-your-dreams-student-material-pdf" + ] + } + ], + "documents": [ + { + "id": "document-divinity-code-pdf", + "source_work_id": "work-divinity-code", + "path": "_archive/source-files/The_Divinity_Code_to_Understanding_Your_Dreams_and_Visions_PDF_Room.pdf", + "status": "retained-evidence", + "dataset_status": "registered-datasets-exist", + "source_url_status": "not-recorded", + "distribution_evidence_status": "not-archived" + }, + { + "id": "document-unlocking-your-dreams-student-material-pdf", + "source_work_id": "work-unlocking-your-dreams", + "path": "_archive/source-files/Unlocking-Your-Dream-Student-Ma.pdf", + "status": "retained-evidence", + "dataset_status": "dataset-not-created", + "source_url_status": "not-recorded", + "distribution_evidence_status": "not-archived" + } + ], + "dataset_contracts": [ + { + "dataset_id": "ru-current-v1", + "source_work_id": "work-divinity-code", + "status": "runtime-current", + "activation": "active-default", + "identity": "dataset-id-plus-local-record-id" + }, + { + "dataset_id": "future-unlocking-your-dreams-source", + "source_work_id": "work-unlocking-your-dreams", + "status": "reserved-id-not-created", + "activation": "forbidden-until-extracted-validated-and-registered", + "identity": "dataset-id-plus-local-record-id" + } + ], + "identity_contract": { + "global_record_key": [ + "dataset_id", + "record_id" + ], + "numeric_ids_are_local_to_dataset": true, + "cross_dataset_numeric_id_equivalence": false, + "stable_relation_identity": "relation_id" + }, + "modes": [ + { + "id": "separate", + "label": "separate dataset switching", + "status": "recommended-first-functional-mode", + "requires": [ + "registered-and-validated-second-dataset", + "dataset-aware-loader", + "dataset-aware-history-and-links", + "stable-fallback" + ] + }, + { + "id": "combined", + "label": "federated combined search", + "status": "recommended-after-separate-mode", + "implementation_rule": "query-separate-indexes-and-merge-ranked-results-with-provenance", + "destructive_json_merge": false + }, + { + "id": "comparison", + "label": "side-by-side comparison", + "status": "recommended-after-reviewed-relation-map", + "implementation_rule": "compare-only-explicit-reviewed-relations", + "numeric_id_matching": false + } + ], + "visible_provenance": { + "required_on_results_and_cards": [ + "source_work_id", + "dataset_id", + "translation_or_variant_label", + "source_reference_when_known" + ], + "unknown_values_must_be_visible": true + }, + "routing_contract": { + "record_route_fields": [ + "dataset", + "record" + ], + "search_route_fields": [ + "mode", + "dataset", + "q" + ], + "comparison_route_fields": [ + "mode", + "relation" + ], + "history_must_store_dataset_identity": true, + "sharing_must_preserve_dataset_identity": true, + "legacy_links_without_dataset_fallback_to": "ru-current-v1" + }, + "loading_contract": { + "validate_before_activation": true, + "required_validation": [ + "registry-entry", + "schema", + "record-count-policy", + "unique-local-ids", + "required-fields", + "declared-hashes", + "source-work-link" + ], + "activation_is_atomic": true, + "partial_activation_forbidden": true + }, + "cache_contract": { + "cache_keys_must_include_dataset_id_and_version": true, + "unrelated_origin_caches_must_not_be_deleted": true, + "dataset_failure_must_not_corrupt_current_cache": true, + "new_dataset_activation_requires_functional_release": true + }, + "fallback_contract": { + "stable_dataset_id": "ru-current-v1", + "automatic_on": [ + "load-failure", + "validation-failure", + "hash-mismatch", + "partial-cache-state" + ], + "preserve_user_preferences": true, + "record_recovery_reason": true + }, + "relation_map_contract": { + "required_fields": [ + "relation_id", + "left_dataset_id", + "left_record_id", + "right_dataset_id", + "right_record_id", + "relation_type", + "evidence", + "review_status" + ], + "allowed_relation_types": [ + "same-symbol", + "related-symbol", + "contrast", + "source-cross-reference" + ], + "auto_accept_by_numeric_id": false, + "human_review_required": true + }, + "stages": [ + { + "id": "D1.4", + "status": "architecture-only", + "changes_runtime": false, + "changes_data": false + }, + { + "id": "future-second-dataset-extraction", + "status": "not-started", + "requires": [ + "source-and-rights-evidence-review", + "separate-dataset-id", + "extraction-validation", + "rollback-plan" + ] + }, + { + "id": "future-separate-mode", + "status": "not-started", + "requires": [ + "registered-second-dataset", + "functional-release" + ] + }, + { + "id": "future-combined-mode", + "status": "not-started", + "requires": [ + "separate-mode-stable", + "federated-ranking-contract" + ] + }, + { + "id": "future-comparison-mode", + "status": "not-started", + "requires": [ + "reviewed-relation-map" + ] + } + ], + "rollback_contract": { + "precondition": "immutable-checkpoint-before-functional-activation", + "steps": [ + "restore-default-dataset-to-ru-current-v1", + "disable-new-mode-flags", + "remove-only-dataset-scoped-new-caches", + "preserve-history-and-preferences", + "re-run-runtime-data-and-pwa-validation" + ] + }, + "prohibitions": [ + "do-not-treat-retained-pdf-as-ready-dataset", + "do-not-assume-cross-book-id-equivalence", + "do-not-destructively-merge-source-json", + "do-not-change-runtime-in-d1.4", + "do-not-change-existing-data-files-in-d1.4", + "do-not-add-api-keys" + ] +} From 7d22d49267eafed7b5037e5007bec6c14c7228c2 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:02:33 +0300 Subject: [PATCH 03/13] docs: define two-book product architecture --- docs/TWO_BOOK_ARCHITECTURE.md | 373 ++++++++++++++++++++++++++++++++++ 1 file changed, 373 insertions(+) create mode 100644 docs/TWO_BOOK_ARCHITECTURE.md diff --git a/docs/TWO_BOOK_ARCHITECTURE.md b/docs/TWO_BOOK_ARCHITECTURE.md new file mode 100644 index 0000000..8d1b4cb --- /dev/null +++ b/docs/TWO_BOOK_ARCHITECTURE.md @@ -0,0 +1,373 @@ +# Two-book product architecture + +## Scope + +This document defines the D1.4 architecture for working with two source books in uDream. It is architecture-only. + +It does not: + +- create or extract a second dataset; +- change the current 4,086 records; +- change the runtime, PWA, Service Worker or package metadata; +- add a user-facing dataset selector; +- begin AI-assisted translation. + +The machine-readable companion is `docs/two-book-architecture.json`. + +## Verified current facts + +### Registered data + +The current registry contains: + +```text +source-divinity-code-en + canonical physical: data/bd2.json + retained equivalent: data/db.json + +ru-current-v1 + active runtime: data/divinity_code_ru.json +``` + +`ru-current-v1` remains the stable default dataset until a separate functional release explicitly changes the runtime contract. + +### Retained source documents + +The repository retains two PDF documents: + +1. `_archive/source-files/The_Divinity_Code_to_Understanding_Your_Dreams_and_Visions_PDF_Room.pdf`; +2. `_archive/source-files/Unlocking-Your-Dream-Student-Ma.pdf`. + +The first work is connected to the registered Divinity Code datasets. The second document is evidence that source material is retained, but there is no verified extracted logical dataset for it. + +Presence of a PDF is not evidence that a complete, validated or publishable dataset exists. + +### Unknown or incomplete evidence + +The repository does not currently prove: + +- the exact source edition for either retained PDF; +- the original download URLs; +- archived distribution permission wording; +- a complete extraction pipeline for the second book; +- stable second-book record IDs; +- reviewed cross-book record relationships. + +These unknowns must remain visible and must not be replaced by assumptions. + +## Stable source-work and document identities + +### Source works + +```text +work-divinity-code +work-unlocking-your-dreams +``` + +### Retained documents + +```text +document-divinity-code-pdf +document-unlocking-your-dreams-student-material-pdf +``` + +The document IDs identify retained files. They do not by themselves create logical datasets. + +### Dataset identities + +Current: + +```text +source-divinity-code-en +ru-current-v1 +``` + +Reserved future identity: + +```text +future-unlocking-your-dreams-source +``` + +The reserved ID is an architectural placeholder. It must not be treated as an existing dataset, loaded by runtime code or listed to users before extraction, validation and registration are complete. + +## Global record identity + +Local numeric record IDs are scoped to one logical dataset. + +The global identity tuple is: + +```text +(dataset_id, record_id) +``` + +Examples: + +```text +(ru-current-v1, 125) +(future-unlocking-your-dreams-source, 125) +``` + +These two examples are different records even when the numeric part matches. + +Cross-book identity must never be inferred from numeric equality. + +## Product modes + +### 1. Separate dataset switching + +Users choose one registered dataset and search only within it. + +Advantages: + +- simplest mental model; +- clearest provenance; +- lowest ranking ambiguity; +- easiest validation and fallback; +- safest first functional implementation. + +Risks: + +- users may need to repeat a search in the other dataset; +- current history and links must become dataset-aware. + +**Decision:** implement this first, but only after the second dataset is extracted, validated, registered and approved in a separate functional release. + +### 2. Federated combined search + +The application queries independent indexes and combines the returned results at presentation time. + +Required rule: + +```text +separate datasets + separate indexes + federated ranking +``` + +Forbidden approach: + +```text +destructively merge both books into one source JSON +``` + +Each combined result must retain its dataset and source-work identity. Ranking must define how exact matches, aliases and distant matches from different datasets are interleaved. + +**Decision:** add only after separate mode is stable and ranking rules have dedicated tests. + +### 3. Side-by-side comparison + +The application displays explicitly related records from two datasets. + +Comparison must use a reviewed relation map. It cannot pair records merely because they share a numeric ID or similar text. + +**Decision:** add only after a relation-map format exists and reviewed relationships are available. + +## Recommended staged architecture + +### Stage A — source and rights evidence + +- identify exact works and editions as far as evidence permits; +- archive known source URLs and distribution statements; +- keep unknowns explicit. + +### Stage B — second dataset creation + +- extract to a new physical file; +- assign a new logical dataset ID; +- preserve raw extraction separately from normalized output; +- validate schema, required fields, local IDs and source references; +- create hashes, provenance and rollback; +- do not modify `ru-current-v1`. + +### Stage C — separate mode + +- add a dataset-aware loader; +- expose only registered and validated datasets; +- keep `ru-current-v1` as automatic fallback; +- make routes, history and sharing dataset-aware; +- publish as a functional release. + +### Stage D — federated combined mode + +- maintain separate indexes; +- query each enabled dataset independently; +- combine ranked result descriptors, not source records; +- show provenance in every result; +- test ranking and fallback independently. + +### Stage E — comparison mode + +- create a reviewed relation map; +- expose explicit comparison links; +- show relation type, evidence and review status; +- never infer accepted relations from numeric IDs. + +## Visible provenance contract + +Every result and record card in future multi-dataset modes must show or make directly accessible: + +- source work; +- dataset ID or understandable dataset label; +- translation/editorial variant; +- source reference when known; +- an explicit unknown state when provenance is incomplete. + +Combined results must never hide which dataset produced a match. + +## URL, history and sharing contract + +### Record links + +Future record links must preserve: + +```text +dataset= +record= +``` + +Conceptual example: + +```text +?dataset=ru-current-v1&record=125 +``` + +### Search links + +Search state should preserve: + +```text +mode= +dataset= +q= +``` + +### Comparison links + +Comparison links should use: + +```text +mode=comparison +relation= +``` + +They should not encode an unreviewed assumption by pairing two numbers directly. + +### Legacy links + +Links created before dataset-aware routing fall back to `ru-current-v1`. + +### Browser history and local history + +Each history entry must store the dataset ID with the local record ID. Existing legacy entries without dataset identity must be interpreted as `ru-current-v1` during migration. + +### Sharing + +Shared text and URLs must preserve dataset identity and visible source-work provenance. + +## Loading and activation contract + +A dataset can become selectable only when all required checks pass: + +- registered logical dataset entry; +- registered physical file entry; +- schema validation; +- required-field validation; +- unique local IDs; +- declared record-count policy; +- declared raw and canonical hashes; +- source-work/document relationship; +- approved status for runtime activation. + +Activation must be atomic. Partial loading must not replace the current working dataset. + +## Cache and Service Worker contract + +Future dataset cache keys must include dataset ID and dataset version/hash. + +Rules: + +- new dataset failure cannot corrupt the stable current cache; +- only uDream dataset-scoped caches may be cleaned; +- unrelated caches on the same origin must remain untouched; +- a functional release is required before changing runtime cache behavior; +- rollback must be able to disable new modes and restore `ru-current-v1` without clearing user preferences. + +D1.4 itself makes no Service Worker changes. + +## Stable fallback contract + +The stable fallback remains: + +```text +ru-current-v1 +``` + +Automatic fallback is required on: + +- load failure; +- schema or registry validation failure; +- hash mismatch; +- partial cache state; +- activation failure. + +Fallback should preserve user preferences. The application should record a non-secret recovery reason for diagnostics and show a clear user message rather than silently presenting mixed data. + +## Relation-map contract + +A future reviewed relation entry requires: + +```text +relation_id +left_dataset_id +left_record_id +right_dataset_id +right_record_id +relation_type +evidence +review_status +``` + +Initial relation types: + +- `same-symbol`; +- `related-symbol`; +- `contrast`; +- `source-cross-reference`. + +Human review is required before a relation is presented as established. Automated similarity may propose candidates but cannot mark them accepted. + +## Migration and rollback + +Before the first functional multi-dataset release: + +1. create an immutable checkpoint; +2. preserve the current default and all current data hashes; +3. add the new dataset without replacing current files; +4. add dataset-aware routing/history migration; +5. validate loading, offline behavior and fallback; +6. publish a separate functional patchnote; +7. verify the public site and installed PWA. + +Rollback must: + +1. restore `ru-current-v1` as the only enabled dataset; +2. disable new mode flags; +3. remove only newly introduced dataset-scoped caches; +4. preserve history and preferences; +5. interpret dataset-aware historical entries safely; +6. re-run runtime, data and PWA validation. + +## Explicit non-decisions + +D1.4 does not decide: + +- the final filename or record count of the second dataset; +- the exact second-book extraction tool; +- whether a second Russian translation will use DeepSeek; +- final cross-book ranking weights; +- final UI layout; +- any content correction from D1.3 review candidates. + +Those require separate evidence and separate phases. + +## Completion boundary + +D1.4 is complete when the architecture, machine-readable contract and validator are merged while existing data, runtime, PWA, package metadata, saved versions and archive remain unchanged. From b8de39c3ef41365e9607f7f894c4b9057479b3b3 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:03:19 +0300 Subject: [PATCH 04/13] test: add two-book architecture validator --- scripts/validate-two-book-architecture.mjs | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 scripts/validate-two-book-architecture.mjs diff --git a/scripts/validate-two-book-architecture.mjs b/scripts/validate-two-book-architecture.mjs new file mode 100644 index 0000000..bd59d23 --- /dev/null +++ b/scripts/validate-two-book-architecture.mjs @@ -0,0 +1,144 @@ +#!/usr/bin/env node + +import { access, readFile } from "node:fs/promises"; +import path from "node:path"; +import process from "node:process"; + +const ROOT = process.cwd(); +const ARCH_PATH = "docs/two-book-architecture.json"; +const DATASET_REGISTRY_PATH = "data/datasets.json"; +const DOC_PATH = "docs/TWO_BOOK_ARCHITECTURE.md"; + +function fail(message) { + throw new Error(message); +} + +async function readJson(relativePath) { + const source = await readFile(path.join(ROOT, relativePath), "utf8"); + try { + return JSON.parse(source); + } catch (error) { + fail(`${relativePath}: invalid JSON (${error.message})`); + } +} + +function requireUniqueIds(items, label) { + const ids = new Set(); + for (const item of items) { + if (!item || typeof item !== "object" || Array.isArray(item)) { + fail(`${label}: every entry must be an object`); + } + if (typeof item.id !== "string" || !item.id.trim()) { + fail(`${label}: every entry needs a non-empty id`); + } + if (ids.has(item.id)) fail(`${label}: duplicate id ${item.id}`); + ids.add(item.id); + } + return ids; +} + +async function main() { + const architecture = await readJson(ARCH_PATH); + const datasets = await readJson(DATASET_REGISTRY_PATH); + const document = await readFile(path.join(ROOT, DOC_PATH), "utf8"); + + if (architecture.schema_version !== 1) fail("architecture schema_version must be 1"); + if (architecture.status !== "architecture-only") fail("D1.4 status must remain architecture-only"); + if (architecture.functional_release !== "v23.8.0") fail("functional release changed unexpectedly"); + if (architecture.default_dataset_id !== "ru-current-v1") fail("stable default must remain ru-current-v1"); + + const workIds = requireUniqueIds(architecture.source_works, "source_works"); + const documentIds = requireUniqueIds(architecture.documents, "documents"); + const modeIds = requireUniqueIds(architecture.modes, "modes"); + const stageIds = requireUniqueIds(architecture.stages, "stages"); + + for (const required of ["work-divinity-code", "work-unlocking-your-dreams"]) { + if (!workIds.has(required)) fail(`missing source work ${required}`); + } + for (const required of ["document-divinity-code-pdf", "document-unlocking-your-dreams-student-material-pdf"]) { + if (!documentIds.has(required)) fail(`missing retained document ${required}`); + } + for (const required of ["separate", "combined", "comparison"]) { + if (!modeIds.has(required)) fail(`missing product mode ${required}`); + } + if (!stageIds.has("D1.4")) fail("missing D1.4 stage"); + + const registeredDatasetIds = new Set(datasets.logical_datasets.map((item) => item.id)); + if (!registeredDatasetIds.has("ru-current-v1")) fail("dataset registry lacks ru-current-v1"); + if (!registeredDatasetIds.has("source-divinity-code-en")) fail("dataset registry lacks source-divinity-code-en"); + + const currentContract = architecture.dataset_contracts.find((item) => item.dataset_id === "ru-current-v1"); + if (!currentContract || currentContract.activation !== "active-default") { + fail("ru-current-v1 must remain active-default"); + } + const futureContract = architecture.dataset_contracts.find( + (item) => item.dataset_id === "future-unlocking-your-dreams-source", + ); + if (!futureContract || futureContract.status !== "reserved-id-not-created") { + fail("future second-book dataset must remain reserved-id-not-created"); + } + + const identity = architecture.identity_contract?.global_record_key; + if (JSON.stringify(identity) !== JSON.stringify(["dataset_id", "record_id"])) { + fail("global identity must be dataset_id + record_id"); + } + if (architecture.identity_contract.cross_dataset_numeric_id_equivalence !== false) { + fail("cross-dataset numeric ID equivalence must be false"); + } + + const combined = architecture.modes.find((item) => item.id === "combined"); + if (!combined || combined.destructive_json_merge !== false) { + fail("combined mode must forbid destructive JSON merge"); + } + const comparison = architecture.modes.find((item) => item.id === "comparison"); + if (!comparison || comparison.numeric_id_matching !== false) { + fail("comparison mode must forbid numeric-ID matching"); + } + + if (architecture.fallback_contract?.stable_dataset_id !== "ru-current-v1") { + fail("fallback dataset must remain ru-current-v1"); + } + if (architecture.cache_contract?.unrelated_origin_caches_must_not_be_deleted !== true) { + fail("unrelated origin caches must be protected"); + } + if (architecture.relation_map_contract?.human_review_required !== true) { + fail("relation map must require human review"); + } + + for (const entry of architecture.documents) { + if (!workIds.has(entry.source_work_id)) fail(`document ${entry.id}: unknown source work`); + await access(path.join(ROOT, entry.path)); + } + + const prohibited = new Set(architecture.prohibitions || []); + for (const required of [ + "do-not-treat-retained-pdf-as-ready-dataset", + "do-not-assume-cross-book-id-equivalence", + "do-not-destructively-merge-source-json", + "do-not-change-runtime-in-d1.4", + "do-not-change-existing-data-files-in-d1.4", + "do-not-add-api-keys", + ]) { + if (!prohibited.has(required)) fail(`missing prohibition ${required}`); + } + + for (const requiredText of [ + "(dataset_id, record_id)", + "Federated combined search", + "Side-by-side comparison", + "ru-current-v1", + "Presence of a PDF is not evidence", + ]) { + if (!document.includes(requiredText)) fail(`${DOC_PATH}: missing ${requiredText}`); + } + + console.log( + `Two-book architecture passed: ${workIds.size} source works, ${documentIds.size} documents, ` + + `${modeIds.size} modes, stable fallback ${architecture.fallback_contract.stable_dataset_id}.`, + ); +} + +main().catch((error) => { + console.error(`Two-book architecture validation failed: ${error.message}`); + process.exit(1); +}); From 59c94dadfc3f25e4f3c99fd58ee6d62316341384 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:03:37 +0300 Subject: [PATCH 05/13] ci: validate D1.4 two-book architecture --- .github/workflows/validate.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index aed73da..2d9570c 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -37,6 +37,9 @@ jobs: - name: Validate D1.3 deterministic data-quality reports run: node scripts/audit-data-quality.mjs --check + - name: Validate D1.4 two-book architecture + run: node scripts/validate-two-book-architecture.mjs + - name: Require a new uNews patchnote for Pull Request changes if: ${{ github.event_name == 'pull_request' }} env: @@ -69,6 +72,7 @@ jobs: node --check scripts/validate-data-provenance.mjs node --check scripts/validate-dataset-registry.mjs node --check scripts/audit-data-quality.mjs + node --check scripts/validate-two-book-architecture.mjs node --check scripts/validate-patchnote-diff.mjs node --check scripts/validate-screenshot-tooling.mjs node --check tools/screenshots/playwright.config.mjs From 6673de5bdffd4ca8c1e9067fb667d9980c32d9bd Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:04:27 +0300 Subject: [PATCH 06/13] docs: record D1.4 architecture baseline --- VERSION.md | 68 ++++++++++++++++++++---------------------------------- 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/VERSION.md b/VERSION.md index f32bf74..5393c02 100644 --- a/VERSION.md +++ b/VERSION.md @@ -8,61 +8,43 @@ - Published: 2026-07-20 - Purpose: preserve the verified PWA update, cache migration and installation flow release - Release: https://github.com/sunpole/udream/releases/tag/v23.8.0 -- Verification: the immutable tag resolves to the exact functional merge commit; the release workflow re-runs tests, project validation, syntax checks and version consistency before publication - Runtime version sources: `package.json`, `src/version.js` and `version.json` all contain `23.8.0` -- Database: the active 4,086-record JSON database is unchanged +- Active database: 4,086 records, unchanged - Previous checkpoint: `v23.7.0` -## Documentation, provenance, registry and audit baseline - -`v23.8.10` - -- Status: D1.3 non-destructive data-quality audit milestone; it does not create a new application build or move the `v23.8.0` tag -- Purpose: define deterministic audit rules, inspect all registered source/current records and preserve the results without modifying data -- Audit specification: `docs/DATA_QUALITY_AUDIT.md` -- Audit script: `scripts/audit-data-quality.mjs` -- Machine report: `reports/data-quality-audit.json` -- Human report: `reports/data-quality-audit.md` -- CI command: `node scripts/audit-data-quality.mjs --check` -- Logical datasets audited: `source-divinity-code-en`, `ru-current-v1` -- Records audited: 4,086 in each logical dataset -- ID result: unique, ordered and aligned from 1 through 4,086 -- Preserved-field differences: 0 for `id`, `symbol`, `description`, `source` and `date_added` -- Expected changed-field differences: aliases 4,083; notes 4,086; tags 4,086 -- Structural gate: pass -- Structural error instances: 0 -- Warning instances: 0 -- Human-review instances: 5,022 in five aggregated finding groups -- Important limitation: review counts are heuristic candidates, not 5,022 proven content errors; one record may appear in multiple groups -- Data mutation policy: read-only; no finding is corrected by the audit -- Registry baseline: `v23.8.9`, D1.2 completed by PR #27 -- Source logical dataset ID: `source-divinity-code-en` -- Current localized dataset ID: `ru-current-v1` -- Canonical physical serialization: `source-divinity-code-en-bd2` at `data/bd2.json` -- Retained compatibility serialization: `source-divinity-code-en-db` at `data/db.json` -- Active runtime physical file: `ru-current-v1-runtime` at `data/divinity_code_ru.json` -- Migration status: `planned-not-executed`; no file removal, rename or runtime switch is approved -- Active dataset SHA-256: `1def80216e238b0c2a8640aaf1b4e95dd0669d5944a67f4e7c4421fad55a6e64` -- Shared canonical English JSON SHA-256: `5ebe0d973f9cfd1c9db65a9d5abebe0ca16788261219299a710ed9fe78bb25d1` +## Documentation, data and architecture baseline + +`v23.8.11` + +- Status: D1.4 two-book architecture milestone; no new application build and no movement of the `v23.8.0` tag +- Purpose: define safe multi-book identity, provenance, modes, routing, validation, caching, fallback and rollback before implementation +- Human architecture: `docs/TWO_BOOK_ARCHITECTURE.md` +- Machine-readable architecture: `docs/two-book-architecture.json` +- Validator: `scripts/validate-two-book-architecture.mjs` +- CI command: `node scripts/validate-two-book-architecture.mjs` +- Current default dataset: `ru-current-v1` +- Current source dataset: `source-divinity-code-en` +- Second source work status: retained PDF evidence only; no registered second-book dataset exists +- Global record identity: `(dataset_id, record_id)` +- Recommended order: separate mode, then federated combined search, then reviewed side-by-side comparison +- Combined search rule: independent indexes and provenance-preserving result federation; no destructive JSON merge +- Comparison rule: explicit reviewed relation map; no numeric-ID equivalence across books +- Stable fallback: `ru-current-v1` +- Runtime/data policy: existing data files, runtime, PWA, package metadata, saved versions and archive remain unchanged +- Previous baselines: D1.1 `23.8.8`, D1.2 `23.8.9`, D1.3 `23.8.10` - Live handoff source: `WORK_STATUS.md` -- Next approved task after D1.3 merge: D1.4 two-book product architecture - Repository download: https://github.com/sunpole/udream/archive/refs/tags/v23.8.0.zip ## Current development line No functional application version is assigned after `v23.8.0`. -Documentation, provenance and automation updates `23.8.1` through `23.8.10` finalize the immutable release record, product/data baseline, translation safety, cross-device workflow, screenshot provenance, verified data provenance, dataset-registry governance and deterministic data-quality reporting. They do not change application runtime, PWA behavior or existing database records. +Documentation, provenance, registry, audit and architecture updates `23.8.1` through `23.8.11` do not change application runtime, PWA behavior or existing database records. + +The next implementation phase must be approved separately. A second-book dataset must first be extracted, validated, registered and reviewed before selector, combined search or comparison UI work begins. ## Unified version line Version `v23.7.0` began the unified maintained-product line; `v23.8.0` is its next feature release. -The repository previously used two separate counters: - -- Git releases: `v1.0.0`, `v2.0.0`, `v3.0.0`, `v3.5.0`, `v3.6.0`; -- legacy UI iterations: numbered folders through `019` and the visible interface label `v19`. - -The product-version decision advanced the legacy visible line from `19` to `20` and combined it with the `3.7.0` development line, producing the unified version `23.7.0`. New maintained releases continue from that unified semantic version. - -Historical tags, releases, archived folders and runnable snapshots keep their original numbers. +Historical tags, releases, archived folders and runnable snapshots keep their original numbers. Existing release tags are immutable. From b5c819de9e573f5d47de0a7aec19eb0bee050fea Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:06:13 +0300 Subject: [PATCH 07/13] docs: mark D1.4 architecture complete --- ROADMAP.md | 122 ++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 67 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 697f8e5..dbd52b0 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -31,7 +31,7 @@ See `docs/MODULARIZATION_PLAN.md`. - [x] Rank exact and primary symbol matches before redirect and distant matches. - [x] Resolve Russian aliases to their owning primary cards. - [x] Make all five search filters strict to their declared fields. -- [x] Keep search filters above the expanding autocomplete panel. +- [x] Keep search filters above the expanding autocomplete list. - [x] Add release-specific screenshots for the uNews publication. ## Completed: PWA update and installation v23.8.0 @@ -67,7 +67,6 @@ See `docs/MODULARIZATION_PLAN.md`. - [x] Require planned work, actual work, branch, commit, checks, blockers and exact next action. - [x] Require a pushed handoff before switching devices or pausing unfinished work. - [x] Make every future agent read and update the handoff at task start, pause and completion. -- [x] Record the current signal as `READY`: no unfinished task or open Pull Request. ## Completed: unified AI/GitHub workflow v23.8.6 @@ -79,7 +78,6 @@ See `docs/MODULARIZATION_PLAN.md`. - [x] Require new screenshot provenance metadata in patchnotes. - [x] Require a newly added PNG/JPEG in the same Pull Request instead of reusing an older image. - [x] Add structural validation for `WORK_STATUS.md`. -- [x] Synchronize stale cross-device documentation references. See `docs/AI_GITHUB_WORKFLOW.md`. @@ -87,79 +85,74 @@ See `docs/AI_GITHUB_WORKFLOW.md`. - [x] Add isolated Playwright tooling outside the public runtime. - [x] Pin Playwright package and lockfile versions. -- [x] Start the exact branch checkout through a local HTTP server in GitHub Actions. - [x] Capture desktop and mobile screenshots from real Chromium. -- [x] Define reusable JSON scenarios for page startup, search ranking and Russian alias behavior. -- [x] Allow only explicit safe actions instead of arbitrary scenario JavaScript. -- [x] Require visible assertions before every capture. -- [x] Upload screenshots, per-scenario provenance, manifest and test results as workflow artifacts. -- [x] Keep the permanent workflow read-only and prohibit automatic commits. -- [x] Preserve successful manifest entries across Playwright retries. -- [x] Validate package/lock, workflow permissions, scenario coverage, artifact cleanup and runtime isolation. -- [x] Complete a four-of-four successful Chromium run. -- [x] Visually inspect all generated PNGs before selecting the uNews image. -- [x] Document local and GitHub Actions invocation. +- [x] Define reusable JSON scenarios and visible assertions. +- [x] Upload screenshots and provenance as workflow artifacts. +- [x] Keep the permanent workflow read-only. See `docs/SCREENSHOT_AUTOMATION.md` and `tools/screenshots/README.md`. ## Completed: D1.1 data provenance v23.8.8 -- [x] Recover the retained Git history of `data/divinity_code_ru.json`, `data/bd2.json`, `data/db.json` and `data/report.txt`. -- [x] Record exact bytes, raw SHA-256, canonical JSON SHA-256, schema and ordered ID coverage. -- [x] Separate proven facts, reasonable inferences and unknowns in `docs/DATA_PROVENANCE.md`. -- [x] Correct the earlier byte-duplicate claim for `bd2.json` and `db.json`. -- [x] Prove that `bd2.json` and `db.json` are byte-different but parsed/canonical-JSON equal. -- [x] Record that the active dataset preserves IDs and core source fields while changing `aliases`, `notes` and `tags`. -- [x] Invalidate the earlier intermediate metric that inspected nonexistent field `note` instead of `notes`. -- [x] Add `scripts/validate-data-provenance.mjs` and integrate it into project validation. -- [x] Keep all current data files, runtime, PWA, saved versions and archives unchanged. +- [x] Recover retained Git history of maintained data files. +- [x] Record bytes, raw/canonical hashes, schema and ordered IDs. +- [x] Separate proven facts, inferences and unknowns. +- [x] Prove that `bd2.json` and `db.json` are byte-different but canonical-JSON equal. +- [x] Add permanent provenance validation. +- [x] Keep data, runtime, PWA, saved versions and archives unchanged. See `docs/DATA_PROVENANCE.md`. ## Completed: D1.2 dataset registry v23.8.9 -- [x] Add machine-readable `data/datasets.json` with schema version 1. -- [x] Define stable logical dataset IDs `source-divinity-code-en` and `ru-current-v1`. -- [x] Define stable physical file IDs for both English serializations and the active runtime file. -- [x] Select `data/bd2.json` as the canonical maintained physical serialization through a project-governance decision. -- [x] State explicitly that the canonical choice does not prove the historical original or authoritative source edition. -- [x] Retain `data/db.json` as an equivalent compatibility serialization. -- [x] Record bytes, raw hashes, canonical hashes, record counts, roles, statuses and source relationships. -- [x] Add `docs/DATASET_REGISTRY.md` with identity, reference-audit, migration and rollback rules. -- [x] Add `scripts/validate-dataset-registry.mjs` and require it in GitHub Actions. -- [x] Preserve all existing data files, runtime, PWA, package metadata, saved versions and archives unchanged. -- [x] Keep the physical migration in status `planned-not-executed`. +- [x] Add machine-readable `data/datasets.json`. +- [x] Define stable logical and physical dataset IDs. +- [x] Select `data/bd2.json` as canonical maintained serialization by governance decision. +- [x] Retain `data/db.json` as equivalent compatibility serialization. +- [x] Add registry documentation and validator. +- [x] Keep physical migration `planned-not-executed`. See `data/datasets.json` and `docs/DATASET_REGISTRY.md`. ## Completed: D1.3 data-quality audit v23.8.10 -- [x] Define a four-level severity model: error, warning, review and info. -- [x] Add structural checks for arrays, required fields, types, dates, unique/ordered IDs and registered record counts. -- [x] Add data-hygiene and ambiguity checks for whitespace, empty values, duplicate aliases/tags, control characters, HTML-like content and normalized collisions. -- [x] Compare `source-divinity-code-en` with `ru-current-v1` without changing either dataset. -- [x] Confirm 4,086 unique ordered IDs and exact source/current alignment. -- [x] Confirm zero differences in preserved fields `id`, `symbol`, `description`, `source` and `date_added`. -- [x] Record expected changed-field counts: aliases 4,083; notes 4,086; tags 4,086. -- [x] Generate deterministic machine-readable and human-readable reports. -- [x] Add permanent `scripts/audit-data-quality.mjs` with write and `--check` modes. -- [x] Require report freshness and a passing structural gate in GitHub Actions. -- [x] Record 0 structural errors, 0 warnings and 5,022 human-review instances in five aggregated groups. -- [x] State explicitly that heuristic review counts are not proven content errors and are not auto-fixed. -- [x] Preserve all existing data files, runtime, PWA, package metadata, saved versions and archives unchanged. +- [x] Define error, warning, review and info severities. +- [x] Add deterministic structural and hygiene checks. +- [x] Confirm 4,086 unique ordered and aligned IDs. +- [x] Confirm zero differences in preserved fields. +- [x] Generate deterministic machine and human reports. +- [x] Record 0 structural errors, 0 warnings and 5,022 overlapping human-review instances. +- [x] Keep the audit read-only and preserve all runtime/data files. See `docs/DATA_QUALITY_AUDIT.md` and `reports/data-quality-audit.md`. -## Next approved work: D1.4 — two-book product architecture +## Completed: D1.4 two-book product architecture v23.8.11 -- [ ] Identify and register the second source book/dataset as far as retained evidence allows. -- [ ] Define the intended relationship between the two source books. -- [ ] Compare separate-database switching, combined search and side-by-side comparison. -- [ ] Define user-visible provenance for every result in every future mode. -- [ ] Define validation, reload, cache-clearing and automatic fallback contracts before any selector implementation. -- [ ] Decide how history, sharing and deep links preserve dataset identity. -- [ ] Approve a migration and rollback plan before implementing a user-facing selector or merged index. -- [ ] Keep D1.4 architecture-only unless a separate functional implementation phase is approved. +- [x] Register stable source-work and retained-document identities as architecture metadata. +- [x] Keep the second PDF classified as retained evidence, not a ready dataset. +- [x] Define global record identity as `(dataset_id, record_id)`. +- [x] Compare separate switching, federated combined search and side-by-side comparison. +- [x] Recommend staged implementation: separate mode first, combined mode second, reviewed comparison third. +- [x] Require visible source-work, dataset, translation/variant and source-reference provenance. +- [x] Define dataset-aware URL, history, sharing and legacy-link migration contracts. +- [x] Define validation, atomic activation, cache isolation and automatic fallback to `ru-current-v1`. +- [x] Define an explicit reviewed relation-map contract without numeric-ID assumptions. +- [x] Define migration and rollback before any functional implementation. +- [x] Add machine-readable `docs/two-book-architecture.json` and permanent validator. +- [x] Preserve existing data files, runtime, PWA, package metadata, saved versions and archive unchanged. + +See `docs/TWO_BOOK_ARCHITECTURE.md`. + +## Next approved work: second-book evidence and dataset preparation + +Before any selector or combined-search implementation: + +- [ ] archive exact source/edition evidence and known distribution statements for the second retained work; +- [ ] define a separate extraction task and immutable raw-output policy; +- [ ] create a new logical dataset ID only after actual extraction exists; +- [ ] validate schema, required fields, local IDs, record-count policy, hashes and source references; +- [ ] register the second dataset without replacing `ru-current-v1`; +- [ ] approve a separate functional phase for dataset switching only after data readiness. ## D1.5 — AI-assisted translation experiment @@ -172,24 +165,19 @@ See `docs/DATA_QUALITY_AUDIT.md` and `reports/data-quality-audit.md`. See `docs/TRANSLATION_WORKFLOW.md`. -## Rights and provenance completion - -- [ ] Archive the original source URLs, access dates and exact open-distribution statements for bundled PDFs. -- [ ] Review the retained PDF set against `docs/CONTENT_AND_RIGHTS.md` and `THIRD_PARTY_NOTICES.md`. - ## Product completion after D1 - [ ] Restore or redesign the administration workflow outside the public runtime. -- [ ] Add broader automated browser smoke checks for asset paths, startup and critical flows beyond the current screenshot scenarios. -- [ ] Review accessibility: keyboard navigation, contrast, focus, screen readers and text selection. +- [ ] Add broader automated browser smoke checks. +- [ ] Review accessibility. - [ ] Review privacy, local history and sharing behavior. - [x] Confirm automatic uDream publications and operational recovery in `@uNewsLog`. ## Later options -- [ ] Consider moving inline CSS from `index.html` only if it materially improves maintainability. -- [ ] Consider a build pipeline only when static-file maintenance becomes a real blocker. -- [ ] Consider additional languages only after the source and translation workflow is documented. +- [ ] Consider moving inline CSS only if maintainability requires it. +- [ ] Consider a build pipeline only when static-file maintenance becomes a blocker. +- [ ] Consider additional languages only after source and translation workflow is documented. - [ ] Consider TypeScript only when JSDoc and `@ts-check` no longer provide sufficient protection. -The roadmap is intentionally conservative: preserve the working static site, current data and restoration points while advancing one clearly bounded series at a time. +The roadmap remains conservative: preserve the working static site, current data and restoration points while advancing one bounded series at a time. From 7f5f05dff45cd56e32403fa3d9b16d44d2d11a6a Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:06:48 +0300 Subject: [PATCH 08/13] docs: add D1.4 architecture patchnote --- ...3-udream-v23-8-11-two-book-architecture.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 news/2026-07-23-udream-v23-8-11-two-book-architecture.md diff --git a/news/2026-07-23-udream-v23-8-11-two-book-architecture.md b/news/2026-07-23-udream-v23-8-11-two-book-architecture.md new file mode 100644 index 0000000..ded22e6 --- /dev/null +++ b/news/2026-07-23-udream-v23-8-11-two-book-architecture.md @@ -0,0 +1,36 @@ +--- +type: architecture +project: uDream +series: udream +title: Спроектирована безопасная архитектура двух книг +version: 23.8.11 +queued_at: 2026-07-23T08:15:00Z +repo_url: https://github.com/sunpole/udream +web_url: https://sunpole.github.io/udream/ +image: 2026-07-23-udream-v23-8-11-two-book-architecture.png +image_source: document-render +image_target: docs/TWO_BOOK_ARCHITECTURE.md +image_commit: b5c819de9e573f5d47de0a7aec19eb0bee050fea +image_captured_at: 2026-07-23T08:15:00Z +--- + +# uDream 23.8.11: архитектура двух книг определена до реализации + +Завершён architecture-only этап D1.4. Он определяет, как uDream сможет безопасно работать с двумя исходными книгами, не меняя текущий сайт и базу. + +- Текущий default остаётся `ru-current-v1`. +- Вторая сохранённая PDF-книга пока не считается готовым dataset. +- Глобальная идентичность записи определена как `(dataset_id, record_id)`. +- Первым будущим режимом рекомендовано отдельное переключение зарегистрированных баз. +- Combined search должен быть federated по отдельным индексам, а не через разрушительное объединение JSON. +- Side-by-side comparison разрешён только через явную проверенную relation map. +- Для результатов и карточек обязательны source work, dataset, translation/variant и известная source reference. +- URL, история и sharing должны сохранять dataset identity. +- Новая база активируется атомарно только после проверки, а при ошибке приложение возвращается к `ru-current-v1`. +- Cache cleanup не должен затрагивать другие проекты на том же origin. +- Созданы `docs/TWO_BOOK_ARCHITECTURE.md`, `docs/two-book-architecture.json` и постоянный validator. +- Существующие data files, runtime, PWA, package metadata, `versions/` и `_archive/` не изменены. + +Короткий текст для Telegram: + +uDream 23.8.11 завершает D1.4 — архитектуру двух книг до реализации. Текущая база ru-current-v1 остаётся стабильной, вторая PDF ещё не считается готовым dataset. Зафиксированы identity `(dataset_id, record_id)`, отдельный режим как первый этап, federated combined search без destructive merge, reviewed relation map для сравнения и автоматический fallback к стабильной базе. Runtime и 4 086 записей не менялись. From b72cc71a65c8944b01ef593681d7b2eaae03f2e2 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:07:21 +0300 Subject: [PATCH 09/13] ops: capture D1.4 architecture evidence --- ...capture-v23.8.11-two-book-architecture.yml | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 .github/workflows/capture-v23.8.11-two-book-architecture.yml diff --git a/.github/workflows/capture-v23.8.11-two-book-architecture.yml b/.github/workflows/capture-v23.8.11-two-book-architecture.yml new file mode 100644 index 0000000..0493422 --- /dev/null +++ b/.github/workflows/capture-v23.8.11-two-book-architecture.yml @@ -0,0 +1,112 @@ +name: Capture uDream v23.8.11 two-book architecture + +on: + push: + branches: + - docs/two-book-architecture-d1.4 + paths: + - .github/workflows/capture-v23.8.11-two-book-architecture.yml + workflow_dispatch: + +permissions: + contents: write + +concurrency: + group: capture-udream-v23.8.11-two-book-architecture + cancel-in-progress: false + +jobs: + capture: + runs-on: ubuntu-latest + env: + SOURCE_COMMIT: b5c819de9e573f5d47de0a7aec19eb0bee050fea + SOURCE_URL: https://github.com/sunpole/udream/blob/b5c819de9e573f5d47de0a7aec19eb0bee050fea/docs/TWO_BOOK_ARCHITECTURE.md + OUTPUT: news/2026-07-23-udream-v23-8-11-two-book-architecture.png + PATCHNOTE: news/2026-07-23-udream-v23-8-11-two-book-architecture.md + WORKFLOW_FILE: .github/workflows/capture-v23.8.11-two-book-architecture.yml + steps: + - name: Checkout active branch + uses: actions/checkout@v4 + with: + ref: docs/two-book-architecture-d1.4 + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install isolated Chromium + run: | + npm ci --prefix tools/screenshots + npx --prefix tools/screenshots playwright install --with-deps chromium + + - name: Capture exact GitHub architecture page + shell: bash + run: | + set -euo pipefail + mkdir -p tools/screenshots/tmp + cat > tools/screenshots/tmp/capture-v23.8.11.mjs <<'EOF' + import { chromium } from "@playwright/test"; + const browser = await chromium.launch({ headless: true }); + const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); + await page.goto(process.env.SOURCE_URL, { waitUntil: "domcontentloaded", timeout: 120000 }); + await page.waitForTimeout(3500); + const text = await page.locator("body").innerText(); + if (!page.url().includes(process.env.SOURCE_COMMIT)) throw new Error(`Unexpected URL: ${page.url()}`); + if (!text.includes("Two-book product architecture")) throw new Error("Architecture title is not visible"); + if (!text.includes("dataset_id") || !text.includes("record_id")) throw new Error("Identity contract is not visible"); + if (!text.includes("Federated combined search")) throw new Error("Federated search section is not visible"); + await page.screenshot({ path: process.env.OUTPUT, fullPage: false }); + await browser.close(); + EOF + node tools/screenshots/tmp/capture-v23.8.11.mjs + rm -rf tools/screenshots/tmp + + - name: Validate image and synchronize metadata + shell: bash + run: | + set -euo pipefail + python3 - <<'PY' + import os, re, struct, zlib + from datetime import datetime, timezone + from pathlib import Path + + path = Path(os.environ["OUTPUT"]) + data = path.read_bytes() + if not data.startswith(b"\x89PNG\r\n\x1a\n"): + raise SystemExit("Invalid PNG signature") + if len(data) < 100_000: + raise SystemExit(f"PNG too small: {len(data)}") + width, height = struct.unpack(">II", data[16:24]) + if (width, height) != (1440, 1000): + raise SystemExit(f"Unexpected PNG size: {width}x{height}") + pos = 8 + while pos < len(data): + length = struct.unpack(">I", data[pos:pos+4])[0] + kind = data[pos+4:pos+8] + payload = data[pos+8:pos+8+length] + stored = struct.unpack(">I", data[pos+8+length:pos+12+length])[0] + actual = zlib.crc32(payload, zlib.crc32(kind)) & 0xffffffff + if stored != actual: + raise SystemExit(f"CRC mismatch in {kind!r}") + pos += 12 + length + captured_at = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + patch = Path(os.environ["PATCHNOTE"]) + source = patch.read_text(encoding="utf-8") + source = re.sub(r"(?m)^image_commit:\s*.*$", f"image_commit: {os.environ['SOURCE_COMMIT']}", source, count=1) + source = re.sub(r"(?m)^image_captured_at:\s*.*$", f"image_captured_at: {captured_at}", source, count=1) + patch.write_text(source, encoding="utf-8") + print(f"Validated {path}: {width}x{height}, {len(data)} bytes, {captured_at}") + PY + + - name: Commit screenshot and remove one-time workflow + shell: bash + run: | + set -euo pipefail + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add "$OUTPUT" "$PATCHNOTE" + git rm "$WORKFLOW_FILE" + git commit -m "docs: add real v23.8.11 architecture screenshot" + git push origin HEAD:docs/two-book-architecture-d1.4 From 7fc726cf00347565d4e1da7f9fafe7feb756bc84 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 08:08:00 +0000 Subject: [PATCH 10/13] docs: add real v23.8.11 architecture screenshot --- ...capture-v23.8.11-two-book-architecture.yml | 112 ------------------ ...3-udream-v23-8-11-two-book-architecture.md | 2 +- ...-udream-v23-8-11-two-book-architecture.png | Bin 0 -> 180836 bytes 3 files changed, 1 insertion(+), 113 deletions(-) delete mode 100644 .github/workflows/capture-v23.8.11-two-book-architecture.yml create mode 100644 news/2026-07-23-udream-v23-8-11-two-book-architecture.png diff --git a/.github/workflows/capture-v23.8.11-two-book-architecture.yml b/.github/workflows/capture-v23.8.11-two-book-architecture.yml deleted file mode 100644 index 0493422..0000000 --- a/.github/workflows/capture-v23.8.11-two-book-architecture.yml +++ /dev/null @@ -1,112 +0,0 @@ -name: Capture uDream v23.8.11 two-book architecture - -on: - push: - branches: - - docs/two-book-architecture-d1.4 - paths: - - .github/workflows/capture-v23.8.11-two-book-architecture.yml - workflow_dispatch: - -permissions: - contents: write - -concurrency: - group: capture-udream-v23.8.11-two-book-architecture - cancel-in-progress: false - -jobs: - capture: - runs-on: ubuntu-latest - env: - SOURCE_COMMIT: b5c819de9e573f5d47de0a7aec19eb0bee050fea - SOURCE_URL: https://github.com/sunpole/udream/blob/b5c819de9e573f5d47de0a7aec19eb0bee050fea/docs/TWO_BOOK_ARCHITECTURE.md - OUTPUT: news/2026-07-23-udream-v23-8-11-two-book-architecture.png - PATCHNOTE: news/2026-07-23-udream-v23-8-11-two-book-architecture.md - WORKFLOW_FILE: .github/workflows/capture-v23.8.11-two-book-architecture.yml - steps: - - name: Checkout active branch - uses: actions/checkout@v4 - with: - ref: docs/two-book-architecture-d1.4 - fetch-depth: 0 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "22" - - - name: Install isolated Chromium - run: | - npm ci --prefix tools/screenshots - npx --prefix tools/screenshots playwright install --with-deps chromium - - - name: Capture exact GitHub architecture page - shell: bash - run: | - set -euo pipefail - mkdir -p tools/screenshots/tmp - cat > tools/screenshots/tmp/capture-v23.8.11.mjs <<'EOF' - import { chromium } from "@playwright/test"; - const browser = await chromium.launch({ headless: true }); - const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); - await page.goto(process.env.SOURCE_URL, { waitUntil: "domcontentloaded", timeout: 120000 }); - await page.waitForTimeout(3500); - const text = await page.locator("body").innerText(); - if (!page.url().includes(process.env.SOURCE_COMMIT)) throw new Error(`Unexpected URL: ${page.url()}`); - if (!text.includes("Two-book product architecture")) throw new Error("Architecture title is not visible"); - if (!text.includes("dataset_id") || !text.includes("record_id")) throw new Error("Identity contract is not visible"); - if (!text.includes("Federated combined search")) throw new Error("Federated search section is not visible"); - await page.screenshot({ path: process.env.OUTPUT, fullPage: false }); - await browser.close(); - EOF - node tools/screenshots/tmp/capture-v23.8.11.mjs - rm -rf tools/screenshots/tmp - - - name: Validate image and synchronize metadata - shell: bash - run: | - set -euo pipefail - python3 - <<'PY' - import os, re, struct, zlib - from datetime import datetime, timezone - from pathlib import Path - - path = Path(os.environ["OUTPUT"]) - data = path.read_bytes() - if not data.startswith(b"\x89PNG\r\n\x1a\n"): - raise SystemExit("Invalid PNG signature") - if len(data) < 100_000: - raise SystemExit(f"PNG too small: {len(data)}") - width, height = struct.unpack(">II", data[16:24]) - if (width, height) != (1440, 1000): - raise SystemExit(f"Unexpected PNG size: {width}x{height}") - pos = 8 - while pos < len(data): - length = struct.unpack(">I", data[pos:pos+4])[0] - kind = data[pos+4:pos+8] - payload = data[pos+8:pos+8+length] - stored = struct.unpack(">I", data[pos+8+length:pos+12+length])[0] - actual = zlib.crc32(payload, zlib.crc32(kind)) & 0xffffffff - if stored != actual: - raise SystemExit(f"CRC mismatch in {kind!r}") - pos += 12 + length - captured_at = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") - patch = Path(os.environ["PATCHNOTE"]) - source = patch.read_text(encoding="utf-8") - source = re.sub(r"(?m)^image_commit:\s*.*$", f"image_commit: {os.environ['SOURCE_COMMIT']}", source, count=1) - source = re.sub(r"(?m)^image_captured_at:\s*.*$", f"image_captured_at: {captured_at}", source, count=1) - patch.write_text(source, encoding="utf-8") - print(f"Validated {path}: {width}x{height}, {len(data)} bytes, {captured_at}") - PY - - - name: Commit screenshot and remove one-time workflow - shell: bash - run: | - set -euo pipefail - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add "$OUTPUT" "$PATCHNOTE" - git rm "$WORKFLOW_FILE" - git commit -m "docs: add real v23.8.11 architecture screenshot" - git push origin HEAD:docs/two-book-architecture-d1.4 diff --git a/news/2026-07-23-udream-v23-8-11-two-book-architecture.md b/news/2026-07-23-udream-v23-8-11-two-book-architecture.md index ded22e6..51a3f6b 100644 --- a/news/2026-07-23-udream-v23-8-11-two-book-architecture.md +++ b/news/2026-07-23-udream-v23-8-11-two-book-architecture.md @@ -11,7 +11,7 @@ image: 2026-07-23-udream-v23-8-11-two-book-architecture.png image_source: document-render image_target: docs/TWO_BOOK_ARCHITECTURE.md image_commit: b5c819de9e573f5d47de0a7aec19eb0bee050fea -image_captured_at: 2026-07-23T08:15:00Z +image_captured_at: 2026-07-23T08:08:00Z --- # uDream 23.8.11: архитектура двух книг определена до реализации diff --git a/news/2026-07-23-udream-v23-8-11-two-book-architecture.png b/news/2026-07-23-udream-v23-8-11-two-book-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9b967b4099dde21e2d60e54270f545e957f70052 GIT binary patch literal 180836 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%0D$&yZ)0tM&+__S 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≥` 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 Date: Thu, 23 Jul 2026 11:12:34 +0300 Subject: [PATCH 11/13] docs: mark D1.4 package ready for review --- WORK_STATUS.md | 99 +++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 53 deletions(-) diff --git a/WORK_STATUS.md b/WORK_STATUS.md index 563b8d9..4bc0897 100644 --- a/WORK_STATUS.md +++ b/WORK_STATUS.md @@ -2,74 +2,68 @@ Этот файл — единая оперативная точка продолжения разработки uDream с телефона, Windows, macOS, другого устройства или любого ИИ-чата. -`ROADMAP.md` хранит общий план, `docs/PROJECT_STATE.md` — проверенное состояние продукта, а этот файл хранит живую текущую задачу и точный следующий шаг. - ## Быстрый сигнал | Поле | Текущее значение | |---|---| -| Состояние | **IN_PROGRESS** — начат architecture-only этап D1.4 | +| Состояние | **COMPLETED** — D1.4 реализован в ветке; ожидаются Pull Request и проверки | | Рабочая ветка | `docs/two-book-architecture-d1.4` | | Открытый Pull Request | ещё не открыт | | Стабильный функциональный релиз | `v23.8.0` | -| Документационный/data baseline | `23.8.10` — D1.3 завершён | +| Документационный/architecture baseline | кандидат `23.8.11` | | Актуальный `main` при старте | `d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` | -| Активная задача | Issue #30 — спроектировать архитектуру двух книг без изменения runtime | -| Следующая утверждённая задача после D1.4 | определить отдельную functional/data phase только после завершения архитектуры | - -## Текущая точка продолжения - -Статус: `IN_PROGRESS` - -Начато: `2026-07-23 Europe/Berlin` - -Среда: `ChatGPT + GitHub connector + GitHub Actions` - -Ветка: `docs/two-book-architecture-d1.4` - -Issue: `#30` — `https://github.com/sunpole/udream/issues/30` - -Цель: создать проверяемую архитектуру работы uDream с двумя исходными книгами до любой реализации selector, combined search, side-by-side comparison или второй базы. - -## Планируемые файлы - -- `docs/TWO_BOOK_ARCHITECTURE.md`; -- при необходимости machine-readable architecture registry under `data/` или `docs/`, но без изменения существующих data files; -- постоянный validator архитектурного реестра, если registry добавляется; -- `README.md`; +| Активная задача | Issue #30 — D1.4 two-book product architecture | +| Следующая точная задача | открыть PR, дождаться зелёных Actions, проверить diff и объединить | + +## Завершено фактически + +- создан `docs/TWO_BOOK_ARCHITECTURE.md`; +- создан machine-readable `docs/two-book-architecture.json`; +- добавлен permanent `scripts/validate-two-book-architecture.mjs`; +- validator включён в GitHub Actions и syntax checks; +- текущий default зафиксирован как `ru-current-v1`; +- второй PDF зафиксирован как retained evidence, но не готовый dataset; +- global identity определена как `(dataset_id, record_id)`; +- separate switching выбран первым будущим functional mode; +- combined search определён как federated по отдельным indexes без destructive JSON merge; +- side-by-side comparison требует explicit reviewed relation map; +- определены visible provenance, dataset-aware URLs/history/sharing, atomic activation, cache isolation, fallback и rollback; +- обновлены `ROADMAP.md` и `VERSION.md`; +- создан factual patchnote `23.8.11` и новый real PNG exact architecture evidence; +- существующие data files, runtime, PWA, package metadata, `versions/` и `_archive/` не изменены. + +## Планируемые и фактические файлы + +Фактически изменены или добавлены: + +- `.github/workflows/validate.yml`; - `ROADMAP.md`; - `VERSION.md`; -- `CHANGELOG.md`; -- `docs/PROJECT_STATE.md`; -- `docs/ARCHITECTURE.md`; -- `docs/FILE_MAP.md`; -- `docs/DATASET_REGISTRY.md`; -- `AGENTS.md`; - `WORK_STATUS.md`; -- factual uNews patchnote и новый real PNG/JPEG. - -## Критерии завершения - -- source works и documents имеют stable IDs и evidence status; -- current dataset и future second-book dataset разделены; -- global identity использует `(dataset_id, record_id)`; -- separate switching, federated combined search и side-by-side comparison сравнены и сведены в staged recommendation; -- visible provenance, URLs, history, sharing, cache/fallback и relation-map contracts определены; -- migration/rollback описаны до implementation; -- validators и GitHub Actions проходят; -- data/runtime/PWA/package metadata/`versions/`/`_archive/` отсутствуют в diff; -- factual patchnote и новое реальное изображение добавлены; -- PR объединён после полного diff review; +- `docs/TWO_BOOK_ARCHITECTURE.md`; +- `docs/two-book-architecture.json`; +- `scripts/validate-two-book-architecture.mjs`; +- `news/2026-07-23-udream-v23-8-11-two-book-architecture.md`; +- `news/2026-07-23-udream-v23-8-11-two-book-architecture.png`. + +## Критерии завершения перед merge + +- GitHub Actions полностью зелёные; +- architecture validator проходит; +- patchnote/new-image validation проходит; +- diff не содержит `data/`, runtime, PWA, package metadata, `versions/` или `_archive/`; +- PR переведён в ready и объединён squash merge; - Issue #30 закрыт completed; -- `main/WORK_STATUS.md` возвращён в `READY`. +- `main/WORK_STATUS.md` возвращён в `READY`; +- следующая approved phase названа явно. ## Последний проверенный commit -`d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` — D1.3 завершён и `main` готов к D1.4. +Последний сохранённый этап до этого handoff содержит architecture docs, machine registry, validator, roadmap/version updates, patchnote и real PNG. Точный финальный head будет зафиксирован GitHub в Pull Request. ## Следующий точный шаг -Прочитать поддерживаемые architecture/data документы и зарегистрированные datasets, затем подготовить `docs/TWO_BOOK_ARCHITECTURE.md` и, только если это повышает проверяемость, machine-readable architecture registry с validator. +Открыть Pull Request из `docs/two-book-architecture-d1.4` в `main`, проверить GitHub Actions и полный changed-files список. Не объединять при любой красной или незавершённой проверке. ## Главные запреты @@ -79,9 +73,8 @@ Issue: `#30` — `https://github.com/sunpole/udream/issues/30` - не добавлять user-facing selector; - не считать наличие PDF готовым dataset; - не назначать одинаковые IDs между книгами без evidence; -- не начинать D1.5 DeepSeek translation experiment; -- не добавлять API keys; -- не заявлять source URLs или permissions, которых нет в GitHub. +- не начинать DeepSeek translation experiment; +- не добавлять API keys. ## Источник истины From 24bf2f828368ecd7a07a67e94699d7bd879c6c37 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Thu, 23 Jul 2026 11:14:45 +0300 Subject: [PATCH 12/13] docs: record D1.4 pull request --- WORK_STATUS.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/WORK_STATUS.md b/WORK_STATUS.md index 4bc0897..bdab85f 100644 --- a/WORK_STATUS.md +++ b/WORK_STATUS.md @@ -6,14 +6,14 @@ | Поле | Текущее значение | |---|---| -| Состояние | **COMPLETED** — D1.4 реализован в ветке; ожидаются Pull Request и проверки | +| Состояние | **COMPLETED** — D1.4 реализован; PR №31 ожидает успешных проверок и merge | | Рабочая ветка | `docs/two-book-architecture-d1.4` | -| Открытый Pull Request | ещё не открыт | +| Открытый Pull Request | `#31` — `https://github.com/sunpole/udream/pull/31` | | Стабильный функциональный релиз | `v23.8.0` | | Документационный/architecture baseline | кандидат `23.8.11` | | Актуальный `main` при старте | `d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` | | Активная задача | Issue #30 — D1.4 two-book product architecture | -| Следующая точная задача | открыть PR, дождаться зелёных Actions, проверить diff и объединить | +| Следующая точная задача | дождаться зелёных Actions, проверить diff и объединить PR №31 | ## Завершено фактически @@ -52,18 +52,18 @@ - architecture validator проходит; - patchnote/new-image validation проходит; - diff не содержит `data/`, runtime, PWA, package metadata, `versions/` или `_archive/`; -- PR переведён в ready и объединён squash merge; +- PR №31 объединён squash merge; - Issue #30 закрыт completed; - `main/WORK_STATUS.md` возвращён в `READY`; - следующая approved phase названа явно. ## Последний проверенный commit -Последний сохранённый этап до этого handoff содержит architecture docs, machine registry, validator, roadmap/version updates, patchnote и real PNG. Точный финальный head будет зафиксирован GitHub в Pull Request. +PR №31 открыт из существующей D1.4 ветки. Точный актуальный head определяется GitHub и должен совпадать с head, проверенным Actions перед merge. ## Следующий точный шаг -Открыть Pull Request из `docs/two-book-architecture-d1.4` в `main`, проверить GitHub Actions и полный changed-files список. Не объединять при любой красной или незавершённой проверке. +Дождаться `Validate uDream` на текущем head PR №31, проверить полный changed-files список и protected paths. Не объединять при любой красной или незавершённой проверке. ## Главные запреты From 87d5d5c2989bbb5d35b61112e94770b49c298285 Mon Sep 17 00:00:00 2001 From: ANTON MAHOMEDOV Date: Fri, 24 Jul 2026 08:45:03 +0300 Subject: [PATCH 13/13] docs: retrigger verified D1.4 pull request checks --- WORK_STATUS.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/WORK_STATUS.md b/WORK_STATUS.md index bdab85f..b2c5aa1 100644 --- a/WORK_STATUS.md +++ b/WORK_STATUS.md @@ -6,14 +6,15 @@ | Поле | Текущее значение | |---|---| -| Состояние | **COMPLETED** — D1.4 реализован; PR №31 ожидает успешных проверок и merge | +| Состояние | **COMPLETED** — D1.4 реализован и повторно сверен с GitHub; PR №31 ожидает зелёных проверок и merge | | Рабочая ветка | `docs/two-book-architecture-d1.4` | | Открытый Pull Request | `#31` — `https://github.com/sunpole/udream/pull/31` | | Стабильный функциональный релиз | `v23.8.0` | | Документационный/architecture baseline | кандидат `23.8.11` | | Актуальный `main` при старте | `d6c7a070ecd6aec19b7841644cfdb80ac9f82de1` | | Активная задача | Issue #30 — D1.4 two-book product architecture | -| Следующая точная задача | дождаться зелёных Actions, проверить diff и объединить PR №31 | +| Последний проверенный branch head до этого checkpoint | `24bf2f828368ecd7a07a67e94699d7bd879c6c37` | +| Следующая точная задача | дождаться `Validate uDream` на новом head, проверить итоговый diff и объединить PR №31 squash merge | ## Завершено фактически @@ -30,7 +31,9 @@ - определены visible provenance, dataset-aware URLs/history/sharing, atomic activation, cache isolation, fallback и rollback; - обновлены `ROADMAP.md` и `VERSION.md`; - создан factual patchnote `23.8.11` и новый real PNG exact architecture evidence; -- существующие data files, runtime, PWA, package metadata, `versions/` и `_archive/` не изменены. +- существующие data files, runtime, PWA, package metadata, `versions/` и `_archive/` не изменены; +- 2026-07-24 повторно сверены `main`, PR №31, Issue №30, changed files, architecture JSON и permanent validator; +- отсутствие зарегистрированного Actions run на предыдущем head зафиксировано; этот checkpoint-коммит предназначен для повторного запуска CI. ## Планируемые и фактические файлы @@ -59,11 +62,11 @@ ## Последний проверенный commit -PR №31 открыт из существующей D1.4 ветки. Точный актуальный head определяется GitHub и должен совпадать с head, проверенным Actions перед merge. +До повторного CI-checkpoint фактический head PR №31 был `24bf2f828368ecd7a07a67e94699d7bd879c6c37`. Новый head определяется GitHub после этого commit и должен совпасть с head, проверенным Actions перед merge. ## Следующий точный шаг -Дождаться `Validate uDream` на текущем head PR №31, проверить полный changed-files список и protected paths. Не объединять при любой красной или незавершённой проверке. +Дождаться `Validate uDream` на новом head PR №31, проверить полный changed-files список и protected paths. Не объединять при любой красной или незавершённой проверке. ## Главные запреты @@ -78,4 +81,4 @@ PR №31 открыт из существующей D1.4 ветки. Точны ## Источник истины -Реальные GitHub-факты — `main`, текущая ветка, commits, Pull Request, Actions и Issues — имеют приоритет над памятью ИИ, старыми чатами и локальными незапушенными изменениями. \ No newline at end of file +Реальные GitHub-факты — `main`, текущая ветка, commits, Pull Request, Actions и Issues — имеют приоритет над памятью ИИ, старыми чатами и локальными незапушенными изменениями.