# Validation: Map 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-map.ts`, original non-canonical fixture v1 | ## Результаты по критериям | ID | Проверка | Ожидалось | Получено | Evidence | Результат | |---|---|---|---|---|---| | MC-01 | Validate fixture | 0 issues | 0 issues; five nodes structurally reachable | E-004, E-005 | `pass` | | MC-02 | Corrupt region/endpoint/content refs | Stable issue codes | Все пять missing-ref classes получены | E-004 | `pass` | | MC-03 | Block every route to required finale | Reject unreachable target | `unreachable_required_location` | E-004 | `pass` | | MC-04 | Move with/without flag, reverse one-way, unauthorized private target | Deterministic allow/deny and cost | Все четыре outcomes совпали; allowed cost `2 time-segments` | E-004, E-005 | `pass` | | MC-05 | Visitor/custodian projections | Не раскрывать hidden/private IDs или edges | Visitor видит только discovered public node; custodian видит authorized private node после discovery | E-004, E-007 | `pass` | | MC-06 | Clear/blocked/private direct LOS | `true`, `false`, `false` | Совпало | E-004 | `pass` | | MC-07 | Scene/encounter/trigger index | Unknown refs rejected | Три stable content-ref codes | E-004 | `pass` | | MC-08 | Inspect provenance | Original, no borrowed IP, non-canonical | `true`, `false`, `false` respectively | E-004, E-006 | `pass` | ## Команды проверки RED: ```bash node --experimental-strip-types --test prototype/map.test.ts ``` До implementation: ```text ERR_MODULE_NOT_FOUND Cannot find module '.../prototype/map.ts' tests 1 pass 0 fail 1 ``` GREEN: ```bash node --no-warnings --experimental-strip-types --test prototype/map.test.ts ``` Существенный вывод: ```text tests 6 pass 6 fail 0 duration_ms 120.815875 ``` Execution verification: ```bash node --no-warnings --experimental-strip-types prototype/demo.ts ``` Существенный вывод: ```json { "fixture": "Orbiting Buffet Station Test Layout", "fixtureIsCanonical": false, "validationIssueCount": 0, "visitorVisibleLocationIds": ["loc-customs-ring"], "blockedMove": { "ok": false, "code": "obstacle_requirements_not_met", "missingFlags": ["badge-scanned"] }, "allowedMove": { "ok": true, "edgeId": "edge-customs-galley", "travelCost": 2, "travelCostUnit": "time-segments" } } ``` 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 отсутствуют. ## Ошибки и нестабильность - Первый test command без strip flag упал с `ERR_UNKNOWN_FILE_EXTENSION`; command исправлен до meaningful RED. - Experimental warning подавлен только для читаемого verification output. - Network, provider и stochastic variance отсутствуют. - TypeScript 7 требует `--ignoreConfig` при прямой передаче file list; scoped command использует этот режим. ## Воспроизводимость Один и тот же агент повторил GREEN после demo addition и получил 6/6. Независимый разработчик или CI этот study пока не повторяли. ## Финальный исход - **Outcome:** `pass`. - **Обоснование:** MC-01–MC-08 выполнены; graph validator, movement, LOS и privacy projection исполняются на original non-fantasy fixture. - **Что результат не доказывает:** dynamic state concurrency, flag attainability, tactical geometry, large-world performance или production authorization.