Skip to content

system: make settings stores opaque and transactional - #228

Merged
turinglambdaai merged 1 commit into
mainfrom
audit/pre-1.0-hardening
Oct 13, 2026
Merged

turinglambdaai merged 1 commit into
mainfrom
audit/pre-1.0-hardening

Conversation

@turinglambdaai

@turinglambdaai turinglambdaai commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Closes #218.

Makes settings-store an opaque synchronized handle before 1.0 and turns its documented atomicity into a complete transaction contract:

  • Removes the public constructor, representation accessors, and mutable setters while retaining settings-store? and controlled operations.
  • Shares an in-process semaphore by normalized path and adds an operating-system file lock for cooperating processes.
  • Refreshes from disk inside every transaction so two handles cannot overwrite one another from stale caches.
  • Deeply freezes stored JSON values and returned snapshots, including nested hashes/lists/strings.
  • Documents the persistent empty lock sibling and adds multi-handle/mutable-input regression coverage.

The branch is rebased on the merged managed-updater API. Local evidence after forced recompilation: 9,066 Racket and Taskboard tests pass in an isolated temporary Racket environment.

@turinglambdaai
turinglambdaai force-pushed the audit/pre-1.0-hardening branch from 29bb034 to 5eb3eb7 Compare October 13, 2026 01:23
@turinglambdaai
turinglambdaai merged commit 6ccd9f8 into main Oct 13, 2026
23 checks passed
@turinglambdaai
turinglambdaai deleted the audit/pre-1.0-hardening branch October 13, 2026 01:41
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.

Make settings-store an opaque synchronized handle before 1.0

1 participant