Skip to content

Unify Boatstack update ownership supervision - #125

Merged
bigboateng merged 1 commit into
mainfrom
codex/canonical-owned-update-scope
Jul 23, 2026
Merged

Unify Boatstack update ownership supervision#125
bigboateng merged 1 commit into
mainfrom
codex/canonical-owned-update-scope

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

Summary

  • replace the update finalizer's path-only allowlist with the same semantic ownership projection used by repair admission
  • preserve non-Boatstack host-hook JSON and all content outside marker-bounded Cursor, Claude, and Gemini interceptors
  • validate branch and workspace preconditions before creating a durable operation attempt
  • retain the underlying rollback reason and include interceptor paths in the exact preview and staging instructions

Root cause

Boatstack used two incompatible definitions of ownership. Repair admission classified .cursorrules and CLAUDE.md as safe marker-bounded Boatstack state, but final diff validation only recognized generated files and hook JSON paths. The transaction therefore rejected its own authorized mutation after writing it.

A wrong-branch invocation could also prepare a durable operation before workspace validation. Retrying from the correct update branch then collided with the receipt because scope was validated but not represented in that operation identity.

Supervisory invariant

One prepared ownership projection now governs admission, mutation verification, final diff scope, staging, and preview. Preconditions execute before leases, so rejected setup consumes no retry budget.

Validation

  • go test ./...
  • go test -race ./...
  • go vet ./...
  • python3 -m unittest discover -s labs/12-product-engineering-loop/tests -p 'test_*.py'
  • release-note validation and append-only policy
  • git diff --check

The regression suite replays the reported stale .cursorrules and CLAUDE.md upgrade and covers all three marker-bounded interceptor hosts, user-content preservation, and wrong-branch attempt suppression.

@bigboateng
bigboateng merged commit 2ed0552 into main Jul 23, 2026
4 checks passed
@bigboateng
bigboateng deleted the codex/canonical-owned-update-scope branch July 23, 2026 01:25
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