Skip to content

Strict JSON, safe piece replacement, build versions and owned staging folders - #3

Merged
oddessentials merged 5 commits into
mainfrom
strict-json-mcp
Nov 12, 2026
Merged

oddessentials merged 5 commits into
mainfrom
strict-json-mcp

Conversation

@oddessentials

Copy link
Copy Markdown
Owner

What changes

  • Strict JSON. MCP replies and piece.json are written with StrictJson, so control characters in a bone name or title no longer reach an agent's client raw.
  • Safe replacement. A piece is written and checked in a staging folder, then moved into place; a save that fails its check leaves the folder it would have replaced as it was. A folder holding anything that is not a piece's own file is refused.
  • Build versions. A release build reports 0.1.N for build-N from --version, the MCP server info, the first screen, and the Windows and macOS file versions. An unstamped build says dev.
  • Owned staging folders. Staging and backup folders beside a piece are made new under the first free name (.piece.part, .piece.2.part, ...). A folder already there with that name, or a backup kept after a failed rollback, is never deleted; only folders the save made are removed.
  • Tests. The checker's crash fault no longer raises a crash dialog. The window suite reads both stdout and stderr of a child while waiting, which a Godot child on Windows needs in order to end.

Verified

  • Windows, locally: the studio and window suites (curl and Godot HTTP) pass at this commit. The full Windows job's steps, packaging and the packaged-app smoke passed at 61b17ef plus the window fix, before the staging change.
  • The new staging assertions fail against the previous source and pass with the change.

Not verified

  • macOS has not been run for the last two commits.

🤖 Generated with Claude Code

oddessentials and others added 4 commits November 12, 2026 12:00
…ests

- MCP messages and a tool result's text are written with StrictJson.
- A piece is written to a staging folder and checked there; only then are
  the piece files it replaces set aside, and they come back if the move
  fails. A folder holding anything a piece may not is refused.
- make_* reports success only when the piece is checked and listed.
- The checker's crash fault kills its process instead of crashing it, so
  no system crash dialog appears.
- The window test runs its script for real and reads its output.
- check_piece says it can go online; companions are named for their first
  model; the app no longer reports a version of its own, as in Builders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
package.ps1 -Release N stamps config/version and the Windows and macOS
version fields just before export and restores both files after. Studio
reports it in --version, MCP serverInfo and on its first screen ("Build N",
or "Development build" when unstamped), and CI checks each packaged and
signed app says exactly 0.1.N.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On Windows the child does not end until its output has been read, so
the window suite waited out its 20 seconds and failed.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…child

A save cleared .name.part and .name.previous beside its folder before
using them, so a folder of someone else's with that name, or the backup
kept when files could not be put back, was deleted. Staging and backup
folders are now made new, under the first free name, and only those are
removed.

On Windows a Godot child stops after writing to stdout or stderr until
that pipe is read, so the window suite reads both while it waits.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@oddessentials oddessentials reopened this Nov 12, 2026
@oddessentials
oddessentials merged commit ddf20bd into main Nov 12, 2026
5 checks passed
@oddessentials
oddessentials deleted the strict-json-mcp branch November 12, 2026 21:37
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