Skip to content

fix: approve current Claude --settings recipes (drift guard) + un-retire test/integration/server - #846

Merged
danshapiro merged 3 commits into
mainfrom
fix/base-suite-green
Oct 14, 2026
Merged

danshapiro merged 3 commits into
mainfrom
fix/base-suite-green

Conversation

@danshapiro

Copy link
Copy Markdown
Owner

What

Two defects made every LOCAL full-suite run on main red since ~Oct 3, masked because cloud vitest lanes never run test/integration/server (excluded from the image).

1. Real regression: every managed Claude launch was rejected (fix)

0908a4624 (Oct 4) rewrote the Claude bell commands in freshell-platform, but the SHA-256 allow-list that approves the --settings payload in freshell-runtime-protocol was never updated — so validate_managed_terminal_args rejected the recipe every managed Claude launch built, with managed provider arguments must use an approved non-secret recipe. Not user-facing today (managed Claude is not yet enabled in runtime-provider-capabilities.json), but it would have broken the moment Claude went managed.

  • Approve the current Unix/Windows recipe digests; keep the superseded ones so durable argv persisted under them keeps validating.
  • Extract APPROVED_CLAUDE_SETTINGS_DIGESTS.
  • Add a dev-dep on freshell-platform plus a drift-guard test that runs the CURRENT recipes through validate_managed_terminal_args — recipe drift now fails rust-gate instead of production.

2. Test-infra: test/integration/server re-added but still "retired" (test)

The directory was re-added 2026-09-28 as the live managed-provider parity suites but stayed on retiredNodeBackendPaths, so the "retired roots stay absent" architecture test failed on every local run, and .dockerignore still carried the stale "retired roots" comment.

  • Remove the stale list entry (with a note explaining the path is a live production test root).
  • Document in .dockerignore that the cloud-image exclusion is deliberate: the parity suites need a locally built Rust server binary and a Docker daemon, so local lanes cover them.

Validation

  • cargo test -p freshell-runtime-protocol: 33 passed, including the new drift guard (which failed RED with the exact drift before the fix).
  • Previously-failing files, isolated AND combined runs: managed-provider-parity.test.ts, provider-parity-contract.test.ts, fresh-agent-only-runtime.test.ts — all green.
  • Pre-push gate: fmt, clippy, typecheck, targeted cargo tests for the changed crates and all dependents — green.

…pin them with a drift guard

0908a46 rewrote the Claude bell commands in freshell-platform without
updating this crate's approved --settings digests, so every managed
Claude launch was rejected ("managed provider arguments must use an
approved non-secret recipe") for 10 days. The cloud vitest lanes never
run test/integration/server, which masked it.

- Add the current Unix/Windows recipe digests; keep the superseded ones
  so durable argv persisted under them keeps validating.
- Extract APPROVED_CLAUDE_SETTINGS_DIGESTS.
- Add a dev-dep on freshell-platform and a drift-guard test that
  validates the CURRENT recipes through validate_managed_terminal_args,
  so recipe drift fails rust-gate instead of production.
…exclusion

The directory was re-added 2026-09-28 as the live managed-provider parity
suites but stayed on retiredNodeBackendPaths (failing every LOCAL
architecture run since Oct 3) and kept its stale 'retired roots' comment
in .dockerignore. Remove the stale list entry; document that the
cloud-image exclusion is deliberate — the parity suites need a locally
built Rust server binary and a Docker daemon, so local lanes cover them.
@danshapiro
danshapiro merged commit af992dc into main Oct 14, 2026
7 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.

1 participant