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:
node --experimental-strip-types --test prototype/map.test.ts
До implementation:
ERR_MODULE_NOT_FOUND
Cannot find module '.../prototype/map.ts'
tests 1
pass 0
fail 1
GREEN:
node --no-warnings --experimental-strip-types --test prototype/map.test.ts
Существенный вывод:
tests 6
pass 6
fail 0
duration_ms 120.815875
Execution verification:
node --no-warnings --experimental-strip-types prototype/demo.ts
Существенный вывод:
{
"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:
../../../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.