Skip to content

Preserve last good config on typed-invalid reloads#96

Merged
frantic-openai merged 1 commit into
mainfrom
codex/fix-typed-workflow-reload
Jul 17, 2026
Merged

Preserve last good config on typed-invalid reloads#96
frantic-openai merged 1 commit into
mainfrom
codex/fix-typed-workflow-reload

Conversation

@frantic-openai

Copy link
Copy Markdown
Collaborator

Context

A YAML-valid, typed-invalid reload replaced cached config and prompt, then made Config.settings! raise.

TL;DR

Keep the last good typed workflow when a reload cannot be parsed.

Summary

  • Cache parsed settings with each workflow store state.
  • Reject typed-invalid reloads before config and prompt become current.
  • Keep preflight errors visible while runtime getters use last known good values.

Alternatives

  • Did not fold semantic tracker preflight into store admission; that is a separate finding.
  • Did not add orchestrator rescue logic; invalid typed state no longer reaches settings!.

Test Plan

  • mix test test/symphony_elixir/extensions_test.exs:104
  • mix test --cover --seed 659305
  • make -C elixir all

Summary:
- Cache parsed settings with workflow state and reject typed-invalid
  reloads.
- Keep operational getters on last known good while preflight surfaces
  reload errors.
- Add regression coverage for valid and typed-invalid reload
  transitions.

Rationale:
- YAML-valid invalid values previously replaced the cache and made
  settings! raise.
- Reloading config and prompt atomically prevents scheduler crashes
  without broadening semantic preflight.

Tests:
- mix test test/symphony_elixir/extensions_test.exs:104
- mix test test/symphony_elixir/core_test.exs
- mix test test/symphony_elixir/workspace_and_config_test.exs
- mix test --cover --seed 659305
- make all

Co-authored-by: Codex <codex@openai.com>
@frantic-openai
frantic-openai merged commit cdb466a into main Jul 17, 2026
2 checks passed
@frantic-openai
frantic-openai deleted the codex/fix-typed-workflow-reload branch July 17, 2026 20:06
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