Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/agent-memory/feature-review/MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@

## Closed-issue residuals (lookup only; details in the residuals index)
- [review-residuals index](project_review-residuals-index.md) — per-issue summaries #442-#968 (#930 host-path PARTIAL; #942 `.csproj` disarms C# hook check)
- [1002](project_1002-review-residuals.md) — aria-selected with no CSS = blocking; ratified exemption left AC23 false (cycle 1); cycle 2 PASS; span wrap needs closest() click routing
- [985](project_985-review-residuals.md) — cycle 1 blocker: account name in encoded scratchpad dir; cycle 2 PASS; hook sim param is `-RawPayload`
- [973](project_973-review-residuals.md) — AC premise defect = autonomous spec amendment; bundled PoshQC FAIL row + vacuous PASS
- [438](project_438_cycle1_findings.md) · [440](project_440-review-residuals.md) · [441](project_441-review-residuals-and-494-handoff.md) · [457](project_457-review-residuals.md) · [464](project_464-review-residuals.md) · [489](project_489-review-residuals.md) · [493](project_493-review-residuals-and-msbuild-log-gate-adjudication.md) · [511](project_511-rescope-review-residuals.md) · [553](project_553_ci_split_review_pattern.md) · [565](project_565-review-residuals.md) · [584](project_584-review-residuals.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: 1002-review-residuals
description: "#1002 (EFC descendant tree, trash preselect, QFC nesting): cycle 0 4 blocking; cycle 1 1 autonomous (AC23 vs ratified exemption); cycle 2 14-10 PASS 0 blocking"
metadata:
type: project
---

Full-bug review, base 8e4ad1ecb, session cwd = review tree (no mirror). All artifacts validated first try with `validate_orchestration_artifacts` using the #985 policy-audit shape (Template Provenance, 7-col metrics table incl. a JavaScript row, checklist bullets, 1.2.1 bullets, 1.2.2 verdict paragraphs).

**Cycle 0 (head e96e65302, 2026-10-22T10-39):** 26/26 AC PASS, 4 blocking (3 autonomous, 1 human).
- A renderer that marks selection by attribute (`aria-selected="true"`) needs a matching CSS rule; grep the asset CSS for the attribute. None existed -> blocking autonomous (B-4).
- Modified-file floor split: coverage LOWERED by the diff = autonomous; pre-existing MessageBox/WebView2 residue = human_decision_required (CLAUDE.md UT2 exemption needs maintainer ratification); trivial `?? throw` guards at 50% branch = autonomous.
- Hook simulation: `Invoke-FeatureReviewCoverageValidation -InputText (@{last_assistant_message=$t; stop_hook_active=$false}|ConvertTo-Json)`.
- Evidence filename stamps are UTC; local clock is -0400 — use `date -u` for the review stamp.

**Cycle 1 re-audit (head b72ac1dbb, 2026-10-22T13-37):** B-1..B-4 resolved; 1 new blocking R-1 autonomous.
- Reusable: when a maintainer ratifies an exemption mid-loop, grep the spec AC text for clauses it falsifies ("no coverage exclusion is added"). The decision lifted the plan's Do-Not-Do but nobody amended AC23, which stayed checked -> AC FAIL, autonomous clerical amendment (reclass route to human stated). See [[973-review-residuals]] for the AC-amendment precedent.
- Member-level `[ExcludeFromCodeCoverage]` on async methods removes the state machine and lambdas from Cobertura too (no residual class nodes); valid-line counts drop (Actions 111->28).
- net48 `ExcludeFromCodeCoverageAttribute` has no `Justification` (CS0246); comment form is correct.
- Freshness check that worked: trx `<Counters>` + per-test `outcome=` grep in `coverage/test-results/mstest-coverage-run.trx`, and source mtimes earlier than the trx.
- Reused scratchpad `filecov.py` (args: repo xml base files...) for per-file + changed-line union.

**Cycle 2 re-audit (head 54b36112a, 2026-10-22T14-10):** PASS, 0 blocking; 26/26 AC PASS. R-1 resolved by a clause-only AC23 edit plus `## Planner Amendments`. All three artifacts validated on the first try in the same shape.
- Wrapping JS child text in a span is safe only if every click branch resolves its target with `closest(...)`; grep the handler, not just the test.
- Orchestrator AC9 ruling: a client-side transient render (bridge `subfolderResult`) is not governed by a "server render unchanged" AC.

**Follow-ups owed:** manual Outlook check pending (AC26, non-blocking).
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ metadata:

Sub-index split out of MEMORY.md (2026-10-09) to keep the root index under its read limit. One line per memory file.

- [efc-qfc-separate-breadcrumb-surfaces-1002](project_efc_qfc_separate_breadcrumb_surfaces_1002.md) — EFC and QFC pickers are separate surfaces; bind clears selection; .mjs not in CI

- [sortemail-split-prompt-seam-956](project_sortemail_split_and_prompt_seam_956.md) — per-call prompt session; AsyncLocal breaks stickiness
- [sortemail-966-consolidation-959](project_sortemail_966_consolidation_959.md) — live path builds helpers with FOLDER NAME; ToDoModel copy uncompiled
- [sortemail-latent-defects-959](project_sortemail_latent_defects_959.md) — callers discard the bool; L4 has a null-array defect
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: efc-qfc-separate-breadcrumb-surfaces-1002
description: EFC and QFC folder pickers are two unrelated WebView2 surfaces; #997 descendant code never reaches EFC; node .mjs suites are not in TaskMaster CI
metadata:
type: project
---

EFC folder area = `QuickFiler.Controllers.BreadcrumbBridgeRouter` + UtilitiesCS `BreadcrumbRow`/`BreadcrumbHtmlRenderer`/`BreadcrumbDocumentAssets.BridgeJs` (C# string JS, NavigateToString). QFC = `FolderBreadcrumb.html/.js` + `FolderBreadcrumbBridgeRouter` + `BreadcrumbSelectionSession` + `BreadcrumbDescendantNode` (internal; UtilitiesCS grants no InternalsVisibleTo QuickFiler). They share only `BreadcrumbRowBuilder.BannerPrefix`.

**Why:** #1002 research (2026-10-22) found a "port the QFC fix to EFC" request means building EFC's own keyed tree; also EFC `BindRowsAsync` clears selection then re-navigates, so a selection posted as a `render` message right after a bind can race the navigation.

**How to apply:** for any EFC/QFC "same fix" request, check which surface first; preselect inside the bind (rendered document) rather than post-bind messages; `tests/quickfiler-breadcrumb/*.mjs` give no CI signal, so pair them with C# text-contract tests. See [[percoverage-epic-136]] for QuickFiler coverage context.
Loading
Loading