Skip to content

id: F11.10 large-module split has no automated enforcement — add a production file-size check to the fast lane #1438

Open

Description

@dezren39

Gap found by the #1078 Phase 11 claimed-done audit (slice 5, coverage gaps)

F11.10 (large-module split, #808) has no regression-catching automation for its exit criterion.

Exit criterion (.opencode/plans/phase-11-foundations.md): "No file over 2,500 lines of production code; full suite passes unchanged; diff shows moves only."

Verified on current main 95cd41f0 (2026-10-27, #1078 audit slice 5):

  • The criterion holds today: scanning all .rs files under pkgs/ + apps/ (production lines = lines before the first #[cfg(test)]), the largest production source file is pkgs/id/src/cli.rs at 2,200 prod lines, then web/routes.rs at 2,141 — no src/ file is over 2,500.
  • But nothing enforces it: git grep for 2500 / 2,500 across pkgs/id and .github finds no check (only crash-corpus data rows); the fast-lane check list (.github/scripts/id-pr-checks.txt, 26 checks) contains no file-size check; no test, lint, or flake check counts lines. The audit's verification was a one-off manual scan (slices 2 and 5 of id: validation — delivered Phase 11 items (claimed-done audit) #1078) — the next 2,500-line file would land silently and F11.10 would regress exactly the way F11.4 did (id(ci): F11.4 regression — fast-lane median PR feedback is 19m09s over the last ten runs (exit: under 15m) #1401).
  • (For the record: the largest .rs file overall is the integration test pkgs/id/tests/cli_integration.rs at 4,312 lines — test code, outside the criterion's "production code" wording; splitting it is optional and not what this issue requires.)

Acceptance criteria

  • An automated check runs in the fast lane (a flake check added to .github/scripts/id-pr-checks.txt, or an equivalent test) that fails when any production .rs file under pkgs/id/src (and any other tree the F11.10 criterion is read to cover) exceeds 2,500 production lines, naming the offending file.
  • The check passes on current main and is demonstrated to fail on a synthetic over-limit file (or an equivalent unit test of the checker).
  • The check is named in the F11.10 row of the Phase 11 records so the next audit finds enforcement, not just a manual scan.

Activity

  1. added
    kind/testTest coverage, test infrastructure, or test-only fixes
    source/queue-workerFiled or worked by the queue/worker pilot
    priority/highImportant and time-sensitive
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    nowOrg Project gate: active priority — orchestrator adds to the board
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · state: picked up

  4. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · state: done

    Triage verdict — #1438: CONFIRMED (gap real, and the predicted regression has already happened); routed, no close

    Verified fresh this run against origin/main (0e26fa4b3), full-tree scan of all 620 .rs files under pkgs/ + apps/ (audit method: production lines = lines before the first in-file #[cfg(test)]):

    1. No enforcement exists. .github/scripts/id-pr-checks.txt (26 checks) contains no file-size check; repo-wide grep finds no line-count test or lint (only per-function clippy too-many-lines-threshold = 100, which is unrelated). check-id-pr-checks.sh guards the check list — a new check must be listed there to run.
    2. The criterion is now actively violated. pkgs/id/src/web/markdown.rs — 10,045 lines, first #[cfg(test)] at line 5285 → 5,285 production lines — was added by merge PR fix(design-code): repoint :18745 legs to antigravity-direct :18751 (#1413, unblocks opencode#1409) #4626 (merged 2026-11-02, absent from the first parent) and landed silently: exactly the failure mode this issue predicted. Additionally cli.rs grew 2,200 → 2,490 and web/routes.rs 2,141 → 2,408 prod lines since the 2026-10-27 audit — both approaching the limit.
    3. No competing work. No open PR mentions id: F11.10 large-module split has no automated enforcement — add a production file-size check to the fast lane #1438; no branch owns a size check. (Note for the record: pkgs/id/src/encryption/tests.rs scans at 2,850 pre-first-marker lines, but it carries no in-file #[cfg(test)] because it is module-gated test code — #[cfg(test)] mod tests; in encryption/mod.rs:41 — so it is outside the criterion's "production code" wording, same as the audit's treatment of cli_integration.rs. The follow-up check must encode this exclusion by path/convention.)

    Routing: enqueued follow-up small_fix task 6599 — split markdown.rs moves-only back under 2,500 prod lines per file, add the fast-lane check (flake check + id-pr-checks.txt listing), demo fail-on-synthetic / pass-on-tree, name it in the F11.10 Phase 11 records. Issue stays open until 6599 lands.

  5. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 2, 2026
  6. 133 remaining items

  7. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  8. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

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

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  12. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue 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)kind/testTest coverage, test infrastructure, or test-only fixesnowOrg Project gate: active priority — orchestrator adds to the boardpriority/highImportant and time-sensitivequeue/parkedQueue task is parked (waiting on CI, time, or an event)source/queue-workerFiled or worked by the queue/worker pilotstatus/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions