# Validation: генерация Adventure Contract ## Окружение | Параметр | Фактическое значение | |---|---| | Дата проверки | 2026-07-25 (Asia/Ho_Chi_Minh) | | Git snapshot | `68582c97cb6b51804532cbd021290f07f4f74fa5`; study files uncommitted | | OS и hardware | macOS 26.4 build 25E246, arm64 | | Runtime | `/usr/local/bin/node` v22.14.0, `--experimental-strip-types`; TypeScript 7.0.2; `@types/node` 24.13.3 | | Внешние сервисы | `none` | | Входные данные | `prototype/fixtures/sci-fi-comedy.ts`, original non-canonical fixture v1 | ## Результаты по критериям | ID | Проверка | Ожидалось | Получено | Evidence | Результат | |---|---|---|---|---|---| | AC-01 | Valid fixture compile | 0 issues | 0 issues, sci-fi genre preserved | E-004, E-005 | `pass` | | AC-02 | Compile preferences + draft twice | Deep equality + same 64-char SHA-256 | Equal contracts; hash `3b9c78e89119c4681f4e7570131f0f5d0b993b4e1d612c822bf473b577d2c21a` | E-004, E-005 | `pass` | | AC-03 | Corrupt fact/character/scene/clock refs | Stable issue codes | `missing_fact_ref`, `missing_character_ref`, `missing_scene_ref`, `missing_clock_ref` | E-004 | `pass` | | AC-04 | Remove failure continuation/consequence | Reject all violations | `failure_not_fail_forward`, `failure_without_consequence`, `exit_without_destination` | E-004 | `pass` | | AC-05 | Graph walk | Every scene/ending reachable | Valid fixture accepted; graph validator active | E-004 | `pass` | | AC-06 | Inspect protected surfaces | All five required surfaces protected | facts, rules, map topology, visibility, endings present | E-004 | `pass` | | AC-07 | Inspect provenance | Original, no borrowed IP, non-canonical | `true`, `false`, `false` respectively | E-004, E-006 | `pass` | | AC-08 | Invalid host brief and planner draft | Reject before compile | Host codes rejected; missing draft fact ref reports `missing_fact_ref`; compile throws | E-004, E-010 | `pass` | ## Команды проверки RED по нужной причине: ```bash node --experimental-strip-types --test prototype/adventure.test.ts ``` До создания implementation: ```text ERR_MODULE_NOT_FOUND Cannot find module '.../prototype/adventure.ts' tests 1 pass 0 fail 1 ``` GREEN: ```bash node --no-warnings --experimental-strip-types --test prototype/adventure.test.ts ``` Существенный вывод: ```text tests 7 pass 7 fail 0 duration_ms 171.484917 ``` Execution verification: ```bash node --no-warnings --experimental-strip-types prototype/demo.ts ``` Существенный вывод: ```json { "fixture": "The Orbiting Buffet Audit", "fixtureIsCanonical": false, "genre": "science-fiction comedy", "triggerCount": 14, "validationIssueCount": 0, "contractSha256": "3b9c78e89119c4681f4e7570131f0f5d0b993b4e1d612c822bf473b577d2c21a" } ``` Scoped strict typecheck: ```bash ../../../node_modules/.bin/tsc --ignoreConfig --noEmit --strict \ --noUncheckedIndexedAccess --exactOptionalPropertyTypes --target ES2024 \ --module NodeNext --moduleResolution NodeNext --allowImportingTsExtensions \ --rewriteRelativeImportExtensions --erasableSyntaxOnly --types node \ prototype/*.ts prototype/fixtures/*.ts ``` Получено: exit `0`, diagnostics отсутствуют. ## Ошибки и нестабильность - Первый `node --test prototype/adventure.test.ts` без strip flag упал с `ERR_UNKNOWN_FILE_EXTENSION`. Команда исправлена до meaningful RED. - RED для отдельного planner boundary упал на отсутствующем export `sciFiComedyDraft`; после реализации test corpus стал 7/7. - Node v22.14 печатает experimental warning без `--no-warnings`; behavior и exit code от warning не меняются. - Стохастики, network и provider variance отсутствуют. - TypeScript 7 требует `--ignoreConfig`, когда file list передан напрямую; scoped command использует этот явный режим. ## Воспроизводимость Один и тот же агент повторил GREEN после source split и authority split и получил 7/7. Независимый разработчик или CI этот study пока не повторяли; это ограничение, не дополнительный pass. ## Финальный исход - **Outcome:** `pass`. - **Обоснование:** все AC-01–AC-08 выполнены; executable demo компилирует non-fantasy original fixture в deterministic validated graph. - **Что результат не доказывает:** художественное качество, real-session completion, LLM adherence, moderation, rights host content или production readiness.