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

The /resilience page, each protection and the test that holds it, speaks the home page's language #9880

Merged opened this

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

Merged

The protections on `/resilience` are now a plain `<section class="stack">` under `<h2 id="protections-h">Protections</h2>`, with the rows in the existing `.list`. The shared `card()` and its import are gone from `src/web/pages/resilience.ts`, and no class was added. The backups line, the nightly list, the tally and the `[data-resilience]` wrapping rules for phone width are unchanged. A cited file…

shipped production is serving it deploy a5a2512

opened this

The protections on /resilience are now a plain <section class="stack"> under <h2 id="protections-h">Protections</h2>, with the rows in the existing .list. The shared card() and its import are gone from src/web/pages/resilience.ts, and no class was added. The backups line, the nightly list, the tally and the [data-resilience] wrapping rules for phone width are unchanged. A cited file the last gate did not run still gets the untested badge in the default tone, never the green one.

  • Test: the new test/resilience-language.test.ts signs in as an admin, loads /resilience and checks for one <h1>, no class="card or card-body in <main>, the section and <h2> directly around the .list, and the backups line still there. It also renders an untested row and checks it never carries the green (success) tone. Both tests fail on main and pass here.
  • Design doc: docs/design/areas/resilience.md says the new shape in one line.
  • Left alone: the separate /resilience/nightly/:job page still shows its output in a <pre class="card mono">; the issue only covers /resilience.

Checks run: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean, and bun test test/resilience*.test.ts gives 23 pass, 2 skip, 0 fail. The 2 skips are in test/resilience-fit.test.ts: the browser that measures the page at 390 px can't start in this sandbox. The test that does run there (no fixed width over 390 px) passes, and the forge's check runs the browser part on this push.

To try it: sign in as a forge admin on the preview and open /resilience. The protections should sit under a "Protections" heading with no box around them, and nothing should scroll sideways at phone width.

🤖 Generated with Claude Code

Closes #9877

commented

The protections on /resilience are now a plain <section class="stack"> under <h2 id="protections-h">Protections</h2>, with the rows in the existing .list. The shared card() and its import are gone from src/web/pages/resilience.ts, and no class was added. The backups line, the nightly list, the tally and the [data-resilience] wrapping rules for phone width are unchanged. A cited file the last gate did not run still gets the untested badge in the default tone, never the green one.

  • Test: the new test/resilience-language.test.ts signs in as an admin, loads /resilience and checks for one <h1>, no class="card or card-body in <main>, the section and <h2> directly around the .list, and the backups line still there. It also renders an untested row and checks it never carries the green (success) tone. Both tests fail on main and pass here.
  • Design doc: docs/design/areas/resilience.md says the new shape in one line.
  • Left alone: the separate /resilience/nightly/:job page still shows its output in a <pre class="card mono">; the issue only covers /resilience.

Checks run: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean, and bun test test/resilience*.test.ts gives 23 pass, 2 skip, 0 fail. The 2 skips are in test/resilience-fit.test.ts: the browser that measures the page at 390 px can't start in this sandbox. The test that does run there (no fixed width over 390 px) passes, and the forge's check runs the browser part on this push.

To try it: sign in as a forge admin on the preview and open /resilience. The protections should sit under a "Protections" heading with no box around them, and nothing should scroll sideways at phone width.

🤖 Generated with Claude Code

commented

The protections on /resilience are now a plain <section class="stack"> under <h2 id="protections-h">Protections</h2>, with the rows in the existing .list. card() and its import are gone from src/web/pages/resilience.ts, and no class was added. The backups line, the nightly list, the tally and the [data-resilience] wrapping rules for phone width are unchanged. A cited file the last gate did not run still gets the untested badge in the default tone, never the green one.

The new test/resilience-language.test.ts loads /resilience as an admin. It checks for one <h1>, no class="card or card-body in <main>, the section and <h2> directly around the .list, and that the backups line is still there. It also renders an untested row and checks it never carries the green (success) tone. Both tests fail on main and pass here. docs/design/areas/resilience.md describes the new shape in one line.

Left alone: /resilience/nightly/:job still shows its output in a <pre class="card mono">. It is a separate page and outside this issue.

The first push failed the forge's gate because no commit message had a Try: line. An empty follow-up commit now carries one; the forge refuses force pushes, so the first commit was not rewritten.

bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean, and test/resilience*.test.ts gives 23 pass, 2 skip, 0 fail. The 2 skips are in test/resilience-fit.test.ts: the 390 px browser measurement cannot start Chromium in this sandbox, so it is left to the forge's check. The part of that file that does run here, no fixed width over 390 px, passes.

Try: sign in as a forge admin on the preview and open /resilience. The protections sit under a "Protections" heading with no box around them, and nothing scrolls sideways at phone width.

🤖 Generated with Claude Code

Approved

Clean. The protections are a plain section under an h2 with rows in the existing .list, no card, no new class, no new dependency. The untested badge stays in the default tone. The new test asserts no class=card on /resilience and the untested standing, and the design doc has its one line. Not exercised live: the preview answers 303 to a bearer token (admin session needed), so I judged the diff and tests only. The nightly output pre keeps class=card on its own page, which is out of scope.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs