Skip to content

Record the cuts a bake applies, name a moved cutter past its sibling, answer commit_cuts callers of a freed level - #1361

Merged
saworbit merged 2 commits into
mainfrom
batch/cuts-fixes
Oct 20, 2026
Merged

saworbit merged 2 commits into
mainfrom
batch/cuts-fixes

Conversation

@saworbit

Copy link
Copy Markdown
Owner

Summary

Docs: hammerforge_mcp/README.md, catalogue.py's hf_bake description, one SPEC sentence and the bridge design spec.

Before / After Behavior

  • Before: Bake Now with a pending cut applied it for good; Quick Play's redo brought back its spawn but not the cuts; the committed cutter's record changed name across undo and redo; a caller of commit_cuts() on a closed tab never resumed.
  • After: one undo after a bake puts the cuts back to pending, on the dock and over the bridge; a moved cutter keeps a readable name on every path; commit_cuts() callers get false when the level goes.

Related Issue

Fixes #1353
Fixes #1354
Fixes #1357

Checks

  • test_undo_sweep 6/6 with no KNOWN left, test_bake_applies_cuts_as_a_step 3/3, test_commit_cuts_names_the_cutter 5/5, test_bake_survives 7/7, test_mcp_dispatcher_bake 24/24, test_cutting 34/34, test_quick_play 32/32, test_dock_history_and_playtest 8/8, plus the builder's wider set (test_bake 19 scripts, test_mcp 19 scripts, cuts, cordons, dock, prefab, registry)
  • Each test file run before its fix fails with the expected messages (@Node3D@19 names, null answers, no step, undo_conflict)
  • pytest hammerforge_mcp 110 passed; ruff clean; CI's gdformat and gdlint commands pass; check_script_warnings.py clean; .durations.json entry for the new bake test
  • A fragment in changelog.d/, no edit to CHANGELOG.md

… answer commit_cuts callers of a freed level

A bake applied the pending cuts with no undo step. Every dock bake that
applies cuts now records "Apply Pending Cuts" first, a step only when
something was pending, and the bridge's hf_bake records it through the
dispatcher so hf_undo takes the cuts back. A cut moved between containers
landed beside a same-named sibling as @Box_0@N, which the record drops, so
the cutter a redo rebuilt came back as Box_0; the moves add with a
readable name now. prepare_commit_cuts() and commit_cuts() hand back the
bake system's answer, so a caller resumes with false when the level is
freed mid-bake.
@saworbit
saworbit enabled auto-merge (squash) October 20, 2026 23:12
@github-actions github-actions Bot added area: build Brushes, drawing, vertex/edge editing (Build tab) area: architecture Subsystem structure, decomposition, code quality area: docs README, guides, spec, roadmap, changelog tests The GUT suite and its fixtures labels Oct 20, 2026
The scenario pinned the old chain end: hf_undo refused after a bake had
applied a cut. The apply is the agent's own step now (#1353), so the
scenario undoes it, sees the cut pending again, and redoes it for the
bakes that follow.
@github-actions github-actions Bot added the area: ci Workflows, contributor tooling, dependency pins label Oct 20, 2026
@saworbit
saworbit merged commit 91a372e into main Oct 20, 2026
11 checks passed
@saworbit
saworbit deleted the batch/cuts-fixes branch October 20, 2026 23:27
@saworbit saworbit mentioned this pull request Oct 20, 2026
3 tasks done
saworbit added a commit that referenced this pull request Oct 20, 2026
The Agent Bridge guide said no undo step records the cuts a bake applies,
which #1361 changed. The roadmap's bridge section lists the day's other
bridge fixes beside floor paint. DEVELOPMENT's capture paragraph names the
prefs the swap now puts back, and the undo sweep's header no longer claims
an undo before a bake leaves the bake standing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: architecture Subsystem structure, decomposition, code quality area: build Brushes, drawing, vertex/edge editing (Build tab) area: ci Workflows, contributor tooling, dependency pins area: docs README, guides, spec, roadmap, changelog tests The GUT suite and its fixtures

Projects

None yet

1 participant