#574

fix(plan): echo citable observation IDs when finish basis is unknown

OpenMadgeaaaaawants to merge intofrom

The Supervisor must copy an opaque 32-hex observation id verbatim into finish_basis_ids. A single dropped nibble produces an id that does not exist in state, so compile_plan rejects the finish and the retry keeps mis-copying, marking an otherwise-successful run as failed.

Include the list of valid citable observation IDs in the PlanValidationError so the next retry copies from it instead of reconstructing the hex id from memory. The seam still refuses (no fuzzy matching); it only feeds the correction back via validation_feedback.

Activity

2
Madgeaaaaa9h ago

Problem. The Supervisor must copy an opaque 32-hex observation id verbatim into finish_basis_ids. A single dropped nibble (e.g. ...f8 → ...f) produces an id that does not exist in state, so compile_plan rejects the finish with unknown finish basis observations. Retries re-ask the model and it keeps mis-copying, so a run whose evidence is otherwise complete ends up FAILED.

Root cause. Observation ids are runtime-generated opaque tokens that must match exactly.

Fix. Echo the list of valid citable observation IDs in the PlanValidationError, so the next retry copies from the list instead of reconstructing the hex id from memory. The deterministic seam still refuses the bad finish (no fuzzy matching); it only feeds the correction back through validation_feedback.

Trade-off. This mitigates "reconstruct from memory" but does not eliminate "copy an opaque 32-hex token" — a structural fix (short readable observation ids) is left out of scope.

Tests: added test_unknown_finish_basis_error_lists_citable_observation_ids.