Skip to content

feat(config): governed v8 defaults-flip frame — conservative preset, migration, rollback, inventory (#2504) - #2797

Merged
zaxbysauce merged 3 commits into
mainfrom
fix/issue-2504-v8-defaults-flip
Sep 15, 2026
Merged

zaxbysauce merged 3 commits into
mainfrom
fix/issue-2504-v8-defaults-flip

Conversation

@zaxbysauce

@zaxbysauce zaxbysauce commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Closes #2504

PR head: see the commit history (synced with main; release-please owns versions).

Summary

Ships the governance frame required by issue #2504 (Workstream F PR 12 of 21, consolidating EPIC #1677) around the already-armed v8 defaults flips — the release-gated auto_review.enabled flip (approved burn-in pin + major>=8 gate) and the parallel-first new-plan default (v7.132.0). No new default flip, no version changes.

Invariant audit

  • 1 (plugin init): not touched — no server()-resolution path changes; the preset layer lives in the pre-existing synchronous buildConfigWithMeta; bun run build exit 0 + Node-ESM await import('./dist/index.js') OK; no new init-path I/O.
  • 2 (runtime portability): touched — build + Node-ESM import verified green; no bun: imports introduced; plugin shape { id, server } unchanged.
  • 3 (subprocesses): not touched — no new spawns; the stamp reuses the file-local atomicWriteFileSync already used by applySafeAutoFixes.
  • 4 (.swarm containment): not touched — the stamp writes the existing config file path under the existing backup flow; no new .swarm/ artifacts.
  • 5 (plan durability): not touched — save_plan's change only selects the new-plan parallelization_enabled default; ledger/projection paths untouched; plan-schema default stays false.
  • 6 (test_runner safety): not touched — validation used shell commands and file-scoped bun test only.
  • 7 (test writing): touched — bun:test only; new files under the 500-line cap; _internals DI seam (no new mock.module); canonicalMkdtemp everywhere (check:test-tmpdir exit 0); check:mock-cleanup exit 0.
  • 8 (session state): not touched — no new session-scoped state.
  • 9 (guardrails/retry): not touched.
  • 10 (chat/system msg): not touched — no chat-transform changes.
  • 11 (tool registration): not touched — no new tools/commands/agents; validateConfigKey case added per the schema-introspection coverage test; check:events pass; check:registry-citations exit 0 (no new anchor drift).
  • 12 (release/cache): touched per protocol — pending release fragment docs/releases/pending/2504-v8-defaults-governance.md shipped; no version/CHANGELOG/.release-please-manifest.json hand edits.

Test plan

  • Frozen-contract suites: bun test tests/unit/config/conservative-preset.test.ts tests/unit/config/defaults-flip-upgrade.test.ts tests/unit/config/defaults-flip-rollback.test.ts tests/unit/commands/doctor-defaults-flip-markdown-2504.test.ts -> 45 pass / 0 fail (preset schema/loader/release-seam contracts incl. agents-block + user-config fallback + explicit-default + fail-open unknown value; upgrade/stamp idempotency incl. user-config stamp path; per-flip kill switches; markdown section).
  • Blast radius: bun test src/services/config-doctor.test.ts tests/unit/services/config-doctor-migration-fix.test.ts tests/unit/config-doctor-startup-isolation.test.ts tests/unit/config/parallelization-default.test.ts tests/unit/config/loader-unknown-top-level-warn.test.ts tests/unit/config/adversarial-schema.test.ts tests/unit/scripts/generate-config-schema.test.ts tests/unit/agents/reviewer-auto-review-opt-in.test.ts tests/unit/review/cost-baseline.test.ts tests/unit/utils/atomic-write-ratchet.test.ts tests/unit/scripts/retention-registry-rows.test.ts tests/unit/hooks/delegation-gate-parallel-guidance-2532.test.ts tests/unit/config/auto-select-architect.test.ts -> all pass (the single doctor-suite local failure is the documented pre-existing XDG-override artifact in getConfigPaths, clean on CI).
  • Note on src/services/config-doctor.test.ts (changed file): the shared fixture now pins config_format_version: 3 and the SC-006 absent-version test passes undefined explicitly, so the version-gating suite keeps testing the v1 path with explicit overrides.
  • Gates: bun run typecheck -> exit 0; bunx @biomejs/biome ci <changed files> -> exit 0 (repo-wide 94 pre-existing findings identical at base — pristine-archive parity verified); bun run check:events, check:mock-cleanup, check:invariants, check:test-file-cap, check:registry-citations, scripts/check-test-tmpdir.sh, scripts/check-test-clock.sh -> all exit 0; bun run build -> exit 0; Node-ESM import of ./dist/index.js -> OK; scan-deferred.sh -> clean; bun run drift:check --enforce -> one LOCAL-ONLY capture-hash finding (pr-standards.yml vs this machine's captured evidence; the workflow file is untouched by this diff and a pristine git archive HEAD run exits 0).
  • Independent validation: 10-lane swarm review (6 base + 9 matched micro families), 2 reviewer shards, critic challenge on all HIGH findings; fix round re-run reviewer + final critic gates on the post-fix diff.

…migration, rollback, inventory (#2504)

Ships the governance frame required by #2504 around the armed v8 defaults
flips (auto_review release-gated burn-in flip; parallel-first new-plan
default from v7.132.0). No new default flip, no version changes.

- preset key ('default'|'conservative'): conservative restores the pre-flip
  v7 defaults (auto_review disabled, serial new plans) as the
  lowest-precedence resolution layer; explicit keys always win
- migratePresetsConfig: exempt the new preset enum values from the v6.12
  dormant-legacy-key strip so the conservative preset survives configs with
  an agents block (the installer's own shape) — final-critic round-1 fix,
  with agent-block and legacy-value regression coverage
- config doctor: DEFAULT_FLIPS info findings (kill switch + preset per flip,
  gated config_format_version < 3), 'Defaults changes (v8)' report section,
  and an idempotent --fix acknowledgment stamp (closes the version-never-
  written-back gap); availableMigrations rename surface unchanged
- save_plan: preset-aware new-plan parallelization default via new
  _internals.loadPluginConfigWithMeta seam (fail-open to v8 default)
- docs: docs/defaults-governance.md inventory (evidence citations, K3
  UX-3/6/7 dispositions, non-goals, kill switches, rollback, cost delta);
  trust-posture amendments in architecture/installation/design-rationale;
  Compatibility Matrix in installation.md; regenerated schema artifacts
- tests: conservative-preset (incl. agents-block survival), defaults-flip-
  upgrade, defaults-flip-rollback (frozen #2504 acceptance contracts);
  parallelization-default hardened with XDG isolation; config-doctor.test.ts
  fixture pinned to the current format version (line-neutral per FR-006)
- catalog.ts producer citations repointed for the index.ts line shift
@github-actions

Copy link
Copy Markdown
Contributor

Drift check report

Found 2 drift finding(s): 0 error, 0 warning, 2 notice.

required-check-contract (2)

  • 🔵 notice scripts/required-check-contract.json: [RULESET_DIVERGENCE] intended-required context "drift" is not yet required by the captured ruleset
  • 🔵 notice scripts/required-check-contract.json: [RULESET_DIVERGENCE] intended-required context "drift" is not present for every expected event in captured external workflow evidence

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It reshapes behavior-changing configuration defaults across resolution, doctor, and save_plan and contains a confirmed summary-count discrepancy, so a human should verify the governance behavior before approval.

Pull request overview

This PR adds the governance frame around opencode-swarm's already-armed v8 default flips (the release-gated auto_review.enabled flip and the parallel-first new-plan default). It introduces no new default flip and no version changes; instead it supplies the escape hatch, migration surface, inventory, and doc corrections that #2504 requires. It fits into the config-resolution and /swarm config doctor subsystems, plus the save_plan new-plan default.

Changes:

  • New top-level preset ("default" | "conservative") key; CONSERVATIVE_PRESET_BASE applied as the lowest-precedence deep-merge layer so explicit user keys always win, with a defense-in-depth preset guard in the auto-review release gate, plumbed at plugin init, the final-review gate, and save_plan.
  • Config doctor surfaces governed defaults-flip info findings while config_format_version < 3, adds an idempotent --fix acknowledgment stamp to version 3, and a "Defaults changes (v8)" report section.
  • New docs/defaults-governance.md inventory plus amended trust-posture/compatibility docs, regenerated schema JSON + config table, and a release fragment; three new frozen-contract test suites.
File summaries
File Description
src/config/schema.ts Adds preset schema field, CONSERVATIVE_PRESET_BASE, and preset guard in autoReviewEnabledByRelease
src/config/loader.ts Exempts preset enum from the v6.12 dormant-key strip; applies conservative base layer (step 3b)
src/services/config-doctor.ts Adds DEFAULT_FLIPS, defaults-flip findings, preset validation, and the --fix version stamp — summary info count not updated for the new findings
src/tools/save-plan.ts Adds _internals config-load seam and preset-aware new-plan parallelization default — a relocated comment now mislabels the config import
src/tools/phase-complete/gates/final-review-gate.ts Passes preset into the release context (defense-in-depth)
src/index.ts Plumbs config.preset into init-time auto-review resolution
src/commands/doctor.ts Renders the "Defaults changes (v8)" markdown section
src/observability/catalog.ts Repoints two src/index.ts producer citations (+8 line shift) — verified correct
src/services/config-doctor.test.ts Stamps the shared test config at v3; hardens the version-default test
tests/unit/config/*.test.ts New conservative-preset / upgrade / rollback suites; XDG isolation for parallelization-default
docs/* (governance, installation, configuration, architecture, design-rationale, schema, release fragment) Inventory, compatibility matrix, and amended trust-posture documentation
Review details
  • Files reviewed: 20/20 changed files
  • Comments generated: 2
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +2244 to +2260
for (const flip of DEFAULT_FLIPS) {
if (configVersion < flip.sinceVersion) {
findings.push({
id: 'defaults-flip',
title: `v8 default change pending for "${flip.field}"`,
description:
`Default flips from ${flip.v7Default} to ${flip.v8Default}. ` +
`Kill switch: set ${flip.killSwitch}. ` +
`Restore all v7 defaults with preset: "${flip.preset}". ` +
`Evidence and rollback: ${flip.evidence} (#2504).`,
severity: 'info',
path: flip.field,
currentValue: 'v7 default',
autoFixable: false,
});
}
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed and fixed in ea1c3a8: the severity counts are now recomputed after the defaults-flip emission loop, so summary.info (and the .swarm/config-doctor.json artifact summary) include the new findings. Verified by probe: a v7-era config now reports Info: 2 matching the 2 defaults-flip rows, and tests/unit/commands/doctor-defaults-flip-markdown-2504.test.ts + the upgrade suite pin the behavior.

Comment thread src/tools/save-plan.ts Outdated
Test User added 2 commits September 15, 2026 09:50
Fixes from the PR #2797 swarm-pr-review round (10 lanes, 2 reviewer shards,
critic challenge):

- PRR-004 (MEDIUM): the user-config-alone recovery fallback now mirrors
  steps 3/3b (migratePresetsConfig + conservative base layer), so a broken
  project config no longer defeats the conservative preset; the schema
  preprocess could otherwise fill a partial auto_review section with the
  release-gated v8 default before any preset-aware consumer saw it
- PRR-001/006 (MEDIUM): runConfigDoctor recomputes severity counts after
  the defaults-flip emission so the report header and the
  .swarm/config-doctor.json artifact include the new findings
- PRR-026 (MEDIUM): the --fix acknowledgment stamp strips a UTF-8 BOM
  before JSON.parse (matching the loader) instead of silently skipping
- PRR-005 (LOW): stamp failures now log (fail-open, but signaled)
- PRR-002 (LOW): the 'QA gate check' comment moved back above the
  qa-gate-profile import it describes
- PRR-021 (MEDIUM): design-rationale automation example now shows the
  actual schema defaults (read-only capabilities on), matching the
  amended bullet
- Coverage: user-config stamp path, formatDoctorMarkdown 'Defaults changes
  (v8)' section (formatDoctorMarkdown now exported), user-config-alone
  fallback with preset, explicit-'default' and unknown-preset fail-open
  pins (PRR-011/012/013/014/015/017/018)

Also syncs the branch with main (release 7.183.1) refreshing the stale
release-owner-guard base SHA; the PR body was restructured to the repo's
commit-pr contract (## Summary / ## Invariant audit / ## Test plan).
@zaxbysauce
zaxbysauce added this pull request to the merge queue Sep 15, 2026
@zaxbysauce

Copy link
Copy Markdown
Collaborator Author

🤖 Multi-Stage PR Review

Pipeline: MiniMax-M2.7-highspeed (orientation) (context pack) → MiniMax-M2.7-highspeed (explorer) + MiniMax-M2.7-highspeed (explorer B) (parallel explore, distinct lenses) → GLM-5-turbo (critique) ↔ GLM-5-turbo (critique) (cross-critique) → MiniMax-M2.7-highspeed (fallback arbiter) (arbiter: blind-spot + synthesize)
Commit reviewed: ea1c3a862a37


Looking at this PR carefully — it's the governance frame for v8 defaults flips (#2504): a preset config key, config-doctor migration/acknowledgment, preset-aware save_plan, docs, and tests. Let me challenge every confirmed finding with evidence.


🔍 PR Intent

Reconstructed from issue #2504, PR description, and commit messages:

  • O-001: Add preset top-level config key ("default" | "conservative") — conservative restores pre-flip v7 defaults as lowest-precedence layer
  • O-002: Config doctor surfaces defaults-flip info findings for unacknowledged configs (config_format_version < 3); --fix stamps config_format_version: 3 idempotently
  • O-003: save_plan consults resolved preset for new-plan parallelization_enabled default
  • O-004: docs/defaults-governance.md inventories every governed flip with evidence, kill switches, rollback
  • O-005: Amend stale "all default false" overgeneralizations in architecture.md / installation.md / design-rationale.md
  • O-006: Regenerate schema and generated docs

📦 Implementation Summary

The PR adds preset: "default" | "conservative" to the schema, applies CONSERVATIVE_PRESET_BASE (auto_review.enabled: false) as a deep-merge base layer in buildConfigWithMeta step 3b (and mirrors it in the user-config-alone fallback path), adds DEFAULT_FLIPS table to config-doctor.ts for info-severity findings, adds a stamp in runConfigDoctorWithFixes to acknowledge, adds preset-aware logic in save_plan, updates three doc files to describe the actual default posture, and ships three new test files plus test additions.


✅ / ⚠️ / ❌ Intended vs Actual

Obligation Status Evidence
O-001 SUPPORTED src/config/schema.ts:3667preset enum added; loader.ts:707 — base-layer injection
O-002 SUPPORTED config-doctor.ts:2234DEFAULT_FLIPS loop; config-doctor.ts:2762 — stamp logic
O-003 SUPPORTED save-plan.ts:942conservativePresetActive flag; save-plan.ts:1011 — default injected
O-004 SUPPORTED docs/defaults-governance.md — full inventory with evidence and kill switches
O-005 SUPPORTED architecture.md:1925, installation.md:809, design-rationale.md:303 — all amended
O-006 SUPPORTED opencode-swarm.schema.json regenerated; docs/configuration.md table updated

🚨 Confirmed Findings

Only findings with concrete PR-introduced defects. Everything below is grounded in exact file:line evidence.

[MEDIUM] xdgDir temp directory leaks when test throws before cleanup

  • Location: tests/unit/config/defaults-flip-upgrade.test.ts:35 (and line 161)
  • Why it matters: xdgDir created via canonicalMkdtemp in beforeEach has no afterEach cleanup. If a test body throws before its own fs.rmSync call (line 161's dir), xdgDir leaks to disk permanently for the test process lifetime. The same pattern exists for the dir created inside the --fix stamps USER config test at line 161 — fs.rmSync(dir) is inline, not in afterEach.
  • Evidence: beforeEach (line 35) creates xdgDir but afterEach (line 35–43) only restores XDG_CONFIG_HOME and cleans xdgDir itself — it does not clean the dir variables created inside individual tests at lines 58–65 and 161. The parallelization-default test (line 20–53) has the same pattern fixed with an explicit fs.rmSync(xdgDir, ...) in afterEach; this file does not.
  • Fix direction: Add fs.rmSync(xdgDir, { recursive: true, force: true }) to afterEach (mirroring parallelization-default.test.ts:50–54), and move the --fix stamps USER config test's fs.rmSync(dir, ...) inline call into afterEach.

[MEDIUM] stripUnrecognizedKeys receives wrong input in user-config fallback path

  • Location: src/config/loader.ts:845
  • Why it matters: In the user-config-alone fallback path, stripUnrecognizedKeys now receives userPresetReady (post-migration + post-conservative-base) instead of userSanitized. The conservative base layer injects auto_review: { enabled: false } before safeParse is called. If the user's partial auto_review section (e.g. { mode: "gate" }) then triggers a partial-success parse with unexpected Zod issues, stripUnrecognizedKeys will strip keys based on userPresetReady's error shape — which includes issues from the pre-filled section — potentially stripping different keys than it would have from userSanitized.
  • Evidence: loader.ts:815–822userPresetReady is constructed from userPresetMigrated.preset === 'conservative' ? deepMergeFn(CONSERVATIVE_PRESET_BASE, userPresetMigrated) : userPresetMigrated, then passed to safeParse at line 824. The resulting userParseResult.error is the error from parsing userPresetReady, whose shape includes issues from the pre-filled base. Line 845 then passes userPresetReady (not userSanitized) to stripUnrecognizedKeys.
  • Fix direction: Use userPresetMigrated (pre-base-layer) as the strip input, matching what would have happened on the normal merge path where the fallback ladder calls stripUnrecognizedKeys(userSanitized, ...). The conservative base is already applied to the parsed result via the deep-merge before Zod — it does not need to be in the strip input.

[LOW] Infinity bypasses stamp idempotency guard silently

  • Location: src/services/config-doctor.ts:2795
  • Why it matters: shouldStamp is typeof currentVersion !== 'number' || !Number.isInteger(currentVersion) || currentVersion < 0 || currentVersion < CURRENT_CONFIG_FORMAT_VERSION. Infinity < 3 is false, so shouldStamp = false — the stamp is silently skipped, leaving Infinity as the config version. A future bump of CURRENT_CONFIG_FORMAT_VERSION past Infinity (impossible today but not structurally prevented) would still not restamp. The schema caps at 9007199254740991 but the guard doesn't explicitly reject InfinityInfinity passes typeof === 'number' and Number.isInteger(Infinity) is false.
  • Evidence: config-doctor.ts:2795 — the guard chain; Infinity triggers !Number.isInteger(Infinity)false, then Infinity < 0false, then Infinity < 3false, so the overall expression is false.
  • Fix direction: Add an explicit !Number.isFinite(currentVersion) guard (or use Number.isSafeInteger) to reject Infinity and -Infinity explicitly.

🔬 Unverified but Plausible Risks

These look suspicious but cannot be structurally proven without runtime validation.

  • Risk: deepMergeFn mutates CONSERVATIVE_PRESET_BASE in place.

    • Why suspicious: src/config/loader.ts:711deepMergeFn(CONSERVATIVE_PRESET_BASE, mergedRaw) is called with CONSERVATIVE_PRESET_BASE as first argument. If deepMergeFn mutates its first argument, the constant is corrupted for the process lifetime.
    • What would verify it: Inspect deepMergeFn body for in-place mutation, or add Object.freeze + runtime deepEqual assertion in a stress test with multiple loader invocations.
  • Risk: The conservative preset fallback in step 3b could have XDG/read-order issues.

    • Why suspicious: The fallback in loader.ts:815 is a separate code path (fires when project config is unparseable). The user-config fallback is a less-tested execution path than the normal merge ladder.
    • What would verify it: Integration test that writes a broken project config + a conservative user config and asserts the user fallback correctly materializes auto_review.enabled: false.

🧪 Test / Coverage Gaps

  • Gap: defaults-flip-rollback.test.ts tests resolveAutoReviewConfig at a simulated v8 release but does not test the full loader path (loadPluginConfig) with the conservative preset — only the direct unit function. A regression in buildConfigWithMeta's step 3b deep-merge would not be caught.
    • Evidence: defaults-flip-rollback.test.ts:24 — direct resolveAutoReviewConfig call; no loadPluginConfig or loadPluginConfigWithMeta in the file.
  • Gap: The conservative preset rollback test does not verify that a v8-era config without a preset key still resolves to enabled: true at v8. Without this negative assertion, a future regression that makes the preset become the default (instead of the absent/omitted case) would go undetected.
    • Evidence: defaults-flip-rollback.test.ts — all three tests either set an explicit enabled or set preset: 'conservative'; no test for {} (no preset, no explicit key) at v8.

📋 Shipped-vs-Claimed Gaps

None found. The docs/defaults-governance.md inventory covers both flip entries with evidence citations; the kill switches are documented and tested; the conservative preset behavior is described accurately in all three amended docs files; the Compatibility Matrix correctly shows all four config scenarios.


📝 Merge Recommendation

[APPROVE_WITH_FIXES]

Two medium findings (temp-dir leak, wrong strip input) and one low (Infinity bypass) are real, fixable defects introduced by this PR. No CRITICAL findings survive the challenge.

Check Result
No CRITICAL findings
No unresolved STEALTH_CHANGE
No UNSUPPORTED obligations
Test coverage adequate ⚠️ 2 coverage gaps (not blockers)
No hardcoded secrets
All async errors handled
Input validation present
No broken agent role boundaries
Prompt format contracts intact
Lockfile consistent

🔁 Validation provenance

Findings KILLED (refuted with evidence):

  • loader.ts:199 null guard — raw is a required Record<string, unknown> from callers; contract guarantees non-null
  • loader.ts:822 type safety — Zod safeParse failure always produces defined error; TypeScript's type narrowing is correct
  • loader.ts:845 input diverge — intentional; fallback must mirror steps 3/3b for conservative preset survival per PRR-004 review contract
  • schema.ts:622 plain string type — enum values validated by safeParse before reaching autoReviewEnabledByRelease; any invalid string is rejected earlier
  • schema.ts:639 null guard — context has default {}; preset is typed optional/string from Zod
  • doctor.ts:186 null guard — findings is a required ConfigFinding[] field on ConfigDoctorResult
  • config-doctor.test.ts:2926 test correctness — both {} and { config_format_version: undefined } produce absent key in parsed object; equivalent test path
  • config-doctor.ts:105 data mismatch — execution_profile.parallelization_enabled is the correct plan-file path; the kill switch description says "(per plan)" which is accurate
  • save-plan.ts:954 error handling — intentional fail-open design; documented in PR description and code comment
  • defaults-flip-upgrade.test.ts:78 stale data — file read + parse is synchronous; no async flush gap exists
  • defaults-flip-upgrade.test.ts:102 malformed version — schema rejects non-integer versions (minimum: 0, maximum: 9007199254740991)
  • parallelization-default.test.ts:53 silent catch — intentional; ENOENT is expected; Bun test runner isolates each file
  • parallelization-default.test.ts:43 state leakage — afterEach restores XDG_CONFIG_HOME in a try/catch before deletion; safe
  • doctor.ts:189 markdown injection — DEFAULT_FLIPS descriptions are static strings from internal constants; not user-derived
  • loader.ts:711 deep-merge mutation — CONSERVATIVE_PRESET_BASE is Readonly and documented as a contract; the code is written assuming pure semantics
  • loader.ts:825 inconsistent input — userPresetReady is the correct input because the conservative base must be in the error-provenance path
  • schema.ts:672 runtime mutability — documented as a design constraint; not a runtime bug
  • index.ts:1680 kill-switch bypass — autoReviewEnabledByRelease checks context.preset === 'conservative' first; release gate never runs under conservative
  • save-plan.ts:944 logic null guard — empty string is intentional fallback to CWD; documented behavior
  • config-doctor.ts:2796 silent noop — no file to stamp exists; no-op is correct
  • config-doctor.ts:2817 fail-open stamp — intentionally non-fatal; documented
  • conservative-preset.test.ts:269 isolation gap — catch in afterEach still runs the restore; file-scoped runner
  • conservative-preset.test.ts:261 assertion weakness — intentional DI seam test; the seam itself is tested separately
  • defaults-flip-rollback.test.ts:25 XDG isolation — confirmed existing gap; not introduced by this PR (the PR's own test file conservative-preset.test.ts correctly adds XDG isolation)
  • defaults-flip-upgrade.test.ts:35 resource leak — KILLED as null, REINTRODUCED above as confirmed MEDIUM
  • defaults-flip-upgrade.test.ts:161 resource leak — KILLED as null, REINTRODUCED above as confirmed MEDIUM
  • parallelization-default.test.ts:20 concurrency — KILLED; Bun runs tests in the same file serially by default

Findings SURVIVING (with new evidence):

  • defaults-flip-upgrade.test.ts temp-dir leaks → MEDIUM (confirmed above)
  • loader.ts:845 wrong strip input → MEDIUM (confirmed above)
  • config-doctor.ts:2795 Infinity bypass → LOW (confirmed above)

Blind-spot findings added: None — the PR touches a well-tested surface with good review coverage; no new structural defects found beyond the confirmed items above.

Documentation findings (docs only, not PR-introduced code defects): All five documentation items (compatibility matrix rows, migration steps inconsistency, v7 release qualification, behavioral documentation changes) describe the PR's intentional documented behavior. None are code defects.


🔒 Reviewed by a 3-model cross-family adversarial debate (architect → dual-lens parallel explorers → cross-critique → arbiter) for high recall with low false-positive noise. Findings are advisory — verify before acting.

Merged via the queue into main with commit ae07d84 Sep 15, 2026
46 of 47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Workstream F] PR 12 of 21: Flip only proven defaults in v8 with migration and rollback

2 participants