refactor(db): extract authentication allowlist store - #6784
Closed
TheSentinel454 wants to merge 1 commit into
Closed
refactor(db): extract authentication allowlist store#6784TheSentinel454 wants to merge 1 commit into
TheSentinel454 wants to merge 1 commit into
Conversation
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 25, 2026 16:20
ce7029f to
f30633f
Compare
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 25, 2026 20:06
f30633f to
b7347e7
Compare
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 25, 2026 20:59
b7347e7 to
fa88a64
Compare
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 26, 2026 14:33
fa88a64 to
e951213
Compare
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 26, 2026 15:53
e951213 to
7ae63f6
Compare
TheSentinel454
marked this pull request as ready for review
August 27, 2026 14:05
wpfleger96
reviewed
Aug 27, 2026
wpfleger96
left a comment
Member
There was a problem hiding this comment.
🤖 Combined review from three independent passes (two source reviews + one E2E test run at exact head 7ae63f6): no blocking findings; one MINOR (non-blocking) note below.
Verified clean:
- Pure extraction: the five moved
Dbmethods (is_pubkey_allowed,has_allowlist_entries,add_to_allowlist,remove_from_allowlist,list_allowlist),AllowlistEntry, and theallowlist_is_scoped_to_communitytest are byte-identical after relocation; every removedlib.rsline reappears verbatim. All five span names, community-scoping predicates, UPSERT idempotency, and delete scoping preserved.pub use allowlist::AllowlistEntrykeeps the root path compiling; the live auth consumer inbuzz-relay/src/handlers/auth.rsis unchanged. - The backfill boundary is deliberate and correct:
backfill_from_allowliststays with therelay_membersowner because it orchestrates NIP-43 membership writes (including the non-empty-members guard against re-adding removed members) and only reads the allowlist. Both reviewers independently concluded moving it would conflate the auth gate with membership policy. - E2E at head on fresh Postgres: moved allowlist test 1/1; an ephemeral black-box probe of
Db::backfill_from_allowlist()passed (hex conversion,memberrole, community scoping, non-empty guard);relay_members::tests::9/10 with the single failure being a known pre-existing ownership-transfer mismatch that predates this stack;cargo check -p buzz-relaypasses.
MINOR (non-blocking): a third copy of the setup_db/make_community Postgres test helpers now exists across module test mods (same note left on #6782). A shared #[cfg(test)] helper module as a stack-wide follow-up would remove the duplication.
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 27, 2026 20:07
7ae63f6 to
95eb593
Compare
Signed-off-by: OpenAI Codex <codex@openai.com>
TheSentinel454
force-pushed
the
codex/issue-12-allowlist-store
branch
from
August 28, 2026 14:55
95eb593 to
4daa71f
Compare
Contributor
Author
TheSentinel454
added a commit
that referenced
this pull request
Aug 28, 2026
## Summary Finish the remaining database-store extraction tracked by [TheSentinel454#2](TheSentinel454#2) in one reviewable PR. This consolidates the previously stacked domain slices after #6782 merged. It preserves the runtime/store boundary established by #6660, #6668, #6700, and #6782 while separating database runtime infrastructure from domain-owned persistence: - `runtime/` owns pool construction and sizing, writer/reader routing, read sessions and route proofs, transaction infrastructure, observability primitives, replica fencing, health support, migrations, and cross-cutting runtime tests. - `store/` owns domain records, SQL, row parsing, locks and invariants, `Db` domain methods, focused tests, and logical-operation datastore spans. - `lib.rs` remains a 57-line compatibility facade that preserves existing crate-root paths and `Db` method signatures through re-exports. Domain coverage includes API tokens, authentication allowlists, reminders, event queries, threads, reactions, feeds, users and DMs, push, workflows/runs/approvals, relay membership and invites, product feedback, moderation/admin moderation, relay admin actions/operators, git repositories, archived identities, usage, partition maintenance, deletion, channel membership inherited from merged #6782, and the final runtime/store layout. The branch has been rebased onto current `main`. Database changes that landed there were incorporated rather than overwritten: `relay_admin_actions.rs` and `relay_operators.rs` now live under `store/`, their 27 public `Db` wrappers and existing behavior remain intact, and every wrapper has exactly one fixed-name datastore span. Concurrent changes to migration, moderation, admin moderation, and error handling are also retained. ### Exact base and head - Base: `main` at `ed11c8d8bf0a17402be5cf243724f89471530d2f` - Head: `codex/issue-2-store-extraction` at `be24430472d1a87ac5c0d6026c620cd6caea3537` ### Related issue - Structural tracker: [TheSentinel454#2](TheSentinel454#2) - Domain trackers: [#6](TheSentinel454#6), [#7](TheSentinel454#7), [#12](TheSentinel454#12), [#13](TheSentinel454#13) - Acceptance trackers: [#17](TheSentinel454#17), [#19](TheSentinel454#19) This supersedes #6783, #6784, #6787, #6788, #6789, #6792, #6820, #6794, #6796, #6797, #6798, #6799, #6804, #6805, #6806, #6808, #6809, #6811, #6812, #6813, #6814, #6815, and #6890. Their discussions remain available for review history. ### #17 / #19 acceptance - Preserves the metric names, fixed labels, transaction/lock timing boundaries, and privacy/cardinality constraints introduced by #6700. - Keeps exactly one datastore span per public logical operation, including the 27 relay-admin wrappers added on `main`. - Removes `store_ownership.rs`; physical ownership and focused source guards now enforce the boundary directly. - Leaves no `impl Db`, domain SQL, focused domain test group, or datastore span in `lib.rs`. - Preserves existing public paths such as `buzz_db::channel`, `buzz_db::event`, and `buzz_db::workflow` through crate-root re-exports while keeping internal `runtime` and `store` namespaces private. ### Non-goals - No SQL, schema, locking, transaction, retry, timeout, or client-visible behavior changes. - No generic store traits, domain handles, broad `PgExecutor` migration, new store crate, raw pool accessor, or broader directory reorganization. - No tracker issues are closed by this PR. ### Risk The cumulative diff is large but structural. Risk is primarily module-path, ownership, or conflict-resolution drift. It is mitigated by preserving public re-exports, comparing the newly moved `main` implementations to their upstream source, source guards, touched-crate compilation, PostgreSQL-backed test coverage, and an independent exact-head review on a separate clean Blox workstation. ### Testing Author workstation `buzz-tornquist-pr-6987-rebase`, rebased branch ending at exact head `be24430472d1a87ac5c0d6026c620cd6caea3537`: - `cargo fmt --all --check` - `cargo clippy -p buzz-db -p buzz-relay --all-targets -- -D warnings` - `cargo test -p buzz-db --lib` — 113 passed, 240 PostgreSQL tests intentionally ignored - `cargo test -p buzz-db --test observability_source` — 2 passed - PostgreSQL-backed `buzz-db` coverage under native PostgreSQL — 235 passed in the shared serial run; the five shared-state/config-sensitive cases passed as isolated reruns against fresh schemas, including the two owner-limit tests with their fixture's `BUZZ_MAX_COMMUNITIES_PER_OWNER=3` - `cargo test -p buzz-relay --lib -- --test-threads=1` under native PostgreSQL/Redis — 991 passed; the three current-month partition-sensitive identity-archive cases passed after provisioning the August 2026 test partition; 87 infrastructure-marked tests remained ignored - Source/diff guards — relay-admin implementation bodies match current `main`; all 27 public wrapper signatures are retained; exactly one datastore span wraps each wrapper; `lib.rs` has zero `impl Db` blocks and zero datastore spans; no duplicate top-level relay-admin modules or `store_ownership.rs`; `error.rs` matches current `main` Independent clean review workstation `buzz-tornquist-pr-6987-review`, detached at exact head `be24430472d1a87ac5c0d6026c620cd6caea3537`: - `cargo fmt --all --check` - `cargo clippy -p buzz-db -p buzz-relay --all-targets -- -D warnings` - `cargo test -p buzz-db --lib` — 113 passed, 240 ignored - `cargo test -p buzz-db --test observability_source` — 2 passed - Exact-head ownership/re-export/instrumentation audit — no remaining actionable findings --------- Signed-off-by: OpenAI Codex <codex@openai.com> Signed-off-by: tornquist <tornquist@squareup.com> Co-authored-by: OpenAI Codex <codex@openai.com>
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.
Current reconstructed head
Exact base:
codex/issue-12-api-token-storeatefd769903a0aab75961453ab247bef923f64ac38Exact head:
codex/issue-12-allowlist-storeat7ae63f6be2f3f1265b976f37756f3ca0caaffa59This current head removes
crates/buzz-db/tests/store_ownership.rs; no replacement path-sensitive ownership test is introduced. Apart from removing that complete test-file diff, the production patch is byte-for-byte identical to the previously reviewed slice. This remains part of tracker #2 and the #17/#19 acceptance work.Independent exact-head review from a separate clean Blox workstation found no issues. Current-head evidence passed formatting, strict
buzz-dbclippy, 111 non-PostgreSQL library tests with 200 PostgreSQL tests ignored, the observability source test, relay consumer compilation, exact ownership/unique-span review checks, and 1 allowlist PostgreSQL test on native PostgreSQL where applicable.Why
Complete the authentication-allowlist half of tracker #2 and domain issue #12 while keeping
Dbas the stable public facade. This child stacks on the API-token extraction in #6783.What
allowlist.rsowner forAllowlistEntry, every allowlistDbmethod, inline SQL, focused tests, and datastore spansDbsignature and the crate-rootAllowlistEntryexportStack
Non-goals
PgExecutormigration, raw pool accessor, new crate, or directory-wide reorganizationRisk Assessment
Low. This is a direct ownership move. The guard also prevents relay-membership backfill orchestration from drifting into the authentication allowlist owner.
Blox Verification
Author workstation:
buzz-tornquist-issue-2-store-stack(2046520), exact headf30633fc37d9b44860db5644418e066a917dc113.cargo fmt --all --check— passedcargo clippy -p buzz-db -p buzz-relay --all-targets -- -D warnings— passedcargo test -p buzz-db allowlist::tests:: -- --ignored --test-threads=1— 1 passedIndependent exact-head review:
buzz-tornquist-pr-6784-review(2049132) found no critical, important, or minor issues. The reviewer confirmed exact production method/test equivalence, one span per operation, and that NIP-43 backfill remains relay-membership owned.Generated with Codex
Superseded pre-comment restack verification
PR #6700 merged before publication completed. This layer was restacked onto current main through the exact parent named above; the final cumulative tip is 2ddcc8a. Cumulative author gates passed: formatting and diff checks; buzz-db and buzz-relay all-target clippy with -D warnings; DB lib 111 passed / 200 ignored; ownership 22/22; observability 1/1; the full isolated PostgreSQL domain matrix; and relay lib 910 passed / 49 ignored.
buzz-tornquist-pr-6784-final-review(2057622), fresh shallow checkoute69f4e7180eae47d96c56012f9cbea966da584e2b7347e78843d7b63e3cb383da7cbf5ffc956d4f0Reviewed the authentication allowlist extraction.
AllowlistEntry, community-scoped SQL,Dbwrappers, test, and datastore spans move together toallowlist.rs; crate-root compatibility is retained. The module remains separate from NIP-43 relay membership and introduces no migration or backfill ownership change.Verification: format and diff checks passed;
buzz-db --all-targetsclippy passed with-D warnings; DB lib tests passed (111 passed, 200 PostgreSQL tests ignored); ownership (4/4) and observability (1/1) guards passed; the allowlist PostgreSQL isolation test passed on native PostgreSQL 17 with migrations 1-32 successful; relay lib test target compiled successfully. Final worktree was detached at the exact head and clean.Complete evidence archive SHA-256:
a8fd059c66d343e4d98850cb67747a41cb8c6161f98f74f3577ec6cc547fab63.Comment-addressed restack
Review follow-up on #6777 removed only the low-value replaceable ownership source test. This PR was restacked onto its rewritten parent; its production patch is unchanged.
7798ea83fe393cdc457577bb09a4fd7546b9722bfa88a642a7aa10ce74f8cea692653e50b427f89e6fa2f104d42c6ba85bdf62e7ccb74ceaf4a84f67buzz-db/buzz-relayClippy; DB lib 111 passed / 200 ignored; ownership 21/21; observability 1/1; every moved PostgreSQL test; relay lib 910 passed / 49 ignored.