Skip to content

fix: explain print <local path>, ratchet private imports, dev-bump to 0.6.0.dev0 - #137

Draft
DLANSAMA wants to merge 2 commits into
mainfrom
worktree-audit-fixes
Draft

fix: explain print <local path>, ratchet private imports, dev-bump to 0.6.0.dev0#137
DLANSAMA wants to merge 2 commits into
mainfrom
worktree-audit-fixes

Conversation

@DLANSAMA

@DLANSAMA DLANSAMA commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Fixes from the 2026-09-01 repo audit.

What changed

  • plate print <local path> no longer fails with "unsafe name". A path with a separator can never be a printer-side name, so the error now explains that print takes the name of a file already on the printer and points at the fix: plate job <path> --confirm for a model file, or plate upload <path> then plate print <name> --confirm for a sliced 3MF/G-code. --json carries the hint in next_command. Exit code 3 and failed_step: validate are unchanged; names without a separator keep the old message. 4 new tests.
  • scripts/check_layers.py now ratchets cross-unit imports of underscore-private names (PRIVATE_IMPORT_BUDGET, measured 104; may only go down). AGENTS.md documents it.
  • Version back to 0.6.0.dev0 on main after the 0.5.1 release (the follow-up bump in docs/releasing.md step 6 was never done); uv.lock self-version synced.
  • docs/quality-roadmap.md: freeze banner plus the checkboxes that CI already enforces ticked with evidence. Left honestly open: ftps coverage (89.8% < 90) and the 88% floor.

Verified locally

ruff check, ruff format, mypy, bandit, check_layers, gen_schemas --check, all six smokes, and the full suite (1537 passed, 91.1% coverage). Two version tests fail only against a stale venv; a fresh uv pip install '.[test]' of this branch passes them and plate --version prints 0.6.0.dev0.

…-HOME first run

README: move "Print something" (step 1 = install OrcaSlicer) above "Try it in
30 seconds", retitle the nav link so no "30 seconds" precedes the first
OrcaSlicer mention, and say the sim needs neither a printer nor OrcaSlicer
while a real print needs both. Anchors unchanged.

Tests (tests/test_first_run_path.py, section 6) lock the empty-HOME contract
a newcomer hits, so the walk is deterministic without a printer:
- `plate preflight` exits 1 and reports config, orca-slicer, and profiles-dir
  as three separate checks (human and --json), each with its own next step.
- `plate setup --sim` with a non-TTY stdin exits 1 with the headless message
  naming --printer-ip/--serial/--access-code-file, no traceback.
- `plate --sim status` with an empty HOME still exits 0 and reports IDLE.

No CLI behaviour changed; no protocol code touched.
…to 0.6.0.dev0

- `plate print tests/fixtures/cube.stl` used to fail with "unsafe name".
  A path with a separator can never be a printer-side name, so the error
  now says `print` takes the name of a file already on the printer and
  points at `plate job <path> --confirm` (model file) or `plate upload`
  then `plate print <name> --confirm` (sliced file); `next_command`
  carries the same hint in --json. Exit code 3 / failed_step unchanged.
- scripts/check_layers.py: budget for cross-unit imports of
  underscore-private names (measured 104; may only go down). AGENTS.md
  documents the ratchet.
- main was still 0.5.1 after the release; back to 0.6.0.dev0 (uv.lock
  self-version synced).
- docs/quality-roadmap.md: freeze banner from the 2026-09-01 audit and
  the checkboxes that were already enforced in CI ticked with evidence;
  ftps coverage (89.8% < 90) and the 88% floor stay honestly open.
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