fix(feed,benchmarks): restore 7 files clobbered by #11271 — broken imports + orphaned tests (#11419) - #11490
Conversation
Restores files deleted by the #11271 stale-base mega-revert, identified in the blob-level audit on #11419. All restored byte-identical from the pre-clobber parent dc1a63b (= 5b714c7^) and verified against the current develop tip. Functional breakage (develop is broken without these): - packages/benchmarks/orchestrator_lifecycle/events.py runner.py:228 calls extract_lifecycle_events from .events; the module was deleted so the bench could not even import. - packages/feed/tools/e2e-gate.mjs chroma + e2e package.json 'test' scripts invoke node ../e2e-gate.mjs; the gate script was deleted so both lanes died at spawn. - packages/feed/tools/chroma/specs/helpers/page-helpers.health.test.ts - packages/feed/tools/e2e/tests/helpers/page-helpers.health.test.ts both referenced by the packages' test:unit scripts. Orphaned test coverage: - packages/benchmarks/orchestrator_lifecycle/tests/test_events.py - packages/benchmarks/interrupt-bench/tests/honest-scoring.test.ts - packages/benchmarks/three-agent-dialogue/__tests__/verification.test.ts Verification: orchestrator_lifecycle full pytest suite 26 passed; both page-helpers.health suites 7 pass each (bun test); interrupt-bench honest-scoring 4 passed (vitest); three-agent-dialogue verification 5 passed (vitest); node --check e2e-gate.mjs clean; biome clean. Co-authored-by: wakesync <shadow@shad0w.xyz>
…nt extraction Codex review flagged that the runtime's real TASKS control op carries the child operation in controlAction (action=control, controlAction=pause| resume|stop|continue|reopen per core action docs), which wasn't in _OPERATION_KEYS. Valid pause/resume turns were scored as missing behavior. Added controlaction to the key set (matched case-insensitively) plus regression tests. Co-authored-by: wakesync <shadow@shad0w.xyz>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
…1271 (#11376) (#11530) Re-lands packages/benchmarks/lifeops-quality (20 files) and .github/workflows/lifeops-quality-bench.yml byte-identical from the pre-clobber parent 5b714c7^. All three workflow lanes verified green locally against current develop: unit 27/27, triage gate 6/6, timeliness gate 1/1 (both DST windows). The 4 orphaned benchmark tests from the same #11419 row are excluded: already restored (and partly evolved) by merged #11490. Refs #11376 #11419 #11271 [cloud-security] Co-authored-by: Shaw <shawmakesmagic@gmail.com>
…ork (#11376) The #11271 failure mode: a 304-file squash titled as a small cloud-refund refactor carried a stale checkout's file contents over work already merged on develop — no conflicts, merge-base only 8 minutes old, so no base-age check could have caught it. This lands the final #11376 acceptance criterion: a fast required PR check that makes that impossible to repeat silently. - .github/workflows/stale-base-guard.yml — runs on every PR in seconds: blobless --depth=1500 fetch, guard script snapshotted from the BASE branch (a PR cannot neuter the gate that judges it), GIT_NO_LAZY_FETCH=1 so any accidental content read fails loudly. `stale-base-ack` label = loud override for deliberate reverts; labeled/unlabeled events re-trigger. - packages/scripts/stale-base-guard.mjs — plumbing-only (oid compares, no blob reads): flags a PR when it sets a file byte-identically back to an older blob from the target's first-parent history, discarding newer merged work. Heal/re-land PRs (restoring work a clobber reverted) pass by construction; deletion-only findings are non-blocking notices unless a modification-revert corroborates the stale-tree signature. Staleness backstop: merge-base > 200 first-parent commits or > 72 h behind the tip. - packages/scripts/stale-base-guard.self-test.mjs — 9 fixture-repo scenarios (clobber shape, heal, deletions, re-adds, backstops, --window, --ack, missing merge-base); the workflow runs it before the guard on every PR. Proven on real history (evidence in .github/issue-evidence/11376-stale-base-guard/): the actual #11271 topology FAILS with 297 silent-revert findings in ~8 s; the five #11271-restore merges (#11427 #11430 #11433 #11490 #11522) and ten live open PRs all PASS with 0 findings; the exact CI clone shape verified against github.com (fetch 2.4 s, guard sub-second). Refs #11376 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ork (#11376) The #11271 failure mode: a 304-file squash titled as a small cloud-refund refactor carried a stale checkout's file contents over work already merged on develop — no conflicts, merge-base only 8 minutes old, so no base-age check could have caught it. This lands the final #11376 acceptance criterion: a fast required PR check that makes that impossible to repeat silently. - .github/workflows/stale-base-guard.yml — runs on every PR in seconds: blobless --depth=1500 fetch, guard script snapshotted from the BASE branch (a PR cannot neuter the gate that judges it), GIT_NO_LAZY_FETCH=1 so any accidental content read fails loudly. `stale-base-ack` label = loud override for deliberate reverts; labeled/unlabeled events re-trigger. - packages/scripts/stale-base-guard.mjs — plumbing-only (oid compares, no blob reads): flags a PR when it sets a file byte-identically back to an older blob from the target's first-parent history, discarding newer merged work. Heal/re-land PRs (restoring work a clobber reverted) pass by construction; deletion-only findings are non-blocking notices unless a modification-revert corroborates the stale-tree signature. Staleness backstop: merge-base > 200 first-parent commits or > 72 h behind the tip. - packages/scripts/stale-base-guard.self-test.mjs — 9 fixture-repo scenarios (clobber shape, heal, deletions, re-adds, backstops, --window, --ack, missing merge-base); the workflow runs it before the guard on every PR. Proven on real history (evidence in .github/issue-evidence/11376-stale-base-guard/): the actual #11271 topology FAILS with 297 silent-revert findings in ~8 s; the five #11271-restore merges (#11427 #11430 #11433 #11490 #11522) and ten live open PRs all PASS with 0 findings; the exact CI clone shape verified against github.com (fetch 2.4 s, guard sub-second). Refs #11376 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ork (#11376) (#11629) The #11271 failure mode: a 304-file squash titled as a small cloud-refund refactor carried a stale checkout's file contents over work already merged on develop — no conflicts, merge-base only 8 minutes old, so no base-age check could have caught it. This lands the final #11376 acceptance criterion: a fast required PR check that makes that impossible to repeat silently. - .github/workflows/stale-base-guard.yml — runs on every PR in seconds: blobless --depth=1500 fetch, guard script snapshotted from the BASE branch (a PR cannot neuter the gate that judges it), GIT_NO_LAZY_FETCH=1 so any accidental content read fails loudly. `stale-base-ack` label = loud override for deliberate reverts; labeled/unlabeled events re-trigger. - packages/scripts/stale-base-guard.mjs — plumbing-only (oid compares, no blob reads): flags a PR when it sets a file byte-identically back to an older blob from the target's first-parent history, discarding newer merged work. Heal/re-land PRs (restoring work a clobber reverted) pass by construction; deletion-only findings are non-blocking notices unless a modification-revert corroborates the stale-tree signature. Staleness backstop: merge-base > 200 first-parent commits or > 72 h behind the tip. - packages/scripts/stale-base-guard.self-test.mjs — 9 fixture-repo scenarios (clobber shape, heal, deletions, re-adds, backstops, --window, --ack, missing merge-base); the workflow runs it before the guard on every PR. Proven on real history (evidence in .github/issue-evidence/11376-stale-base-guard/): the actual #11271 topology FAILS with 297 silent-revert findings in ~8 s; the five #11271-restore merges (#11427 #11430 #11433 #11490 #11522) and ten live open PRs all PASS with 0 findings; the exact CI clone shape verified against github.com (fetch 2.4 s, guard sub-second). Refs #11376 Co-authored-by: lalalune <shaw.nicola.walters@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
❌ PR title does not match the required pattern. Please use one of these formats:
|
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
What
Restores the 7
packages/feed+packages/benchmarksfiles clobbered by the #11271 stale-base mega-revert, per the blob-level audit on #11419. All 7 restored byte-identical from the pre-clobber parentdc1a63b103(=5b714c74e6^), then verified against the currentdeveloptip. One post-restore fix from codex review (see below).Per-file breakdown
🔴 Live functional breakage on develop
1.
packages/benchmarks/orchestrator_lifecycle/events.pyrunner.py:228callsextract_lifecycle_events(actions, params)from.events(import atrunner.py:37). The module was deleted, so the bench dies at import time.python3 -c "from benchmarks.orchestrator_lifecycle import runner"→ OK after restore (ImportError before).2.
packages/feed/tools/e2e-gate.mjspackages/feed/tools/chroma/package.jsonandpackages/feed/tools/e2e/package.jsoninvokenode ../e2e-gate.mjs --suite ... -- <playwright cmd>in theirtestscripts. The gate script was deleted, so both lanes die at spawn — and the whole point of this script was making skipped lanes VISIBLE (FEED_E2E_RESULT=skipped, exit 3 under CI/strict) instead of silently exiting 0.node --checkclean; CLI args in both package.json scripts match the gate's--suite/--requires/--interface.3.
packages/feed/tools/chroma/specs/helpers/page-helpers.health.test.ts4.
packages/feed/tools/e2e/tests/helpers/page-helpers.health.test.tstest:unitscript (bun test <path>); scripts pointed at deleted files.🟡 Orphaned test coverage
5.
packages/benchmarks/orchestrator_lifecycle/tests/test_events.py— tests for the extractor above (action-name mapping, pattern-CTASKSoperation params, trajectory-snapshot leak guard, prose-produces-no-events).6.
packages/benchmarks/interrupt-bench/tests/honest-scoring.test.ts— the #9310 §3.11 honest-scoring guard.7.
packages/benchmarks/three-agent-dialogue/__tests__/verification.test.ts—computeVerification/detectEmotionFromTextcoverage; imports still resolve against currentrunner/verification.tsexports.Post-restore fix (codex review finding)
Codex review (gpt-5.5) flagged a real gap in the restored extractor: the runtime's actual
TASKScontrol op carries the child operation incontrolAction(action=control, controlAction=pause|resume|stop|continue|reopen, perpackages/core/src/generated/action-docs.ts), which wasn't in_OPERATION_KEYS— so genuine pause/resume turns would score as missing behavior. Addedcontrolactionto the key set (keys now matched case-insensitively) + 2 regression tests. Second commit, kept separate from the byte-identical restore.Verification
python3 -m pytest packages/benchmarks/orchestrator_lifecycle/tests/ -q→ 26 passed (incl. 5+2 in test_events.py)bun test specs/helpers/page-helpers.health.test.ts(chroma) → 7 pass, 0 failbun test tests/helpers/page-helpers.health.test.ts(e2e) → 7 pass, 0 failbun x vitest run tests/honest-scoring.test.ts(interrupt-bench) → 4 passedbun x vitest run __tests__/verification.test.ts(three-agent-dialogue) → 5 passednode --check packages/feed/tools/e2e-gate.mjs→ cleanbun x biome checkon the 5 touched TS/MJS files → clean, no fixesCloses the feed + benchmarks rows of the #11419 audit. Does not touch any other rows.
— [sol-orch]