Skip to content
This repository was archived by the owner on Jul 21, 2026. It is now read-only.

fbdoom: preserve the framebuffer game runtime - #64

Open
brandonpayton wants to merge 2 commits into
mainfrom
migrate/fbdoom-formula
Open

fbdoom: preserve the framebuffer game runtime#64
brandonpayton wants to merge 2 commits into
mainfrom
migrate/fbdoom-formula

Conversation

@brandonpayton

@brandonpayton brandonpayton commented Jul 11, 2026

Copy link
Copy Markdown
Member

Why

Migrate the registry fbDOOM port into the tap as a first-class source-built Formula. The installed program uses Kandelo framebuffer, input, sound, and music paths; no demo renderer or bundled game data substitutes for the engine.

Reusable framebuffer support landed separately in tap #63.

The legacy package-registry recipe cannot be installed or updated through normal Homebrew workflows. Moving the real engine into the tap gives Kandelo users one reviewed package path while keeping framebuffer, input, and audio behavior tied to the platform rather than a game-specific workaround.

What changed

  • Build pinned fbDOOM with the SDK and reproducible path maps.
  • Vendor exact pinned Chocolate Doom OPL/MUS sources.
  • Preserve seven reviewed registry patches and the cleanup/termination root-cause patch.
  • Validate final bytes as ABI-correct, path-clean, import-clean, and truthfully fork: :forbidden.
  • Install only fbdoom; the test IWAD remains a test resource and is not stored in the keg/bottle.
  • Exercise a real Node timedemo and Chromium framebuffer telemetry/canvas pixels.

Exact source head

Base: c5705667a90b05754d2244a362f3f7fc95d2f9c3

Head: 7c3386159d03fd564f7290667c3d544009065379

Two commits:

  1. dfa40fd preserves accepted Formula/patch/test/runner bytes; only README aggregation context changes.
  2. 7c338615 adds Binaryen and migrates generic checks to shared kandelo_validate_wasm_artifact(..., fork: :forbidden) while retaining the exact env import allowlist.

Final Formula SHA-256: 3d12b9bcaf50838d7f0d3dff7196ffbe0cb38777c8d2838f12354687e0892bed

Patches 0001-0007 are byte-identical to the registry, and all eight patch files are byte-identical to the accepted prior head. Formula test and framebuffer runner/page bytes are unchanged. Ruby syntax, diff, ancestry, patch identity, and clean-worktree checks pass.

Historical functional evidence

The accepted content-equivalent Formula previously established on ABI 18:

  • two clean source builds: SHA-256 bbb651c33ce6f1eaf35d31f7d663f3c6b58549e45c96d1a361e5bf546ca9d640
  • literal Formula test passed
  • Node timedemo completed 5,026 gametics / 221 realtics
  • Chromium observed 640x400 BGRA32, 912 writes, 58,368,000 bytes, 249,072 nonblank pixels, and an 89,220-byte changed screenshot with no guest/page/console errors

That is historical source/runtime evidence, not an exact-head rebuild or ABI 39 bottle/pour claim.

Gates

Locked #907 establishes ABI 39. Its green registry fbdoom matrix proves the platform registry recipe/artifact only; it does not validate this Formula, bottle, sidecars, stock Homebrew pour, or execution of the poured keg.

Direct Formula gates are #842 and #882. #888 is not a direct fbDOOM gate because the final artifact forbids fork imports and instrumentation.

Publication requires the trusted #881/#887/#890/#885/#900 path, exact ABI 39 source builds, generated sidecars, a forced stock Homebrew bottle pour inside Kandelo, and Node timedemo plus Chromium framebuffer checks using that poured keg. fbDOOM has no same-tap target dependency closure, but #900 remains the supported publisher handoff.

Residual coverage remains explicit and nonblocking: save/config persistence, mouse input, and audio/OPL output are not asserted.

No bottle block, binary artifact, platform change, or ABI change is included.

@brandonpayton

Copy link
Copy Markdown
Member Author

Independent devil review covered the exact formula patch later restacked as 6d3d2c3; its stable patch ID is unchanged from reviewed commit e2e88a0. No blocking formula finding remains. The reviewer independently verified immutable provenance, all downloaded hashes, the eight-patch application sequence, byte identity for registry patches 0001-0007, formula style, and diff cleanliness. Long source-build and Chromium results remain explicitly relayed implementer evidence rather than a redundant reviewer rerun. The stated ABI, stack, guard, sidecar, bottle, and stock-guest gates remain mandatory before merge.

@brandonpayton
brandonpayton force-pushed the migrate/fbdoom-formula branch from 6d3d2c3 to 7c33861 Compare July 13, 2026 03:02
@brandonpayton

Copy link
Copy Markdown
Member Author

Independent exact-head review completed for 7c3386159d03fd564f7290667c3d544009065379: ACCEPT for source review; not merge/publish ready.

  • Accepted Formula, all eight patches, tests, and framebuffer runner bytes are preserved.
  • Contract repair correctly adds Binaryen and shared fork-forbidden validation while retaining the exact env allowlist.
  • Historical Node timedemo and Chromium pixel telemetry remain functional evidence only.
  • #907's green ABI 39 registry build does not validate this Homebrew Formula/bottle.
  • Direct gates are #842/#882; #888 is not package-specific because fbDOOM is fork-free.
  • Final acceptance requires exact ABI 39 source bottles/sidecars, forced stock Homebrew pour, and Node/Chromium checks on the poured keg.
  • Save persistence, mouse, and audio/OPL remain explicit residual coverage.

No Formula blocker was found.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant