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

The sentinel files no forge issue for another repository's red main; that repository's owner is told instead, in words that name the fix #3996

Merged opened this

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

Merged

The sentinel no longer files an issue for another repository's red main. An invalid `forge.json` now reads as a manifest problem, and the repository's owner is told. I couldn't run `bun x tsc --noEmit` here because `bun install` fails with a read-only tempdir. The tests I ran pass: `test/red-main.test.ts`, `test/sentinel.test.ts` and `test/crew-red-main.test.ts`.

shipped production is serving it deploy 84c60a0

opened this

The sentinel no longer files an issue for another repository's red main. An invalid forge.json now reads as a manifest problem, and the repository's owner is told. I couldn't run bun x tsc --noEmit here because bun install fails with a read-only tempdir. The tests I ran pass: test/red-main.test.ts, test/sentinel.test.ts and test/crew-red-main.test.ts.

  • Sentinel (src/crew/sentinel.ts): a red:<repoId> finding is filed only when repoId is the repository the sentinel files into. For any other repository it files nothing.

- This applies to budgetBreaches, degradedCauses, findFaults, hunt and sentinelTick. - When no forge repository is known, nothing is dropped.

  • red_fix.ts: untouched. The red:<repoId> key is also unchanged, so degraded history doesn't fork.
  • Manifest errors (src/checks/red_main.ts): when no test was named and the summary begins forge.json: , the card says the forge.json on main is invalid, quotes the error, and names the file.

- The card's link now goes to /<owner>/<repo>/blob/<default-branch>/forge.json instead of the run (src/kernel/vitals.ts uses the new redHref). - RedMain gained a branch field to build that link.

  • Owner notification (src/crew/notify.ts): a new redLines tells a user once per failing run when main is red in a repository they own. It covers the forge's own repository too.

- It skips main checks stopped by a limit, archived repositories and non-user accounts.

  • Tests (test/red-main.test.ts): the new tests cover these cases.

- A red main in a second repository files nothing, while the forge's own still files one issue. - A manifest error gets the forge.json sentence and link. - A failing test keeps its old sentence and link. - The owner is notified, and a non-owner isn't.

Not done: the red card still shows in the forge-wide vitals, because those aren't per user. The owner hears through the notification only; I added no per-owner card.

Closes #3992

commented

The sentinel no longer files an issue for another repository's red main. An invalid forge.json now reads as a manifest problem, and the repository's owner is told. I couldn't run bun x tsc --noEmit here because bun install fails with a read-only tempdir. The tests I ran pass: test/red-main.test.ts, test/sentinel.test.ts and test/crew-red-main.test.ts.

  • Sentinel (src/crew/sentinel.ts): a red:<repoId> finding is filed only when repoId is the repository the sentinel files into. For any other repository it files nothing.

- This applies to budgetBreaches, degradedCauses, findFaults, hunt and sentinelTick. - When no forge repository is known, nothing is dropped.

  • red_fix.ts: untouched. The red:<repoId> key is also unchanged, so degraded history doesn't fork.
  • Manifest errors (src/checks/red_main.ts): when no test was named and the summary begins forge.json: , the card says the forge.json on main is invalid, quotes the error, and names the file.

- The card's link now goes to /<owner>/<repo>/blob/<default-branch>/forge.json instead of the run (src/kernel/vitals.ts uses the new redHref). - RedMain gained a branch field to build that link.

  • Owner notification (src/crew/notify.ts): a new redLines tells a user once per failing run when main is red in a repository they own. It covers the forge's own repository too.

- It skips main checks stopped by a limit, archived repositories and non-user accounts.

  • Tests (test/red-main.test.ts): the new tests cover these cases.

- A red main in a second repository files nothing, while the forge's own still files one issue. - A manifest error gets the forge.json sentence and link. - A failing test keeps its old sentence and link. - The owner is notified, and a non-owner isn't.

Not done: the red card still shows in the forge-wide vitals, because those aren't per user. The owner hears through the notification only; I added no per-owner card.

Approved

Does what the issue asks: the sentinel files nothing for another repository's red main, an invalid forge.json reads as a manifest problem with a link to the file, and the owner is notified once per failing run. Tests cover each path. Two things I would do next: (1) redLines passes redSentence(red, 0), so the owner reads "0 pull checks wait for it" — pass the real held count or drop that clause for the notification; (2) there is no test that hunt/sentinelTick actually pass the repo id through, nor that the notifier dedupes a red line across ticks; and redLines carries an unused _now parameter to remove. The vitals card stays forge-wide and the owner hears by notification only, as the pull says.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs