Skip to content

explore: resolve a solution by content_signature in solutions and curate - #124

Open
cafzal wants to merge 1 commit into
mainfrom
claude/resolve-signature
Open

explore: resolve a solution by content_signature in solutions and curate#124
cafzal wants to merge 1 commit into
mainfrom
claude/resolve-signature

Conversation

@cafzal

@cafzal cafzal commented Aug 2, 2026

Copy link
Copy Markdown
Owner

The gap

certify's per_pick names the certified plan that beats a dominated finalist by content_signature, and its own next_steps says to go curate that point in its place. Neither explore solutions nor explore curate accepted a signature — both wanted solution_id.

So the prescribed move meant listing the whole exact overlay and scanning by eye. On shift_coverage_staffing that listing is 80,746 chars for 253 points: it overflows the response cap and spills to a file, putting the answer back on disk. That is the exact round trip per-pick verdicts were added to remove — the certificate produced the answer, and the surface made you go find it again.

Surfaced by driving the example end to end on current main: both curated picks came back dominated, and re-curating required the spill file to map signature → id.

Why this shape

curate already keyed remove and rename on content_signature. Pinning was the odd one out, so this is the action agreeing with itself rather than a new convention. feedback is the other precedent — it has taken "solution_id OR content_signature" all along.

Resolution is scoped to the run source/scenario selects: the same plan carries the same signature in the heuristic run and the exact overlay, so the caller says which one it means. An unresolved signature returns the surface's standard error and names the run it searched, because passing the wrong source is the likely mistake.

Layering follows the existing split: engine helper (explorer.resolve_signature) beside get_solution, routing prose in certify's next_steps, read-side teaching in solution_interpreterReading the Certificate, contract language in the tool docstring and the architecture tools table.

Tests

910 passed / 2 skipped. The one that matters is test_certify_routing_round_trips — it executes the certificate's own instructions verbatim (certify → curate the named signature from source="exact" → unpin the beaten one → re-certify) and asserts the second certificate reports every remaining finalist optimal. A per-pick verdict the user can't act on without reading files off disk is the defect being closed, so the test closes the loop rather than checking the parameter is accepted.

certify's per_pick names the certified plan that beats a dominated finalist by
content_signature, and its next_steps tells you to go curate that point in its
place. Neither action accepted a signature, so the prescribed move meant listing
the whole exact overlay and scanning by eye — which overflows the response cap
at a few hundred points and puts the answer back on disk. That is the exact round
trip per-pick verdicts were added to remove: the certificate produced the answer
and the surface made you go find it again.

Surfaced by driving shift_coverage_staffing end to end: both curated picks came
back dominated, and re-curating meant a spill file to map signature -> id.

curate already keyed remove/rename on content_signature — pinning was the odd
one out, so this is the action agreeing with itself, not a new convention.
Resolution is scoped to the run source/scenario selects, since the same plan
carries the same signature in the heuristic run and the exact overlay; an
unresolved signature returns the surface's standard error naming which run it
searched, because the wrong source is the likely mistake.

Engine helper beside get_solution; certify's next_steps and the solution_interpreter
'Reading the Certificate' section now teach the one-call route.

Tests: 910 passed / 2 skipped, incl. a round trip that runs the certificate's own
routing verbatim and re-certifies to 2/2 optimal.
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