Skip to content

Define multiplayer development gates and isolated U1 preflight - #319

Draft
VirtualAdam wants to merge 1 commit into
mainfrom
copilot/issue-240-isolated-acceptance
Draft

VirtualAdam wants to merge 1 commit into
mainfrom
copilot/issue-240-isolated-acceptance

Conversation

@VirtualAdam

Copy link
Copy Markdown
Collaborator

Description

Closes #318 after normal review, integration and explicit contract adoption.
Refs #240 and #239; does not close U1 or the multiplayer epic.

  • Define a proposed replacement acceptance contract with 14 new requirement IDs and 37 test families grounded in the published backlog, not a reconstructed or previously approved R1-R14/M01-M37 document.
  • Separate G0 development entry, G1 owner-only full-stack baseline, G2 qualified shared-execution admission and G3 release. The bounded G0 milestone replaces full U1 as the development prerequisite for Multiplayer U2: add durable membership, ownership, and sharing contracts #241; U1 remains an applicable runtime and release gate.
  • Add read-only Windows fixture preflight checks for source, disjoint paths, protected/occupied ports, tool availability and registry configuration, with explicit blockers rather than acceptance claims.
  • Add dependency-free regression coverage and wire it into the existing Windows CI lane. Update the handbook and evaluation documentation.

Base: 30ec3fab6acd566cc1fc1e574c8a6343d0ce0596.
Head: 6fe6668479417a2df43dbe1f7e471b4dec21457a.
Write scope: six files: .github/workflows/ci.yml, docs/EVALS.md, docs/MULTIPLAYER_ACCEPTANCE_V1.md, docs/README.md, tools/qa_multiplayer_preflight.ps1, and tools/qa_multiplayer_preflight.test.ps1.

No backend, database migration, dependency manifest, lockfile, credential or deployed service changes. No merge, auto-merge or deployment requested.

Native-capability check and limits

The repository already has local_stack.psm1 process ownership, owned_test_stack.mjs scoped restart checks and existing E2E drivers. This contribution does not duplicate them. The missing capability is a read-only, explicitly scoped fresh-U1-fixture preparation report plus a published replacement acceptance contract.

The preflight uses existing Git, command discovery and Windows listener inventory. Rust/pnpm shims are not executed because they may download toolchains. A preparation pass is not source/build attestation, OS isolation, private artifact storage, independent browser identity or permission to launch. The actual U1 fixture, OIDC integration, M34-equivalent hostile matrix and exact owned shutdown remain open.

Type of change

  • New feature (non-breaking prerequisite tooling)
  • This change requires a documentation update

How Has This Been Tested?

From the contribution worktree:

pwsh -NoLogo -NoProfile -NonInteractive -File .\tools\qa_multiplayer_preflight.test.ps1
node --test --test-reporter=dot .\tools\owned_test_stack.test.mjs .\tools\fixture_source_identity.test.mjs
node .\tools\check_migrations.mjs
git diff --cached --check
  • Focused PowerShell path/port/source/tool/registry/read-only regression passed.
  • 55 existing Node source/ownership regressions passed.
  • Migration check passed: 41 migrations, immutable checksums.
  • Staged whitespace check passed after normalizing the three new files to repository LF convention.
  • Spec structure checked: 14 unique sequential requirement IDs and 37 unique sequential test-family IDs.
  • An actual read-only preflight returned exit 2 / blocked for missing Rust/Cargo, missing pnpm, unspecified approved registry and then-uncommitted source; it did not create the planned QA root. This is a truthful preparation result, not runtime acceptance.
  • An earlier trailing-dot path regression failed; the owned synthetic fixture was retained. Raw path components are now checked before normalization and the corrected regression passed.

Not run locally: cargo fmt, Clippy, Rust workspace tests, pnpm build:web, pnpm lint:web because Cargo/pnpm are absent. No new installation, full-stack run, browser test, hostile canary, production sign-in, physical-device test or provider inference was performed. Screenshots are not applicable to this CLI/docs slice. Hosted CI verdicts must be assessed on the exact PR head.

Test configuration: Windows, PowerShell 7.4+ requirement, Node 22.14.0, Docker read-only connectivity 29.8.0. No SDK/provider runtime was used. Tests use synthetic directories and stubbed prerequisite observations; these are not evidence for the original U1 gate.

Checklist

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • I have added tests for the scoped prerequisite behavior
  • Focused new and related existing tests pass locally
  • Full repository gates and hosted CI verified
  • Required independent review and contract adoption complete
  • Full U1 runtime acceptance (intentionally outside this PR)

This is a draft review contribution. Existing runtime gates, ownership, retained office data and the unresolved #242 browser-auth review are preserved.

Refs #240. Propose G0-G3 development, runtime and release gates without accepting U1 or enabling shared execution. Add read-only Windows fixture preflight, focused regression and CI coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The preflight can falsely accept invalid or aliased Windows roots as safe and disjoint.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Defines multiplayer acceptance gates and adds a preparation-only Windows U1 fixture preflight.

Changes:

  • Introduces 14 requirements, 37 test families, and G0–G3 gates.
  • Adds read-only preflight checks with regression coverage.
  • Integrates the regression into Windows CI and updates documentation.
File summaries
File Description
.github/workflows/ci.yml Runs the preflight regression on Windows.
docs/EVALS.md Documents preflight scope and limitations.
docs/MULTIPLAYER_ACCEPTANCE_V1.md Defines the replacement acceptance contract.
docs/README.md Links the new contract.
tools/qa_multiplayer_preflight.ps1 Implements prerequisite checks and reporting.
tools/qa_multiplayer_preflight.test.ps1 Tests path, port, source, tool, and registry guards.
Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 1
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +18 to +21
foreach ($component in $Value.Replace('/', '\').Substring(3).Split('\', [StringSplitOptions]::RemoveEmptyEntries)) {
if ($component -match '[ .]$') { throw 'Trailing dots or spaces in path components are not supported.' }
}
$full = [IO.Path]::GetFullPath($Value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Multiplayer G0] Adopt replacement acceptance contract and development-entry gates

2 participants