upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/grasp-audit/src/specs/grasp01/purgatory.rs
AgeCommit message (Collapse)Author
2026-02-23fix: rewrite deletion integration tests to avoid shared-state side effectsDanConwayDev
The previous tests deleted purgatory announcements (kind 30617) and checked for bare-repo absence via git ls-remote, which would corrupt shared-mode test state by destroying repos other tests depend on. New approach tests deletion of purgatory state events (kind 30618) instead: - e-tag test: promotes a repo, creates a unique commit locally, submits a state event pointing to it (enters purgatory), deletes the state event by event ID, then verifies git push of that commit is rejected. - a-tag coordinate test: promotes a repo, generates a fresh maintainer keypair, sends a replacement announcement adding that maintainer, submits a state event signed by the new maintainer (enters purgatory), deletes by coordinate 30618:<new_maintainer_pubkey>:<identifier>, then verifies git push is rejected. Also extends DeletionPolicy to handle kind 30618 state events in purgatory for both e-tag (event ID) and a-tag (coordinate) deletion paths.
2026-02-23feat: remove purgatory announcements on NIP-09 deletion eventsDanConwayDev
Kind 5 deletion events signed by the announcement author now evict the corresponding purgatory entry and delete the bare repository from disk. Both NIP-09 reference styles are supported: - e tag (event ID): matches the purgatory entry whose event ID equals the tag value - a tag (coordinate 30617:<pubkey>:<identifier>): matches by coordinate, only removes entries with created_at <= deletion event created_at per NIP-09 spec Author-only enforcement: coordinate pubkey and e-tag owner must match the deletion event pubkey; third-party deletion attempts are silently ignored. Includes 6 unit tests and 2 integration tests (event ID and coordinate paths).
2026-02-13refactor(grasp-audit): clarify PR purgatory test names and intentDanConwayDev
- Remove redundant test_pr_event_remains_in_purgatory_until_git_data - Rename test_pr_event_git_push_accepted -> test_pr_event_in_purgatory_git_push_accepted - Add PASS/FAIL meaning to each test's documentation - Note black-box testing limitation for purgatory detection
2026-02-13test: add PR purgatory tests with PREvent2 fixturesDanConwayDev
Add new fixtures for testing PR purgatory mechanism: - PREvent2Generated: PR event with different commit hash - PREvent2Sent: PR event sent to relay (enters purgatory) - PREvent2GitDataPushed: Git data pushed after event sent - PREvent2Served: Full fixture with event served Add PRTestCommit2 variant for second PR test commit. Update purgatory tests to use new fixtures for proper PR purgatory testing.
2026-02-12feat(grasp-audit): add explicit purgatory testsDanConwayDev
Add PurgatoryTests module with tests for GRASP-01 purgatory behavior: - Announcement purgatory tests (tolerant of unimplemented feature) - State event purgatory tests (already implemented) - PR purgatory tests (tolerant of unimplemented feature) Tests pass regardless of purgatory implementation status, enabling development without breaking the test suite. When features are implemented, tests will verify correct purgatory behavior.