Skip to content

roster unique-name enforcement: extract the collision-narrowing glue and add a cross-crate parity test #1365

Description

@randlee

Follow-up from PR #1359 QA-2 (PASS, non-blocking; report: #1359 (comment)).

  • IMP-1 (arch-qa ARCH-001, rust-qa-agent QA-003): the collision-narrowing glue around the shared roster_write_delta helper is still duplicated in crates/atm-core/src/team_admin/member_mutation.rs (~470-486) and crates/atm-storage-rusqlite/src/roster_store.rs (~284-299), and preflight calls roster_unique_name_collisions() twice. Extract the narrowing into the shared contract helper so each site is one call.
  • IMP-2 (arch-qa ARCH-002, ruthless-boundary-qa RBQA-F002): no test proves preflight_roster_unique_names and a real SqliteRosterStore agree on an identical fixture; unique_name_i01 exercises only SQL, unique_name_a31 only preflight against TestRosterStore, whose replace_roster is a non-validating seed. Add a parity test that runs both layers against the same seed/write fixtures (legacy collision + metadata-only update, changed name, new name) asserting identical accept/reject.
  • Minor: docs/plans/phase-ay/herdr-naming-test-matrix.md row text typos (a26 "but" -> "and", a27 "reuses" -> "creates").

Cipher-sized; batch with the next roster change rather than its own CI cycle. Refs #1356.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions