Files
aetherbound-guild/docs/plans/M31_MVP_RELEASE_READINESS.md
T
2026-08-25 20:12:37 +08:00

7.9 KiB

M31 MVP Release Readiness

Status

  • Plan: M31_MVP_RELEASE_READINESS
  • Status: COMPLETE
  • Activated: 2026-08-25
  • Baseline: 2556be9 (M30_RECOVERY_CONTROLLER_PILOT_COMPLETE)
  • Owner authorization: the Owner asked to continue toward the MVP and to perform the intermediate checks autonomously, with final inspection kept as the Owner gate.

Objective

Close the pre-package release-readiness boundary for the completed first-cycle MVP. This plan audits the existing player path, persistence/restart behavior, negative and recovery boundaries, normal 100% rendering, input, localization, diagnostics and test-attempt hygiene. It does not add a new feature or start packaging.

Player/System Stopping Point

  • A fresh player can reach and complete the first cycle in player order: Title -> Guild -> Market -> Party -> Readiness -> Risk -> Battle Opening -> Live Battle -> Result -> Knockout Review -> Reward Choice -> Recovery -> next-stage Market.
  • A restart after Recovery returns to the same Company and next-stage Market; stable Recruit identity, reward completion and one-recovery receipt remain intact.
  • Invalid, empty, duplicate and interrupted actions fail visibly or remain retry-safe without mutating authoritative Save/economy state.
  • The accepted Japanese 2D hand-drawn presentation remains unchanged. Normal 100% landscape rendering is the current automated visual scope; 130% text scale is not a blocker for this milestone.
  • The stopping point is an audited local MVP candidate, not a device-verified, signed, store or release-accepted build.

Release-Readiness Contract

source-bound clean archive
  -> strict import/diagnostic scan
  -> focused first-cycle and second-cycle regressions
  -> normal 100% captures at 760x360, 844x390 and 1280x720
  -> touch/restart/negative-state inspection
  -> issue register and handoff

The audit must use tools/run_test_attempt.py for fresh archive/import, capture and cleanup. A zero process exit is insufficient: every required marker must appear exactly once and Godot diagnostics must remain strict. The audit may add only the smallest regression or harness repair required by an observed failure; it must not redesign accepted pages or change Battle, Economy, Save, Recovery or localization semantics.

Ordered Steps

M31-A — Plan and baseline (COMPLETE)

  • Record this stopping point, acceptance checks, frozen scope and external gates.
  • Verify the source revision, upstream state, current checkpoint and retained M30 evidence before running new attempts.
  • Commit and push the activation boundary before any product-code repair.

Closure: the activation plan, checkpoint and development ledger were pushed at source da3b323. git diff --check is clean, the source revision and upstream are synchronized, and retained .uid, .import and prototype_incremental/ paths were left untouched.

M31-B — Automated release-readiness audit (COMPLETE)

  • Run the source-bound MVP first-cycle audit from a fresh Git archive.
  • Run the DEV-5 candidate regressions and M27-M30 focused controller/domain boundaries that feed the first-cycle handoff.
  • Reuse the existing first-cycle checks for duplicate actions, invalid/empty states, restart and Save-corruption recovery; add a new check only if the current evidence leaves a first-cycle boundary unproven.
  • Require strict diagnostics, exact-once markers, parsed touch coverage and complete owned-process/workspace cleanup.

Closure: the fresh source-bound MVP audit passes at /private/tmp/aetherbound-guild-test-evidence/m31-mvp-audit/20260825T115503Z-64179 with ABG_MVP_FIRST_CYCLE_AUDIT_OK, 128 normal 100% frames, strict diagnostics 0, parsed touch, restart-to-Market and complete runner cleanup. The DEV-5 candidate passes at /private/tmp/aetherbound-guild-test-evidence/m31-dev5-candidate/20260825T120229Z-71755 and the M27-M30 controller boundary attempt passes at /private/tmp/aetherbound-guild-test-evidence/m31-controller-boundaries/20260825T120404Z-73332. An exploratory DEV-6 candidate attempt failed because the second-cycle legacy test still expects a MarketReturnContract control that the accepted Market master no longer exposes; this is recorded as out-of-scope M31-I03, not a first-cycle MVP blocker, and no second-cycle product change is authorized here.

M31-C — Normal-render and runtime inspection (COMPLETE)

  • Inspect representative Title, Market, Party/Readiness, Battle, Result, Knockout, Reward, Recovery and next-Market captures at normal 100%.
  • Check clipping, overlap, stale values, missing assets, unreadable state changes, back/restart behavior and touch target truthfulness.
  • Record findings in this plan's issue register; repair only the earliest load-bearing blocker and rerun the focused check.

Closure: the retained normal-render bundle is reviewed in docs/runtime/M31_MVP_RELEASE_READINESS_VISUAL_AUDIT.md. Representative Battle Opening/Live/Result/Recovery/next-Market and Readiness states show no release-blocking clipping, overlap, stale identity/value, missing state or wrong-route defect at normal 100%. The gate is agent_visual_reviewed; human visual/comprehension, audio listening, device and release acceptance remain open. No product-code repair was activated.

M31-D — Handoff (COMPLETE)

  • Record the final evidence paths, source revision, residual risks and exact external gates.
  • Update CURRENT_CHECKPOINT.md and docs/06_DEVELOPMENT_AND_REVIEW.md.
  • Create and push one focused closure commit with a clean worktree and no owned runner/process left behind.

Closure: the handoff records the M31 audit archive, normal-render report, out-of-scope DEV-6 finding and external gates. The closure source is 1455ad5; the focused documentation/checkpoint closure commit follows this status update. No owned test runner or child process remains.

Frozen Scope

  • No new regions, bosses, professions, equipment families, endgame or second content cycle.
  • No visual redesign, pixel-art treatment, new generated assets/audio or unapproved page reconstruction.
  • No changes to Battle, Economy, Company, Contract, Save schema/migration, Recovery, localization semantics or accepted controller boundaries unless a failing audit proves a minimal correctness repair is required.
  • No iOS project generation, export, signing, TestFlight, store or deployment work in this plan. Those require a separate explicitly authorized plan.
  • Do not delete retained .uid, .import or prototype_incremental/ files.

Acceptance Checks

  • ABG_MVP_FIRST_CYCLE_AUDIT_OK exactly once from a fresh source-bound attempt, with strict diagnostics 0, normal 100% captures, parsed touch, restart-to-Market and owned cleanup.
  • DEV-5 and all preceding DEV-1..5/controller markers remain green.
  • Negative, duplicate, empty and recovery boundaries have an explicit test or a documented residual risk; no silent no-op remains on a legal-looking command.
  • Runtime inspection records no release-blocking clipping, overlap, stale identity/value, missing state or wrong-route defect at the required sizes.
  • The normal-render audit is recorded as agent_visual_reviewed; human, device, audio-listening and release gates remain explicitly open.
  • Closure source is committed, pushed, upstream-synchronized and clean.

Issue Register

ID Status Boundary Evidence / action
M31-I01 OPEN Owner human comprehension/fun review Automated evidence cannot replace an uncoached player review.
M31-I02 OPEN_EXTERNAL Device, package, signing, store and release gates Kept outside this plan; activate only with explicit Owner authorization.
M31-I03 OPEN_SCOPE DEV-6 second-cycle legacy test expects removed MarketReturnContract control Second-cycle management is outside the first-cycle MVP stopping point; preserve as historical evidence and activate a new plan before repairing it.

Final Handoff

ABG MVP RELEASE READINESS READY