Repository navigation
Atomic resource metadata patches with content CAS and audit - #75
Draft
phoebus-84 wants to merge 1 commit into
Draft
phoebus-84 wants to merge 1 commit into
phoebus-84 wants to merge 1 commit into
Conversation
This was referenced Oct 12, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Atomic metadata patch, optional content CAS and transactional administrative audit
Refs #74 (non-closing workstream backlink).
Draft / dependencies: stacked on Zenflows #73 (
feat/authz-processes), including #71/#72. SDK interfacerproject/interfacer-client#3 (on #2) and GUI interfacerproject/interfacer-gui#915 (on #914 → #913 → #912) are dependent. Normal released-SDK dependency update remains a gate; no merge/deployment authorized.patchEconomicResourceMetadataand read-onlyeconomicResource.metadataHash, retaining existing replacement/economic-event semantics.resource.updateunder resource/control/membership locks, then merge current metadata. Accountable/contributor is not a grant; organization policy is unchanged.zf_permission_logfor the explicit administrative actionresource.metadata.patch: actor/service/request from ExecutionContext, changed keys and before/after fingerprints, no raw metadata. Edit/audit in one transaction; invalid audit rolls back. Not reconstructible full content history or encryption.Validation / limitations
Application RED against the naïve compatibility read/replace implementation: 19 tests, 11 failures (including one fixture cleanup failure, subsequently corrected). Actual independent Postgres connections reproduced erased fields and ignored CAS; rollback/audit regressions failed. GREEN: 20 new tests, broader 296 authz tests passed. Production release Docker build passed.
Whole suite on reset synthetic TEST database only, seed 734057: 872 tests, 1 failure, 24 skipped. Baseline on equivalently reset test DB/same seed: 852 tests, the same classifications/1 nil failure, 24 skipped. Earlier dirty test DB runs had page/count failures from failed RED cleanup; cleanup fixed, reset performed; not omitted from logs. No sandbox demo DB reset. Prior intermittent page cursor failure is not declared fixed.
Compiled new SDK + real Zenroom WASM + signed sandbox API: Bob accountable/contributor denied; one mutation per patch; two same-token writers give one winner/one CONFLICT; independent fields both persist; actual GUI helper sends query + one patch, no process pipeline. Qty/custody/accountable/control/previous-event trace unchanged.
Two bounded Chromium desktop/mobile passes: first Alice driver locator incorrectly expected an anchor on a non-link ProjectDisplay; Bob readonly passed, no runtime errors. Corrected confirmation green for all four actor/viewport cases, real signed same-field race, localized conflict draft retention/no automatic retry, explicit retry/save/reload and no overflow. Remote requests blocked. This evidence is for the new relations metadata path, not a claim of all GUI E2E being green.
GUI currently reads the token immediately before saving: closes read/write race, does not reconcile an old draft with newer same-field edits. Content CAS is optional in the API; legacy replacement writers and existing SDK accept/modify partial-commit behavior remain unchanged. No automatic retry/fallback. No read-privacy/capabilities/organization redesign.
Details:
docs/atomic-resource-metadata.md.