Skip to content

fix: preserve snapshot precision and strengthen Studio quality checks - #23

Merged
rendis merged 3 commits into
mainfrom
fix/follow-up-quality
Oct 4, 2026
Merged

rendis merged 3 commits into
mainfrom
fix/follow-up-quality

Conversation

@rendis

@rendis rendis commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

Snapshot capture could silently round large integers and discard JSON serialization errors, producing incomplete persistence data. Preserve precise numbers through capture, JSON decoding, and restoration; add optional checked capture for machines and synchronous action arguments, returning a complete snapshot or an error.

This also completes the Studio follow-ups from #22:

  • Upgrade Vitest and migrate Tailwind to remove the remaining development dependency advisories. The full workspace audit reports zero advisories.
  • Replace placeholder lint with ESLint, fix conditional hook ordering in two modals, and add regression tests.
  • Add CI for Go build/vet/race/fuzz and Studio frozen installation/lint/typecheck/tests/mutation-runner dry-run/build/audit, using immutable action pins and read-only permissions.
  • Avoid full-graph JSON serialization in history comparisons, index transitions by source, and load ELK on demand with shared initialization and retry support. The main app JavaScript entry drops from 2,283 kB to 802 kB; ELK remains a separate chunk requested during layout.

Validation

GitHub Quality (Go and Studio) and CodeQL checks passed at 2c28441b15e143f86c2ca7ee5c8f4d6a9e1fec36.

  • Go build and vet passed; race-enabled tests with coverage passed across all 11 packages.
  • Three native fuzz smoke targets passed (5 seconds each).
  • Studio frozen installation, lint, typecheck, 255 tests in 46 files, and all package builds passed.
  • Stryker initial instrumented run passed (16 tests); no full mutation score is claimed.
  • Full dependency audit: zero advisories, including development dependencies.
  • Chromium: canvas, JSON export, library and auto layout passed at desktop and mobile sizes, with no console/page errors. Production preview successfully fetched the separate ELK chunk.

Compatibility and limits

Existing machine/executor interfaces remain compatible. Precise untyped metadata may now contain json.Number; legacy GetSnapshot() returns nil and logs serialization failures. Studio development requires Node 22+, and Tailwind 4 requires modern browsers. CSS grew from 45.52 kB to 68.40 kB. Existing mobile header crowding remains.

The follow-up report includes regression coverage, benchmark methodology, measurements, and remaining runtime contracts. Snapshot usage is documented.

@rendis
rendis marked this pull request as ready for review October 3, 2026 22:16
@rendis
rendis merged commit 4d4959e into main Oct 4, 2026
5 checks passed
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