Skip to content

Feature: quickfiler-500-line-cap-violations #623

Description

@drmoisan
  • Work Mode: minor-audit

Problem / Why

Three QuickFiler files exceed the repository's 500-line cap defined in .claude/rules/general-code-change.md:

Path Lines
QuickFiler/Controllers/QfcCollectionController.cs 2349
QuickFiler.Test/Controllers/QfcFormControllerTests.cs 827
QuickFiler/Controllers/QfcQueue.cs 610

All three predate issue #446 and none were in its owned file set, so #446 could not address them without widening its blast radius. The cap is not cosmetic here: during #446 the proximity of several files to the cap repeatedly constrained the shape of otherwise-straightforward changes and forced extraction work into unrelated tasks. QfcCollectionController.cs at 2349 lines is more than four times the cap.

Implementation Intent

Each file is decomposed into cohesive units under 500 lines, preserving public API and behavior. For the test file, split along fixture or scenario boundaries; note that QuickFiler.Test.csproj lists all Compile Include entries explicitly, so any new file must be registered there.

Acceptance Criteria

  • QuickFiler/Controllers/QfcCollectionController.cs is at most 500 lines
  • QuickFiler.Test/Controllers/QfcFormControllerTests.cs is at most 500 lines
  • QuickFiler/Controllers/QfcQueue.cs is at most 500 lines
  • No public API change and no test assertion weakened or removed
  • The full QuickFiler.Test assembly remains green

Dependencies / Risks

  • QuickFiler.Test.csproj enumerates every Compile Include explicitly; new files must be added there or they will not build.
  • QfcCollectionController.cs at 2349 lines is large enough that decomposition should be staged rather than attempted in one change.
  • Partial-class splits are the lowest-risk mechanism where a type must stay whole.

Verification Steps

  • Whole-assembly run green before and after each split
  • Coverage does not regress on the moved lines
  • No behavioral diff in the decomposed types

Evidence Checklist

  • Baseline
  • End-state
  • Targeted verification

Source

From: docs/features/potential/2026-08-26-quickfiler-500-line-cap-violations.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions