<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/grasp-audit/src/specs/grasp01/push_authorization.rs, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/atom?h=master</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/'/>
<updated>2026-02-18T22:12:22+00:00</updated>
<entry>
<title>fix: use unique commit instead of deterministic Owner variant for wrong-commit PR tests</title>
<updated>2026-02-18T22:12:22+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-18T22:12:22+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=fefb37e040eb3cf91093d597737e1431fed38c81'/>
<id>urn:sha1:fefb37e040eb3cf91093d597737e1431fed38c81</id>
<content type='text'>
PRWrongCommitPushedBeforeEvent and test_push_to_nostr_ref_with_wrong_commit_after_event_received_rejected
were calling create_deterministic_commit_with_variant(CommitVariant::Owner) on a clone that already
had test.txt with 'Initial commit\n' content from OwnerStateDataPushed. Writing identical content
staged nothing so git commit failed silently.

Now that ValidRepoServed always depends on OwnerStateDataPushed (git data pushed), the clone is
never empty - use create_commit (unique file) instead since the wrong commit only needs to differ
from PR_TEST_COMMIT_HASH, not be deterministic.
</content>
</entry>
<entry>
<title>fix: use ValidRepoServed for events that tag repo events</title>
<updated>2026-02-13T12:31:49+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-13T12:07:37+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=a2a99d5a4137b57e4141cf2840f2f51b38035cfa'/>
<id>urn:sha1:a2a99d5a4137b57e4141cf2840f2f51b38035cfa</id>
<content type='text'>
PR events, issues, and comments need a queryable repo announcement
to reference. Changed PREvent and PREventGenerated fixtures and
related tests to depend on ValidRepoServed instead of ValidRepoSent.

This ensures tests will fail correctly when announcement purgatory
is implemented - events tagging a repo should require that repo
to be served (not in purgatory).
</content>
</entry>
<entry>
<title>fix: add trailing newlines to deterministic commit content</title>
<updated>2026-02-13T09:09:59+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-13T09:09:59+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=faac6027deaf5f1e121c05df2d8a6336fd6eaf8d'/>
<id>urn:sha1:faac6027deaf5f1e121c05df2d8a6336fd6eaf8d</id>
<content type='text'>
The CommitVariant::file_content() methods were returning strings without
trailing newlines, but the expected hash constants were calculated with
trailing newlines. This caused hash mismatches in tests.

Updated all hash constants to match the actual commit hashes produced
with trailing newlines in the file content.
</content>
</entry>
<entry>
<title>refactor(grasp-audit): split ValidRepo into Sent/Served, add tolerant purgatory</title>
<updated>2026-02-12T12:57:44+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-12T12:57:44+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=dcaaa0c44c46f963929ab0baa91f63759ec702dc'/>
<id>urn:sha1:dcaaa0c44c46f963929ab0baa91f63759ec702dc</id>
<content type='text'>
- Rename ValidRepo to ValidRepoSent (announcement sent, may be in purgatory)
- Add ValidRepoServed (announcement queryable after git data pushed)
- Add send_event_and_note_purgatory() for tolerant purgatory detection
- Update fixtures to use tolerant method instead of strict assertion
- Update event_acceptance_policy tests to use ValidRepoServed

This enables tests to pass regardless of purgatory implementation status
while still having explicit purgatory tests that verify the behavior.
</content>
</entry>
<entry>
<title>refactor(grasp-audit): introduce SpecRef enum for type-safe spec references</title>
<updated>2026-02-12T12:36:23+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-12T12:36:23+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=3fd6ce4149d567c67009b0332ca76c0cd6f51055'/>
<id>urn:sha1:3fd6ce4149d567c67009b0332ca76c0cd6f51055</id>
<content type='text'>
Replace string-based spec references with typed SpecRef enum for
compile-time validation and better IDE support. TestResult::new() now
accepts SpecRef enum plus a requirement description string for
test-specific context.
</content>
</entry>
<entry>
<title>fix: use consistent git identity for PR test commit hash</title>
<updated>2026-02-12T11:23:48+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-12T11:23:48+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=d07dc0e3b14b8464e47f5ab009552eacda568a36'/>
<id>urn:sha1:d07dc0e3b14b8464e47f5ab009552eacda568a36</id>
<content type='text'>
The PR_TEST_COMMIT_HASH constant was incorrect because the discovery test
used a different git identity (pr-test@example.com) than the actual
create_pr_test_commit function (test@grasp-audit.local from fixtures.rs).

