Repository navigation
Refactor: Remove the orphan QuickFiler.Interfaces.IQfcFormController #632
Description
Activity
Remove the orphan
QuickFiler.Interfaces.IQfcFormController(Issue #632)-
Date captured: 2026-08-26
-
Author: Dan Moisan
-
Status: Promoted -> docs/features/active/Remove_the_orphan_QuickFilerInterfacesIQfcFormController/ (Issue Refactor: Remove the orphan
QuickFiler.Interfaces.IQfcFormController#632) -
Captures: follow-up candidate 5 of
## Follow-up Candidatesin
docs/features/active/qfc-collection-controller-defects-468/spec.md -
Origin: issue Bug: qfc-collection-controller-unreachable-load-paths #468 defect family, task
[P14-T5] -
Origin feature folder:
docs/features/active/qfc-collection-controller-defects-468 -
Issue: Refactor: Remove the orphan
QuickFiler.Interfaces.IQfcFormController#632 -
Issue URL: Refactor: Remove the orphan
QuickFiler.Interfaces.IQfcFormController#632 -
Last Updated: 2026-08-26
Summary
Three types in this repository are named
IQfcFormController:Type Path and line Status QuickFiler.Controllers.IQfcFormControllerQuickFiler/Controllers/IQfcFormController.cs:13live; derives from IFilerFormControllerQuickFiler.Interfaces.IQfcFormControllerQuickFiler/Interfaces/IQfcFormController.cs:7orphan — no implementer QuickFiler.Notes.IQfcFormControllerQuickFiler/Notes/notes_interfaces.cs:13not compiled The orphan in the
QuickFiler.Interfacesnamespace has no implementing type. Its only referent is
QuickFiler/Interfaces/IQfcHomeController.cs:9, which declares
IQfcFormController FrmCtrlr { get; }and, being in theQuickFiler.Interfacesnamespace, binds to
the orphan by same-namespace preference rather than to the live interface.Why this matters
It is a name-collision trap. Any future file placed in the
QuickFiler.Interfacesnamespace that
writes an unqualifiedIQfcFormControllerbinds to the orphan silently and compiles, producing a
type that satisfies no production implementation. Issue #468's spec required an explicit
disambiguation note before any editing ofQfcCollectionController.csfor exactly this reason.Why it was deferred rather than absorbed
Both files are outside the issue #468 branch's owned file set, and removing the orphan forces a
decision aboutIQfcHomeController.FrmCtrlr— whether it should bind to the live interface instead,
which is a contract change on a second interface. That is more than a deletion.Proposed approach when promoted
- Confirm the orphan has no implementer: search for
: IQfcFormControllerand for
QuickFiler.Interfaces.IQfcFormControlleracross the solution. - Decide the fate of
IQfcHomeController.FrmCtrlr: either retype it to
QuickFiler.Controllers.IQfcFormController(likely correct) or remove it. - Delete
QuickFiler/Interfaces/IQfcFormController.csand itsCompile Includeentry. - Consider whether
QuickFiler/Notes/notes_interfaces.csshould also be deleted; it is not compiled
and contributes a third same-named type to any future search.
Acceptance ideas (for the promoted entry to refine)
- Exactly one compiled type is named
IQfcFormController. IQfcHomeController.FrmCtrlrbinds to the live interface, and every implementer compiles.- The full solution builds with 0 errors and the full test suite stays green.
-
Problem / Why
(not provided in potential file)
Proposed Behavior
(not provided in potential file)
Acceptance Criteria
(not provided in potential file)
Constraints & Risks
(not provided in potential file)
Test Conditions
(not provided in potential file)
Source
From: docs/features/potential/2026-08-26-remove-orphan-quickfiler-interfaces-iqfcformcontroller.md