feat(deletion): execute graceful and forced lock deletion - #21
Open
dzdidi wants to merge 1 commit into
Open
Conversation
Run the durable graceful and active-force deletion lifecycle with exact claim fencing, storage-owned time, final-access draining, operation-specific readiness, supervised shutdown, and crash-safe PostgreSQL and memory behavior. Keep the accepted Pubky GET-to-PUT overwrite race explicit, and remove duplicate executor and test-fixture paths.
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.
Summary
Part 5 of the graceful-deletion stack. Depends on Part 4.
Completes the durable graceful and active-force deletion lifecycle.
Graceful execution:
The change also:
Active force is the only intentionally unconditional deletion path.
Graceful Pubky tombstone publication remains a GET followed by unconditional PUT. A replacement observed before the PUT is preserved, but an out-of-band replacement between the final GET and PUT may be overwritten. This accepted Pubky 0.9.3 limitation is explicitly documented.
Contract and risk impact
Migration:
0017_content_lock_deletion_resource_replaced.sqlNotable contract and risk changes:
force=trueexecutes or escalates active-force deletion;locksRuntimeMasterKey;PurgeOperationalStateremains deferred.Verification
Run successfully on the exact final artifact:
cargo fmt --all -- --check— passedcargo test --workspace --all-targets --all-features— passedcargo clippy --workspace --all-targets --all-features -- -D warnings— passednpm --prefix examples/js-sdk run check— passednpm --prefix examples/js-sdk run smoke:paykit-compose— passednpm --prefix locks-sdk/bindings/js test— passedbash scripts/test-compose-bootstrap.sh— passedgit diff --check codex/bitkit-local-e2e-fixes..HEAD— passedRecorded focused results from the final run:
locks-servicelibrary: 355 passedExact reviewed artifact:
ba2cfc58d1932e7fd38071b9936d53c732f62ed6c54edaea8dea0b06ae92d9d3216dc42f52e9b91c08a4785704a1fb236a31b4cd572afade94956d6ac92dba51e52f0a257266f22dabb258f3a02ffd041039c752b32994da35a0d756Independent exact-artifact reviews approved:
Documentation
Updated:
docs/API.mddocs/RUNTIME.mddocs/plans/2026-08-10-graceful-content-lock-deletion.mdexamples/js-sdk/README.mdThe documentation covers:
Checklist