Public: anyone can read this; the crew can change it.

Jay Moran's display model is on main: a display.json reads into items and selections, and the arcade shelf compiles and is tested #9338

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Jay Moran's display model is now on this branch: `display.json` reads into a config, builds order into items and selections, and the arcade shelf compiles. `bun x tsc --noEmit` is clean. `test/display-model.test.ts` (5 tests) and `test/hollow.test.ts` (28) pass. I did not run the full suite, so the forge's check is the first full run, and the existing manifest tests were not run separately.

shipped production is serving it deploy fc82d1a

opened this

Jay Moran's display model is now on this branch: display.json reads into a config, builds order into items and selections, and the arcade shelf compiles. bun x tsc --noEmit is clean. test/display-model.test.ts (5 tests) and test/hollow.test.ts (28) pass. I did not run the full suite, so the forge's check is the first full run, and the existing manifest tests were not run separately.

The five files came over from origin/incoming/jay-main unchanged. Four things beyond that were missing on main, and I added exactly those:

  • launchOf is added to src/git/builds.ts, copied from his branch.
  • app.pages and app.launch are added to src/apps/manifest.ts: the parsed fields, validation and error messages. I kept main's looksAsOwner. His branch had removed it, which would have broken main.
  • src/actions/pin_demos.ts is back with only demoFactsAt and demoDefaults. Main had removed the file in #9314. I did not restore save, showcase or capture.
  • scripts/hollow-allow.ts lists those two functions, owned by #9208. Nothing routes to them until the display page lands, so the hollow-work test would otherwise go red. That issue should remove the entries when it wires them.

Nothing imports src/display/launch.ts, src/arcade/host.ts or src/arcade/snapshot.ts, and I did not touch src/http/api.ts.

The test covers three areas:

  • Config: a good file reads into a config.
  • Refusals: each malformed file is refused with its named error: bad JSON, not an object, bad layout, empty title, an unsafe source, a duplicate build, and an unknown key.
  • Model: build ordering, selectionsHolding, and an empty display giving an empty shelf.

I did not test readDisplay or displayItems against a real repository. His test/display.test.ts does that, but it needs the pages, actions and launch.ts that come later.

The commit carries Co-authored-by: Jay Moran <[email protected]>. That email is a placeholder, so please replace it with his real address if you want the credit to link.

To try it: bun test test/display-model.test.ts.

🤖 Generated with Claude Code

Closes #9329

commented

Jay Moran's display model is now on this branch: display.json reads into a config, builds order into items and selections, and the arcade shelf compiles. bun x tsc --noEmit is clean. test/display-model.test.ts (5 tests) and test/hollow.test.ts (28) pass. I did not run the full suite, so the forge's check is the first full run, and the existing manifest tests were not run separately.

The five files came over from origin/incoming/jay-main unchanged. Four things beyond that were missing on main, and I added exactly those:

  • launchOf is added to src/git/builds.ts, copied from his branch.
  • app.pages and app.launch are added to src/apps/manifest.ts: the parsed fields, validation and error messages. I kept main's looksAsOwner. His branch had removed it, which would have broken main.
  • src/actions/pin_demos.ts is back with only demoFactsAt and demoDefaults. Main had removed the file in #9314. I did not restore save, showcase or capture.
  • scripts/hollow-allow.ts lists those two functions, owned by #9208. Nothing routes to them until the display page lands, so the hollow-work test would otherwise go red. That issue should remove the entries when it wires them.

Nothing imports src/display/launch.ts, src/arcade/host.ts or src/arcade/snapshot.ts, and I did not touch src/http/api.ts.

The test covers three areas:

  • Config: a good file reads into a config.
  • Refusals: each malformed file is refused with its named error: bad JSON, not an object, bad layout, empty title, an unsafe source, a duplicate build, and an unknown key.
  • Model: build ordering, selectionsHolding, and an empty display giving an empty shelf.

I did not test readDisplay or displayItems against a real repository. His test/display.test.ts does that, but it needs the pages, actions and launch.ts that come later.

The commit carries Co-authored-by: Jay Moran <[email protected]>. That email is a placeholder, so please replace it with his real address if you want the credit to link.

To try it: bun test test/display-model.test.ts.

🤖 Generated with Claude Code

commented

I added a commit to the pull that carries the lines the gate asked for, and pushed it. The code is unchanged. Running bun scripts/gate.ts locally printed nothing, so I take it to pass. I have not seen the forge's check run on the new push.

The commit message has these lines:

  • Why now: #9208 waits on this model; its display page cannot read items or selections until they are on main.
  • Pipeline: #9208
  • Try: bun test test/display-model.test.ts (no route reads the model yet, so the preview boots unchanged)

The pull's earlier description still applies.

commented

This pull puts Jay Moran's display model on main: a display.json reads into items and selections, and the arcade shelf compiles. Nothing serves the model yet.

The check's every module under src/ is imported by another, or allowed failure was caused by this pull. The six new modules are reached by nothing yet, so I listed them in scripts/unreached-allow.json. They are src/display/{config,items,known,selections}.ts, src/arcade/shelf.ts and the slimmed src/actions/pin_demos.ts. The issue says to land the model without wiring it, so the entries come off that list when the display route lands (#9208, already named in scripts/hollow-allow.ts). test/unreached.test.ts now passes and tsc --noEmit is clean.

I did not change the egress failure, a connection that moves no bytes is cut after the idle timeout. It timed out at 60 s in shard 33, and this pull doesn't touch egress code. test/egress-leak.test.ts passes here, but the sandbox skips the unix-socket tests, so this run doesn't show whether the idle-timeout test is flaky under load or broken. If it fails again on this push, it needs its own look.

To try it: bun test test/display-model.test.ts and bun test test/unreached.test.ts.

Approved

Approved. It is a model with no door yet, as issue #9329 asks, so I judged it on the source, the tests and the allowlists. The preview boots unchanged. The new parsers fail closed, and a source like --upload-pack is refused. Every new module is listed in unreached-allow.json and the two orphans in hollow-allow.ts, each naming #9208 as the pull that removes them. I could not check the commit trailers from this clone, so box 4 rests on the builder saying the Co-authored-by line is there. Next: (1) when #9208 lands, remove the allowlist entries in the same pull. (2) Add a readDisplay/displayItems test against a real repository, so the privacy rule that an item the viewer cannot read is opaque (open:false) has a test. Also drop the stray trailing blank line at the end of src/actions/pin_demos.ts.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs