diff --git a/.github/workflows/windows-free-tests.yml b/.github/workflows/windows-free-tests.yml index 824ccfc48..5d7775a52 100644 --- a/.github/workflows/windows-free-tests.yml +++ b/.github/workflows/windows-free-tests.yml @@ -235,11 +235,21 @@ jobs: env: TEMP: ${{ runner.temp }} TMP: ${{ runner.temp }} - run: bun run test:windows --record-durations + run: bun run test:windows --record-durations --wall-timeout 1200 - name: Name the recording as the Windows seed if: always() shell: bash run: cp scripts/free-test-durations.json "$RUNNER_TEMP/free-test-durations-windows.json" + - name: Upload full recording logs + if: always() + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 + with: + name: windows-record-durations-logs + path: | + .context/free-test-logs/gstack-free-test-*.log + ${{ runner.temp }}/gstack-free-test-*.log + include-hidden-files: true + if-no-files-found: ignore - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 if: always() with: diff --git a/CHANGELOG.md b/CHANGELOG.md index c1b75a4c6..79fc1201d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [1.91.121.0] - 2026-10-17 + +**Windows free-test shards stop running out of time on files the Windows seed didn't know.** The Windows duration seed dated from 2026-10-04 and had no entry for `test/gstack-doctor.test.ts` (about 6.5 minutes on Windows) or `test/hook-scripts.test.ts`. The packer guessed, put `cookie-import-native-job` into a 121-file shard, and that shard hit the 15-minute job limit. + +### Fixed +- **Windows duration seed refreshed from a real `windows-latest` recording.** `scripts/free-test-durations-windows.json` goes from 638 to 738 entries. The six-shard plan now gives `gstack-doctor` a shard of its own and puts the other slow files in separate shards. The shard job's timeout and shard count are unchanged. +- **`--record-durations` honors `--wall-timeout`.** The recorder used to kill any file at 360 s and record that deadline as its duration. The Windows recording job now passes `--wall-timeout 1200` and uploads its full per-file logs. + +### If you… +- **…refresh the Windows seed:** run `gh workflow run windows-free-tests.yml --ref -f record_durations=true`, check that the job exited 0, then commit the `free-test-durations-windows` artifact. A file that fails while recording now leaves its log in `windows-record-durations-logs`. + ## [1.91.120.0] - 2026-10-17 **The Windows doctor test no longer times out.** The `windows bash` test from v1.91.117.0 ran five full `gstack-doctor` passes in one test. Each pass takes up to about 6 s on a Windows runner, so the test took 20 to 30 s against the 30 s per-test limit, and it timed out on one pull request run. diff --git a/VERSION b/VERSION index acab04bef..f3edfab61 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.91.120.0 +1.91.121.0 diff --git a/agents-digest/gstack-AGENTS.md b/agents-digest/gstack-AGENTS.md index dd98117a9..f39a93c46 100644 --- a/agents-digest/gstack-AGENTS.md +++ b/agents-digest/gstack-AGENTS.md @@ -1,4 +1,4 @@ -# gstack digest v1.91.120.0 — regenerate/re-copy after upgrading gstack +# gstack digest v1.91.121.0 — regenerate/re-copy after upgrading gstack Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed for agent hosts without a full skill install. The full skills add workflows, diff --git a/package.json b/package.json index 8aecddc95..aa46790a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.91.120", + "version": "1.91.121", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module", diff --git a/scripts/free-test-durations-windows.json b/scripts/free-test-durations-windows.json index 6f8db34ec..8f2bc3798 100644 --- a/scripts/free-test-durations-windows.json +++ b/scripts/free-test-durations-windows.json @@ -1,644 +1,744 @@ { "version": 1, - "recordedAt": "2026-10-04T19:14:06.352Z", + "recordedAt": "2026-10-17T06:23:07.787Z", "durations": { - "browse/test/activity.test.ts": 128, - "browse/test/adversarial-security.test.ts": 85, - "browse/test/batch.test.ts": 6404, - "browse/test/bridge-chromium-e2e.test.ts": 3673, - "browse/test/browse-client.test.ts": 189, - "browse/test/browse-eval-wrapping.test.ts": 89, - "browse/test/browser-manager-custom-chromium.test.ts": 1005, - "browse/test/browser-skills-storage.test.ts": 179, - "browse/test/build-command-response.test.ts": 981, - "browse/test/build.test.ts": 160, - "browse/test/bun-polyfill.test.ts": 2455, - "browse/test/busy-daemon-iron-rule.test.ts": 7811, - "browse/test/busy-daemon-recovery.test.ts": 779, - "browse/test/cdp-allowlist.test.ts": 40, - "browse/test/cdp-e2e.test.ts": 1134, - "browse/test/cdp-inspector-history-cap.test.ts": 109, - "browse/test/cdp-mutex.test.ts": 841, - "browse/test/cdp-session-cleanup.test.ts": 62, - "browse/test/claude-bin.test.ts": 51, - "browse/test/cli-lock.test.ts": 81, - "browse/test/cli-loopback-no-proxy.test.ts": 66, - "browse/test/cli-setsid-daemonize.test.ts": 61, - "browse/test/cli-start-final-healthcheck.test.ts": 49, - "browse/test/cli-supervisor.test.ts": 91, - "browse/test/content-security.test.ts": 1659, - "browse/test/cookie-auth-verification.test.ts": 19136, - "browse/test/cookie-credential-deadline.test.ts": 371, - "browse/test/cookie-database.test.ts": 675, - "browse/test/cookie-fixture-delete-lease.test.ts": 1305, - "browse/test/cookie-import-browser.test.ts": 105, - "browse/test/cookie-import-native-job.test.ts": 99288, - "browse/test/cookie-import-native.test.ts": 7321, - "browse/test/cookie-import-node.test.ts": 4376, - "browse/test/cookie-import-operation.test.ts": 1784, - "browse/test/cookie-import-reliability.test.ts": 1231, - "browse/test/cookie-import-transport.test.ts": 55, - "browse/test/cookie-picker-binding-browser.test.ts": 3233, - "browse/test/cookie-picker-binding.test.ts": 725, - "browse/test/cookie-picker-csrf-browser.test.ts": 1163, - "browse/test/cookie-picker-routes.test.ts": 601, - "browse/test/cookie-picker-ui.test.ts": 40992, - "browse/test/daemon-log-hygiene.test.ts": 113, - "browse/test/daemon-mismatch-refuse.test.ts": 325, - "browse/test/data-platform.test.ts": 158, - "browse/test/domain-skills-e2e.test.ts": 1063, - "browse/test/domain-skills-storage.test.ts": 140, - "browse/test/dotenv-isolation.test.ts": 498, - "browse/test/dual-listener.test.ts": 1057, - "browse/test/dx-polish.test.ts": 54, - "browse/test/error-handling.test.ts": 46, - "browse/test/extension-sender-auth.test.ts": 76, - "browse/test/extension-token.test.ts": 1710, - "browse/test/file-drop.test.ts": 53, - "browse/test/file-permissions.test.ts": 512, - "browse/test/fill-change-event.test.ts": 2056, - "browse/test/find-browse.test.ts": 126, - "browse/test/from-file-path-validation.test.ts": 68, - "browse/test/handoff.test.ts": 7769, - "browse/test/headless-gpu-and-reap.test.ts": 639, - "browse/test/headless-launch-options.test.ts": 1235, - "browse/test/launch-signal-flags.test.ts": 57, - "browse/test/learnings-injection.test.ts": 2308, - "browse/test/media-extract-unit.test.ts": 135, - "browse/test/memory-command.test.ts": 1273, - "browse/test/memory-leak-reproducer.test.ts": 490, - "browse/test/navigation-guard.test.ts": 9998, - "browse/test/output-path-symlinks.test.ts": 106, - "browse/test/pair-agent-optin-gate.test.ts": 868, - "browse/test/pdf-flags.test.ts": 63, - "browse/test/playwright-core-patch.test.ts": 53, - "browse/test/poisoned-bundle-probe.test.ts": 524, - "browse/test/process-liveness-windows.test.ts": 189, - "browse/test/proxy-config.test.ts": 63, - "browse/test/proxy-redact.test.ts": 39, - "browse/test/pty-inject-scan.test.ts": 1455, - "browse/test/pty-session-lease.test.ts": 78, - "browse/test/rebrand-signed-bundle.test.ts": 59, - "browse/test/regression-pr1169-pdf-from-file-invalid-json.test.ts": 79, - "browse/test/restart-env.test.ts": 62, - "browse/test/sanitize.test.ts": 40, - "browse/test/screenshot-size-guard.test.ts": 382, - "browse/test/security-adversarial-fixes.test.ts": 78, - "browse/test/security-adversarial.test.ts": 62, + "browse/test/activity.test.ts": 78, + "browse/test/adversarial-security.test.ts": 41, + "browse/test/batch.test.ts": 5919, + "browse/test/bridge-chromium-e2e.test.ts": 4106, + "browse/test/browse-client.test.ts": 291, + "browse/test/browse-eval-wrapping.test.ts": 150, + "browse/test/browser-manager-custom-chromium.test.ts": 620, + "browse/test/browser-skills-storage.test.ts": 115, + "browse/test/build-command-response.test.ts": 704, + "browse/test/build.test.ts": 111, + "browse/test/bun-child-config.test.ts": 67, + "browse/test/bun-polyfill.test.ts": 1473, + "browse/test/busy-daemon-iron-rule.test.ts": 7808, + "browse/test/busy-daemon-recovery.test.ts": 600, + "browse/test/cdp-allowlist.test.ts": 50, + "browse/test/cdp-e2e.test.ts": 1315, + "browse/test/cdp-inspector-history-cap.test.ts": 34, + "browse/test/cdp-mutex.test.ts": 817, + "browse/test/cdp-session-cleanup.test.ts": 52, + "browse/test/claude-bin.test.ts": 31, + "browse/test/cli-chain-stdin.test.ts": 153, + "browse/test/cli-config-mismatch-message.test.ts": 86, + "browse/test/cli-lock.test.ts": 49, + "browse/test/cli-loopback-no-proxy.test.ts": 39, + "browse/test/cli-setsid-daemonize.test.ts": 25, + "browse/test/cli-start-final-healthcheck.test.ts": 37, + "browse/test/cli-supervisor.test.ts": 52, + "browse/test/content-security.test.ts": 1229, + "browse/test/cookie-auth-verification.test.ts": 14212, + "browse/test/cookie-credential-deadline.test.ts": 230, + "browse/test/cookie-database.test.ts": 451, + "browse/test/cookie-fixture-delete-lease.test.ts": 1124, + "browse/test/cookie-import-browser.test.ts": 74, + "browse/test/cookie-import-native-job.test.ts": 118070, + "browse/test/cookie-import-native.test.ts": 4727, + "browse/test/cookie-import-node.test.ts": 4003, + "browse/test/cookie-import-operation.test.ts": 441, + "browse/test/cookie-import-reliability.test.ts": 1230, + "browse/test/cookie-import-transport.test.ts": 38, + "browse/test/cookie-picker-binding-browser.test.ts": 2699, + "browse/test/cookie-picker-binding.test.ts": 359, + "browse/test/cookie-picker-csrf-browser.test.ts": 695, + "browse/test/cookie-picker-routes.test.ts": 369, + "browse/test/cookie-picker-ui.test.ts": 33245, + "browse/test/daemon-log-hygiene.test.ts": 208, + "browse/test/daemon-mismatch-refuse.test.ts": 228, + "browse/test/data-platform.test.ts": 56, + "browse/test/domain-skills-e2e.test.ts": 546, + "browse/test/domain-skills-storage.test.ts": 84, + "browse/test/dotenv-isolation.test.ts": 555, + "browse/test/dual-listener.test.ts": 615, + "browse/test/dx-polish.test.ts": 51, + "browse/test/error-handling.test.ts": 35, + "browse/test/extension-sender-auth.test.ts": 69, + "browse/test/extension-token.test.ts": 1570, + "browse/test/file-drop.test.ts": 59, + "browse/test/file-permissions.test.ts": 896, + "browse/test/fill-change-event.test.ts": 2053, + "browse/test/find-browse.test.ts": 205, + "browse/test/from-file-path-validation.test.ts": 75, + "browse/test/handoff.test.ts": 5180, + "browse/test/headless-gpu-and-reap.test.ts": 558, + "browse/test/headless-launch-options.test.ts": 326, + "browse/test/launch-signal-flags.test.ts": 85, + "browse/test/learnings-injection.test.ts": 1372, + "browse/test/media-extract-unit.test.ts": 82, + "browse/test/memory-command.test.ts": 502, + "browse/test/memory-leak-reproducer.test.ts": 500, + "browse/test/navigation-guard.test.ts": 3054, + "browse/test/output-path-symlinks.test.ts": 32, + "browse/test/pair-agent-optin-gate.test.ts": 387, + "browse/test/path-security-realpath.test.ts": 437, + "browse/test/pdf-flags.test.ts": 32, + "browse/test/playwright-core-patch.test.ts": 27, + "browse/test/poisoned-bundle-probe.test.ts": 250, + "browse/test/process-liveness-windows.test.ts": 182, + "browse/test/proxy-config.test.ts": 56, + "browse/test/proxy-env-daemon.test.ts": 64, + "browse/test/proxy-env.test.ts": 48, + "browse/test/proxy-redact.test.ts": 34, + "browse/test/pty-inject-scan.test.ts": 773, + "browse/test/pty-session-lease.test.ts": 36, + "browse/test/rebrand-signed-bundle.test.ts": 31, + "browse/test/regression-pr1169-pdf-from-file-invalid-json.test.ts": 56, + "browse/test/restart-env.test.ts": 35, + "browse/test/runtime-root-server-bundle.test.ts": 48, + "browse/test/sanitize.test.ts": 30, + "browse/test/screenshot-size-guard.test.ts": 260, + "browse/test/security-adversarial-fixes.test.ts": 41, + "browse/test/security-adversarial.test.ts": 54, "browse/test/security-bench.test.ts": 52, - "browse/test/security-classifier-download-cleanup.test.ts": 59, - "browse/test/security-classifier.test.ts": 42, - "browse/test/security-integration.test.ts": 44, - "browse/test/security-live-playwright.test.ts": 1037, - "browse/test/security-sidecar-client.test.ts": 85, - "browse/test/security.test.ts": 73, - "browse/test/server-auth.test.ts": 725, - "browse/test/server-factory.test.ts": 2959, - "browse/test/server-flush-trackers.test.ts": 62, - "browse/test/server-launch-resolution.test.ts": 97, - "browse/test/server-lock-errors.test.ts": 110, - "browse/test/server-no-import-side-effects.test.ts": 679, - "browse/test/server-pty-lease-routes.test.ts": 636, - "browse/test/server-route-auth-blackbox.test.ts": 2355, - "browse/test/server-route-dispatch-ratchet.test.ts": 574, - "browse/test/server-sanitize-surrogates.test.ts": 675, - "browse/test/server-tmp-state-path.test.ts": 56, - "browse/test/session-cookie-store.test.ts": 81, - "browse/test/sidebar-tabs.test.ts": 749, - "browse/test/sidebar-ux.test.ts": 693, - "browse/test/sidepanel-patient-autoconnect.test.ts": 59, - "browse/test/sidepanel-reattach.test.ts": 89, - "browse/test/sidepanel-restart-dispose.test.ts": 63, - "browse/test/skill-token.test.ts": 61, - "browse/test/socks-bridge.test.ts": 604, - "browse/test/sse-helpers.test.ts": 201, - "browse/test/sse-session-cookie.test.ts": 58, - "browse/test/state-ttl.test.ts": 49, - "browse/test/stealth-extended.test.ts": 47, - "browse/test/stealth-layer-c.test.ts": 56, - "browse/test/stealth-webdriver.test.ts": 9862, - "browse/test/stop-ack-before-shutdown.test.ts": 184, - "browse/test/stop-dead-daemon.test.ts": 484, - "browse/test/tab-each.test.ts": 111, - "browse/test/tab-guardrail.test.ts": 681, - "browse/test/tab-isolation.test.ts": 718, - "browse/test/tab-session-frame-detach.test.ts": 63, - "browse/test/telemetry-optout.test.ts": 198, - "browse/test/telemetry.test.ts": 287, - "browse/test/temp-dirs.test.ts": 144, - "browse/test/terminal-agent-detach-reattach.test.ts": 71, - "browse/test/terminal-agent-import.test.ts": 4581, - "browse/test/terminal-agent-keepalive.test.ts": 59, - "browse/test/terminal-agent-native-observation.test.ts": 82, - "browse/test/terminal-agent-owner-watchdog.test.ts": 3255, - "browse/test/terminal-agent-pid-identity.test.ts": 167, - "browse/test/terminal-agent-port-range.test.ts": 79, - "browse/test/terminal-agent-ring-buffer-runtime.test.ts": 77, - "browse/test/terminal-agent-session-routing.test.ts": 49, - "browse/test/terminal-agent-watchdog.test.ts": 49, - "browse/test/terminal-agent.test.ts": 728, - "browse/test/terminal-pty-lifecycle.test.ts": 43, - "browse/test/token-registry.test.ts": 59, - "browse/test/tunnel-gate-unit.test.ts": 650, - "browse/test/watch.test.ts": 590, - "browse/test/welcome-page.test.ts": 95, - "browse/test/windows-spawn-hide.test.ts": 116, - "browse/test/xprotect-heal.test.ts": 452, - "browser-skills/hackernews-frontpage/script.test.ts": 63, - "design/test/brief.test.ts": 46, - "design/test/cli-persistence.test.ts": 7156, - "design/test/cli-version.test.ts": 90, - "design/test/feedback-roundtrip-daemon.test.ts": 447, - "design/test/feedback-roundtrip.test.ts": 3442, - "design/test/image-args.test.ts": 104, - "design/test/image-gen-pairing.test.ts": 45, - "design/test/receipted-fetch.test.ts": 62, - "ios-qa/daemon/test/allowlist.test.ts": 53, - "ios-qa/daemon/test/audit.test.ts": 49, - "ios-qa/daemon/test/auth-mint.test.ts": 58, - "ios-qa/daemon/test/daemon-integration.test.ts": 445, - "ios-qa/daemon/test/proxy-classify.test.ts": 63, - "ios-qa/daemon/test/proxy-transport.test.ts": 1876, - "ios-qa/daemon/test/session-tokens.test.ts": 52, - "ios-qa/daemon/test/single-instance.test.ts": 56, - "ios-qa/daemon/test/tailscale-localapi.test.ts": 75, - "ios-qa/scripts/gen-accessors.test.ts": 173, - "make-pdf/test/asideClient.test.ts": 62, - "make-pdf/test/cli-args.test.ts": 48, - "make-pdf/test/cli-exit-codes.test.ts": 487, - "make-pdf/test/diagram-prepass.test.ts": 162, - "make-pdf/test/e2e/ci-prereqs.test.ts": 47, - "make-pdf/test/e2e/combined-gate.test.ts": 58, - "make-pdf/test/e2e/diagram-gate.test.ts": 59, - "make-pdf/test/e2e/emoji-gate.test.ts": 54, - "make-pdf/test/e2e/format-gate.test.ts": 53, - "make-pdf/test/e2e/landscape-gate.test.ts": 54, - "make-pdf/test/e2e/toc-gate.test.ts": 60, - "make-pdf/test/image-policy.test.ts": 43, - "make-pdf/test/render-offline-sanitize.test.ts": 77, - "make-pdf/test/render.test.ts": 101, - "make-pdf/test/setup-smoke.test.ts": 86, - "make-pdf/test/toc-anchors.test.ts": 71, - "make-pdf/test/toc-pages.test.ts": 91, - "test/agents-digest.test.ts": 57, - "test/analytics.test.ts": 68, - "test/anthropic-preflight.test.ts": 43, - "test/archaeology-lint.test.ts": 2835, - "test/arm-benchmark-selftest.test.ts": 2846, - "test/arm-setup-smoke-workflow.test.ts": 189, - "test/auq-format-always-loaded.test.ts": 111, - "test/auq-native-capture.test.ts": 425, - "test/auq-parallel.test.ts": 30247, - "test/autoplan-artifact-windows-argv.test.ts": 298, - "test/autoplan-init.test.ts": 2142, - "test/autoplan-method-read-audit.test.ts": 686, - "test/autoplan-owned-state.test.ts": 838, - "test/autoplan-pending-artifact.test.ts": 53, - "test/autoplan-pending-question.test.ts": 4731, - "test/autoplan-phase-handoff.test.ts": 252, - "test/autoplan-phase-observer.test.ts": 83, - "test/autoplan-phase-order.test.ts": 155, - "test/autoplan-public-narration.test.ts": 116, - "test/autoplan-publication-generation.test.ts": 198, - "test/autoplan-publication-guard.test.ts": 6926, - "test/autoplan-publication-hook.test.ts": 7511, - "test/benchmark-runner.test.ts": 66, - "test/binding-template-drift.test.ts": 286, - "test/bootstrap-retention-shard.test.ts": 49, - "test/bootstrap-session-lifecycle.test.ts": 45, - "test/brain-cache-roundtrip.test.ts": 415, - "test/brain-cache-spec.test.ts": 61, - "test/brain-preflight.test.ts": 65, - "test/build-script-shell-compat.test.ts": 43, - "test/bun-subprocess-fd-lifetime.test.ts": 37, - "test/bun-version-drift.test.ts": 55, - "test/cache-concurrent-refresh.test.ts": 95, - "test/carve-guard-completeness.test.ts": 52, - "test/carve-guards-negative.test.ts": 57, - "test/carve-plan-fixture.test.ts": 528, - "test/carve-section-ordering.test.ts": 70, - "test/carve-section-sharding.test.ts": 4092, - "test/catalog-budget.test.ts": 83, - "test/catalog-mode-full.test.ts": 2266, - "test/catalog-trim.test.ts": 187, - "test/ceo-barless-submit.test.ts": 188, - "test/ceo-count-ad-v2.test.ts": 66, - "test/ceo-expansion-auq.test.ts": 175, - "test/ceo-expansion-pacing-native.test.ts": 160, - "test/ceo-hold-posture-review.test.ts": 267, - "test/ceo-mode-expansion-disposition.test.ts": 159, - "test/ceo-mode-labels-native.test.ts": 98, - "test/ceo-mode-option.test.ts": 675, - "test/ceo-mode-pending-submit.test.ts": 103, - "test/ceo-mode-posture-native.test.ts": 116, - "test/ceo-mode-prerequisite.test.ts": 101, - "test/ceo-mode-routing-fixture.test.ts": 5434, - "test/ceo-plan-mode-fixture.test.ts": 3870, - "test/ceo-posture-packet.test.ts": 130, - "test/ceo-section-loading-fixture.test.ts": 636, - "test/ceo-split-collection.test.ts": 761, - "test/ceo-split-question-policy.test.ts": 640, - "test/ceo-stale-fill-decision.test.ts": 142, - "test/ceo-workflow-clarity.test.ts": 69, - "test/changed-files-union.test.ts": 2654, - "test/ci-image-cli-pin.test.ts": 86, - "test/ci-image-tag-binding.test.ts": 55, - "test/ci-paid-coordination.test.ts": 19997, - "test/claude-code-runner.test.ts": 5039, - "test/claude-code-windows-job.test.ts": 3266, - "test/claude-md-size.test.ts": 182, - "test/claude-overlay-models.test.ts": 222, - "test/claude-provider-keychain.test.ts": 383, - "test/codex-carve-fixture.test.ts": 2277, - "test/codex-generation-model.test.ts": 310, - "test/codex-invocation-sites.test.ts": 629, - "test/codex-resume-flag-semantics.test.ts": 79, - "test/conductor-env-shim.test.ts": 51, - "test/context-budget-ratchet.test.ts": 293, - "test/context-remaining-work-provenance.test.ts": 52, - "test/cookie-workflow-judge-input.test.ts": 1403, - "test/cookie-workflow-manual-review.test.ts": 184, - "test/coverage-audit.test.ts": 6141, - "test/cso-bounded-file.test.ts": 69, - "test/cso-docker-policy.test.ts": 86, - "test/cso-git-hardening.test.ts": 87, - "test/cso-history.test.ts": 52, - "test/cso-image-provisioning.test.ts": 287, - "test/cso-lease-identity.test.ts": 369, - "test/cso-node-lifecycle-integration.test.ts": 91, - "test/cso-ntfs-fixture.test.ts": 586, - "test/cso-postgresql-policy.test.ts": 72, - "test/cso-preparation.test.ts": 180, - "test/cso-preserved.test.ts": 66, - "test/cso-public-ghcr.test.ts": 128, - "test/cso-runtime-promotion.test.ts": 90, - "test/cso-scanner-docker-integration.test.ts": 90, - "test/cso-scanners.test.ts": 173, - "test/cso-snapshot-disappearance-race.test.ts": 62, - "test/cso-spec-taxonomy-alignment.test.ts": 54, - "test/cso-stack-cold-integration.test.ts": 90, - "test/cso-verifier.test.ts": 69, - "test/cso-windows-build-contract.test.ts": 70, - "test/declared-annotation.test.ts": 70, - "test/dependency-security.test.ts": 167, - "test/deps-smoke.test.ts": 150, - "test/design-board-reload.test.ts": 328, - "test/design-catalog.test.ts": 118, - "test/design-checklist-sync.test.ts": 1858, - "test/design-completion-handoff-scored.test.ts": 211, - "test/design-consultation-contract.test.ts": 115, - "test/design-daemon-windows-identity.test.ts": 167, - "test/design-detect-contract.test.ts": 280, - "test/design-doc-data-guard.test.ts": 80, - "test/design-flag-utils.test.ts": 179, - "test/design-html-section-completion.test.ts": 8849, - "test/design-md.test.ts": 1644, - "test/design-printed-paths.test.ts": 249, - "test/design-research-fixture.test.ts": 68, - "test/devex-finding-fixture.test.ts": 2226, - "test/devex-peer-comparison-calibration.test.ts": 974, - "test/diagram-render-drift.test.ts": 166, - "test/disabled-dated-record-at.test.ts": 200, - "test/discover-section-templates.test.ts": 67, - "test/docsync-authority.test.ts": 4021, - "test/docsync-child-marker.test.ts": 104, - "test/docsync-lifecycle-interface.test.ts": 730, - "test/document-skills-redaction.test.ts": 108, - "test/dom-dump-hygiene.test.ts": 688, - "test/dx-selected-navigation-ap.test.ts": 220, - "test/e2e-harness-audit.test.ts": 108, - "test/e2e-tier-alignment.test.ts": 393, - "test/eng-batching-current-ledger.test.ts": 534, - "test/eng-batching-native-replay.test.ts": 199, - "test/eng-batching-saved-ledger.test.ts": 1316, - "test/eng-count-question-policy.test.ts": 108, - "test/eng-devex-s-count.test.ts": 134, - "test/eng-finding-retry-budget.test.ts": 2220, - "test/eng-first-review.test.ts": 550, - "test/eng-published-navigation.test.ts": 195, - "test/eng-resolution-block-position.test.ts": 578, - "test/eng-review-routing.test.ts": 95, - "test/eng-seeded-completion-ai.test.ts": 15320, - "test/eng-seeded-coverage.test.ts": 4093, - "test/eng-semantic-terminal.test.ts": 216, - "test/eval-budgets-policy.test.ts": 177, - "test/eval-flake-rank.test.ts": 1456, - "test/eval-kinds.test.ts": 345, - "test/eval-model.test.ts": 74, - "test/evals-workflow-wiring.test.ts": 1679, - "test/exit-propagation.test.ts": 643, - "test/extension-pty-inject-invariant.test.ts": 152, - "test/external-host-carve.test.ts": 5073, - "test/flake-ledger.test.ts": 156, - "test/free-home-guard.test.ts": 107, - "test/free-seed-ratchet.test.ts": 459, - "test/free-tests-workflow-wiring.test.ts": 170, - "test/gbrain-detection-override.test.ts": 1989, - "test/gbrain-exec-invariant.test.ts": 58, - "test/gbrain-guards.test.ts": 96, - "test/gbrain-source-gitignore.test.ts": 83, - "test/gbrain-sources-parse.test.ts": 67, - "test/gbrain-spawn-windows-shell.test.ts": 61, - "test/gbrain-sync-voyage-code-3-integration.test.ts": 86, - "test/gen-skill-docs-checks.test.ts": 27558, - "test/gen-skill-docs-idempotency.test.ts": 4950, - "test/gen-skill-docs-import-purity.test.ts": 257, - "test/gen-skill-docs-prune-stale.test.ts": 1203, - "test/generated-docs-fences.test.ts": 1349, - "test/generator-eexist.test.ts": 667, - "test/git-ref-fixture-tripwire.test.ts": 234, - "test/global-discover.test.ts": 806, - "test/gstack-ci-gate.test.ts": 77, - "test/gstack-config-gbrain-refresh.test.ts": 1528, - "test/gstack-design-detect-plugins.test.ts": 915, - "test/gstack-home-module-scope.test.ts": 194, - "test/gstack-render-cli.test.ts": 852, - "test/gstack-schema-pack.test.ts": 59, - "test/gstack-upgrade-migration-v1_78_0_0.test.ts": 432, - "test/harness-version.test.ts": 318, - "test/helpers-unit.test.ts": 110, - "test/helpers/budget-override.test.ts": 68, - "test/helpers/capture-parity-baseline.test.ts": 397, - "test/helpers/claude-pty-runner.auq.unit.test.ts": 111, - "test/helpers/claude-pty-runner.boundaries.unit.test.ts": 138, - "test/helpers/claude-pty-runner.classify.unit.test.ts": 127, - "test/helpers/claude-pty-runner.launch.unit.test.ts": 62, - "test/helpers/claude-pty-runner.plan-native.unit.test.ts": 101, - "test/helpers/claude-pty-runner.runners.unit.test.ts": 1696, - "test/helpers/claude-pty-runner.scope-gate-floor.unit.test.ts": 105, - "test/helpers/claude-pty-runner.screen.unit.test.ts": 109, - "test/helpers/e2e-gate.unit.test.ts": 62, - "test/helpers/eval-store.test.ts": 2499, - "test/helpers/hermetic-env.test.ts": 15841, - "test/helpers/observability.test.ts": 449, - "test/helpers/providers/gemini.test.ts": 79, - "test/helpers/run-bin.test.ts": 199, - "test/heredoc-pipe-deadlock.test.ts": 629, - "test/instruction-facts.test.ts": 145, - "test/investigate-freeze-path.test.ts": 21734, - "test/ios-debug-bridge-release-guard.test.ts": 80, - "test/ios-qa-daemon-cli.test.ts": 184, - "test/ios-qa-stateserver-hardening.test.ts": 61, - "test/ios-qa-swift-build.test.ts": 75, - "test/ios-qa.test.ts": 357, - "test/is-conductor.test.ts": 57, - "test/jargon-list.test.ts": 79, - "test/judge-calibration.test.ts": 150, - "test/land-and-deploy-flow.test.ts": 15166, - "test/land-and-deploy-postfail.test.ts": 85, - "test/llm-judge-abort.test.ts": 90, - "test/llm-judge-frontier.test.ts": 300, - "test/llm-judge-stream.test.ts": 115, - "test/llms-txt-shape.test.ts": 115, - "test/maintenance-cli-args.test.ts": 538, - "test/memory-ingest-timeout.test.ts": 94, - "test/migration-checkpoint-ownership.test.ts": 2143, - "test/mktemp-portability.test.ts": 806, - "test/model-overlays.test.ts": 95, - "test/module-size-ratchet.test.ts": 278, - "test/native-auto-decide-pty.test.ts": 13309, - "test/native-auto-decide.test.ts": 789, - "test/no-quoted-tilde-assignments.test.ts": 107, - "test/no-suicide-exit.test.ts": 335, - "test/office-hours-budget.test.ts": 145, - "test/office-hours-open-question-form.test.ts": 69, - "test/office-hours-phase4-caller.test.ts": 104, - "test/office-hours-review.test.ts": 1134, - "test/office-posture-recording.test.ts": 124, - "test/one-way-doors.test.ts": 51, - "test/open-gstack-browser-liveness.test.ts": 55, - "test/openclaw-native-skills.test.ts": 51, - "test/osv-config-wiring.test.ts": 52, + "browse/test/security-classifier-download-cleanup.test.ts": 50, + "browse/test/security-classifier.test.ts": 30, + "browse/test/security-integration.test.ts": 36, + "browse/test/security-live-playwright.test.ts": 951, + "browse/test/security-sidecar-client.test.ts": 59, + "browse/test/security.test.ts": 43, + "browse/test/server-auth.test.ts": 508, + "browse/test/server-factory.test.ts": 2024, + "browse/test/server-flush-trackers.test.ts": 27, + "browse/test/server-launch-resolution.test.ts": 38, + "browse/test/server-lock-errors.test.ts": 81, + "browse/test/server-no-import-side-effects.test.ts": 520, + "browse/test/server-pty-lease-routes.test.ts": 403, + "browse/test/server-route-auth-blackbox.test.ts": 1573, + "browse/test/server-route-dispatch-ratchet.test.ts": 317, + "browse/test/server-sanitize-surrogates.test.ts": 354, + "browse/test/server-tmp-state-path.test.ts": 34, + "browse/test/session-cookie-store.test.ts": 86, + "browse/test/sidebar-tabs.test.ts": 471, + "browse/test/sidebar-ux.test.ts": 412, + "browse/test/sidepanel-patient-autoconnect.test.ts": 30, + "browse/test/sidepanel-reattach.test.ts": 32, + "browse/test/sidepanel-restart-dispose.test.ts": 32, + "browse/test/skill-token.test.ts": 34, + "browse/test/socks-bridge.test.ts": 506, + "browse/test/sse-helpers.test.ts": 175, + "browse/test/sse-session-cookie.test.ts": 34, + "browse/test/state-ttl.test.ts": 25, + "browse/test/stealth-extended.test.ts": 32, + "browse/test/stealth-layer-c.test.ts": 34, + "browse/test/stealth-webdriver.test.ts": 8809, + "browse/test/stop-ack-before-shutdown.test.ts": 177, + "browse/test/stop-dead-daemon.test.ts": 305, + "browse/test/tab-each.test.ts": 50, + "browse/test/tab-external-close-dispatch.test.ts": 816, + "browse/test/tab-external-close.test.ts": 508, + "browse/test/tab-guardrail.test.ts": 565, + "browse/test/tab-isolation.test.ts": 763, + "browse/test/tab-session-frame-detach.test.ts": 35, + "browse/test/telemetry-optout.test.ts": 67, + "browse/test/telemetry.test.ts": 39, + "browse/test/temp-dirs.test.ts": 45, + "browse/test/terminal-agent-detach-reattach.test.ts": 28, + "browse/test/terminal-agent-import.test.ts": 4415, + "browse/test/terminal-agent-keepalive.test.ts": 31, + "browse/test/terminal-agent-native-observation.test.ts": 38, + "browse/test/terminal-agent-owner-watchdog.test.ts": 2297, + "browse/test/terminal-agent-pid-identity.test.ts": 91, + "browse/test/terminal-agent-port-range.test.ts": 41, + "browse/test/terminal-agent-ring-buffer-runtime.test.ts": 50, + "browse/test/terminal-agent-session-routing.test.ts": 33, + "browse/test/terminal-agent-signal-cleanup.test.ts": 39, + "browse/test/terminal-agent-watchdog.test.ts": 34, + "browse/test/terminal-agent.test.ts": 380, + "browse/test/terminal-pty-lifecycle.test.ts": 37, + "browse/test/token-registry.test.ts": 44, + "browse/test/tunnel-gate-unit.test.ts": 345, + "browse/test/watch.test.ts": 365, + "browse/test/welcome-page.test.ts": 37, + "browse/test/windows-spawn-hide.test.ts": 52, + "browse/test/xprotect-heal.test.ts": 301, + "browser-skills/hackernews-frontpage/script.test.ts": 34, + "design/test/brief.test.ts": 28, + "design/test/cli-persistence.test.ts": 6766, + "design/test/cli-version.test.ts": 57, + "design/test/feedback-roundtrip-daemon.test.ts": 171, + "design/test/feedback-roundtrip.test.ts": 3395, + "design/test/image-args.test.ts": 118, + "design/test/image-gen-pairing.test.ts": 133, + "design/test/receipted-fetch.test.ts": 45, + "ios-qa/daemon/test/allowlist.test.ts": 47, + "ios-qa/daemon/test/audit.test.ts": 53, + "ios-qa/daemon/test/auth-mint.test.ts": 41, + "ios-qa/daemon/test/daemon-integration.test.ts": 3980, + "ios-qa/daemon/test/proxy-classify.test.ts": 90, + "ios-qa/daemon/test/proxy-transport.test.ts": 1756, + "ios-qa/daemon/test/session-tokens.test.ts": 31, + "ios-qa/daemon/test/single-instance.test.ts": 30, + "ios-qa/daemon/test/tailscale-localapi.test.ts": 42, + "ios-qa/scripts/gen-accessors.test.ts": 87, + "make-pdf/test/asideClient.test.ts": 47, + "make-pdf/test/cli-args.test.ts": 51, + "make-pdf/test/cli-exit-codes.test.ts": 297, + "make-pdf/test/diagram-prepass.test.ts": 112, + "make-pdf/test/e2e/ci-prereqs.test.ts": 28, + "make-pdf/test/e2e/combined-gate.test.ts": 32, + "make-pdf/test/e2e/diagram-gate.test.ts": 37, + "make-pdf/test/e2e/emoji-gate.test.ts": 37, + "make-pdf/test/e2e/format-gate.test.ts": 40, + "make-pdf/test/e2e/landscape-gate.test.ts": 38, + "make-pdf/test/e2e/toc-gate.test.ts": 37, + "make-pdf/test/image-policy.test.ts": 29, + "make-pdf/test/render-offline-sanitize.test.ts": 47, + "make-pdf/test/render.test.ts": 58, + "make-pdf/test/setup-smoke.test.ts": 54, + "make-pdf/test/toc-anchors.test.ts": 46, + "make-pdf/test/toc-pages.test.ts": 49, + "test/agents-digest.test.ts": 37, + "test/analytics.test.ts": 55, + "test/anthropic-preflight.test.ts": 25, + "test/archaeology-lint.test.ts": 2035, + "test/arm-benchmark-selftest.test.ts": 2788, + "test/arm-setup-smoke-workflow.test.ts": 135, + "test/auq-format-always-loaded.test.ts": 76, + "test/auq-native-capture.test.ts": 323, + "test/auq-parallel.test.ts": 27784, + "test/auq-substance-panel.test.ts": 109, + "test/autoplan-admission.test.ts": 1629, + "test/autoplan-artifact-windows-argv.test.ts": 240, + "test/autoplan-bounded-journal.test.ts": 566, + "test/autoplan-budget.test.ts": 10875, + "test/autoplan-capy-e2e.test.ts": 10262, + "test/autoplan-compaction-copies.test.ts": 282, + "test/autoplan-compaction-preserved-segment.test.ts": 1283, + "test/autoplan-guard-log.test.ts": 72, + "test/autoplan-guard-reasons.test.ts": 28, + "test/autoplan-init.test.ts": 1486, + "test/autoplan-long-session-observer.test.ts": 105, + "test/autoplan-method-read-audit.test.ts": 332, + "test/autoplan-owned-read.test.ts": 4598, + "test/autoplan-owned-state.test.ts": 535, + "test/autoplan-pairing.test.ts": 49, + "test/autoplan-pending-artifact.test.ts": 42, + "test/autoplan-pending-question.test.ts": 4439, + "test/autoplan-phase-handoff.test.ts": 137, + "test/autoplan-phase-observer.test.ts": 46, + "test/autoplan-phase-order.test.ts": 100, + "test/autoplan-public-narration.test.ts": 70, + "test/autoplan-publication-generation.test.ts": 117, + "test/autoplan-publication-guard.test.ts": 5524, + "test/autoplan-publication-hook.test.ts": 3401, + "test/autoplan-publication-payload.test.ts": 2730, + "test/autoplan-record.test.ts": 3410, + "test/autoplan-revise.test.ts": 10957, + "test/autoplan-schema-canary-compare.test.ts": 44, + "test/benchmark-runner.test.ts": 60, + "test/binary-version-probe.test.ts": 260, + "test/binding-template-drift.test.ts": 225, + "test/bootstrap-retention-shard.test.ts": 34, + "test/bootstrap-session-lifecycle.test.ts": 34, + "test/brain-cache-roundtrip.test.ts": 310, + "test/brain-cache-spec.test.ts": 47, + "test/brain-preflight.test.ts": 64, + "test/build-script-shell-compat.test.ts": 36, + "test/bun-subprocess-fd-lifetime.test.ts": 32, + "test/cache-concurrent-refresh.test.ts": 80, + "test/carve-guard-completeness.test.ts": 39, + "test/carve-guards-negative.test.ts": 41, + "test/carve-plan-fixture.test.ts": 510, + "test/carve-section-ordering.test.ts": 52, + "test/carve-section-sharding.test.ts": 2218, + "test/catalog-budget.test.ts": 71, + "test/catalog-mode-full.test.ts": 1095, + "test/catalog-trim.test.ts": 62, + "test/census-red-docs.test.ts": 59, + "test/ceo-barless-submit.test.ts": 114, + "test/ceo-count-ad-v2.test.ts": 62, + "test/ceo-expansion-auq.test.ts": 105, + "test/ceo-expansion-pacing-native.test.ts": 98, + "test/ceo-hold-posture-review.test.ts": 144, + "test/ceo-mode-expansion-disposition.test.ts": 89, + "test/ceo-mode-handoff-hook.test.ts": 204, + "test/ceo-mode-labels-native.test.ts": 68, + "test/ceo-mode-option.test.ts": 444, + "test/ceo-mode-pending-submit.test.ts": 75, + "test/ceo-mode-posture-native.test.ts": 73, + "test/ceo-mode-prerequisite.test.ts": 85, + "test/ceo-mode-routing-fixture.test.ts": 4832, + "test/ceo-plan-mode-fixture.test.ts": 3740, + "test/ceo-posture-packet.test.ts": 88, + "test/ceo-section-loading-fixture.test.ts": 386, + "test/ceo-split-collection.test.ts": 514, + "test/ceo-split-question-policy.test.ts": 417, + "test/ceo-stale-fill-decision.test.ts": 102, + "test/ceo-workflow-clarity.test.ts": 48, + "test/changed-files-union.test.ts": 2889, + "test/ci-image-cli-pin.test.ts": 52, + "test/ci-image-tag-binding.test.ts": 32, + "test/ci-paid-coordination.test.ts": 12119, + "test/claude-code-runner.test.ts": 3912, + "test/claude-code-windows-job.test.ts": 2926, + "test/claude-md-size.test.ts": 28, + "test/claude-overlay-models.test.ts": 61, + "test/claude-producer-stream.test.ts": 34, + "test/claude-provider-keychain.test.ts": 141, + "test/codex-carve-fixture.test.ts": 2111, + "test/codex-generation-model.test.ts": 210, + "test/codex-invocation-sites.test.ts": 438, + "test/codex-resume-flag-semantics.test.ts": 81, + "test/conductor-env-shim.test.ts": 35, + "test/context-budget-ratchet.test.ts": 194, + "test/context-remaining-work-provenance.test.ts": 32, + "test/cookie-workflow-judge-input.test.ts": 1009, + "test/cookie-workflow-manual-review.test.ts": 139, + "test/copilot-windows-bash.test.ts": 40, + "test/cost-known.test.ts": 102, + "test/coverage-audit.test.ts": 6956, + "test/cso-bounded-file.test.ts": 46, + "test/cso-docker-policy.test.ts": 58, + "test/cso-docker-socket-realpath.test.ts": 49, + "test/cso-git-global-config.test.ts": 86, + "test/cso-git-hardening.test.ts": 60, + "test/cso-history.test.ts": 35, + "test/cso-image-provisioning.test.ts": 249, + "test/cso-lease-identity.test.ts": 209, + "test/cso-native-evidence.test.ts": 59, + "test/cso-node-lifecycle-integration.test.ts": 60, + "test/cso-ntfs-fixture.test.ts": 340, + "test/cso-postgresql-policy.test.ts": 50, + "test/cso-preparation-java.test.ts": 47, + "test/cso-preparation.test.ts": 116, + "test/cso-preserved.test.ts": 42, + "test/cso-public-ghcr.test.ts": 43, + "test/cso-requalification.test.ts": 223, + "test/cso-runtime-promotion.test.ts": 270, + "test/cso-scanner-docker-integration.test.ts": 81, + "test/cso-scanners.test.ts": 101, + "test/cso-snapshot-disappearance-race.test.ts": 49, + "test/cso-spec-taxonomy-alignment.test.ts": 46, + "test/cso-staging-run.test.ts": 165, + "test/cso-verifier.test.ts": 63, + "test/cso-windows-build-contract.test.ts": 45, + "test/cso-windows-docker.test.ts": 52, + "test/declared-annotation.test.ts": 61, + "test/defensive-review-framing.test.ts": 35, + "test/dependency-security.test.ts": 137, + "test/deps-smoke.test.ts": 113, + "test/design-board-reload.test.ts": 349, + "test/design-catalog.test.ts": 99, + "test/design-checklist-sync.test.ts": 1801, + "test/design-completion-handoff-scored.test.ts": 61, + "test/design-consultation-contract.test.ts": 54, + "test/design-daemon-windows-identity.test.ts": 93, + "test/design-detect-contract.test.ts": 218, + "test/design-doc-data-guard.test.ts": 59, + "test/design-flag-utils.test.ts": 76, + "test/design-html-section-completion.test.ts": 5695, + "test/design-md.test.ts": 793, + "test/design-printed-paths.test.ts": 109, + "test/design-research-fixture.test.ts": 37, + "test/detector-corpora.test.ts": 423, + "test/detector-corpus-auto-decide-preserved.test.ts": 80, + "test/detector-corpus-plan-ceo-section-loading.test.ts": 75, + "test/detector-corpus-plan-design-review-plan-mode.test.ts": 1420, + "test/detector-corpus-plan-eng-multi-finding-batching.test.ts": 211, + "test/detector-corpus-shared-libs-plan-callers.test.ts": 46, + "test/detector-corpus-ship-docsync-late-result.test.ts": 83, + "test/detector-corpus-ship-docsync-launch-failure.test.ts": 62, + "test/devex-finding-fixture.test.ts": 1778, + "test/devex-peer-comparison-calibration.test.ts": 596, + "test/diagram-render-drift.test.ts": 129, + "test/disabled-dated-record-at.test.ts": 116, + "test/discover-section-templates.test.ts": 36, + "test/dispatch-rules.test.ts": 63, + "test/docsync-authority.test.ts": 3365, + "test/docsync-child-marker.test.ts": 51, + "test/docsync-lifecycle-interface.test.ts": 594, + "test/doctor-components.test.ts": 71, + "test/document-skills-redaction.test.ts": 65, + "test/dom-dump-hygiene.test.ts": 315, + "test/dx-error-contract-grader.test.ts": 64, + "test/dx-error-contract.test.ts": 57, + "test/dx-selected-navigation-ap.test.ts": 131, + "test/e2e-harness-audit.test.ts": 49, + "test/e2e-tier-alignment.test.ts": 172, + "test/eng-batching-current-ledger.test.ts": 248, + "test/eng-batching-native-replay.test.ts": 97, + "test/eng-batching-saved-ledger.test.ts": 684, + "test/eng-count-question-policy.test.ts": 79, + "test/eng-devex-s-count.test.ts": 70, + "test/eng-finding-retry-budget.test.ts": 1506, + "test/eng-first-review.test.ts": 290, + "test/eng-published-navigation.test.ts": 85, + "test/eng-resolution-block-position.test.ts": 265, + "test/eng-review-routing.test.ts": 52, + "test/eng-seeded-completion-ai.test.ts": 16200, + "test/eng-seeded-coverage.test.ts": 1338, + "test/eng-semantic-terminal.test.ts": 110, + "test/env-host-runtime-assets.test.ts": 2602, + "test/eval-budgets-policy.test.ts": 97, + "test/eval-flake-rank.test.ts": 663, + "test/eval-history.test.ts": 2055, + "test/eval-kinds.test.ts": 136, + "test/eval-model.test.ts": 39, + "test/eval-sweep-workflow.test.ts": 105, + "test/evals-workflow-wiring.test.ts": 848, + "test/exit-propagation.test.ts": 413, + "test/extension-pty-inject-invariant.test.ts": 34, + "test/external-host-carve.test.ts": 3163, + "test/flake-ledger.test.ts": 74, + "test/free-home-guard.test.ts": 59, + "test/free-seed-ratchet.test.ts": 305, + "test/free-tests-workflow-wiring.test.ts": 101, + "test/gate-integrity-templates.test.ts": 81, + "test/gbrain-detection-override.test.ts": 1436, + "test/gbrain-exec-invariant.test.ts": 35, + "test/gbrain-guards.test.ts": 56, + "test/gbrain-source-gitignore.test.ts": 582, + "test/gbrain-sources-parse.test.ts": 50, + "test/gbrain-spawn-windows-shell.test.ts": 141, + "test/gbrain-sync-voyage-code-3-integration.test.ts": 55, + "test/gen-skill-docs-checks.test.ts": 18267, + "test/gen-skill-docs-idempotency.test.ts": 3568, + "test/gen-skill-docs-import-purity.test.ts": 76, + "test/gen-skill-docs-prune-stale.test.ts": 688, + "test/generated-docs-fences.test.ts": 1228, + "test/generator-eexist.test.ts": 443, + "test/git-ref-fixture-tripwire.test.ts": 151, + "test/gitattributes-eol.test.ts": 1232, + "test/global-discover.test.ts": 3257, + "test/greptile-early.test.ts": 77, + "test/gstack-ci-gate.test.ts": 65, + "test/gstack-config-gbrain-refresh.test.ts": 1474, + "test/gstack-design-detect-plugins.test.ts": 674, + "test/gstack-doctor.test.ts": 392261, + "test/gstack-home-module-scope.test.ts": 162, + "test/gstack-launch-probe.test.ts": 42, + "test/gstack-post.test.ts": 79, + "test/gstack-regen.test.ts": 16822, + "test/gstack-render-cli.test.ts": 680, + "test/gstack-schema-pack.test.ts": 47, + "test/gstack-upgrade-migration-v1_78_0_0.test.ts": 411, + "test/gstack-wtree-windows-paths.test.ts": 716, + "test/harness-version.test.ts": 292, + "test/helpers-unit.test.ts": 89, + "test/helpers/budget-override.test.ts": 66, + "test/helpers/capture-parity-baseline.test.ts": 333, + "test/helpers/claude-pty-runner.auq.unit.test.ts": 94, + "test/helpers/claude-pty-runner.boundaries.unit.test.ts": 99, + "test/helpers/claude-pty-runner.classify.unit.test.ts": 101, + "test/helpers/claude-pty-runner.launch.unit.test.ts": 48, + "test/helpers/claude-pty-runner.plan-native.unit.test.ts": 85, + "test/helpers/claude-pty-runner.runners.unit.test.ts": 1612, + "test/helpers/claude-pty-runner.scope-gate-floor.unit.test.ts": 81, + "test/helpers/claude-pty-runner.screen.unit.test.ts": 78, + "test/helpers/e2e-gate.unit.test.ts": 46, + "test/helpers/eval-store.test.ts": 2538, + "test/helpers/hermetic-env.test.ts": 12214, + "test/helpers/observability.test.ts": 403, + "test/helpers/providers/gemini.test.ts": 46, + "test/helpers/run-bin.test.ts": 147, + "test/heredoc-pipe-deadlock.test.ts": 526, + "test/honesty-kernel.test.ts": 63, + "test/hook-scripts.test.ts": 135136, + "test/instruction-facts.test.ts": 134, + "test/investigate-freeze-path.test.ts": 20245, + "test/investigate-recipes.test.ts": 51, + "test/ios-debug-bridge-release-guard.test.ts": 43, + "test/ios-qa-daemon-cli.test.ts": 128, + "test/ios-qa-stateserver-hardening.test.ts": 43, + "test/ios-qa-swift-build.test.ts": 49, + "test/ios-qa.test.ts": 411, + "test/is-conductor.test.ts": 39, + "test/jargon-list.test.ts": 46, + "test/judge-calibration.test.ts": 92, + "test/judge-panel-median.test.ts": 89, + "test/land-and-deploy-command-trigger.test.ts": 40, + "test/land-and-deploy-flow.test.ts": 10910, + "test/land-and-deploy-postfail.test.ts": 46, + "test/llm-judge-abort.test.ts": 57, + "test/llm-judge-frontier.test.ts": 158, + "test/llm-judge-stream.test.ts": 75, + "test/llms-txt-shape.test.ts": 73, + "test/maintenance-cli-args.test.ts": 316, + "test/memory-ingest-timeout.test.ts": 62, + "test/migration-checkpoint-ownership.test.ts": 1518, + "test/mktemp-portability.test.ts": 593, + "test/model-catalog-isolation.test.ts": 158, + "test/model-overlays.test.ts": 49, + "test/model-policy-freshness.test.ts": 250, + "test/model-policy.test.ts": 134, + "test/module-size-ratchet.test.ts": 280, + "test/native-auto-decide-pty.test.ts": 12802, + "test/native-auto-decide.test.ts": 356, + "test/no-quoted-tilde-assignments.test.ts": 55, + "test/no-suicide-exit.test.ts": 181, + "test/office-hours-budget.test.ts": 75, + "test/office-hours-open-question-form.test.ts": 37, + "test/office-hours-phase4-caller.test.ts": 81, + "test/office-hours-review.test.ts": 1891, + "test/office-posture-recording.test.ts": 85, + "test/one-way-doors.test.ts": 47, + "test/open-gstack-browser-liveness.test.ts": 34, + "test/openclaw-native-skills.test.ts": 30, + "test/osv-config-wiring.test.ts": 48, "test/osv-ignore-expiry.test.ts": 61, - "test/outside-review-result.test.ts": 610, - "test/outside-voice-evidence.test.ts": 215, - "test/outside-voice-failure-policy.test.ts": 328, - "test/outside-voice-fixture.test.ts": 1705, - "test/outside-voice-routing.test.ts": 1944, - "test/overlay-lifecycle.test.ts": 468, - "test/overlay-measurement.test.ts": 821, - "test/overlay-recording-order.test.ts": 85, - "test/overlay-sdk-cancel-eof.test.ts": 177, - "test/paid-free-boundary.test.ts": 8707, - "test/paid-orphan-tripwire.test.ts": 266, - "test/paid-overlay-scheduling.test.ts": 1805, - "test/paid-pr-profile.test.ts": 4294, - "test/paid-report-census.test.ts": 135, - "test/paid-report-fail-open.test.ts": 2256, - "test/paid-retry-supervision.test.ts": 3444, - "test/paid-run-manifest.test.ts": 5261, - "test/paid-selection-propagation.test.ts": 142, - "test/paid-shard-settlement.test.ts": 1775, - "test/paid-shards.test.ts": 4911, - "test/paid-slice-deadline.test.ts": 1645, - "test/pair-agent-token-hygiene.test.ts": 57, - "test/parity-baseline-integrity.test.ts": 69, - "test/parity-sectioned.test.ts": 65, - "test/parity-suite.test.ts": 291, - "test/pending-question-completion.test.ts": 413, - "test/periodic-exclude-policy.test.ts": 365, - "test/plan-count-checkbox.test.ts": 122, - "test/plan-count-completion.test.ts": 685, - "test/plan-count-cropped-wrap.test.ts": 242, - "test/plan-count-cross-cwd-ancestry.test.ts": 394, - "test/plan-count-design-ui-recovery.test.ts": 191, - "test/plan-count-dx-handoff.test.ts": 262, - "test/plan-count-empty-review.test.ts": 129, - "test/plan-count-history.test.ts": 74, - "test/plan-count-long-edit.test.ts": 128, - "test/plan-count-native-input.test.ts": 146, - "test/plan-count-owned-permission.test.ts": 125, - "test/plan-count-pending-exit.test.ts": 299, - "test/plan-count-prerequisite.test.ts": 167, - "test/plan-count-preview-footer.test.ts": 158, - "test/plan-count-session-cwd.test.ts": 257, - "test/plan-count-timeout.test.ts": 70, - "test/plan-count-transcript.test.ts": 220, - "test/plan-count-truncated-border.test.ts": 127, - "test/plan-count-truncated-question.test.ts": 122, - "test/plan-create-combined-permission.test.ts": 375, - "test/plan-create-permission.test.ts": 229, - "test/plan-design-floor-fixture.test.ts": 1636, - "test/plan-design-sdk-fixture.test.ts": 3179, - "test/plan-design-with-ui-fixture.test.ts": 7398, - "test/plan-edit-cropped-permission.test.ts": 425, - "test/plan-eng-resume.test.ts": 67, - "test/plan-floor-dx-actor.test.ts": 267, - "test/plan-floor-review.test.ts": 118, - "test/plan-floor-target.test.ts": 14872, - "test/plan-format-kind-note.test.ts": 77, - "test/plan-pending-question-pty.test.ts": 137, - "test/plan-review-board-feedback.test.ts": 12699, - "test/plan-review-calibration.test.ts": 1199, - "test/plan-review-decisions.test.ts": 410, - "test/plan-review-report-recording.test.ts": 8160, - "test/plan-scope-selection.test.ts": 3556, - "test/plan-skill-question-hook-scope.test.ts": 9517, - "test/plan-skill-read-permission.test.ts": 134, - "test/plan-skill-webfetch-permission.test.ts": 4989, - "test/platform-qualification-workflow.test.ts": 52, - "test/post-rename-doc-regen.test.ts": 68, - "test/pr-direct-cases.test.ts": 5659, - "test/pr-shared-input-selection.test.ts": 1716, - "test/pr-title-sync-workflow-safety.test.ts": 78, - "test/prompt-audit-manifest.test.ts": 695, - "test/provider-model-defaults.test.ts": 89, - "test/pty-askuserquestion-single-line.test.ts": 105, - "test/pty-numbered-option-indent-native.test.ts": 137, - "test/pty-option-selection.test.ts": 65, - "test/pty-output-wake.test.ts": 3152, - "test/pty-screen-session.test.ts": 57, - "test/pty-screen-supervision.test.ts": 10111, - "test/pty-screen-unicode-ap.test.ts": 192, - "test/pty-screen.test.ts": 192, - "test/pty-skill-seeding-wiring.test.ts": 426, - "test/pty-trust-dialog.test.ts": 54, - "test/qa-browser-preservation.test.ts": 11468, - "test/qa-bugs-fixture.test.ts": 73, - "test/qa-caller-authority.test.ts": 185, - "test/qa-caller-freshness-order.test.ts": 114, - "test/qa-caller-report-observer.test.ts": 77, - "test/qa-checkpoint-evidence.test.ts": 258, - "test/qa-deadline-publication-observer.test.ts": 80, - "test/qa-deadline-selection.test.ts": 91, - "test/qa-deadline.test.ts": 23157, - "test/qa-evidence-selection.test.ts": 193, - "test/qa-evidence.test.ts": 17401, - "test/qa-fix-loop-fixture.test.ts": 5504, - "test/qa-health-rubric.test.ts": 42, - "test/qa-only-browser-probe.test.ts": 1441, - "test/qa-probe-gates.test.ts": 119, - "test/qa-supervision-selection.test.ts": 75, - "test/question-tuning-registry-path.test.ts": 48, - "test/redact-context-exemptions.test.ts": 96, - "test/redact-doc-resolver.test.ts": 42, - "test/redact-dotenv-filename-false-positive.test.ts": 46, - "test/redact-engine-autoredact.test.ts": 44, - "test/redact-engine.test.ts": 77, - "test/redact-parcel-id-false-positive.test.ts": 46, - "test/redact-pattern-lint.test.ts": 56, - "test/redact-prepush-target.test.ts": 46225, - "test/redact-span-binding.test.ts": 107, - "test/redact-unicode-offsets.test.ts": 187, - "test/regression-1539-review-self-verify.test.ts": 59, - "test/regression-issue2091-bsd-mktemp.test.ts": 603, - "test/regression-pr1169-mktemp-fallbacks.test.ts": 166, - "test/regression-transcript-frontmatter-fence.test.ts": 103, - "test/remote-identity-vectors.test.ts": 223, - "test/replay-pr-selection.test.ts": 1498, - "test/resolvers-gbrain-put-rewrite.test.ts": 85, - "test/resolvers-gbrain-save-results.test.ts": 48, - "test/retired-commands.test.ts": 100, - "test/review-army-budget.test.ts": 2958, - "test/review-consensus-lifecycle.test.ts": 72, - "test/review-count-markdown.test.ts": 180, - "test/review-entry-and-design-clarity-au.test.ts": 130, - "test/review-enum-lifecycle.test.ts": 96, - "test/review-finalization-budget.test.ts": 5927, - "test/review-n-plus-one-contract.test.ts": 3174, - "test/review-quality-provenance.test.ts": 77, - "test/review-workflow-clarity.test.ts": 93, - "test/router-disabled-skills.test.ts": 1302, - "test/run-shard-child.test.ts": 1404, - "test/safety-rule-registry.test.ts": 90, - "test/salience-allowlist.test.ts": 82, - "test/schema-version-migration.test.ts": 346, - "test/section-manifest-consistency.test.ts": 74, - "test/session-runner-browse-errors.test.ts": 1939, - "test/session-runner-stream-lifecycle.test.ts": 378, - "test/session-runner-timeout.test.ts": 76, - "test/session-runner-tools.test.ts": 243, - "test/setup-alias-name-uniqueness.test.ts": 20718, - "test/setup-browser-hint.test.ts": 608, - "test/setup-bun-cmd-and-pipe-bugs.test.ts": 361, - "test/setup-cleanup-orphans.test.ts": 81, - "test/setup-codex-design-pdf-runtime.test.ts": 79, - "test/setup-codex-model.test.ts": 79, - "test/setup-codex-scope-review-boundaries.test.ts": 157, - "test/setup-cso-windows-probe.test.ts": 79, - "test/setup-deploy-key-presence.test.ts": 139, - "test/setup-gbrain-bin-invocation-paths.test.ts": 72, - "test/setup-gbrain-path4-caller.test.ts": 5288, - "test/setup-gbrain-path4-structure.test.ts": 67, - "test/setup-gbrain-remote-caller.test.ts": 10158, - "test/setup-help.test.ts": 451, - "test/setup-playwright-platform.test.ts": 7531, - "test/setup-prune-stale-generated.test.ts": 2139, - "test/setup-sections-linking.test.ts": 57, - "test/setup-skill-copies.test.ts": 77, - "test/setup-staged-copy.test.ts": 377, - "test/setup-windows-fallback.test.ts": 69, - "test/setup-windows-rerun-refresh.test.ts": 1511, - "test/shard-cli-parity.test.ts": 314, - "test/shared-libs-cancellation.test.ts": 328, - "test/shared-libs-evidence.test.ts": 91, - "test/shared-libs-plan-actor.test.ts": 208, - "test/shared-libs-rendering.test.ts": 2639, - "test/shared-libs-source-reads.test.ts": 12864, - "test/ship-apple-gate.test.ts": 76, - "test/ship-control-flow.test.ts": 3719, - "test/ship-coverage-audit-af.test.ts": 153, - "test/ship-hook-windows-paths.test.ts": 2096, - "test/ship-pr-liveness-policy.test.ts": 72, - "test/ship-publication-gates.test.ts": 1628, - "test/ship-reentry-gates.test.ts": 78, - "test/ship-review-loop.test.ts": 79, - "test/ship-section-fixture.test.ts": 1645, - "test/ship-skip-requeue.test.ts": 129, - "test/ship-template-redaction.test.ts": 76, - "test/ship-test-detection-markers.test.ts": 1628, - "test/ship-triage-labels.test.ts": 69, - "test/ship-workflow-clarity.test.ts": 126, - "test/shortcut-debt-ledger.test.ts": 69, - "test/skill-browse-state-extraction.test.ts": 278, - "test/skill-budget-regression.test.ts": 329, - "test/skill-check-driver.test.ts": 397, - "test/skill-collision-sentinel.test.ts": 78, - "test/skill-coverage-floor.test.ts": 151, - "test/skill-cross-model-recommendation-emit.test.ts": 77, - "test/skill-parser.test.ts": 99, - "test/skill-positional-literals.test.ts": 7526, - "test/skill-preflight-budget.test.ts": 67, - "test/skillify-host-paths.test.ts": 2351, - "test/sol-skill-fixture.test.ts": 3379, - "test/spawnsync-timeout-tripwire.test.ts": 549, - "test/spec-template-invariants.test.ts": 112, - "test/state-root-parity.test.ts": 2452, - "test/strict-output-capture.test.ts": 225, - "test/strict-output-formats.test.ts": 2977, - "test/strict-output-settlement.test.ts": 4288, - "test/strict-output.test.ts": 63, - "test/sync-gbrain-readiness-fixture.test.ts": 597, - "test/takes-fence-fallback.test.ts": 48, - "test/tasks-section-jq.test.ts": 236, - "test/template-context-parity.test.ts": 57, - "test/terse-build.test.ts": 62, - "test/test-free-shards-sandbox-knobs.test.ts": 428, - "test/test-free-shards-settlement-lifecycle.test.ts": 80, - "test/test-free-shards-settlement-ownership.test.ts": 75, - "test/test-health-report.test.ts": 643, - "test/test-health-workflow.test.ts": 52, - "test/test-of-test-ratchet.test.ts": 405, - "test/test-pr-profile.test.ts": 90, - "test/test-value-bar.test.ts": 428, - "test/third-party-actions-recording.test.ts": 542, - "test/third-party-actions.test.ts": 478, - "test/touchfiles-facade.test.ts": 99, - "test/touchfiles-map-diff.test.ts": 1770, - "test/tracker-guard-wiring.test.ts": 142, - "test/troubleshooting-anchors.test.ts": 53, - "test/typecheck-test-ratchet.test.ts": 98, - "test/uninstall-windows-copies.test.ts": 9656, - "test/v0-dormancy.test.ts": 85, - "test/version-source.test.ts": 75, - "test/windows-free-selection-autoplan-guard.test.ts": 80, - "test/windows-native-workflows.test.ts": 534, - "test/workflow-action-pins.test.ts": 88, - "test/workflow-boundaries-fixture.test.ts": 15849, - "test/workflow-concurrency.test.ts": 81, - "test/workflow-excerpt.test.ts": 307, - "test/workflow-judge-cache.test.ts": 13496, - "test/worktree-isolated-shapes.test.ts": 122, - "test/worktree.test.ts": 5426 + "test/outside-review-severity.test.ts": 168, + "test/outside-review-unparsed-severity.test.ts": 292, + "test/outside-send-boundary.test.ts": 499, + "test/outside-voice-evidence.test.ts": 200, + "test/outside-voice-failure-policy.test.ts": 233, + "test/outside-voice-fixture.test.ts": 1585, + "test/outside-voice-native-deadline.test.ts": 69, + "test/outside-voice-routing.test.ts": 1710, + "test/overlay-lifecycle.test.ts": 402, + "test/overlay-measurement.test.ts": 631, + "test/overlay-recording-order.test.ts": 53, + "test/overlay-sdk-cancel-eof.test.ts": 115, + "test/paid-free-boundary.test.ts": 9506, + "test/paid-orphan-tripwire.test.ts": 174, + "test/paid-overlay-scheduling.test.ts": 1395, + "test/paid-pr-profile.test.ts": 3674, + "test/paid-report-census.test.ts": 237, + "test/paid-report-fail-open.test.ts": 2098, + "test/paid-retry-supervision.test.ts": 2530, + "test/paid-run-manifest.test.ts": 5052, + "test/paid-selection-propagation.test.ts": 88, + "test/paid-shard-settlement.test.ts": 1565, + "test/paid-shards.test.ts": 9945, + "test/paid-slice-deadline.test.ts": 1594, + "test/pair-agent-token-hygiene.test.ts": 44, + "test/parity-baseline-integrity.test.ts": 53, + "test/parity-sectioned.test.ts": 54, + "test/parity-suite.test.ts": 233, + "test/path-spelling.test.ts": 1422, + "test/pending-question-completion.test.ts": 276, + "test/periodic-exclude-policy.test.ts": 278, + "test/plan-count-checkbox.test.ts": 74, + "test/plan-count-completion.test.ts": 440, + "test/plan-count-cropped-wrap.test.ts": 140, + "test/plan-count-cross-cwd-ancestry.test.ts": 249, + "test/plan-count-design-ui-recovery.test.ts": 93, + "test/plan-count-dx-handoff.test.ts": 201, + "test/plan-count-empty-review.test.ts": 74, + "test/plan-count-history.test.ts": 46, + "test/plan-count-long-edit.test.ts": 87, + "test/plan-count-native-input.test.ts": 95, + "test/plan-count-owned-permission.test.ts": 88, + "test/plan-count-pending-exit.test.ts": 166, + "test/plan-count-prerequisite.test.ts": 102, + "test/plan-count-preview-footer.test.ts": 82, + "test/plan-count-session-cwd.test.ts": 162, + "test/plan-count-timeout.test.ts": 47, + "test/plan-count-transcript.test.ts": 145, + "test/plan-count-truncated-border.test.ts": 77, + "test/plan-count-truncated-question.test.ts": 76, + "test/plan-create-combined-permission.test.ts": 242, + "test/plan-create-permission.test.ts": 153, + "test/plan-design-floor-fixture.test.ts": 1393, + "test/plan-design-sdk-fixture.test.ts": 2646, + "test/plan-design-with-ui-fixture.test.ts": 6444, + "test/plan-edit-cropped-permission.test.ts": 270, + "test/plan-eng-resume.test.ts": 44, + "test/plan-floor-dx-actor.test.ts": 144, + "test/plan-floor-edit-wrap.test.ts": 113, + "test/plan-floor-review.test.ts": 80, + "test/plan-floor-target.test.ts": 14476, + "test/plan-format-approach-prompt.test.ts": 34, + "test/plan-format-kind-note.test.ts": 37, + "test/plan-pending-question-pty.test.ts": 76, + "test/plan-review-board-feedback.test.ts": 10440, + "test/plan-review-calibration.test.ts": 688, + "test/plan-review-decisions.test.ts": 335, + "test/plan-review-report-recording.test.ts": 8758, + "test/plan-scope-selection.test.ts": 3675, + "test/plan-skill-question-hook-scope.test.ts": 6962, + "test/plan-skill-read-permission.test.ts": 110, + "test/plan-skill-webfetch-permission.test.ts": 3898, + "test/platform-qualification-workflow.test.ts": 40, + "test/post-rename-doc-regen.test.ts": 59, + "test/pr-direct-cases.test.ts": 5718, + "test/pr-shared-input-selection.test.ts": 1298, + "test/pr-title-sync-workflow-safety.test.ts": 47, + "test/pregate-import-graph-paths.test.ts": 8100, + "test/pregate-manifest-paths.test.ts": 6068, + "test/pregate-wtree-refusal.test.ts": 6553, + "test/prompt-audit-manifest.test.ts": 536, + "test/prosons-neutral-posture.test.ts": 40, + "test/provider-model-defaults.test.ts": 64, + "test/pty-askuserquestion-single-line.test.ts": 79, + "test/pty-numbered-option-indent-native.test.ts": 86, + "test/pty-option-selection.test.ts": 47, + "test/pty-output-wake.test.ts": 3285, + "test/pty-screen-session.test.ts": 42, + "test/pty-screen-supervision.test.ts": 10134, + "test/pty-screen-unicode-ap.test.ts": 174, + "test/pty-screen.test.ts": 144, + "test/pty-skill-seeding-wiring.test.ts": 391, + "test/pty-trust-dialog.test.ts": 44, + "test/published-text.test.ts": 58, + "test/qa-browser-preservation.test.ts": 10434, + "test/qa-bugs-fixture.test.ts": 62, + "test/qa-caller-authority.test.ts": 176, + "test/qa-caller-freshness-order.test.ts": 103, + "test/qa-caller-report-observer.test.ts": 57, + "test/qa-checkpoint-evidence.test.ts": 239, + "test/qa-deadline-publication-observer.test.ts": 63, + "test/qa-deadline-selection.test.ts": 81, + "test/qa-deadline.test.ts": 21660, + "test/qa-evidence-selection.test.ts": 125, + "test/qa-evidence.test.ts": 13989, + "test/qa-fix-loop-fixture.test.ts": 5560, + "test/qa-health-rubric.test.ts": 36, + "test/qa-only-browser-probe.test.ts": 1977, + "test/qa-probe-gates.test.ts": 106, + "test/qa-report-fields.test.ts": 43, + "test/qa-supervision-selection.test.ts": 69, + "test/question-tuning-registry-path.test.ts": 49, + "test/readme-skill-lists.test.ts": 43, + "test/redact-context-exemptions.test.ts": 77, + "test/redact-doc-resolver.test.ts": 94, + "test/redact-dotenv-filename-false-positive.test.ts": 77, + "test/redact-engine-autoredact.test.ts": 93, + "test/redact-parcel-id-false-positive.test.ts": 58, + "test/redact-pattern-lint.test.ts": 52, + "test/redact-prepush-emails.test.ts": 37019, + "test/redact-prepush-target.test.ts": 42318, + "test/redact-span-binding.test.ts": 81, + "test/redact-unicode-offsets.test.ts": 162, + "test/regression-1539-review-self-verify.test.ts": 41, + "test/regression-1834-retro-recommendations.test.ts": 31, + "test/regression-issue2091-bsd-mktemp.test.ts": 513, + "test/regression-pr1169-mktemp-fallbacks.test.ts": 130, + "test/regression-transcript-frontmatter-fence.test.ts": 74, + "test/remote-identity-vectors.test.ts": 212, + "test/replay-pr-selection.test.ts": 1401, + "test/resolvers-gbrain-put-rewrite.test.ts": 75, + "test/resolvers-gbrain-save-results.test.ts": 73, + "test/retired-commands.test.ts": 88, + "test/review-army-budget.test.ts": 4143, + "test/review-base-refresh.test.ts": 1423, + "test/review-consensus-lifecycle.test.ts": 78, + "test/review-count-markdown.test.ts": 163, + "test/review-entry-and-design-clarity-au.test.ts": 106, + "test/review-enum-lifecycle.test.ts": 73, + "test/review-finalization-budget.test.ts": 5566, + "test/review-n-plus-one-contract.test.ts": 3812, + "test/review-quality-provenance.test.ts": 76, + "test/router-disabled-skills.test.ts": 1094, + "test/run-shard-child.test.ts": 1345, + "test/runtime-pins.test.ts": 172, + "test/safety-rule-registry.test.ts": 74, + "test/salience-allowlist.test.ts": 61, + "test/schema-version-migration.test.ts": 290, + "test/section-manifest-consistency.test.ts": 58, + "test/session-runner-browse-errors.test.ts": 1498, + "test/session-runner-stream-lifecycle.test.ts": 338, + "test/session-runner-timeout.test.ts": 54, + "test/session-runner-tools.test.ts": 161, + "test/setup-alias-name-uniqueness.test.ts": 17731, + "test/setup-browser-hint.test.ts": 567, + "test/setup-bun-cmd-and-pipe-bugs.test.ts": 499, + "test/setup-cleanup-orphans.test.ts": 306, + "test/setup-codex-design-pdf-runtime.test.ts": 81, + "test/setup-codex-model.test.ts": 93, + "test/setup-codex-scope-review-boundaries.test.ts": 473, + "test/setup-cso-windows-probe.test.ts": 357, + "test/setup-cursor-legacy-skills.test.ts": 474, + "test/setup-deploy-key-presence.test.ts": 148, + "test/setup-deploy-not-deployed.test.ts": 41, + "test/setup-deploy-vercel-trigger.test.ts": 57, + "test/setup-gbrain-bin-invocation-paths.test.ts": 79, + "test/setup-gbrain-path4-caller.test.ts": 3645, + "test/setup-gbrain-path4-structure.test.ts": 75, + "test/setup-gbrain-remote-caller.test.ts": 9128, + "test/setup-help.test.ts": 515, + "test/setup-hook-syntax-gate.test.ts": 98800, + "test/setup-playwright-platform.test.ts": 6847, + "test/setup-prune-stale-generated.test.ts": 2751, + "test/setup-sections-linking.test.ts": 46, + "test/setup-skill-copies.test.ts": 129, + "test/setup-staged-copy.test.ts": 456, + "test/setup-windows-fallback.test.ts": 141, + "test/setup-windows-rerun-refresh.test.ts": 1408, + "test/shard-cli-parity.test.ts": 220, + "test/shared-libs-cancellation.test.ts": 257, + "test/shared-libs-evidence.test.ts": 89, + "test/shared-libs-plan-actor.test.ts": 139, + "test/shared-libs-rendering.test.ts": 2425, + "test/shared-libs-source-reads.test.ts": 15268, + "test/ship-apple-gate.test.ts": 64, + "test/ship-control-flow.test.ts": 3997, + "test/ship-coverage-audit-af.test.ts": 115, + "test/ship-greptile-early.test.ts": 314, + "test/ship-greptile-pr-check.test.ts": 1145, + "test/ship-hook-windows-paths.test.ts": 2185, + "test/ship-measure-bar.test.ts": 222, + "test/ship-measure-loop-skill.test.ts": 70, + "test/ship-pr-liveness-policy.test.ts": 50, + "test/ship-publication-gates.test.ts": 18722, + "test/ship-reentry-gates.test.ts": 65, + "test/ship-review-loop.test.ts": 59, + "test/ship-section-fixture.test.ts": 1638, + "test/ship-skip-requeue.test.ts": 318, + "test/ship-template-redaction.test.ts": 42, + "test/ship-test-detection-markers.test.ts": 1429, + "test/ship-triage-labels.test.ts": 40, + "test/ship-workflow-clarity.test.ts": 92, + "test/shortcut-debt-ledger.test.ts": 180, + "test/sideways-review.test.ts": 72, + "test/skill-browse-state-extraction.test.ts": 215, + "test/skill-budget-regression.test.ts": 407, + "test/skill-check-driver.test.ts": 403, + "test/skill-collision-sentinel.test.ts": 79, + "test/skill-coverage-floor.test.ts": 115, + "test/skill-cross-model-recommendation-emit.test.ts": 52, + "test/skill-md-size-guard.test.ts": 2496, + "test/skill-parser.test.ts": 86, + "test/skill-positional-literals.test.ts": 5711, + "test/skill-preflight-budget.test.ts": 53, + "test/skillify-host-paths.test.ts": 2098, + "test/sol-skill-fixture.test.ts": 3451, + "test/spawnsync-timeout-tripwire.test.ts": 381, + "test/spec-template-invariants.test.ts": 80, + "test/spend-ledger.test.ts": 365, + "test/state-root-parity.test.ts": 1999, + "test/strict-output-capture.test.ts": 212, + "test/strict-output-formats.test.ts": 2337, + "test/strict-output-settlement.test.ts": 4253, + "test/strict-output.test.ts": 51, + "test/sync-gbrain-readiness-fixture.test.ts": 475, + "test/takes-fence-fallback.test.ts": 39, + "test/tasks-section-jq.test.ts": 173, + "test/team-init-hook-shell-neutral.test.ts": 1055, + "test/template-context-parity.test.ts": 36, + "test/terse-build.test.ts": 48, + "test/test-free-shards-git-maintenance.test.ts": 708, + "test/test-free-shards-sandbox-knobs.test.ts": 407, + "test/test-free-shards-settlement-lifecycle.test.ts": 62, + "test/test-free-shards-settlement-ownership.test.ts": 71, + "test/test-health-report.test.ts": 949, + "test/test-health-workflow.test.ts": 43, + "test/test-of-test-ratchet.test.ts": 389, + "test/test-pr-profile.test.ts": 84, + "test/test-value-bar.test.ts": 562, + "test/third-party-actions-recording.test.ts": 639, + "test/third-party-actions.test.ts": 441, + "test/timeline-stop-hook-slug.test.ts": 4770, + "test/touchfiles-facade.test.ts": 67, + "test/touchfiles-map-diff.test.ts": 1611, + "test/tracker-guard-wiring.test.ts": 122, + "test/trial-cause.test.ts": 1074, + "test/typecheck-test-ratchet.test.ts": 76, + "test/uninstall-windows-copies.test.ts": 7745, + "test/v0-dormancy.test.ts": 73, + "test/version-source.test.ts": 60, + "test/voice-directive.test.ts": 110, + "test/windows-free-selection-autoplan-guard.test.ts": 81, + "test/windows-native-workflows.test.ts": 450, + "test/workflow-action-pins.test.ts": 71, + "test/workflow-boundaries-fixture.test.ts": 15322, + "test/workflow-concurrency.test.ts": 48, + "test/workflow-excerpt.test.ts": 170, + "test/workflow-judge-cache.test.ts": 15259, + "test/workflow-required-steps.test.ts": 76, + "test/worktree-isolated-shapes.test.ts": 69, + "test/worktree.test.ts": 5238 } } diff --git a/scripts/test-free-shards.ts b/scripts/test-free-shards.ts index 8b53a9f20..7e73c048a 100755 --- a/scripts/test-free-shards.ts +++ b/scripts/test-free-shards.ts @@ -1707,13 +1707,21 @@ export function exitCodeFor(status: FreeShardStatus): number { return status === 'timed-out' ? 124 : 1; } +/** Per-file deadline for `--record-durations`: an explicit --wall-timeout, else the one-file default. */ +export function recordingWallTimeoutMs(options: Pick): number { + return options.wallTimeoutExplicit ? options.wallTimeoutMs : wallTimeoutForShard(1); +} + /** * `--record-durations`: time every file in its own child (exact per-file wall, * immune to bun's stream buffering) and write the committed seed atomically. * Uses the same isolated, strictly classified children as a normal run. * Run against an immutable checkout; never time while editing its inputs. + * An explicit --wall-timeout sets the per-file deadline, so a file slower than + * the default deadline is timed in full instead of being killed and recorded + * at the deadline. */ -async function recordFreeTestDurations(files: string[], jobs: number): Promise { +async function recordFreeTestDurations(files: string[], jobs: number, wallTimeoutMs: number): Promise { const durations: Record = {}; const failed: string[] = []; const expectedCount = files.length; @@ -1722,7 +1730,7 @@ async function recordFreeTestDurations(files: string[], jobs: number): Promise !(file in TREE_MUTATING)), files.filter(file => file in TREE_MUTATING), jobs, async (file, index) => { const outcome = await runFreeShard([file], index + 1, files.length, { - wallTimeoutMs: wallTimeoutForShard(1), quiet: true, homeGuard: sharedFreeHome, + wallTimeoutMs, quiet: true, homeGuard: sharedFreeHome, }); durations[normalizeRelativePath(file)] = outcome.elapsedMs; if (outcome.status !== 'passed') failed.push(file); @@ -1907,7 +1915,7 @@ async function main(): Promise { } if (options.recordDurations) { - return recordFreeTestDurations(files, fullSuiteJobs()); + return recordFreeTestDurations(files, fullSuiteJobs(), recordingWallTimeoutMs(options)); } if (options.attributeHome) return attributeFreeHomeWriters(files.filter(file => !(file in TREE_MUTATING)), files.filter(file => file in TREE_MUTATING), fullSuiteJobs(), (file, index, homeGuard) => runFreeShard([file], index + 1, files.length, { wallTimeoutMs: wallTimeoutForShard(1), quiet: true, log: () => {}, homeGuard })); diff --git a/test/test-free-shards.test.ts b/test/test-free-shards.test.ts index 2ef9d8fbc..16272b9f8 100644 --- a/test/test-free-shards.test.ts +++ b/test/test-free-shards.test.ts @@ -18,6 +18,8 @@ import { DEFAULT_WALL_TIMEOUT_MS, PER_FILE_WALL_MS, wallTimeoutForShard, + recordingWallTimeoutMs, + parseCliOptions, KNOWN_WINDOWS_INCOMPATIBLE, TEST_ROOTS, TREE_MUTATING, @@ -940,6 +942,11 @@ describe('test-free-shards: wall-timeout scaling', () => { test('an explicit base above the scaled value wins', () => { expect(wallTimeoutForShard(10, 10 * 60_000)).toBe(10 * 60_000); }); + + test('--record-durations times each file under the one-file default unless --wall-timeout is explicit', () => { + expect(recordingWallTimeoutMs(parseCliOptions(['--record-durations']))).toBe(wallTimeoutForShard(1)); + expect(recordingWallTimeoutMs(parseCliOptions(['--record-durations', '--wall-timeout', '1200']))).toBe(1_200_000); + }); }); diff --git a/test/windows-native-workflows.test.ts b/test/windows-native-workflows.test.ts index 0023e3228..838d7c528 100644 --- a/test/windows-native-workflows.test.ts +++ b/test/windows-native-workflows.test.ts @@ -62,11 +62,14 @@ test('a record_durations dispatch times each Windows-safe file alone and uploads expect(job.if).toBe('${{ inputs.record_durations }}'); expect(job['runs-on']).toBe('windows-latest'); const record = job.steps.find((step: any) => step.name === 'Time every Windows-safe file alone'); - expect(record.run).toBe('bun run test:windows --record-durations'); + expect(record.run).toBe('bun run test:windows --record-durations --wall-timeout 1200'); expect(record.env.GSTACK_FREE_TEST_DURATIONS).toBeUndefined(); const rename = job.steps.find((step: any) => step.name === 'Name the recording as the Windows seed'); expect(rename.if).toBe('always()'); expect(rename.run).toBe('cp scripts/free-test-durations.json "$RUNNER_TEMP/free-test-durations-windows.json"'); + const logs = job.steps.find((step: any) => step.name === 'Upload full recording logs'); + expect(logs.if).toBe('always()'); + expect(logs.with['include-hidden-files']).toBe(true); expect(job.steps.at(-1).with.name).toBe('free-test-durations-windows'); });