Skip to content

Unsolvability reporting#292

Closed
biotomas wants to merge 3 commits into
aibasel:mainfrom
FilutaAI:unsolvability-reporting
Closed

Unsolvability reporting#292
biotomas wants to merge 3 commits into
aibasel:mainfrom
FilutaAI:unsolvability-reporting

Conversation

@biotomas

Copy link
Copy Markdown

This is a Placeholder
Replace the content of this field with a meaningful description of the changes made within this pull request. It will be suggested as the commit message when merging the pull request.

For the pull request title, summarize the changes in imperative mood and prepend "[issueX]" where X is the issue number in our issue tracker (issues.fast-downward.org). The title will be suggested as the commit subject.

The commit message (i.e., this field) should highlight how the changes affect planner behavior:

  • Do they add functionality?
  • Does the command line syntax change?
  • Is planner performance affected according to the experiment?

Find our guidelines for commit messages in the Fast Downward Wiki (https://www.fast-downward.org/latest/for-developers/git/#git_conventions).

biotomas and others added 3 commits June 25, 2026 14:56
Search: distinguish "provably unsolvable" from "search gave up". Add an
UNSOLVABLE search status; eager and lazy search return it when the state
space is exhausted and no state was pruned via unreliable dead-end
detection (tracked with exhaustion_proves_unsolvability). planner.cc maps
this to exit code SEARCH_UNSOLVABLE (11) instead of collapsing every
no-solution outcome into SEARCH_UNSOLVED_INCOMPLETE (12).

Translator: exit with TRANSLATE_UNSOLVABLE (10) when the task is detected
as unsolvable during preprocessing (SASTask.unsolvable flag, propagated
via main()), and enrich the diagnostic messages: list the goal atoms that
are not relaxed reachable, name the mutually exclusive goal atoms when the
goal violates a mutex, and clarify the statically-false-goal case.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWxJQURrhA3BaQZNkdb6Wp
Describe how the translator and search report unsolvability, the exit
codes involved (10/11/12), the per-case translator reasons (including the
newly enriched goal-atom/mutex detail), the heuristic- and exhaustion-based
search proofs, and the soundness condition that gates exit code 11.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWxJQURrhA3BaQZNkdb6Wp
New translator option --diagnostics-json PATH writes a JSON record with the
solvability status, the unsolvability reason (the same enriched message shown on
stdout, e.g. which goal atoms are unreachable), and translation statistics.
SASTask gains an unsolvable_reason field, set at the unsolvable_sas_task
chokepoint. This lets tools (e.g. an MCP wrapper) consume the translator's
verdict structurally instead of scraping stdout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWxJQURrhA3BaQZNkdb6Wp
@biotomas biotomas closed this Jun 30, 2026
@biotomas biotomas deleted the unsolvability-reporting branch June 30, 2026 13:08
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