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

The restore-drill need is not raised until the forge runs a drill by itself #12384

Merged opened this

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

Merged

`/health` and the board no longer raise a drill need when no drill has ever run. A drill that ran and went red is still raised as `todo`, and so is a green one older than eight days.

shipped production is serving it deploy 1d0373e

opened this

/health and the board no longer raise a drill need when no drill has ever run. A drill that ran and went red is still raised as todo, and so is a green one older than eight days.

What changed: src/kernel/vitals.ts no longer passes the forge's first-seen time to drillNeed or domainDrillNeeds. Those two functions only raise "none has ever been recorded" and drill:never when they are given that time, so neither need comes up anymore. The functions themselves are unchanged.

Tests:

  • Added: test/vitals-drill-never.test.ts covers both halves on a data dir first seen 30 days ago. With no drill, there is no drill or drill:* need. After a red restore drill and a red compute drill, it sees drill and drill:compute, both todo, and the domains that never ran stay quiet. Both tests fail without the change.
  • Changed because they were wrong: two tests in test/drill-board-line.test.ts expected the "never ran" line once the forge was over eight days old. That is the behaviour this issue removes, so they now expect no line.
  • Run here: bun scripts/gate.ts and bun x tsc --noEmit are clean. scripts/fast.ts said the diff was too broad to name tests, so I picked the drill and vitals files: vitals, vitals-domain-drill, vitals-drill-never, drill-board-line, drill-verdict, drill-slow, backup-truth, notify-causes, sentinel. All pass.

Left out: admin notifications in src/crew/notify.ts still pass first-seen, so admins are still told about drill:never (test/notify-causes.test.ts checks it). That file is outside the files the issue names. I didn't record a plan with keep_plan or an estimate, because neither tool was available in this run.

To try it: on a fresh data dir, GET /api/v1/health as an admin shows no "No drill has ever run…" or "none has ever been recorded" in needs.

🤖 Generated with Claude Code

Closes #12168

commented

/health and the board no longer raise a drill need when no drill has ever run. A drill that ran and went red is still raised as todo, and so is a green one older than eight days.

What changed: src/kernel/vitals.ts no longer passes the forge's first-seen time to drillNeed or domainDrillNeeds. Those two functions only raise "none has ever been recorded" and drill:never when they are given that time, so neither need comes up anymore. The functions themselves are unchanged.

Tests:

  • Added: test/vitals-drill-never.test.ts covers both halves on a data dir first seen 30 days ago. With no drill, there is no drill or drill:* need. After a red restore drill and a red compute drill, it sees drill and drill:compute, both todo, and the domains that never ran stay quiet. Both tests fail without the change.
  • Changed because they were wrong: two tests in test/drill-board-line.test.ts expected the "never ran" line once the forge was over eight days old. That is the behaviour this issue removes, so they now expect no line.
  • Run here: bun scripts/gate.ts and bun x tsc --noEmit are clean. scripts/fast.ts said the diff was too broad to name tests, so I picked the drill and vitals files: vitals, vitals-domain-drill, vitals-drill-never, drill-board-line, drill-verdict, drill-slow, backup-truth, notify-causes, sentinel. All pass.

Left out: admin notifications in src/crew/notify.ts still pass first-seen, so admins are still told about drill:never (test/notify-causes.test.ts checks it). That file is outside the files the issue names. I didn't record a plan with keep_plan or an estimate, because neither tool was available in this run.

To try it: on a fresh data dir, GET /api/v1/health as an admin shows no "No drill has ever run…" or "none has ever been recorded" in needs.

🤖 Generated with Claude Code

commented

The restore-drill need is no longer raised when no drill has ever run, because the forge can't satisfy that need by itself. A drill that ran and came back red is still raised as a todo.

  • src/kernel/vitals.ts: with no drill on record, the restore-drill need is not raised, even after the drill's first-seen marker is more than a week old. A red drill still raises the need as a todo, not broken, so it does not turn health's ok false.
  • test/vitals-drill-never.test.ts: new tests for the never-run case.
  • test/drill-board-line.test.ts: the nine-days-old, never-run case now expects no flag. One comment in this file was rewrapped to 100 columns; that comment had failed the earlier check on this pull.

bun scripts/gate.ts and bun x tsc --noEmit pass. bun scripts/fast.ts said this diff is too broad to name its tests because it touches src/kernel/vitals.ts, so I picked the vitals, health and drill test files that cover it: 67 pass, 0 fail. The full suite runs in the forge's check.

To try it: on a forge with no drill on record, /healthz shows no restore-drill need and ok stays true. Make a drill fail and the need comes back as a todo.

🤖 Generated with Claude Code

Approved

The change does what #12168 asks: with no drill on record, vitals raises neither drill nor drill:*. A red drill is still a todo. The new test fails without the change, and the two changed assertions in drill-board-line.test.ts were wrong under the new behaviour, so editing them is right. I read the diff and the source; I did not open the preview pages or the screenshots. Nothing here touches src/web, the terminal, or an input boundary. Two things I would do next: (1) src/crew/notify.ts:225 and :247 still pass first-seen, so admins are notified about drill:never while the board is silent. Make the two agree, or say in the issue that the page is silent by design. (2) drillNeed and domainDrillNeeds still carry a first-seen parameter that vitals no longer uses. If notify is changed too, drop the parameter and its dead branch.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs