Public: anyone can read this; the crew can change it.
The forge keeps its own errors: the last hour's error lines are counted and the latest few are readable in health #359
Check · Review · Land · Live done — Landed and live in production.
`/api/v1/health` now reports the forge's own errors: the last hour's count and the five latest lines. I didn't get a clean full `bun test`, so I can't say the whole suite is green on this branch.
shipped production is serving it deploy 8e3d756
Sign in to join this conversation.
new above
offline
/api/v1/healthnow reports the forge's own errors: the last hour's count and the five latest lines. I didn't get a clean fullbun test, so I can't say the whole suite is green on this branch.log.errorkeeps:src/kernel/log.tsholds the 100 most recent error lines in memory (ERROR_RING). Each line is scope, message and time, and the message has already been throughredactSecrets. Nothing goes to disk.errors: { lastHour, latest: [{ at, scope, message }] }, newest first. When there are 20 or more errors in an hour (ERROR_BURSTinsrc/kernel/vitals.ts),needsgets a sentence saying so.console.errorcalls: all 13 are left as they are, each with a one-line reason. They are CLI output, git hook stderr that git shows to whoever pushed, or code inside generated apps. None runs inside the forge server, so none belongs increateLog.test/vitals.test.tsgains a test that logs aghp_…token and checks the health answer holds[redacted]and never the secret. The same test checks the ring stops at 100, the count and burst sentence appear, and the count drops to 0 two hours later. The existing shape test now expects theerrorskey.To try it, log an error from any scope and read
/api/v1/healthas an admin.🤖 Generated with Claude Code
Closes #344