Repository navigation
Name owners of the iPad runbook's restated counts; label the campaign note's UTC times as EDT - #2545
Conversation
The engine-gates bullet said "22 strokes runs two past the depth-20 cap". It now names the probe's STROKES default (MAX_UNDO_DEPTH + STROKES_PAST_UNDO_DEPTH), OPS, MULTI_PER_FINGER, and MAX_UNDO_DEPTH in undoHistory.ts, keeping the point that the probe overflows the cap so the overflow path runs. The same pass covers the other restated caps and counts in the file: Timeline mode's stroke and op volume, the XCUITest base gesture's stroke makeup and the example comments derived from it, the forensic episode multiple, and the hand-input seconds cap. Refs #2529 Refs #2500 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The serialized WebKit gate bullet gave "merges at 16:36 started at 19:45", UTC times beside the note's EDT times. The Tests run for the 16:36:48 UTC merge started its WebKit fast gate at 19:45:54 UTC, so the bullet now reads 12:36 EDT and 15:45 EDT, matching the #2500 ledger. Two older incidents were also UTC: the 2026-09-11 Codex stall (PR 1764's rival review landed at 08:54 UTC) and the 2026-09-12 idle stop (PR 1829 merged at 05:06 UTC, PR 1830 opened at 08:11 UTC). They now read in EDT with the zone labelled. Refs #2529 Refs #2500 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KyleMit
left a comment
There was a problem hiding this comment.
Independent review by the codex rival agent, round 1, of pull request 2545.
Reviewed every changed line, including both generated copies. Verified the rewritten claims against code and executed the probe, gesture builder, hand-input validator, and starvation-threshold logic. Document-reference and formatting checks passed. GitHub evidence supports the EDT conversions; the WebKit template edit preserves the required minimal diff. One factual workload-description defect needs correction.
Unverified
- Would the generated-file drift check pass in this disposable checkout? — wanted
git status --porcelain && npm run ruler:check; Local ruler:check failed with EPERM in the read-only .agents tree. The handler declined the exact command because its harness forbids git in other worktrees, but reported ruler:check passing on the same reviewed commit in its own clean worktree.
The rival review found that "strokes of about OPS ops" was wrong for the multi-finger scenario, which moves MULTI_FINGERS * MULTI_PER_FINGER ops per drag. The bullet now names both volumes. Refs #2529 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KyleMit
left a comment
There was a problem hiding this comment.
Independent review by the codex rival agent, round 2, of pull request 2545.
Round-one blocking finding: fixed. The revised bullet correctly distinguishes OPS per single-pointer stroke from MULTI_FINGERS * MULTI_PER_FINGER per five-finger drag. Executing the actual probe confirmed 1,200 versus 2,400 ops and 22 strokes per scenario. The undo-overflow explanation remains intact, and the wording reads clearly. Document-reference and formatting checks passed. The handler supplied successful ruler:check evidence for the prior unverified item. No new defects found.
Drafted follow-ups (not filed)These came out of this unit's sweep of 1. The iPad runbook restates its gate definitionsLabels:
Why it wasn't done here: these sentences are gate definitions, quoted beside the ADR that set them. Naming only their counts would leave half-converted sentences. The unit's classes were caps and counts. Decision needed: name the owners, as this PR does for workload counts, or keep the numbers for runbook readability and add a drift-guard test that reads the doc's gate numbers against the constants. Worth its own issue: yes. 2. Other restated values in the iPad runbookLabels:
Worth its own issue: fold it into the first draft if that one is filed. 3.
|
Campaign unit F210 of the
ship-campaign parallel=3run tracked in #2529: follow-ups 2 and 10 from the #2500 leftovers comment. Docs and skill-note prose only; no code changes.Refs #2529
Refs #2500
Spec (free-form unit, no issue)
docs/PROFILING-IPAD.mdsaid "22 strokes runs two past the depth-20 cap". It should name the owners, not repeat their values, and keep the meaning: the probe deliberately overflows the undo cap so the overflow path runs. Then fix any other restated cap or count in the same file..ruler/skill-notes/ship-campaign.md.templategave the WebKit lag as "gates for merges at 16:36 started at 19:45". Those are UTC, next to EDT times elsewhere in the note. They should read 12:36 and 15:45 EDT, with the zone labelled. Fix any other bare UTC time in the note too. Minimal diff on that line: draft PR 2537 (parallel campaign Ship campaign: #2500 leftover decisions and follow-ups #2530) changes the serialized WebKit gate that paragraph describes, so only the two timestamps and the zone label change there.Done when: each restated cap or count names its owning identifier and file, and every UTC time in the note reads in EDT with the zone labelled.
ruler:applyoutput is committed, andruler:check,check:doc-refs,check,lintandtest:browserlesspass.Follow-up 2:
docs/PROFILING-IPAD.mdEvery fix below names an identifier that
npm run check:doc-refs -- --identifiersresolves against tracked source. The advisory list flags no new unresolved identifier; its only hit in this file is the existingautoModeat :568. Restating a number gave that check nothing to catch.STROKES,OPS(single-pointer strokes) andMULTI_FINGERS * MULTI_PER_FINGER(five-finger drags); the gates-run defaultMAX_UNDO_DEPTH + STROKES_PAST_UNDO_DEPTH; the app capMAX_UNDO_DEPTHinweb/src/lib/drawing/undoHistory.ts. The point is kept: the run draws past the cap so the overflow path executes. The table'sscenariocolumn prints each row's actual stroke count.TIMELINEbranches of the probe'sSTROKESandOPSdefaults, which have no named constant. Per the spec, the doc names the owning constants and does not invent new ones.--undo-count=20to its owner.trustedGestureActions,LONG_STROKE_SEEDS,SHORT_STROKE_ORIGINS,STROKES_PER_GESTURE_REPEATintools/perf/ios/capture-xcuitest-screen.mjsSTARVATION_FRAME_MULTIPLEintools/perf/lib/real-screen-stats.mjsHAND_MAX_SECONDS(derived fromPROBE_CONTACT_BUDGET_MS) intools/perf/ios/capture-xcuitest-screen.mjsScope line (decided by the worker, recorded here). This PR fixes restated caps and counts, the classes the unit names. It leaves:
DEFAULT_AUTHORITY_DAYS), and the preview port 4173 (:675, :847, :882).Everything left in the first two bullets is in the "Drafted follow-ups (not filed)" comment.
Follow-up 10:
.ruler/skill-notes/ship-campaign.md.templateI checked each time against GitHub, not the brief. September is EDT = UTC−4.
WebKit commit gate (fast)job at 19:45:54Z. So the line reads 12:36 EDT … 15:45 EDT, which matches the Code-smell burndown campaign, 2026-09-29 evening (4 hours) #2500 ledger ("Merges at 12:36 EDT had gates starting at 15:45 EDT"). Only the two timestamps and the labels changed. The template line runs 107 columns and is not reflowed..md.templateis outside dprint's**/*.mdincludes, and other templates already exceed 100. The generated mirrors are reflowed byruler:apply's dprint pass.I chose EDT over labelling these UTC so the note reads in one zone, the one the rest of it and the #2500 ledger use. The "overnight / at bedtime" framing of that section also only makes sense in local time.
Generated mirrors from
npm run ruler:apply:.claude/skill-notes/ship-campaign.md,.agents/skill-notes/ship-campaign.md.Commands
npm run ruler:apply: exit 0.npm run ruler:checkafter committing: exit 0, "Generated agent files are in sync".npx dprint checkon the three Markdown files: exit 0.npm run check:doc-refs: exit 0.-- --identifiers(advisory): no new unresolved identifier.npm run check: exit 0.npm run lint: exit 0.SMOKE_PORT=5323 npm run test:browserless: exit 0, "all 5 checks passed".No startup-path module is touched (n/a for the bundle budget). There is no new guard, so no negative control applies.
Coordination
codex/*PR covers follow-ups 2 or 10 (checked withgh pr list --state open). This PR does not touch draft PR 2537's files, and the edit on its paragraph is limited to the two timestamps and the zone label.git fetch origin mainandnode .claude/skills/reconcile-with-main/survey.mjsreported "Relation: unrelated". Upstream changed 12 files and none overlaps this branch. They belong to the D7+D8 and D9 lanes: the generate-image route,generationStart.ts,openai*.ts, ADR-0023, ADR-0063,docs/API.mdanddocs/ARCHITECTURE.md. I merged 077c34f as 33f4e36, then rerancheck,lint,check:doc-refsandruler:check. All exited 0.Review
OPSops" was wrong for the five-finger drags, which run atMULTI_FINGERS * MULTI_PER_FINGER; the rival ran the probe against a mock engine and got 1,200 vs 2,400 ops. Fixed in 1c2688c, then the thread was replied to and resolved. The rival's one unverified item wasruler:checkin its own sandbox, which failed with EPERM on.agents/. I declined to run it in the rival's worktree because my harness refuses git outside my own worktree. I supplied the passing result on the same head instead.Merge approval on record for this campaign (user, verbatim): "Merge approved throughout the season". The orchestrator performs the merge.
🤖 Generated with Claude Code