upleb.uk

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

summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-10sync: complete AddFilters handler with auto-spawningDanConwayDev
2025-12-10sync: implement unified connect/reconnect with since filtersDanConwayDev
2025-12-10sync: implement PendingBatch EOSE confirmation flowDanConwayDev
2025-12-10sync: implement disconnect handler with state cleanupDanConwayDev
2025-12-10sync: integrate health tracking and connection storageDanConwayDev
2025-12-10sync v4 mvpDanConwayDev
2025-12-10stub of sync v4DanConwayDev
2025-12-10improve sync designDanConwayDev
2025-12-09sync initalize from dbDanConwayDev
2025-12-09basic sync stubDanConwayDev
2025-12-08delete old bad AI genreated testsDanConwayDev
2025-12-08redsign sync - architecture tweaksDanConwayDev
2025-12-08redesign sync - document onlyDanConwayDev
2025-12-08proposed sync change to use self subscribe to trigger everythingDanConwayDev
2025-12-08tests: discover and sync from relay in annocunement published directlyDanConwayDev
2025-12-05remove stupid tests and methodsDanConwayDev
2025-12-05test: fix proactive sync basic testsDanConwayDev
2025-12-05rename sunc_bootstrap_relay_urlDanConwayDev
2025-12-05fix basic sync testsDanConwayDev
2025-12-05sync fixesDanConwayDev
2025-12-04feat(sync): Phase 6 - observability and production readinessDanConwayDev
- Add SyncMetrics with full Prometheus integration - Track sync gaps via catchup events - Update Grafana dashboard with sync panels - Document all sync configuration options - Update design doc with implementation notes
2025-12-04feat(sync): Phase 5 - negentropy catchup (NIP-77)DanConwayDev
- Add NegentropyService for set reconciliation - Implement startup catchup with warm-up delay - Implement reconnect catchup (last 3 days) - Add daily catchup schedule with stagger
2025-12-04feat(sync): Phase 4 - dynamic subscriptionsDanConwayDev
- Add SubscriptionManager for per-connection tracking - Trigger subscription updates on new repo/PR events - Implement consolidation when filter count > 150
2025-12-04feat(sync): Phase 3 - resilience and health trackingDanConwayDev
- Add RelayHealthTracker with DashMap - Implement exponential backoff (5s -> 1h max) - Handle dead relays (24h failures -> daily retry) - Add startup jitter to prevent thundering herd - Add NGIT_SYNC_MAX_BACKOFF_SECS config
2025-12-04feat(sync): Phase 2 - multi-relay and complete filtersDanConwayDev
- Add relay discovery from stored announcements - Implement FilterService with three-layer strategy - Support multiple simultaneous relay connections - Filter batching for large tag sets
2025-12-04feat(sync): Phase 1 MVP - single relay proactive syncDanConwayDev
- Add src/sync/ module with SyncManager - Add NGIT_SYNC_RELAY_URL config option - Subscribe to kind 30617 on configured relay - Validate synced events through Nip34WritePolicy - Integration test with two TestRelay instances
2025-12-04docs: update GRASP-02 proactive sync event sync approachDanConwayDev
2025-12-04docs: add guidance to keep architecture docs updatedDanConwayDev
- Added CRITICAL warning section to AGENTS.md about treating architecture docs as living documents - Mark 'Keep Architecture Docs Updated' item as fixed in grasp-01 learnings - Mark 'Document actual architecture' technical debt item as fixed This addresses a key learning from GRASP-01 where docs described plans rather than implementation, causing confusion.
2025-12-04refactor: split Nip34WritePolicy into focused sub-policiesDanConwayDev
Split the ~900 line Nip34WritePolicy into focused sub-policies for improved testability and maintainability: - AnnouncementPolicy - Repository announcement validation - StatePolicy - State event validation + ref alignment - PrEventPolicy - PR/PR Update validation - RelatedEventPolicy - Forward/backward reference checking The main Nip34WritePolicy now delegates to these sub-policies via a shared PolicyContext that provides domain, database, and git_data_path. Also updates: - README.md: Accurate project structure reflecting actual implementation - docs/learnings: Marks this technical debt item as complete
2025-12-04add prometheus metricsDanConwayDev
2025-12-04docs: add monitoring-strategyDanConwayDev
2025-12-04docs: update based on current implementationDanConwayDev
2025-12-04docs: add llm review of implemenation vs planDanConwayDev
2025-12-04docs: update grasp-audit docsDanConwayDev
2025-12-04docs: planed GRASP-2 proactive sync of just eventsDanConwayDev
2025-12-04add roadmap to readmeDanConwayDev
2025-12-03feat: accept maintainer announcements without service listingDanConwayDev
2025-12-03landing page: display relay inforamtion documentDanConwayDev
2025-12-03landing page: pull supported nips and grasps from nip11 documentDanConwayDev
2025-12-03flag NIP-77 negentropy supportDanConwayDev
2025-12-03remove depricated audit mode label ci / production ~> isolated / sharedDanConwayDev
2025-12-03remove docs archiveDanConwayDev
2025-12-03improved settings cli flags > env vars > defaultsDanConwayDev
2025-12-03feat: implement LMDB database backendDanConwayDev
- Add nostr-lmdb dependency (v0.44) for persistent storage - Create SharedDatabase type alias for database abstraction - Update all database-related functions to use trait object - Support runtime selection via NGIT_DATABASE_BACKEND env var Database backends: - memory: In-memory (default, fastest, no persistence) - lmdb: LMDB backend (persistent, general purpose) All 34 tests pass with the new implementation.
2025-12-02audit: fix shared test_reject_repo_announcement_missing_relays_tag testDanConwayDev
2025-12-02fix: tests using gpg signerDanConwayDev
2025-12-02refactor: rename AuditMode variants and change CLI default to sharedDanConwayDev
Breaking change: Renamed AuditMode enum variants for clarity: - AuditMode::CI -> AuditMode::Isolated (fresh fixtures per test) - AuditMode::Production -> AuditMode::Shared (reuse fixtures across tests) Config constructors renamed (with deprecated aliases): - AuditConfig::ci() -> AuditConfig::isolated() - AuditConfig::production() -> AuditConfig::shared() CLI default changed from 'ci' to 'shared' mode, which enables fixture caching across tests. This fixes the issue where fixtures were being re-created for every test in CLI mode. Fixture caching behavior: - Shared mode (CLI default): Uses client's cache, fixtures reused - Isolated mode (for cargo test): Local cache per TestContext
2025-12-02grasp-audit: show tests under GRASP-01 lineDanConwayDev
2025-12-02nip11 add iconDanConwayDev
2025-12-02landing added light modeDanConwayDev
2025-12-02landing page add commit hash to version and add curationDanConwayDev
2025-12-02repo landing page - simplifyDanConwayDev
2025-12-02repo landing page - include powered byDanConwayDev
2025-12-02refactor: fix fmt and clippyDanConwayDev
2025-12-02improve repository landing pageDanConwayDev
2025-12-02landing page - use correct gitworkshop linkDanConwayDev
2025-12-02improve landing pageDanConwayDev
2025-12-02improve landing page copy and stylesDanConwayDev
2025-12-01add repo land page and 404 page per GRASP-01DanConwayDev
2025-12-01better fixtures: update readmeDanConwayDev
2025-12-01better fixtures: clean upDanConwayDev
2025-12-01test: test_head_set_after_git_push_with_required_oidsDanConwayDev
2025-12-01better fixtures: test_head_set_after_state_event_with_existing_commitDanConwayDev
2025-12-01better fixtures: refs/nostr testsDanConwayDev
2025-12-01better fixtures: RecursiveMaintainerStateDataPushed and ↵DanConwayDev
test_non_maintainer_state_rejected
2025-12-01better fixtures: MaintainerStateDataPushedDanConwayDev
2025-12-01fixtures dependancy overhaulDanConwayDev
2025-12-01better fixtures: MaintainerStateDataPushedDanConwayDev
2025-12-01begin implementing better fixturesDanConwayDev
2025-12-01test placeholder: test_head_set_after_git_push_with_required_oidsDanConwayDev
2025-12-01try and add / update / delete refs on state updateDanConwayDev
if we have the OIDs
2025-12-01test: test_head_set_after_state_event_with_existing_commitDanConwayDev
currently failing as branch isn't pushed (we should auto create this branch as we have the ref)
2025-12-01fix cargo clippy and fmt warningsDanConwayDev
2025-12-01reject push when refs/nostr/<event-id> doesnt match known event and delete ↵DanConwayDev
incorrect ref on event receive
2025-11-28test: added checks that refs/nostr/<event-id> match commit in PR / updateDanConwayDev
2025-11-28allow push to ref/nostr/<event-id>DanConwayDev
2025-11-28audit: fix push from maintainer tests when in production modeDanConwayDev
2025-11-28audit: fix rejected push wrong commit testDanConwayDev
2025-11-28fix maintainer recursionDanConwayDev
2025-11-28sync HEAD on state event and git data pushDanConwayDev
2025-11-28audit: fix push test when not isolatedDanConwayDev
2025-11-28audit: future test shared / isolation fixesDanConwayDev
2025-11-28fix: respect Isolated mode in TestContext fixture helpersDanConwayDev
Previously get_or_create_repo() and get_or_create_issue() always checked the client cache first, bypassing the mode-based caching logic. This caused fixture leaking across test suites when using the same AuditClient. With this fix: - In Isolated mode: helpers skip the cache, creating fresh fixtures - In Shared mode: helpers use the cache for fixture reuse (unchanged) This restores proper test isolation for push authorization tests that were failing because they shared the same ValidRepo fixture.
2025-11-28fix cargo testDanConwayDev
2025-11-28audit: fix shared test context to minimise events sent to production relaysDanConwayDev
2025-11-28test: rationalise repository creation testsDanConwayDev
2025-11-28audit: stop checking git_data_directoryDanConwayDev
2025-11-28add git http advertisment allow-reachable-sha1-in-want and ↵DanConwayDev
allow-tip-sha1-in-want
2025-11-28fix grasp-audit importsDanConwayDev
2025-11-28fix running audit with production flagDanConwayDev
no events were allowed to be published which broke most tests
2025-11-28grasp-audit improve cli output eg. add colors and condenseDanConwayDev
2025-11-28grasp-audit run all tests in audit modeDanConwayDev
2025-11-28fix: sh script to work from main directoryDanConwayDev
2025-11-27remove depricated codeDanConwayDev
2025-11-27Task 7: Export verification helpers in public APIDanConwayDev
- Added send_and_verify_accepted to lib.rs exports - Added send_and_verify_rejected to lib.rs exports - Organized exports into logical groups with comments: * Git operation helpers * Verification helpers * Repo setup helpers * Types and constants - Build succeeds: cargo build
2025-11-27Task 6: Clean up verification helper imports and remove duplicatesDanConwayDev
- All uses of send_and_verify_accepted/rejected import from crate::fixtures - Removed duplicate implementations from event_acceptance_policy.rs (lines 519-597) - Updated 15 call sites from Self::send_and_verify_* to send_and_verify_* - Build succeeds: cargo build
2025-11-27Task 5: Standardize nip01_smoke.rs tests to fixture-first patternDanConwayDev
- test_send_receive_event uses TestContext + FixtureKind::ValidRepo - test_create_subscription uses TestContext + FixtureKind::ValidRepo - Tests remain functionally equivalent (same verification logic) - Pure connectivity tests like test_websocket_connection unchanged - Tests pass: cargo test --lib nip01_smoke - Added fixture-first pattern documentation to test docstrings
2025-11-27Task 4: Refactor recursive maintainer push test to fixture-first patternDanConwayDev
- Deprecated setup_repo_for_recursive_maintainer helper in fixtures.rs - test_push_authorized_by_recursive_maintainer_state now creates own TestContext - Uses FixtureKind chain: RepoState, MaintainerAnnouncement, MaintainerState, RecursiveMaintainerRepoAndState - Uses git helpers from fixtures.rs (clone_repo, create_deterministic_commit_with_variant, try_push) - Updated imports to include RECURSIVE_MAINTAINER_DETERMINISTIC_COMMIT_HASH - All unit tests pass: cargo test --lib
2025-11-27Task 3: Refactor maintainer push authorization test to fixture-first patternDanConwayDev
- Deprecated setup_repo_for_maintainer helper - test_push_authorized_by_maintainer_state_only now creates own TestContext - Uses FixtureKind::RepoState and FixtureKind::MaintainerState - Uses git helpers from fixtures.rs (clone_repo, create_deterministic_commit_with_variant, try_push) - Uses CommitVariant::Maintainer and MAINTAINER_DETERMINISTIC_COMMIT_HASH - Test compiles and passes: cargo test --lib (25 passed, 0 failed)
2025-11-27Task 2: Refactor owner push authorization test to fixture-first patternDanConwayDev
- Refactored test_push_authorized_by_owner_state to use fixture-first pattern - Test now creates its own TestContext and uses FixtureKind::RepoState - Uses git helper functions from fixtures.rs (clone_repo, create_deterministic_commit, try_push) - Follows the 3-step pattern: Generate fixtures → Send to relay → Verify behavior - Deprecated setup_repo_with_deterministic_commit with migration guide - Test passes: cargo test --test push_authorization test_push_authorized_by_owner_state - No API changes required for main project tests