This caused the same commit content to produce different hashes due to
different author/committer info being embedded in the commit object.

Fixed by updating the discovery test to use the same git identity as
clone_repo() in fixtures.rs, ensuring consistent commit hashes.
</content>
</entry>
<entry>
<title>test: fix deterministic commit hash</title>
<updated>2026-01-09T08:12:16+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-09T08:12:16+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=c4142e99c2f21f0ce7ec2618a0bb1fd39c72ce07'/>
<id>urn:sha1:c4142e99c2f21f0ce7ec2618a0bb1fd39c72ce07</id>
<content type='text'>
i suspect this broke when we ensured commits weren't pgp signed
</content>
</entry>
<entry>
<title>refactor: replace hardcoded Kind constants with rust-nostr variants</title>
<updated>2026-01-08T11:23:28+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-08T11:20:35+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=5d02ad6b893f9059044914c115d77cf9d8e589c3'/>
<id>urn:sha1:5d02ad6b893f9059044914c115d77cf9d8e589c3</id>
<content type='text'>
- Replace KIND_REPOSITORY_ANNOUNCEMENT with Kind::GitRepoAnnouncement
- Replace KIND_REPOSITORY_STATE with Kind::RepoState
- Replace KIND_PR with Kind::GitPullRequest
- Replace KIND_PR_UPDATE with Kind::GitPullRequestUpdate
- Replace KIND_USER_GRASP_LIST with Kind::GitUserGraspList
- Replace KIND_PATCH with Kind::GitPatch
- Replace KIND_ISSUE with Kind::GitIssue
- Replace KIND_COMMENT with Kind::Comment
- Replace all Kind::Custom(30617|30618|1617|1618|1619|1621|1111|10317) patterns
- Remove all hardcoded KIND_* constants from events.rs
- Update all match statements to use Kind enum directly
- Update all filter builders to use Kind variants
- Update all test helpers and assertions

Benefits:
- Type safety: compiler prevents wrong kind numbers
- Readability: Kind::GitRepoAnnouncement is self-documenting
- Maintainability: single source of truth (rust-nostr)
- IDE support: full autocompletion and refactoring
- Standards: aligns with rust-nostr best practices

Files modified: 21
Constants removed: 9
Patterns replaced: 100+
Tests passing: 222/222
</content>
</entry>
<entry>
<title>chore: upgrade nostr-* packages to rev 4767ad13</title>
<updated>2026-01-08T10:57:51+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-08T10:57:51+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=075307804bf66bba10f5bc55cb40e2e6a98a65ee'/>
<id>urn:sha1:075307804bf66bba10f5bc55cb40e2e6a98a65ee</id>
<content type='text'>
- Update nostr-relay-builder, nostr-sdk, nostr-lmdb to latest revision
- Update grasp-audit nostr-sdk dependency
- Fix clippy warnings:
  - Replace .clone() with std::slice::from_ref() in src/git/sync.rs
  - Change &amp;PathBuf to &amp;Path in tests/common/git_server.rs
  - Replace vec![] with array literal in src/purgatory/sync/functions.rs
- Update PR_TEST_COMMIT_HASH in grasp-audit due to event generation changes

All 249 tests passing, no breaking changes required.
</content>
</entry>
<entry>
<title>test: remove local sync on state git data received test</title>
<updated>2025-12-31T12:47:04+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-12-31T12:47:04+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=9bd7109991096e610394832a519ff89a0aa095ad'/>
<id>urn:sha1:9bd7109991096e610394832a519ff89a0aa095ad</id>
<content type='text'>
because the current fixtures don't actually having mutliple
owner_repos.

they would need 2 announcements that both listed the service and a
maintainer relationship. We could do this in grasp-audit but it would
require an extra announcement from a different maintainer sent
eariler on in the dependancy chain.
</content>
</entry>
</feed>
