Skip to content

feat(client): establish clean-room foundations - #43

Merged
zoeyrose merged 3 commits into
mainfrom
zoey/feat-m1-foundations
Aug 8, 2026
Merged

zoeyrose merged 3 commits into
mainfrom
zoey/feat-m1-foundations

Conversation

@zoeyrose

@zoeyrose zoeyrose commented Aug 8, 2026

Copy link
Copy Markdown
Member

Closes #1.
Closes #2.
Closes #3.
Closes #4.
Closes #5.
Closes #15.

Summary

  • establishes a Rust 1.97.1/Cargo-locked nine-crate client workspace with one statically source-built SDL 3.4.14 native boundary
  • implements new pure revisioned session reducers, generational entity/inventory handles, semantic actions, immutable UI/scene views, protocol boundary, bounded queues, and deterministic platform/resource test fakes
  • adds a real repeated empty-SDL3-window path, headless/version harness, explicit Linux/Windows/backend policy, and independent storage/cache/resource integrity boundaries
  • records clean-room provenance/reuse/asset policy, architecture ADR, and a machine-readable 25-row cutover matrix with zero unowned domains
  • adds Clippy/test/architecture/cargo-deny/advisory/license/native-link/SBOM/reproducible-package gates and one aggregate Client validation check across Linux and Windows
  • stages both tag-platform packages before one atomic immutable GitHub release upload

Compatibility boundary

atrinik/protocol and atrinik/renderer do not yet publish registry crates or GitHub releases. M1 records game-protocol-1 and scene-snapshot-1 at narrow adapters and deliberately does not add forbidden sibling path/Git dependencies. Their released crates replace those placeholders in M2 without changing the frozen dependency direction.

Provenance

All Rust, tests, docs, and synthetic fixtures are newly authored from public issue contracts. No classic/archived implementation, test, fixture, asset, or historical MIT grant was used. The reuse manifest records one behavior-only independent migration and one fail-closed excluded texture-tree example; the bundle asset allowlist is empty.

Deep review

The ignored workspace report is build/deep-review-client-m1.md. Review iterations addressed generation tombstones, map-independent inventory generations, replacement/coordinate/quantity validation, action phase/ID policy, disconnect atomicity, duplicate/closed action queues, bounded platform backpressure, clock/clipboard/audio loss fakes, real repeated window lifecycle, resource-provider ownership, zero-component Rust SBOMs, and partial-release publication. No local finding remains.

Automated validation

  • tools/validate.sh
  • release-mode tests and 50 repeated reducer suites
  • actionlint and ShellCheck
  • Trivy HIGH/CRITICAL vulnerability, secret, license, and misconfiguration scan
  • package contents/size/SBOM inspection

Manual verification

From the atrinik/atrinik wrapper root:

./atrinik worktree list client
cd workspace/worktrees/client/m1-foundations
env PATH=/tmp/atrinik-m1-tools/rust/bin:/tmp/atrinik-m1-tools/go/bin:/usr/local/cargo/bin:/usr/local/bin:/usr/bin:/bin tools/validate.sh
cargo run --locked --package atrinik-client -- version
cargo run --locked --package atrinik-client -- headless
SDL_VIDEODRIVER=dummy cargo run --locked --package atrinik-client -- window 8

Expected: validation succeeds; version prints Rust/target/protocol/renderer coordinates; headless reaches revision 2 in Playing; eight SDL3 windows create, resize, and destroy without output or failure. No display is required with the dummy driver. M1 has no network/playable topology, so no up lifecycle is claimed yet.

@zoeyrose
zoeyrose merged commit f69b2a2 into main Aug 8, 2026
3 checks passed
@zoeyrose
zoeyrose deleted the zoey/feat-m1-foundations branch August 8, 2026 14:38
@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 1.0.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

zoeyrose added a commit that referenced this pull request Aug 8, 2026
## Summary

- hand semantic-release tags to cross-platform packaging through a
trusted `workflow_run`
- publish only after both Linux and Windows packages succeed
- support exact-tag repair of the empty v1.0.0 release while refusing
asset replacement
- document the atomic release contract

## Validation

- `actionlint .github/workflows/*.yml`
- `shellcheck tools/*.sh`
- Rust format, Clippy, unit/integration/doc tests,
architecture/provenance checks
- Linux package workflow already passed independently in PR #43; Windows
package execution is gated by this PR's workflow contract and post-merge
repair run
- `git diff --check`

## Review notes

Deep review finding R8 records the GitHub-token event-chain failure and
the fail-closed repair. The package resolver accepts only semantic
version tags reachable from protected `main`; existing non-empty
releases are immutable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment