Skip to content

homebrew: certify browser runtime for rootfs/shell package set (kd-1mr.5)#816

Open
brandonpayton wants to merge 3 commits into
mainfrom
gascity/kd-1mr/kd-1mr.5-certify-browser-rootfs-shell
Open

homebrew: certify browser runtime for rootfs/shell package set (kd-1mr.5)#816
brandonpayton wants to merge 3 commits into
mainfrom
gascity/kd-1mr/kd-1mr.5-certify-browser-rootfs-shell

Conversation

@brandonpayton

Copy link
Copy Markdown
Member

What

Certifies the wasm32 browser runtime for the kd-0hns rootfs/shell Homebrew
package set (kd-1mr.5). Runs in-browser smokes (headless Chromium via Playwright,
BrowserKernel) for all 12 packages and records the result in each Homebrew
sidecar.

  • Certified browser_compatible=true (10): dash, git, vim, less, lsof, nano, netcat, wget, bzip2, xz. Each boots in-browser from its poured VFS and passes a
    package smoke (exit 0 + expected output).
  • Skipped with reason_code (2): modeset (framebuffer-device-required,
    /dev/dri) and fbdoom (framebuffer-and-iwad-required, /dev/fb0) -- device/
    framebuffer programs that the non-interactive terminal smoke cannot exercise
    (mirrors the Node framebuffer skips). Encoded as browserFormulaUnsupportedReason().

Sidecars were regenerated via cargo xtask homebrew-sidecars (not hand-edited),
so provenance metadata/formula/link shas stay consistent.

Verification

  • cargo xtask homebrew-validate --tap-root test-runs/kd-0hns/rootfs-shell-tap ->
    homebrew-validate: ok (packages=12, bottles=12, link_manifests=12, provenance_reports=12)
  • Browser smoke: 23 pass / 0 fail / 2 skip (test-runs/kd-1mr.5/browser-smoke/summary.json)
  • homebrew-composite-status (browser): vim-browser-bundle/browser moves skip
    -> pass
    ; no browser_compatible=false blocker remains for any of the 12. With
    core (kd-0k6q) metadata added, rootfs/browser is blocked only on bash+ncurses
    and shell/browser on bash/ncurses/curl/nethack (kd-1mr.4) + modeset/fbdoom
    (framebuffer follow-up).

Stacking / review note

This branch is based on kd-0hns (#811) (the rootfs/shell tap) and brings in the
kd-v3fs browser tooling required to run the smokes
(homebrew-package-browser-smoke.ts, homebrew-composite-status.ts,
homebrew-package-smoke-cases.ts, homebrew-smoke-outcomes.ts, the
apps/browser-demos/pages/homebrew-smoke/ page, homebrew-vfs-planner.ts,
vite.config.ts). Those tooling files are kd-v3fs's and will dedupe when kd-v3fs
merges
. The net kd-1mr.5 contribution is the browser certification (sidecar
updates under test-runs/kd-0hns/rootfs-shell-tap/Kandelo/), the tailored smoke
cases (dash/lsof/netcat) + framebuffer skip logic, and the evidence artifacts
under test-runs/kd-1mr.5/. Suggested merge order: kd-0hns -> kd-v3fs -> kd-1mr.5.

Follow-ups

  • Dedicated browser framebuffer/device smoke for modeset/fbdoom.
  • Adopt the kd-v3fs formula.schema.json (permits runtime_status) so browser
    reason_codes are recorded in-sidecar, not only in artifacts.
  • rootfs/browser + shell/browser full pass depend on kd-1mr.4 landing
    bash/ncurses/curl/nethack.

See test-runs/kd-1mr.5/DISPOSITION.md for the full method and per-package detail.

🤖 Generated with Claude Code

brandonpayton and others added 3 commits June 30, 2026 10:37
Repair the two defects that made the VFS rootfs/shell input sidecars
nonpublishable: an invalid fork_instrumentation="auto" and local-only
file:// bottle urls.

- scripts/homebrew-generate-sidecars-from-env.sh: package_fork_instrumentation()
  now emits only the sidecar schema enum (not-required/required/disabled/
  unknown), aggregated from per-output package.toml policies; the legacy
  "auto" placeholder and any unknown value can no longer reach a sidecar.
- packages/registry/{16 scoped}/package.toml: declare fork_instrumentation on
  each output (bash/dash/git/vim required; the rest not-required), matching
  whether build-<name>.sh applies wasm-fork-instrument to a forking binary.
- docs/homebrew-publishing.md: document the fork_instrumentation disposition
  values and the publishable https bottle-url requirement.
- test-runs/kd-0hns: regenerated sidecars with corrected fork disposition and
  canonical GHCR https urls. Combined 12-package rootfs/shell tap validates:
  `xtask homebrew-validate` -> packages=12 bottles=12 ok. Disposition and
  passed/failed/skipped outcome lists cover all 16 scoped packages.

Publishable (12/16): dash, git, vim, less, lsof, modeset, nano, netcat, wget,
fbdoom (repaired) + bzip2, xz (adopted pilot). Blocked (4/16, missing Homebrew
Formula): bash, ncurses, curl, nethack.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…r.5)

Run wasm32 in-browser smokes (Chromium/Playwright via BrowserKernel) for the
12 kd-0hns rootfs/shell packages and record the results in their Homebrew
sidecars.

Certified browser_compatible=true (10): dash, git, vim, less, lsof, nano,
netcat, wget, bzip2, xz -- each boots in-browser and passes a package smoke
(exit 0 + expected output). Sidecars regenerated via `cargo xtask
homebrew-sidecars` so provenance shas stay consistent; `homebrew-validate: ok`.

Skipped with reason_code (2): modeset (framebuffer-device-required, /dev/dri),
fbdoom (framebuffer-and-iwad-required, /dev/fb0) -- framebuffer/device programs
not certifiable via the non-interactive terminal smoke, mirroring the Node
framebuffer skips. Encoded as browserFormulaUnsupportedReason().

Effect: homebrew-composite-status browser tier no longer blocks on these 12
being browser_compatible=false; vim-browser-bundle/browser moves skip -> pass.
rootfs/browser now blocked only on bash+ncurses; shell/browser on
bash/ncurses/curl/nethack (kd-1mr.4) plus modeset/fbdoom (framebuffer follow-up).

Adds tailored browser smoke cases (dash/lsof/netcat) and the framebuffer skip
hook. Brings in the kd-v3fs browser tooling required to run the smokes
(browser-smoke/composite-status/smoke-cases/smoke-outcomes runners, the
homebrew-smoke demo page, vfs-planner); those dedupe when kd-v3fs merges.

Evidence under test-runs/kd-1mr.5/ (browser smoke 23 pass/0 fail/2 skip;
composite-status; DISPOSITION.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown

Phase B-1 matrix build status — pr-816-staging

ABI v16. 36 built, 6 failed, 42 total.

Package Arch Status Sha
libcurl wasm32 failed
libcxx wasm32 built 309bed52
libcxx wasm64 built 97469b49
libpng wasm32 built da19660c
libxml2 wasm32 failed
libxml2 wasm64 failed
openssl wasm32 built 7147c05c
openssl wasm64 built b6a3f9b1
sqlite wasm32 built 29fd8435
sqlite wasm64 built 5e9ff2df
zlib wasm32 built 90cf6353
zlib wasm64 built 64f7dfc9
bc wasm32 built de85184a
coreutils wasm32 built 27ddf559
diffutils wasm32 built 5f6c2432
dinit wasm32 built a31a9b89
file wasm32 built 54db045a
findutils wasm32 built 8c37f324
gawk wasm32 built 28cac8a6
grep wasm32 failed
gzip wasm32 built 54a71b67
hello wasm32 built 2c152ee8
kandelo-sdk wasm32 built 27ae1cb3
kernel wasm32 built b0cf812f
m4 wasm32 built b2e8d996
make wasm32 failed
mariadb wasm32 built 76b7be27
mariadb wasm64 built 8d87af85
msmtpd wasm32 built 5dec8fca
nginx wasm32 built 11e38a46
php wasm32 failed
posix-utils-lite wasm32 built 7e291a98
sed wasm32 built b5c5f32b
spidermonkey wasm32 built 49ef9232
tar wasm32 built b38257d8
tcl wasm32 built 599fd76a
unzip wasm32 built 01f2d4d4
userspace wasm32 built 355492ee
zip wasm32 built 1e0b11f2
zstd wasm32 built 6a8c2f1f
node wasm32 built 3210297a
spidermonkey-node wasm32 built fa666ecc

Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.

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.

1 participant