Skip to content

fleet-queue(validate): payload identity accepts placeholders — prs:[null], string/absent PR numbers, and set:{} validate with no usable identity #5549

Closed

Description

@dezren39

fleet-queue(validate): payload identity accepts placeholders — prs:[null], prs with string/absent numbers, and set:{} all validate with no usable identity

Evidence (verified this run, laptop primary @ 4fb0927)

pkgs/fleet/crates/fleet-queue/src/validate.rs, manual_schema_errors (identity block, ~lines 114–125):

  • has_issue only requires issue.number to be an integer (is_i64) — sign unchecked.
  • has_prs only requires the prs array to be non-empty — its elements are never inspected there. The dedupe cross-check (dedupe_errors) extracts PR numbers with filter_map(... as_i64), so elements without an integer number silently vanish from the cross-check instead of failing it.
  • has_set accepts any object, including {}.
  • has_source (the one strict alternative) does require an integer pr + non-empty finding — but its pr sign is also unchecked.

Probe with the shipped validator (laptop ~/fleet-brokers/bin/repo-queue validate, probe dir ~/git/fleet/probe-validate-identity), starting from the real packet for #5424 (hidden_files/packet-5424-fix.json, dedupe repo-health:v1:fix:developing-today/code:issue:5424):

variant mutation result
control unmodified real packet valid: true
A issue removed, prs: [null] valid: true — a fix packet bound to no issue and no PR
B issue removed, prs: [{"number": "5424"}, {}] valid: true — no element carries an integer PR number
C issue removed, set: {} valid: true — an empty object is an "identity"
D (control) issue.number: -5 rejected — but only via the dedupe-key mismatch, not the identity check; a maintenance-family key (no issue cross-check) would not catch it

Compatibility check: across every packet in the fleet's own hidden_files/packet-*.json corpus, all 87 non-empty prs elements are objects with an integer number, and real set objects carry content (e.g. {"prs": [605, 620]}) — so requiring real identity shapes breaks no legitimate packet shape in use.

Why it matters

The payload identity is the machine-readable binding a queue worker acts on: which issue to fix, which PRs to shepherd, which set a remainder belongs to. A packet that validates with a placeholder identity enqueues cleanly and only fails later — at claim/work time, against a worker that cannot tell which GitHub object it owns. #5482/#5510 closed the same class of hole in dedupe keys; this is the same hole in the payload the key points at.

Acceptance criteria

Activity

  1. added
    kind/bugSomething isn't working (prefixed form of the classic bug label)
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    source/creatorFiled by the new-issue-creator job
    priority/normalOrdinary priority (the default)
    work/self-assignedAn agent grabbed this item directly, outside the queue
    on Nov 4, 2026
  2. developing-today commented on Nov 4, 2026

    @developing-today
    Contributor
  3. added
    app/fleetpkgs/fleet multicall binary + platform crates
    on Nov 4, 2026
  4. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · filed

    • Agent: new-issue-creator job (lane A, slug new-issue-creator-code-a)
    • Session / ID: cron new-issue-creator-code-a run 2026-11-04T15:17Z
    • Found via: filed this run
    • Task: Tighten fleet-queue validate's payload-identity check so placeholder identities (prs:[null], prs elements without an integer number, set:{}) no longer validate; identity numbers must be positive. Guarded self-solve this run.
    • Expectation: effort/s — done = fix merged, cargo test -p fleet-queue green on laptop, probe variants A–C rejected and control still valid.
    • Links: probe ~/git/fleet/probe-validate-identity (laptop); body file hidden_files/issue-fleet-queue-validate-placeholder-identity.md
  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

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

    app/fleetpkgs/fleet multicall binary + platform crateskind/bugSomething isn't working (prefixed form of the classic bug label)priority/normalOrdinary priority (the default)source/creatorFiled by the new-issue-creator jobstatus:donetask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions