Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
run: |
python -m pip install --upgrade pip build twine
python -m build
twine check dist/*
twine check --strict dist/*

- name: Install the wheel into a clean environment
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Install formatter dependencies
run: |
python -m pip install --upgrade pip
python -m pip install black
python -m pip install "black>=26,<27" # the pin in pyproject's dev extra

- name: Format with black
run: |
Expand Down
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,30 @@ plans because it replays them through the same model. They are now pinned by
`ValueError` instead of a `TypeError` from deep inside the search;
`MultiObserver` accepts positional arguments like the base class; the
`SearchObserver` docstring no longer claims hooks are called defensively.
- **The command line's exit codes say what happened**: 0 solved, 1 no plan, 2
bad input, 3 stopped by a budget, 4 a plan that failed validation. Before,
unsolvable, out-of-budget and a crash all exited 1. Bad input — a missing
file, a parse error, an unknown planner — is one line on stderr instead of a
traceback (`JUPYDDL_DEBUG=1` brings the traceback back). `--version` exists.
- **`jupyddl demo` and `jupyddl benchmark demos` never finished**: neither took
a budget, and `demo`'s blind runs on blocksworld12 do not end. Both now stop
each search after 10 s by default; `animate` and `demo` accept
`--max-expansions` and `--time-limit` like `solve`.
- `benchmark` checks `--planners`, `--heuristic` and `--metric` before running
rather than reporting `nosuch 0/13`, and every chart option checks for the
`viz` extra *before* searching instead of failing (or silently writing
nothing) afterwards.
- **A dead end crashed the charts** (`Axis limits cannot be NaN or Inf`) and
coloured the wavefront NaN; in the workbench, an infinite `h` or `f` made the
progress message invalid JSON and aborted the run.
- **A trace's plan showed compiler bookkeeping** (`__observe-1#1`) and
disjunct tags; it now records the plan the user reads.
- **The sdist's own test suite failed**: it dropped `.github/` entirely while a
test checks `CONTRIBUTING.md` is there. Only `.github/workflows/` is left
out now. `build` runs `twine check --strict`, like `release` does.
- `black` is pinned to one major version in both the dev extra and the
`format` workflow, which installed whatever was newest; Renovate now pins
third-party actions to commit digests.

## [2.4.0]

Expand Down
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,20 @@ jupyddl solve demos/blocksworld12/domain.pddl demos/blocksworld12/problem.pddl \
--search gbfs --heuristic hff --time-limit 10
```

`benchmark` and `demo` stop each search after 10 seconds unless you say
otherwise (`--time-limit 0` for none), so one hard instance cannot stall a
whole table. Exit codes let a script tell the outcomes apart:

| Code | Meaning |
|---|---|
| 0 | solved, and the plan validates |
| 1 | the search finished and found no plan |
| 2 | bad input: a missing file, a parse error, an unknown name |
| 3 | a budget stopped the search before it found a plan |
| 4 | a plan was found but failed validation (a bug — please report it) |

Errors are one line; set `JUPYDDL_DEBUG=1` for the full traceback.

### The live dashboard

`--live` repaints a compact view of the search as it runs — sparklines for the
Expand Down
Loading
Loading