Skip to content

Main CI timeout: floor step 270→55, regen 15m own budget (effective main wall ~75m; job backstop derives 600→130) - #7120

Merged
briansrls merged 1 commit into
mainfrom
claude/ci-floor-timeout-75
Jul 23, 2026
Merged

briansrls merged 1 commit into
mainfrom
claude/ci-floor-timeout-75

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Operator ruling 2026-07-23: "main needs a timeout, 75 seems reasonable for now." Priced by today's receipt — run 29976854620 hand-killed at t=227m: 16.3 GB pinned at memory.high, 34.4 GB swap, 37,096,823 cgroup high_events, PSI 33.8, oom_kill=0, governor logging hard back-off 1→1 every few seconds for hours — the memory.high throttle-crawl class, with 8 subsequent main pushes wedged identically behind it. The old 270-minute floor-step cap legalized a 4.5-hour crawl.

All changes in the authority (gunbc.ci_workflow); ci.yml regenerated via main_wet, never hand-edited:

  • gunbc_ci_floor_step_timeout_minutes 270 → 55. Recent green floors run 39–45 min; 55 is a ceiling, not a target. The step cap is the grain that fires — a killed run names its step. The timeout-history note gains today's receipt, the regression ledger (~8m pre-namespace wave 1: containment-tree resolution — layered census + name-derived loader (salvage) #6848 → ~18m → 40–50m cap-saturated → 4h cap lost: one disease, retention — never an accepted baseline), and the named follow-ups (governor terminal crawl-refusal arm; the CI floor time audit: redundant-work ledger + ranked levers (45–72min band) #7106 levers) so this cap becomes the backstop rather than the diagnostic.
  • New gunbc_ci_regen_step_timeout_minutes = 15. The regen step (measured ~5 min on every recent green) previously borrowed the floor's cap — double-counting the floor budget in the job backstop sum and allowing a wedged regen to sit for hours.
  • Job backstop derives 600 → 130 (sum unchanged in shape; regen term replaces the second floor term). Effective main wall on the normal path: prelude + regen(≤15) + floor(≤55) + tails ≈ ≤75.

Policy recorded on the carrier: superseded main runs are not cancelled (operator 2026-07-23) — the per-commit verdict history is bisection evidence; the timeout is the bound.

Known consequence, deliberate: until the retention levers land (#7106's one-tree-one-resolve dispatch, #6848 once-per-entry fixpoint, M2 eviction), a main floor that tips over the memory cap will fail at 55 minutes with a step-named timeout instead of crawling for 4+ hours. That is the intended behavior — loud, dated, per-commit.

🤖 Generated with Claude Code

https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg


Generated by Claude Code

…(job backstop derives 600 -> 130; effective main wall ~75m)

Operator ruling 2026-07-23 ('main needs a timeout, 75 seems reasonable for
now; even 1 hour is absolutely ridiculous'), priced by today's receipt:
run 29976854620 hand-killed at t=227m — 16.3G pinned at memory.high,
34.4G swap, 37,096,823 high_events, PSI 33.8, oom_kill=0, governor
'hard back-off 1->1' for hours — the memory.high throttle-crawl class,
with 8 subsequent main pushes wedged identically behind it. The old
270m floor cap LEGALIZED a 4.5-hour crawl.

Changes, all in the authority (ci.yml regenerated via main_wet, never
hand-edited):
- gunbc_ci_floor_step_timeout_minutes 270 -> 55 (recent green floors run
  39-45m; 55 is a ceiling, not a target). The timeout-history note gains
  today's receipt plus the regression ledger (8m pre-#6848 -> 18m -> 40-50m
  cap-saturated -> 4h cap lost: one disease, retention — never an accepted
  baseline) and the named follow-ups (governor crawl-refusal arm; #7106
  levers) so the cap becomes the backstop, not the diagnostic.
- NEW gunbc_ci_regen_step_timeout_minutes = 15: the regen step (measured
  ~5m green) previously borrowed the floor's cap, double-counting the
  floor budget in the job backstop sum and allowing a wedged regen to sit
  for hours.
- gunbc_ci_job_backstop_timeout_minutes() derives 600 -> 130 (sum with the
  regen term replacing the second floor term).

Policy recorded on the carrier: superseded main runs are NOT cancelled
(operator 2026-07-23) — per-commit verdict history is bisection evidence;
the timeout is the bound.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
@cursor

cursor Bot commented Jul 23, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@briansrls
briansrls merged commit 67779c7 into main Jul 23, 2026
3 checks passed
@briansrls
briansrls deleted the claude/ci-floor-timeout-75 branch July 23, 2026 12:05
briansrls pushed a commit that referenced this pull request Jul 23, 2026
…agent history sweep, receipts throughout)

docs/plans/resolve-regression-journey.md answers the operator's 2026-07-23
question ('what fundamentally keeps regressing? we have fixed resolve
several times and it comes back worse') from a 65-event dated fix ledger
over origin/main since 2026-06-25 plus the in-tree receipt docs, with an
adversarial verification pass:

- The measured trajectory: ~8m floor (pre-flip) -> discovery flip x12
  demand (#6438, 2026-07-09) -> timeout bounce 30..270 raised to fit ->
  #6848 (+18m time AND the 1GB/process parse baseline, RSS 6.5->20GB,
  2026-07-20) -> mechanism-correct follow-ups recovering less than priced
  (M1 ~0% on capped hosts) -> the 4h memory.high crawl -> #7120/#7122/#9.
  Three mechanisms wear one trend line: added demand, retention to the
  cap, cap lost.
- The five grains of one duplication (per-thread/-entry/-run/-process/-PR),
  discovered serially, fixed independently, no shared already-computed
  authority — instance-patching as validation where construction
  (ComputationIdentity) is the fix.
- Verified: NO floor-time regression gate exists (the 5s law is enforced
  but scoped to eval; the regression mass lives in the exempted infra
  carve-out); 5+ merges since 07-01 added corpus-denominated work with
  zero merge-time cost pricing.
- What ends it, in order: the cost wall (budget refusal + regression
  gate), the identity authority, the retention lane, cost pricing at
  merge.

Registered in doc_graph_roots (reachability suite 7/7 PASS by execution).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants