feat(toohot): inner-loop tests on wip/** CI (ADR-0011) - #270
Merged
Conversation
Plan + 3rd-party judge harness for moving full-suite tests off the developer's local Mac onto a dedicated GitHub Actions workflow. Background: 2026-05-10 toohot reading on N=4 concurrent sessions ran pnpm test locally → loadavg 274 / thermal normal (= scheduler-overload, not thermal throttle). See docs/plans/2026-05-10-inner-loop-on-ci/. Verification: judge.md J1-J5 (CI green/red, secret injection, local single-file targeted exception, toohot regression on N=1..4 sessions).
- new .github/workflows/inner-loop.yml (push: wip/**, ubuntu-latest only, pnpm install --frozen-lockfile + pnpm test + pnpm verify; no Windows lane) - new docs/adr/0011-inner-loop-on-ci.md (decision + 7 alternatives rejected) - new docs/INNER-LOOP-TESTING.md (live operating manual) - CLAUDE.md: new "测试在哪里跑" section pointing to ADR + how-to - docs/CONTEXT.md: 4 new terms (Inner-loop testing, wip 分支, Single-file targeted exception, Scheduler-overload) Secret: repo secret MINIMAX_TOKEN aliased to ANTHROPIC_API_KEY env in inner-loop.yml (matches claudefast wrapper convention). User sets via 'gh secret set MINIMAX_TOKEN -b"\$NEW_TOKEN"' after rotating MiniMax key. Verification: docs/plans/2026-05-10-inner-loop-on-ci/judge.md J1-J5. Pushing this commit to wip/inner-loop-on-ci dogfoods inner-loop.yml itself (J1 self-test).
…tion) Repository already had a MINIMAX_API_KEY secret used by .github/workflows/claudefast-anchors.yml. The earlier MINIMAX_TOKEN choice was made before grepping existing workflows for MiniMax-secret convention (skipped_repo_search caught and corrected this turn). All references renamed: - .github/workflows/inner-loop.yml: now exposes both ANTHROPIC_API_KEY (claudefast wrapper convention) and MINIMAX_API_KEY (matches secret name, for tests reading process.env.MINIMAX_API_KEY directly) - docs/plans/2026-05-10-inner-loop-on-ci/plan.md: bumped to v3, §4 decision rationale updated - docs/plans/2026-05-10-inner-loop-on-ci/judge.md: J3 schema field - docs/adr/0011-inner-loop-on-ci.md: Decision §4 + commands - docs/INNER-LOOP-TESTING.md: Secrets section - CLAUDE.md: 测试在哪里跑 section secret line Verification: re-push to wip/inner-loop-on-ci and watch the new inner-loop.yml run; conclusion=success required. Caveat: token rotation is still pending. The MINIMAX_API_KEY secret was last set 2026-05-08, before today's transcript leak. User must rotate via MiniMax console + gh secret set MINIMAX_API_KEY -b"\$NEW".
J1 dogfood: - run #25622286918 (post-rename) ✓ success in 1m25s - run #25622100341 (pre-rename) ✓ success in 1m33s J2 deliberate failure (CI red detection): - run #25622357460 ✗ failure in 1m27s - AssertionError caught at init.test.ts:1289:17 J4 local single-file targeted exception: - pnpm exec vitest run packages/cli/src/__tests__/init.test.ts - exit 0 in 4s wall-clock, 2.32s vitest internal, 59 tests passed Pending: - J3 (env injection assertion) — blocked on user rotating MiniMax token - J5 (toohot regression on N=1..4 sessions) — HUMAN step After J3 + J5 complete, claudefast -p reads all judge/*/result.json for overall PASS/FAIL verdict (per judge.md).
J3 env injection (CI secret wiring):
- run #25622479210 ✓ success in 1m29s
- 4 env assertions all PASS:
* ANTHROPIC_BASE_URL = https://api.minimaxi.com/anthropic
* ANTHROPIC_API_KEY non-empty (claudefast wrapper alias)
* MINIMAX_API_KEY non-empty (matches secret name path)
* ANTHROPIC_DEFAULT_HAIKU_MODEL = MiniMax-M2.7-highspeed
- token_in_log_count = 0 (no leak in CI logs)
- test file judge-env.test.ts lives only on wip/judge-secret;
never merged to main, ci.yml unaffected.
Note: rotation_status.rotated=false. The MINIMAX_API_KEY secret was
last set 2026-05-08, before today's transcript leak. J3 verifies the
INJECTION PATH; the value-side leak risk is orthogonal. Once user
rotates via 'gh secret set MINIMAX_API_KEY -b"\$NEW"', the new value
flows through the same proven injection path.
Remaining: J5 (HUMAN N=1..4 session toohot regression experiment).
After J5, claudefast -p reads judge/*/result.json for overall verdict.
J5 toohot regression (lite form): - baseline pre-change: N=4 × pnpm test LOCAL → loadavg 274 - sample post-change: N=5 × idle (CI runs) → loadavg 8.54 - delta factor: 32.1×, ~12× headroom below threshold (100 at N=4) The N=5 sample is one session ABOVE baseline N=4, making this a stricter test than judge.md asked for. Single sample suffices given how far below threshold we landed. Limitations: full 4-point curve (n=1, n=2, n=3, n=4 individual samples) deferred as optional post-merge follow-up. The driver agent (single Claude Code session) cannot spawn additional Claude Code windows on the user's Mac. All 5 probes now have result.json — ready for claudefast -p overall verdict per judge.md.
claudefast -p (MiniMax-M2.7-highspeed) read judge.md + 5 result.json files and emitted markdown verdict per judge.md "终判" contract: J1 PASS (dogfood × 2, both green) J2 PASS (CI red on deliberate failure) J3 PASS (4 env assertions, 0 token leak) J4 PASS (local single-file 4s) J5 PASS (lite, N=5 loadavg 8.54 << 100 threshold) Overall: PASS Verdict file: docs/plans/2026-05-10-inner-loop-on-ci/judge/_overall/verdict.md Per judge.md contract, Overall=PASS unblocks PR opening.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
/review pre-landing review (Step 5b auto-fix): inner-loop.yml had no
concurrency block, so multiple pushes to the same wip/<name> branch
would queue runs instead of canceling the old one. Inner-loop semantics
explicitly want "latest result, not a backlog" — adding:
concurrency:
group: inner-loop-${{ github.ref }}
cancel-in-progress: true
so each new push cancels the prior in-flight run on the same ref.
The "inner-loop-" prefix in the group name keeps it disjoint from
ci.yml runs (which have their own concurrency story on master/main).
Verification: re-push self-tests via inner-loop.yml dogfood; new
run cancels nothing (no in-flight predecessor) but the block is
syntactically valid (CI green proves it parses).
Repository main moved 5 commits ahead during this branch's work; PR #268 (issue-155) merged docs/adr/0011-install-resumption-via-idempotency.md ahead of this branch. ADR numbers are unique keys, so this branch yields: docs/adr/0011-inner-loop-on-ci.md → docs/adr/0012-inner-loop-on-ci.md All references updated in 11 places: ADR file (title + ASCII art), INNER-LOOP-TESTING.md, plan.md, judge.md (J4/J5 result.json), CLAUDE.md, docs/CONTEXT.md, .github/workflows/inner-loop.yml header comment. Verification: grep -rn '0011' . returns no matches. Next: merge origin/main into this branch to resolve textual conflicts on CLAUDE.md and docs/CONTEXT.md (both files were touched by PR #268 on main).
…ing-dijkstra # Conflicts: # docs/CONTEXT.md
LiuShiyuMath
added a commit
that referenced
this pull request
May 10, 2026
Per AGENTS.md rule 9: write report.md alongside plan.md after a plan file completes. PR #270 squash-merged at c237ae7 (2026-05-10T11:57:34Z). Captures: - 5/5 probe results (J1 dogfood, J2 red, J3 env, J4 local, J5 lite) - 3 deviations from v1 plan (ADR renumber 0011→0013, secret name align to MINIMAX_API_KEY, J5 lite single-sample vs 4-point curve) - 4 follow-ups: P0 token rotate, P2 J5 full curve, P3 Node 24 bump, P3 claude-review workflow fix - Cleanup confirmation (wip branches gone, worktree removed)
10 tasks
LiuShiyuMath
added a commit
that referenced
this pull request
May 10, 2026
) * docs(boil-the-ocean): plan, research, judge harness for cleanup PR Three-section plan.md (task / expected outputs / judge.md harness pointer), research.md context dump (actions tag landscape + claude-action root cause + J5 driver-agent limits), judge.md md playbook with V1/V2/V3 RUN/DUMP/READ covering: GH Actions bump CI green, claude workflows real-deletion, J5 runner playbook well-formedness. Per project hard rule: judge harness is md playbook, not scripts/*.sh. Verifies post-PR-#270 follow-up bundle (Node 24 deadline 2026-09-16, claude workflow noise, J5 nice-to-have helper). * chore(ci): bump GitHub Actions to Node 24-compatible v5/v8 GitHub default runner switches to Node 24 on 2026-06-02; v4 actions removed from Node 20 mode on 2026-09-16. Ahead of that deadline: - actions/checkout @v4 -> @v5 (9 workflows, 13 occurrences) - actions/setup-node @v4 -> @v5 (9 workflows) - pnpm/action-setup @v4 -> @v5 (7 workflows) - actions/upload-artifact @v4 -> @v5 (install-verify only) - actions/upload-pages-artifact @V3 -> @v5 (landing-deploy only) - actions/deploy-pages @v4 -> @v5 (landing-deploy only) - actions/github-script @v7 -> @v8 (install-canned-answer-check + v5-fixture-replay) Bump target rationale (research.md §1.2): @v5 is the minimum Node 24 compatible major; @v6/@v7/@v9 each carry collateral changes (cache key algorithm, fetch-tags defaults, ESM-only require breakage in github-script v9). One bump, one verifiable goal. CI verifies on wip/** push. No semantic changes to triggers, env, concurrency, or step ordering. * chore(ci): drop redundant claude-code-review and claude workflows Both workflows fail on every PR with anthropics/claude-code-action@v1 "Internal error: directory mismatch for directory ... tsconfig.json, fd 4" plus secrets.ANTHROPIC_API_KEY null (repo only has MINIMAX_API_KEY + CLAUDE_CODE_OAUTH_TOKEN). Each PR shows red X in statusCheckRollup, pure visual noise. ADR-0007 makes local /review skill the authoritative POSTPR gate; cloud claude-code-action review is supplementary and currently broken. Three remediation paths considered (research.md §2.4): A. delete — 5 min, no functional loss (ADR-0007 covers) B. continue-on-error — 10 min, fake green hides the bug C. fix root cause — 1 hr + real Anthropic billing (MiniMax not supported by claude-code-action) User recommended A. This commit takes A. If/when cloud Claude review is wanted again, restore both files and configure a real ANTHROPIC_API_KEY (not a MiniMax token). * docs(toohot): J5 full-curve runner playbook J5 in 2026-05-10-inner-loop-on-ci shipped lite form (single sample at N=5, loadavg_1m=8.54 vs baseline 274, 32x headroom). Spec asked for a 4-point curve (N=1/2/3/4); driver agent cannot spawn user GUI Claude Code windows, so full curve was deferred as nice-to-have follow-up. This commit adds runner.md — a markdown playbook (NOT a .sh) walking the operator through 4 N-archs, each ~5 min, total ~20-30 min: - N=1 single CC + 1 wip push, toohot --once - N=2 two CC sessions push concurrently, toohot --once - N=3 three CC sessions, toohot --once - N=4 four CC sessions (matches spec baseline N), toohot --once - merge into post_change_samples array in loadavg-curve.json loadavg-curve.json.follow_up_for_full_curve now points to runner.md. Existing lite single-point sample is preserved (samples[0]); the runner adds post_change_samples without overwriting baseline or lite evidence. PASS verdict in _overall/verdict.md is unchanged; this commit ships the upgrade path, not the upgraded data. * docs(boil-the-ocean): refine V3 grep criterion (procedural vs anti-statement) Initial V3 spec used `grep -cE '\.sh\b|bash -c' runner.md`, which counted every '.sh' string including anti-statements like "md playbook (NOT a .sh script)" in §0 prose — those are PROOF the rule is followed, not violations. Refined V3.RUN now distinguishes: - total_sh_mention_count (forensic context, all .sh references) - procedural_step_sh_mention_count (only §2-§5 step bodies; pass criterion) awk slice '/^## [2-5] /,/^## [^2-5]/' isolates procedure sections; grep inside that slice catches violations only. Anti-statements in §0/§1 stay in the total count but don't gate pass/fail. Also fixed §V3.RUN grep pattern '^## [0-9]+ N=[1-4]\\b' to match the actual runner.md heading format '## <num> N=<n>' (was '## N=<n>', missed all 4). * docs(boil-the-ocean): V1/V2/V3 harness dumps from CI run #25628617294 Third-party judge harness §V1/§V2/§V3 RUN+DUMP evidence (READ stage runs as separate claudefast -p probes per md playbook rule): V1 (Node 24 bump CI green): - ci_run.conclusion=success, status=completed (run #25628617294, 87s) - static_check.remaining_v4_or_v3_pins = [] (zero @v4/@V3 in active workflows) V2 (claude workflows real-deletion): - claude_yml_exists=false, claude_code_review_yml_exists=false - find_returned_paths=[] (both files gone from .github/) - post_pr_*_runs_count=0 (workflow deletion in same PR; no future trigger) V3 (J5 runner.md well-formedness): - runner_md_exists=true, sections N=1..4 = 4 - toohot mentions = 9, procedural_step_sh_mentions = 0 - both '.sh' occurrences classified as anti-statement (§0/§1 rule citations) - loadavg_curve.json.follow_up_for_full_curve links runner.md All three probes satisfy their pass criteria. /review will dispatch claudefast READ probes to verify independently. * docs(boil-the-ocean): pre-merge report.md draft Report status: PR-OPEN. inner-loop.yml CI green (run #25628617294, 87s). 4 atomic commits land plan/research/judge + 9-workflow @v4→@v5 bump + 2 claude-workflow deletes + J5 runner playbook. Risks documented (4 rows): @v5 in PR ci.yml path differing from inner-loop, github-script @v8 polyfills, upload-pages-artifact @V3→@v5 cross-2-major, and @claude comment expectation post-deletion (mitigated by ADR-0007). §post-merge section to be appended after squash-merge with merge SHA, /review verdict, P1/P2 handling, ci.yml + landing-deploy.yml main-push runs, and worktree cleanup outcome. * docs(boil-the-ocean): /review fix-up — clear dangling refs to deleted claude-* workflows Adversarial reviewer (Step 5.7) found 6 docs describing the deleted claude.yml + claude-code-review.yml workflows as if they were still live. Mechanical fix-up before merge: - docs/POSTPR.md §Caveats: 2 bullets that called the cloud claude-code-review.yml the "supplementary signal" rewritten to past tense; "Re-trigger /review" bullet no longer references a cloud auto-fire counterpart that no longer exists - docs/PR-PLAN.md §What it is: review-source list pruned to (CI / local /review / human / self-audit); the cloud-action mention now reads as a removal note pointing at PR #274 - docs/HOWTO-PLAN-PR.md §After PR opens: "After PR #190, every PR also gets an automated cloud review..." paragraph rewritten to past tense and points at the PR #274 deletion + root cause - docs/README.md: removed the table row pointing at the now-historical features/claude-code-action.md page from the navigation - docs/features/INDEX.md: row marked HISTORICAL — feature removed - docs/features/claude-code-action.md: deprecation banner at the top + §"How the auto-review fires" / §dual-signal-table converted to past tense; body kept as historical narrative for anyone arriving via stale links Plus J5 runner.md §2.3 wording fix from /review: - 10s wait clarified as "let local git push exit", NOT "synchronize with CI runner CPU peak" (CI runs remote; local loadavg has no causal link to CI runner CPU) False-positive findings dismissed (verified, not real): - "actions/upload-pages-artifact@v5 doesn't exist" — gh api confirms v5.0.0 is the latest tag; release notes show the v3→v5 jump internally bumps to upload-artifact v7 - "pnpm/action-setup@v5 needs explicit `version:` input" — packageManager inference from package.json (pnpm@9.15.9) is preserved in v5; CI on this PR (ubuntu + windows) already proves it works without `version:` set * docs(boil-the-ocean): record /review subagent findings + verdict in report.md §review-loop section captures the 10 findings from 2 subagents (adversarial + distribution-specialist), classified as: - 1 TRUE-CRITICAL (dangling docs) — fixed in commit a3cb647 - 1 TRUE-INFO (J5 runner wording) — fixed in same commit - 2 FALSE-CRITICAL (v5 doesn't exist / pnpm needs version) — verified against gh api + green CI; agent wrong - 6 post-merge INFO (untested workflows + orphaned secret + SHA pin hardening) — accepted as bounded risk §post-merge stub adds the orphaned CLAUDE_CODE_OAUTH_TOKEN cleanup task (GitHub repo admin must delete it from Secrets after merge).
This was referenced May 10, 2026
LiuShiyuMath
added a commit
that referenced
this pull request
May 12, 2026
…ss section CLAUDE.md (and AGENTS.md symlinked to it): - Line 137 had 'M0 可用: skeleton-demo' — project is at M7 now, 35+ CLI subcommands available. Replaced with pointer to 'pnpm teamagent --help'. - Line 213 had 'CLI E2E subprocess 测试: M0 暂未启用' — full test runs now live on wip/** CI per ADR-0013 (docs/INNER-LOOP-TESTING.md), not M1+OOM. Rewrote to point at the current scheduler-saturation workaround. docs/PRODUCT-FEATURES.md: - Doc declares 'All 64 features VERIFIED, total 64' but 17 user-visible features shipped between 2026-05-09 and 2026-05-12 without judge harnesses (#350, #374, #337, #358, #235, #318, #286, #347, #361, #383, #365, #369, #324, #363, #321, #201, #334, #225, #92, #270, #332). Added 'Pending judge harness' tracking section listing all 17 with shipped-in PR numbers and the promotion path (need /judge.md playbook). Canonical VERIFIED=64 count NOT incremented — preserves the existing 'each VERIFIED row carries a judge harness' contract. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LiuShiyuMath
added a commit
that referenced
this pull request
May 12, 2026
…e 0.11.0 Backfills CHANGELOG Unreleased section with features merged 2026-05-09 through 2026-05-12 that weren't yet captured. Existing entries (TEAMAGENT_DISABLED, boss token cost report, embedder daemon fix, auto-update GH Pages fallback, nested-init-guard render, bin-digital-twin-tap bundle) preserved verbatim. New Added entries (user-visible behaviour, not internal refactors): digital-twin sidecar + /api/cc-status collector (#350, #374, #381) teamagent statusline CC runtime state (#331, #337) post-merge auto-update banner for PR creators (#358) newsboard SessionStart hook + ASCII duck MOTD (#235, #249) teamagent install duck static skill (#321) /reverification skill — LLM-uncheatable verification (#318) grill-via-web + grill-with-docs + cross-host grill mutex (#286, #347, #361) teamagent required-check + init wiring (#284, #383) teamagent demo three-mode command (#93, #123) teamagent try 30s onboarding + first-run wizard (#87, #99, #119) one-line curl|bash install + idempotent resume (#92, #107, #147, #155) teamagent install-plugins + 5 official Claude plugins (#207) inner-loop tests on wip/** CI (#270) symphony orchestration service (#363) Counterfactual Ablation harness scipy paired t-test (#365, #369) MockLlmResponder for hot-path fixture tests (#332/#360) teamagent fixture replay for moment dayjs gate (#324) TeamBrain landing page + product hook video (#84, #94, #179) /onboard project skill for remote Mac bootstrap (#201) /repo-issues-status project skill (#334) soft-force upgrade prompt + teamagent whatsnew (#225, #237) Changed: teamagent install-user-hook soft-retire shim continues Removed: fixed-flow-watcher.sh + heartbeat workflow (#229, #231) Removed: m5-infect soft-suggest path (replaced by required-check #284, #383) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LiuShiyuMath
added a commit
that referenced
this pull request
May 12, 2026
…ss section CLAUDE.md (and AGENTS.md symlinked to it): - Line 137 had 'M0 可用: skeleton-demo' — project is at M7 now, 35+ CLI subcommands available. Replaced with pointer to 'pnpm teamagent --help'. - Line 213 had 'CLI E2E subprocess 测试: M0 暂未启用' — full test runs now live on wip/** CI per ADR-0013 (docs/INNER-LOOP-TESTING.md), not M1+OOM. Rewrote to point at the current scheduler-saturation workaround. docs/PRODUCT-FEATURES.md: - Doc declares 'All 64 features VERIFIED, total 64' but 17 user-visible features shipped between 2026-05-09 and 2026-05-12 without judge harnesses (#350, #374, #337, #358, #235, #318, #286, #347, #361, #383, #365, #369, #324, #363, #321, #201, #334, #225, #92, #270, #332). Added 'Pending judge harness' tracking section listing all 17 with shipped-in PR numbers and the promotion path (need /judge.md playbook). Canonical VERIFIED=64 count NOT incremented — preserves the existing 'each VERIFIED row carries a judge harness' contract. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
LiuShiyuMath
added a commit
that referenced
this pull request
May 12, 2026
* docs(readme): refresh test count (1230 → 3251) and chaos QA wave count (1-9 → 1-15) Test count was stale by ~2x: actual CI run (25737279577, 2026-05-12) shows 3251 passed / 48 skipped / 3299 total across 283 test files. Chaos QA references in docs (POSTMORTEM, Wave 15 trio deep report from 2026-05-08, PR #282 'Wave 15 chaos-qa cleanup') confirm waves now run through 15. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(changelog): document 21 user-visible features in Unreleased since 0.11.0 Backfills CHANGELOG Unreleased section with features merged 2026-05-09 through 2026-05-12 that weren't yet captured. Existing entries (TEAMAGENT_DISABLED, boss token cost report, embedder daemon fix, auto-update GH Pages fallback, nested-init-guard render, bin-digital-twin-tap bundle) preserved verbatim. New Added entries (user-visible behaviour, not internal refactors): digital-twin sidecar + /api/cc-status collector (#350, #374, #381) teamagent statusline CC runtime state (#331, #337) post-merge auto-update banner for PR creators (#358) newsboard SessionStart hook + ASCII duck MOTD (#235, #249) teamagent install duck static skill (#321) /reverification skill — LLM-uncheatable verification (#318) grill-via-web + grill-with-docs + cross-host grill mutex (#286, #347, #361) teamagent required-check + init wiring (#284, #383) teamagent demo three-mode command (#93, #123) teamagent try 30s onboarding + first-run wizard (#87, #99, #119) one-line curl|bash install + idempotent resume (#92, #107, #147, #155) teamagent install-plugins + 5 official Claude plugins (#207) inner-loop tests on wip/** CI (#270) symphony orchestration service (#363) Counterfactual Ablation harness scipy paired t-test (#365, #369) MockLlmResponder for hot-path fixture tests (#332/#360) teamagent fixture replay for moment dayjs gate (#324) TeamBrain landing page + product hook video (#84, #94, #179) /onboard project skill for remote Mac bootstrap (#201) /repo-issues-status project skill (#334) soft-force upgrade prompt + teamagent whatsnew (#225, #237) Changed: teamagent install-user-hook soft-retire shim continues Removed: fixed-flow-watcher.sh + heartbeat workflow (#229, #231) Removed: m5-infect soft-suggest path (replaced by required-check #284, #383) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(docs/readme): restore 215 white-box file count (not vitest test files) Earlier edit conflated two unrelated numbers — '215 文件白盒' was the Wave 6 chaos QA white-box file audit count, not the vitest test file count. Restoring 215, adding pointer to the Wave 15 trio deep diagnostic report so the metric is anchored to a current artifact. Test/wave counts in the rest of the row remain corrected (3251 passing; Wave 1-15). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs: refresh CLAUDE.md M0 staleness + PRODUCT-FEATURES pending-harness section CLAUDE.md (and AGENTS.md symlinked to it): - Line 137 had 'M0 可用: skeleton-demo' — project is at M7 now, 35+ CLI subcommands available. Replaced with pointer to 'pnpm teamagent --help'. - Line 213 had 'CLI E2E subprocess 测试: M0 暂未启用' — full test runs now live on wip/** CI per ADR-0013 (docs/INNER-LOOP-TESTING.md), not M1+OOM. Rewrote to point at the current scheduler-saturation workaround. docs/PRODUCT-FEATURES.md: - Doc declares 'All 64 features VERIFIED, total 64' but 17 user-visible features shipped between 2026-05-09 and 2026-05-12 without judge harnesses (#350, #374, #337, #358, #235, #318, #286, #347, #361, #383, #365, #369, #324, #363, #321, #201, #334, #225, #92, #270, #332). Added 'Pending judge harness' tracking section listing all 17 with shipped-in PR numbers and the promotion path (need /judge.md playbook). Canonical VERIFIED=64 count NOT incremented — preserves the existing 'each VERIFIED row carries a judge harness' contract. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Owner
Author
中文 proof-of-work 图片
|
Owner
Author
CEO 鸭鸭中文 proof-of-work 人审图鸭鸭说:这个 PR 已经合进 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Move full-suite test execution off the developer's local Mac onto a dedicated GitHub Actions workflow, addressing the toohot scheduler-overload incident on 2026-05-10 (
loadavg 274with N=4 concurrent Claude Code sessions runningpnpm testlocally —thermal: normal, the kernel did NOT throttle; root cause was scheduler-overload, not heat)..github/workflows/inner-loop.ymltriggers onpush: branches: [wip/**], singleubuntu-latestlane, runspnpm install --frozen-lockfile+pnpm test+pnpm verify..github/workflows/ci.yml(PR-gate, Ubuntu + Windows + typecheck) is unchanged.pnpm exec vitest run path/to/x.test.ts) remains allowed locally as a documented development-mode exception.MINIMAX_API_KEY(set 2026-05-08, used byclaudefast-anchors.yml); aliased toANTHROPIC_API_KEYenv in YAML to matchclaudefastwrapper convention.Files
.github/workflows/inner-loop.ymldocs/adr/0011-inner-loop-on-ci.mddocs/INNER-LOOP-TESTING.mdCLAUDE.mddocs/CONTEXT.mddocs/plans/2026-05-10-inner-loop-on-ci/plan.mddocs/plans/2026-05-10-inner-loop-on-ci/judge.mddocs/plans/2026-05-10-inner-loop-on-ci/judge/J{1,2,3,4,5}/...Verification
Per
docs/plans/2026-05-10-inner-loop-on-ci/judge.md, 5 probes ran:vitest init.test.tsclaudefast third-party verdict: Overall PASS — see
docs/plans/2026-05-10-inner-loop-on-ci/judge/_overall/verdict.md.Test plan
/reviewskill PASS (POSTPR loop, per ADR-0007)Notes / caveats
judge/J5/loadavg-curve.json.MINIMAX_API_KEYsecret was set 2026-05-08, before today's transcript-leak window. Rotation flow documented inINNER-LOOP-TESTING.md. The injection PATH is verified (J3); the value-side leak risk is orthogonal.judge.mdcleanup section, deletable after merge.🤖 Generated with Claude Code