AltimateAI / AltimateAI/altimate-code

config: harden config-load failure handling after Zod→Effect Schema migration

Open
#995 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
811
Forks
134
Avg merge
3d 2h
Merged PRs (30d)
50

Description

Found during v0.9.1 release review (Chaos-Gremlin + others). Two inconsistent, risky failure modes when a pre-existing config trips the new strict Effect Schema (`topLevelExtraKeys` throws on any unrecognized top-level key):

- **Global config** (`packages/opencode/src/config/config.ts:~389`): `loadGlobal().pipe(Effect.orElseSucceed(() => ({})))` — a parse failure silently resets the ENTIRE global config (providers, models, permissions, agents, MCP) to `{}`, with only an `Effect.logError` most users never see. Silent config loss on upgrade.
- **Project-local config** (`config.ts:~757`): `loadInstanceState(...).pipe(Effect.orDie)` — hard crash on a stale/removed top-level key, killing session start in that directory.

Fix: (1) surface a user-visible warning when global config falls back to defaults; (2) reconcile the asymmetry so both name the offending key and fail gracefully (ignore only the malformed source, don't nuke all config or crash). Low probability (fork shipped 0.9.0-beta.2 on this code) but high impact when it fires.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.