Repository navigation
Conversation
… is a release and needs release-production's authority Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
…, observed on change, on the dashboard Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
… with their own width and colors Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
…corrected, not lapsed, naming this target); the release act carries it, not the merge Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
… class's act, under its decision or on its rung Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
…there are 20 checks, one poll at a time, bounded body, redirects fail, state seeded from the log, rollups for missed days, safe names, samples read once, wait spawns only when due with a timeout) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5z3hZtpGaQUGsTaAMQrAg
Adversarial review (upstream loop): #105 CHANGES, #106 CHANGESA fresh reviewer reproduced each blocker on Node 18.20.4, in a throwaway project with forge git and a local bare origin. Line numbers are in devteam.mjs on Blockers
Should-fix
Nits
What held
|
Conflicts resolved keeping main's rules: ownerAnswer (matched, #113), question_hash (#116), owner_rules (#115), per-entry link binding and links in home only (#108), one-pass linkify (#107). Review fixes: - merge: each changed owner settings class needs its own settling; an owner_only class only by the owner's own answer in it (never chat) or their standing rule; --approved takes several answers. A ladder-class answer (monitor-change) never covers an owner_only key or a kit file. - merge: a decision is carried out once; settings acts name what settled them (answer, rule, decision or rung), and an act a merge logged is never a pending landing for a later merge. - monitors: name set last from the key, a name field refused; credentials in a monitor url refused (validate, check-pr/merge); userinfo and query never shown (status, alerts, observations, findings, dashboard, settings); 2xx only is up; state seeded from the log only when state.json is missing; a dead poll's lock is stale at once; no SNI for IP hosts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…wn; secret_commands is the changed governance-edit key Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review findings, one by one (upstream loop)I merged Blockers
Should-fix
Nits
Docs: Tests: the full |
The owner's own answer (never relayed from chat) in any one of the owner_only classes a PR changes approves every owner setting it changes; or their standing rules where owner_rules allows. A ladder-class answer, a decision or rung 3 covers only that ladder class's keys, never an owner_only key. Several --approved are still accepted. Repo link entries stay bound to what the bundle's question showed. The kit-files tightening is taken out here and comes back in its own commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A chore that changes files outside project/ needs the owner's own answer of class governance-edit, process-edit or gate-change: never a ladder class's answer (monitor-change) or one relayed from chat. Before, any answered question approved it. Pending the owner's decision; revert this commit to drop it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Builds on #105 (deploys on merge). PR 1 of the monitoring spec: uptime and response time. No new files in the kit.
TL;DR
monitors,monitor_defaults) in a new ladder class,monitor-change, which starts at "ask with a default" (ceiling 3). merge accepts a ladder class's settings change under an answered question, a decision in the class naming the PR, or the class's rung 3. It logs the change as an act of the class.{ "kind": "http", "url", "expect": { "status", "contains" }, "slo": { "uptime", "p95_ms" } }, records status, latency and TLS expiry.follow_redirects), so a login redirect isn't "up".containsis set.waitpolls them when one is due, before spawning anything, with a one-minute timeout. It returns once on a new outage ("production needs you"), never on a standing finding.run/monitors/<name>/.monitor:<name>:down: severity 4, afterdown_afterfailed checksup: refs the outageslow: once per breach, when the last hour's p95, from at least 20 good checks, beats the target 3 checks runningrun/or a fleet move, so an outage isn't doubled.monitor-down: medium, sowaitdoesn't loopcert-expiring: high at 3 daysslo-breach-week#monitor/<name>sidepeek: settings and state, 24h and 7d charts, failed checks, historymonitor status|test|poll|series.Review
Fable reviewed both PRs. Fixed:
--decisionwasn't checked like an act's: corrected, lapsed, or naming another targetwaitcould hang on a stuck poll, and spawned a poll every cyclerun/Proxies are documented (
waitsetsNODE_USE_ENV_PROXY=1).Tests
A local server in a child process walks one monitor through:
slow)--due, the series, dashboard data and peekwaitwaking on a new outagemonitor-changeat rung 2The owner-settings test merges a monitors change under a
monitor-changedecision, and refuses a decision for another PR.Generated by Claude Code