Skip to content

Restore EfcViewer folder lineage and segment navigation - #605

Merged
drmoisan merged 12 commits into
mainfrom
bug/efcviewer-missing-lineage-and-segment-navigation-439
Aug 25, 2026
Merged

drmoisan merged 12 commits into
mainfrom
bug/efcviewer-missing-lineage-and-segment-navigation-439

Conversation

@drmoisan

Copy link
Copy Markdown
Owner

Summary

  • Restores EfcViewer folder lineage and typed segment/child navigation for suggested and searched folders.
  • Expands archive-relative targets only for hierarchy resolution while preserving the original filing target for selection and score lookup.
  • Renders resolved folder paths root-to-leaf with Unicode arrow separators and supports validated ancestor and child activation.
  • Retains existing fallback, banner-row, Trash to Delete, keyboard, and ItemViewer boundaries.
  • This PR is opened under an explicit one-time user-authorized exception: the latest feature review is NEEDS REVISION, and the unresolved findings below remain open.

Why

EfcViewer presents archive-relative filing targets, while the hierarchy provider requires exact full Outlook paths. This mismatch caused ordinary folder rows to fall back to a single segment. The change creates an explicit presentation boundary that resolves hierarchy paths without changing the filing target used by existing selection and probability behavior.

What Changed

Core behavior

  • Pass ArchiveRootPath through the Efc binding boundary and expand only targets that are not already archive-rooted.
  • Preserve each row's original FilingTarget separately from its resolved hierarchy path.
  • Resolve and render root-to-leaf lineage, including one separator between adjacent segments.
  • Add typed, validated segment and child activation that selects archive-relative targets and expands children using stable hierarchy keys.
  • Keep invalid input, hierarchy failures, banner rows, and pseudo-rows from changing selection or expansion state.

Tests

  • Add headless router, renderer, codec, row-builder, row-state, controller, and queue regression coverage for lineage, navigation, fallback, and preserved selection behavior.

Documentation and evidence

Architecture / How It Fits Together

EfcFormController supplies the archive root to BreadcrumbBridgeRouter. The router derives a hierarchy-only full path when needed, resolves that path through IFolderHierarchyProvider, and retains the original archive-relative filing target in BreadcrumbRow. The generated document emits typed activation messages, which the codec and router validate before selecting an ancestor or child target or requesting immediate children.

Verification

Completed

  • Recorded focused headless regression execution: 97 passed, 0 failed.
  • Recorded formatter execution: dotnet tool run csharpier format . exited 0 with no final tracked changes.
  • Recorded analyzer build exited 0 with 0 analyzer diagnostics and 0 new findings.
  • Recorded nullable build exited 0 with 0 compiler and nullable diagnostics.
  • Recorded normalized coverage-wrapper execution exited 0 after 6474 passed tests; normalized repository coverage was 84.7835%, and changed/new production coverage was 200/203 (98.522167%).
  • The latest feature audit remains NEEDS REVISION: 13 of 14 acceptance criteria passed, while the final QA-and-coverage criterion remains unchecked.

Recommended

  • Split the oversized production and test files, then add the required headless coverage for EfcFormController.
  • Re-run:
    • dotnet tool run csharpier format .
    • msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform='Any CPU' /p:EnableNETAnalyzers=true /p:EnforceCodeStyleInBuild=true
    • msbuild TaskMaster.sln /t:Build /p:Configuration=Debug /p:Platform='Any CPU' /p:Nullable=enable /p:TreatWarningsAsErrors=true
    • pwsh -NoProfile -File scripts/vscode/Invoke-MSTestWithCoverage.ps1 -SearchRoot . -Configuration Debug -CoverageOutput docs/features/active/2026-08-07-efcviewer-missing-lineage-and-segment-navigation-439/evidence/qa-gates/issue-439-final.normalized.cobertura.xml
  • Re-run the feature review after remediation.

Backward Compatibility / Migration Notes

  • No public configuration, external API, score-model, or ItemViewer FolderBreadcrumb.html behavior changes are included.
  • Existing row-level selection continues to use the original archive-relative filing target.

Risks and Mitigations

  • BreadcrumbBridgeRouter.cs is a modified 596-line production file and BreadcrumbBridgeRouterIssue439Tests.cs is a new 531-line test file, exceeding the repository's 500-line limit. Split both into cohesive units and repeat QA and review.
  • EfcFormController.cs has 81/721 covered lines (11.234397%), below the mandatory 80% modified-file coverage floor. Add headless seams and coverage before requesting review approval.
  • The user-authorized exception permits opening this PR despite the REMEDIATION_REQUIRED review result. It does not represent a passing review, resolved findings, or merge authorization.

Review Guide

  1. Review archive-root expansion and filing-target preservation in the controller and router boundary.
  2. Review typed segment and child activation across messages, codec, generated assets, renderer, and row state.
  3. Review the headless regression tests for fallback, invalid input, selection, and expansion behavior.
  4. Review the latest feature-audit findings before considering approval.
  5. Treat the large coverage XML artifacts as generated evidence; the diff contains 60 files and 1,269,039 insertions.

Follow-ups

  • Resolve the two file-size violations.
  • Raise modified EfcFormController.cs coverage to the required floor with headless tests or seams.
  • Re-run the final ordered QA loop and feature review; do not treat the current review findings as resolved.

GitHub Auto-close

  • None (no verified closing issues and readiness not PASS)

Related issues / PRs

- Promote issue documentation into the active feature lifecycle`n- Record root-cause analysis, acceptance criteria, and validation strategy`n`nRefs: #439
- Define path normalization, lineage rendering, and ancestor navigation`n- Add scoped acceptance criteria and regression coverage requirements`n`nRefs: #439
- Add C# baseline, regression, and QA evidence requirements`n- Specify archive-relative lineage and typed segment navigation scope`n- Require automated acceptance, review, and publishing gates`n`nRefs: #439
Resolve archive-relative folders into stable breadcrumb segments

Retain row identity and filing targets through typed navigation

Add headless regression coverage and QA evidence

Refs: #439
- Add code, feature, and policy audits that classify the branch as needing revision
- Define remediation for file-size violations and EfcForm coverage
- Reopen the final QA acceptance criterion pending remediation

Refs: #439
- Establish baseline and feasibility gates for size and coverage findings
- Plan router, test-file, and controller remediation tasks
- Require headless tests, coverage thresholds, and review handoff

Refs: #439
- Record Phase 0 policy, repository state, and file-size baselines
- Capture the rejected legacy formatter invocation without source changes
- Update baseline and final QA steps to use the required format subcommand

Refs: #439
- Capture formatter, analyzer, nullable, and 6,474-test coverage evidence
- Add normalized Cobertura data for repository and changed-file comparison
- Revise remediation audit checks to use Windows-compatible commands

Refs: #439
- Document the passing headless static audit across 18 relevant test sources
- Establish a 24.41% maximum narrow-seam controller coverage projection
- Mark feasibility tasks complete and stop before out-of-scope Phase 1 work

Refs: #439
- Limit the one-time exception to PR creation and review visibility
- Require disclosure of unresolved findings and exact-head GitHub checks
- Keep merge authorization separate and route broader remediation to #452

Refs: #439, #452
@drmoisan
drmoisan merged commit 3189058 into main Aug 25, 2026
5 checks passed
drmoisan added a commit that referenced this pull request Aug 25, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@drmoisan
drmoisan deleted the bug/efcviewer-missing-lineage-and-segment-navigation-439 branch August 28, 2026 11:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant