# Phase 1 acceptance — integrated source record

Status: implemented through PR [#465](https://github.com/mekhovov/revealline/pull/465), merged in
the combined creator PR [#564](https://github.com/mekhovov/revealline/pull/564), and published in
`v0.141.0`. The current `v0.141.6` Pages release retains this behavior. This record preserves the
Phase 1 evidence and its original acceptance limits.

## Completed local evidence

- Current `creator-layouts.v3` generation covers six families and twelve deterministic variants. Each variant compiles at least one interior collision wall and exactly one supported `field-keeper` actor to a moving `bouncer`. Focused tests replayed all 12 variants across Gentle, Standard and Expert with immediate and grid-center steering: 72/72 exact compiled configurations won, retained matching simulation identities and replayed the actual enemy, walls, foundations and terrain. Actor, wall, island and terrain edits invalidate this evidence. The enemy-free `creator-crossing.v1` recipe remains accepted only for immutable legacy-package revalidation.
- Nineteen focused creator tests pass: all twelve current variants and legacy provenance compatibility; artwork versus gameplay changes; cancellation; oriented fitting and bitmap cleanup; exact package roundtrip; private asset exclusion; corrupt/trailing bytes and forged evidence; stale approvals; atomic installation and immutable editions; interrupted-install rollback followed by byte-identical export and successful retry; exact unfinished-session recovery and legal completion; source backup/checkpoint roundtrip and concurrent-head refusal; Custom classification independent of labels.
- Shared media-store and managed-media-store suites passed alongside the earlier twelve creator tests: 52 total. Their cases cover quotas, blocked upgrades, concurrent storage generations, interrupted writes, cancellation, original-byte retention and atomic rollback. The two later source/library creator tests also passed separately.
- All 27 installed-library, Custom-source and current-guide regression tests pass.
- Scoped ESLint and Prettier passed. After rebasing onto the current reviewed `main`, the combined creator, storage, Custom-source, installed-library and guide run passed 86/86 tests on Node 20.19.5. The focused current-generator run passes 19/19.
- Fresh built-in-browser generation from the user-supplied image produced an `Island chain` current `creator-layouts.v3` mission. Review showed one moving enemy, one interior wall and three safe islands; the rendered review map and ordinary Custom player both visibly contained that enemy and geometry. Approval installed exact edition `02d3d58d37887ebd03822515e47fc3301736493d9d093cf02770adcd67041b44`. One legal Down route completed at 65%, three lives and 14,720 points, awarded the exact picture, and reload retained the earned-picture entry.
- Native in-app browser file chooser selected the original procedural portrait fixture (640 × 960, 6,482 bytes). Generation saved source checkpoint 1, displayed the fitted 1280 × 640 PNG and generated map, and presented validation/credits/size review.
- Native approval and actual download created a 57,900-byte `.rlpack`, SHA-256 `e2eceea9c5071ca2d628ee5141e88d58438dc4841484ea578bc42b3757da12b4`. Full edition identity: `55f6a938a1cfa9d703f397aa11cd5630ace3a9435ed89a8d65167859e3add7ce`.
- Installation on local origin port 8772 showed deduplicated staging space and an installed campaign. Ordinary Start, legal keyboard input, Pause, reload, Resume saved attempt and explicit Resume succeeded. A legal completion reached 100%, three lives and 23,800 points. Reload retained the exact earned-picture entry.
- The actual downloaded `.rlpack` was selected through the native file chooser on a previously unused origin at port 8773. It independently verified, reviewed and installed with the identical full edition identity, then completed through ordinary keyboard play at 100% and 23,800 points. This is separate origin storage, **not** a claim of a separate browser profile or engine.
- Native Back up source project downloaded a 46,492-byte `.rlsource`, SHA-256 `d8415db7accaf723dbc3261b0967c80f7d86840675bdd9659cae52e9bca9c16e`. Binary inspection verified both payload hashes, no trailing bytes, the exact runtime PNG (`0181b0ebe428c9ad652a3982aad0384762da06477136cfe1d7284e996e235185`) and original (`0d71c51916f61af8d285cc5ef4a3293e38caacdf599cdb988c21b58e148e1775`). The share pack contains only the runtime PNG and no original reference.

- Actual `.rlsource` selection restored the original portrait and regenerated its review. Advanced Studio opened an editable copy, saved a title change as checkpoint 2, and ran its exact practice preview to a legal 100% completion. The displayed picture matched the supplied portrait; practice remained explicitly ineligible for awards. Return to picture creator and Load saved Studio edits restored the edited title, saved creator checkpoint 2, and verified all supported routes again.
- After approval, editing the title immediately hid Install and Download and disabled Approve. Reload restored the new title at checkpoint 3 with approval still absent. Saving an unchanged checkpoint followed by navigation and a subsequent edit now works.
- Main game → Missions → Collection: Custom displayed the installed edition with Cleared status. Its Play card navigated to the exact edition's ordinary Custom player, with the earned portrait present.
- On the independent origin, reload retained the earned portrait. Start and Retry each reached 100% / 23,800 points through legal Down input; Back to my creations returned to the installed list.
- Two simultaneous players for the same edition showed the writer restriction in the second tab. That tab still completed legally and offered continuation and a downloadable session-only progress backup. The actual 709-byte `revealline-journey-backup.v2` download parsed correctly, SHA-256 `3d34c0e2f0d713c1b475d5168a9c37d51d36fc06ea5b086e73410331b28b3036`. This exercises refused progress writes; it does not simulate browser-wide quota exhaustion.

- An approved title revision installed as edition `888751f017b4a27ce9d4e4ec45a59135ea6469ce13db509b22e84a987482a0d8`, alongside the original. Opening the new player showed no earned picture; reloading the original player retained its earned portrait.

The browser artifacts and edition identities above were produced by the earlier `creator-crossing.v1` candidate before gameplay pressure was added. They remain valid installation, recovery and immutable-edition evidence for that exact legacy package. They do not qualify the current `creator-layouts.v3` obstacle/enemy presentation or current package identity.

## Failure records and corrections

- The first native play attempt used the input adapter's held-key default. A tap did not continue the expected crossing. The Custom player now explicitly uses the shared continuous-steering adapter; the subsequent legal win and transferred-pack win passed.
- The browser's accessibility tree exposes a disclosure as a button, but a Playwright role locator did not match it. The observed native disclosure control opened correctly; actual file chooser selection then succeeded. This was an automation locator mismatch, not a product import failure.
- Source-backup and Advanced Studio handoff now require the single-picture structural envelope before replacing the current draft. Missing root entries and picture dependencies are rejected; uncompilable gameplay remains recoverable as source. The final guarded handoff loaded the valid Studio edit and saved checkpoint 4.
- A requested 390 × 844 browser viewport override did not change the observed 1280 × 720 DOM viewport. The override was reset. No phone-layout acceptance is inferred from the screenshot.
- A duplicate draft save could synchronously settle before its running-promise assignment, leaving a completed promise marked active. This interfered with navigation and later saving. The lifecycle now clears after awaiting the assigned promise; native unchanged-save, Studio navigation, subsequent edit, and reload passed. Editing/recovery controls also remain available after restoring an unapproved draft.
- The thin checkout initially lacked the existing test MP3 and renderer dependency files. Exact tracked fixtures and presentation modules were hydrated; no production validators or tests were bypassed.
- GitHub API rate limiting temporarily blocked check retrieval. Skipped broad tests under the repository's current release policy are not counted as passed.

## Remaining acceptance gates after publication

The combined feature record covers an actual current-v3 download and separate-origin import.
Hosted exact-head, immutable release, Pages selection and public-byte verification completed for
`v0.141.0` and are retained by `v0.141.2`; their identities are recorded in
[combined-release-acceptance.md](combined-release-acceptance.md). Genuine clean-profile
verification and browser-wide storage-failure UI remain open. Current-v3 local generation,
review, installation, ordinary legal play and earned-picture reload passed as recorded above. The
separate-origin checks and shared atomic rollback/quota tests are recorded at their actual scope,
not substituted for the remaining observations.

The user explicitly directed **“use builtin browser instead”** after Safari control was unavailable. Acceptance therefore uses the Codex in-app browser; Firefox and Safari are untested rather than requiring another permissions prompt. No separate Chromium installation, genuinely clean profile or physical mobile support is claimed. Inline native screenshots were observed in the task; exported screenshot files or screenshot hashes are not claimed.

This phase record did not itself change a version, tag or Pages selector. Its earlier statement
that publication remained open is historical; the combined feature is public, while the browser
and device limits above remain.
