Skip to content

id: --no-default-features lib build broken on main — chat.rs imports world-gated sanitize_chat, invite.rs uses world-gated petname #4159

Closed

Description

@dezren39

Bug

pkgs/id does not compile with --no-default-features on current main — two runtime modules depend on items that are gated behind the world feature:

  • pkgs/id/src/chat.rs:43: use crate::world::sanitize_chat; (used at :155 and :180) — crate::world is #[cfg(feature = "world")] (src/lib.rs:233-234), so the import is unresolved without the feature: error[E0432]: unresolved import crate::world.
  • pkgs/id/src/invite.rs:43: crate::petname::is_format_char in Invite::new — the petname re-export is #[cfg(feature = "world")] (src/lib.rs:207-208): error[E0433]: cannot find petname in crate.

Verification (2026-11-02, queue worker lane D, task 5043)

On clean main bc0afe2 (laptop worktree, no modifications):

cargo check --no-default-features --lib   (in pkgs/id)
error[E0432]: unresolved import `crate::world`
error[E0433]: cannot find `petname` in `crate`

The same two errors block cargo test --no-default-features --lib <any test> — this is what prevents the #1708 acceptance variant 1 (world_names_are_bounded_and_are_a_single_path_segment without default features) from even compiling, independent of the test gating fixed by PR #4028 (merged 21dd7cc). With --features world the focused test passes.

Why it matters

The no-default-features build is a supported configuration (the #1708 test matrix names it). Right now it is silently broken at the lib level: any contributor running the reduced-feature build hits compile errors in modules unrelated to their change, and feature-gated test coverage (like the world-name test) cannot run in that configuration at all.

Acceptance criteria

  • cargo check --no-default-features --lib succeeds in pkgs/id on main.
  • cargo test --no-default-features --lib world_names_are_bounded_and_are_a_single_path_segment compiles and passes (the test itself is feature-gated by PR test(id): gate world-name validation test by feature #4028; it must not assert world-only behaviour when the feature is absent).
  • The fix preserves behaviour with default/world features: chat sanitisation and invite name validation semantics unchanged (e.g. move sanitize_chat / is_format_char to an ungated home, or gate the dependent code — pick the smaller, semantics-preserving option and pin it in the PR).
  • Existing test suites in the default configuration still pass.

Dedup

Found during task 5043 (the #1708 fix) on 2026-11-02. Searched open + closed for no-default-features / sanitize_chat / petname coverage — none found. Distinct from #1708 (the serve.rs test gating, fixed by PR #4028).

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    priority/highImportant and time-sensitive
    effort/sSmall: expected under 2 hours of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 2, 2026
  2. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Intake review

    🤖 Fleet monitor (repo-fleet-monitor) intake pass, 2026-11-02.

    • Related: filed from queue worker lane D verification (task 5043) on clean main bc0afe2f5c642501a01823adb237ee6fc9298d32; the gated items live in pkgs/id/src/lib.rs (world feature gates at :207-208 and :233-234).
    • Live check: still live — verified reproduced on clean main today by the filing lane (cargo check --no-default-features --lib fails with E0432/E0433); no merged PR references this issue. The body already carries an acceptance-criteria section, so none was appended.
    • Notes: two distinct gate leaks (chat.rs -> world::sanitize_chat; invite.rs -> petname::is_format_char), one shape: runtime modules depending on world-gated items. The fix choice matters — ungating the helpers vs gating the call sites changes the feature contract; the triage should pin which side moves.
    • Risks: low blast radius (feature-combination build only), but --no-default-features consumers are broken outright until fixed.
    • Suggested approach: move sanitize_chat / is_format_char (or thin ungated wrappers) out from behind the world gate if they are pure helpers; verify with cargo check --no-default-features --lib plus the default-features build in CI.
  3. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  4. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 7426 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  5. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed on Nov 4, 2026
  6. 28 remaining items

  7. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  8. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

    Why parked (verified 2026-11-05, task 9771)

    Issue #4159 names two sites, both verified still present at current main this run (gh api reads): pkgs/id/src/chat.rs line 43 use crate::world::sanitize_chat; and pkgs/id/src/invite.rs line 43 crate::petname::is_format_char, with both targets world-gated in pkgs/id/src/lib.rs (lines 214–215, 245–246).

    PR #5662 — "fix(id): compile without world features (#3850)", branch queue/8794-3850-id-no-default-features, OPEN and updated 2026-11-04T23:00:35Z — already implements exactly this: it moves chat text sanitation to an ungated shared module and uses the ungated format-character predicate for invite validation, touching pkgs/id/src/chat.rs, pkgs/id/src/invite.rs, and pkgs/id/src/lib.rs, and reports cargo check -p id --no-default-features passing. Issue #3850 is the same defect (its title names the invite.rs half).

    Building a second PR for issue #4159 would duplicate task 8794's work, so task 9771 parks for 30 minutes naming PR #5662 as the conflicting artifact, per the worker runbook.

  9. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 5, 2026
  10. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

  11. removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  12. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

  13. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    on Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitivesource/creatorFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions