Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
306 commits
Select commit Hold shift + click to select a range
6743a32
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 25, 2026
c097a52
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 25, 2026
1624668
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 25, 2026
0496aa6
docs(489): materialise post-round-2 preflight state from predecessor …
drmoisan Aug 25, 2026
ad3f73b
docs(464): materialise post-round-2 preflight state from predecessor …
drmoisan Aug 25, 2026
4c6091d
docs(488): materialise authored plan and feature documents from prede…
drmoisan Aug 25, 2026
0a6aaa3
docs(488): preflight round 1 plan revisions (13 defects)
drmoisan Aug 25, 2026
916fb38
docs(488): preflight round 2 plan revisions (3 defects)
drmoisan Aug 25, 2026
17ae64d
docs(464): resolve preflight round 3 findings in plan and spec
drmoisan Aug 25, 2026
27db6b7
docs(489): clear preflight round 3 (12 defects, 3 blockers, 0 regress…
drmoisan Aug 25, 2026
e4789a6
chore(memory): record that site-specific correction prompts manufactu…
drmoisan Aug 25, 2026
858bcfc
docs(488): preflight round 3 plan revisions (8 defects)
drmoisan Aug 25, 2026
be8eb61
docs(464): resolve preflight round 4 findings in plan
drmoisan Aug 25, 2026
6f5a4d8
docs(488): preflight round 4 plan revisions (3 defects)
drmoisan Aug 25, 2026
ddc1e76
docs(464): record preflight round 5 ALL CLEAR; preparation complete
drmoisan Aug 25, 2026
d9b0b18
docs(epic): fan in prepared feature 464 (EFC controller surface defec…
drmoisan Aug 25, 2026
95deeb5
docs(488): preflight round 5 ALL CLEAR; tag P6-T6 expect-fail
drmoisan Aug 25, 2026
394daef
chore(memory): record preflight ordering-integrity and citation-arity…
drmoisan Aug 25, 2026
8e2f66b
docs(epic): fan in prepared feature 488 (itemviewer breadcrumb lifecy…
drmoisan Aug 25, 2026
1b3f43a
docs(489): clear preflight round 4 (9 defects, 1 blocker, 0 regressions)
drmoisan Aug 25, 2026
0c26983
docs(489): preflight ALL CLEAR at round 5 of 5
drmoisan Aug 25, 2026
ec15928
docs(epic): fan in prepared feature 489 (itemviewer surface defects, …
drmoisan Aug 25, 2026
84efcd1
chore(epic): merge origin/main (PR #610 quickfiler backfill fix) to r…
drmoisan Aug 25, 2026
b06fee0
docs(446): rebase plan and spec citations onto the post-PR-610 tree
drmoisan Aug 25, 2026
dbc53d0
docs(446): apply preflight round 1 defects (12 blocking, 5 advisory)
drmoisan Aug 25, 2026
1e12baf
docs(446): apply preflight round 2 defects (5 blocking, 3 advisory)
drmoisan Aug 25, 2026
2ce5263
docs(446): apply preflight round 3 defects (5 blocking, 3 advisory)
drmoisan Aug 25, 2026
edf26bb
docs(446): apply preflight round 4 defect (1 blocking)
drmoisan Aug 25, 2026
997292a
docs(446): remediate the round 5 blocking defect; preflight NOT CLEAR…
drmoisan Aug 25, 2026
e38eec1
docs(epic): fan in 446 post-PR-610 re-scope (11 stale citations corre…
drmoisan Aug 25, 2026
59939f8
chore(epic): merge origin/main (PR #611 EFC destination resolution) t…
drmoisan Aug 25, 2026
ac33170
docs(498): correct post-#611 stale line and method counts in plan and…
drmoisan Aug 25, 2026
8633b80
docs(446): confirming preflight round returns ALL CLEAR
drmoisan Aug 25, 2026
08cf5a7
chore(memory): record atomic-executor preflight notes from the 498 fi…
drmoisan Aug 25, 2026
17331a1
chore(memory): record the stale-figure sweep lesson from the 498 corr…
drmoisan Aug 25, 2026
6839a28
chore(memory): record the expect-fail substring scoped-run gate hazard
drmoisan Aug 25, 2026
e7db0e6
Merge branch 'worktree-agent-ad876cee871b7fc24' into epic/quickfiler-…
drmoisan Aug 25, 2026
61edc19
(docs): epic-plan final documents
drmoisan Aug 25, 2026
c6723e9
docs(468): phase 0 baseline and toolchain bootstrap
drmoisan Aug 26, 2026
63eebd4
fix(468): remove unreachable load paths and the dead _templateTlp field
drmoisan Aug 26, 2026
8c255ac
refactor(quickfiler): split BreadcrumbBridgeRouter partial class and …
drmoisan Aug 26, 2026
4a8c1b6
docs(epic): seed quickfiler-bug-family epic-status projection and rec…
drmoisan Aug 26, 2026
77fff53
fix(quickfiler): reject out-of-range segmentDoubleClick index (#498)
drmoisan Aug 26, 2026
122dcd8
fix(474): retype _parent to IQfcFormController and drop the runtime d…
drmoisan Aug 26, 2026
0c9dcf4
fix(quickfiler): clear stale SelectedFolderPath on re-bind (#499)
drmoisan Aug 26, 2026
fbe5b3a
fix(286): restore the reentrancy counter on the exceptional exit path
drmoisan Aug 26, 2026
d512fcf
fix(469): replace the unordered move collection with an ordered snapshot
drmoisan Aug 26, 2026
759665b
fix(utilitiescs): resolve archive-relative stems by unique suffix mat…
drmoisan Aug 26, 2026
31ae4f0
fix(utilitiescs): keep the presented stem as the Qfc filing target (#…
drmoisan Aug 26, 2026
8637aaa
fix(473): stop swallowing cancellation and double-logging one root fa…
drmoisan Aug 26, 2026
3e51855
fix(quickfiler): add Efc breadcrumb Left/Right tree navigation (#440)
drmoisan Aug 26, 2026
137ee30
fix(469): correct the diagnostics array length and guard before deref…
drmoisan Aug 26, 2026
d9d379f
chore(quickfiler): capture phase 0 baseline evidence for qfc-item-con…
drmoisan Aug 26, 2026
2f958fa
fix(quickfiler): correct ToggleNavigation double toggle
drmoisan Aug 26, 2026
e47269e
fix(quickfiler): guard WebResourceRequested handler inputs
drmoisan Aug 26, 2026
56356d8
fix(quickfiler): propagate MoveMailAsync failures and honour cancella…
drmoisan Aug 26, 2026
b149893
style(quickfiler): apply csharpier formatting to phase 3 output
drmoisan Aug 26, 2026
03a2e94
fix(quickfiler): dispose read timer and release stale collaborators o…
drmoisan Aug 26, 2026
584e810
fix(quickfiler): unwire item controller events during cleanup
drmoisan Aug 26, 2026
90ac581
docs(quickfiler): record phase 6 scope, contract and teardown-order e…
drmoisan Aug 26, 2026
2fca700
docs(quickfiler): record phase 7 final QC toolchain evidence
drmoisan Aug 26, 2026
e3fe4db
docs(quickfiler): complete acceptance criteria for the item-controlle…
drmoisan Aug 26, 2026
b8be7b7
docs(quickfiler): record final commit and clean-tree verification
drmoisan Aug 26, 2026
0bb1ee2
docs(quickfiler): record feature review audits for item-controller de…
drmoisan Aug 26, 2026
27329cd
fix(utilitiescs): add Qfc breadcrumb state-model tree navigation (#440)
drmoisan Aug 26, 2026
363bfcd
Merge pull request #619 from drmoisan/bug/qfc-item-controller-defects…
drmoisan Aug 26, 2026
37709d2
docs(epic): 484 merged via PR #619; record deferred worktree cleanup
drmoisan Aug 26, 2026
6232243
fix(470): derive the conversation insertion count from a single sourc…
drmoisan Aug 26, 2026
ee3c51e
fix(quickfiler): route Qfc breadcrumb arrows to the tree transitions …
drmoisan Aug 26, 2026
4038113
fix(470): handle a missing conversation original explicitly instead o…
drmoisan Aug 26, 2026
264fe5d
test(quickfiler): verify #498 ownership, file size and scope gates (#…
drmoisan Aug 26, 2026
ffc10ff
fix(470): skip groups with no controller or viewer in SetVisualDigits
drmoisan Aug 26, 2026
6cac5a8
refactor(471): extract the shared panel-height arithmetic behind Shri…
drmoisan Aug 26, 2026
f733506
fix(471): shrink the item panel on conversation collapse
drmoisan Aug 26, 2026
9760406
refactor(473): extract DrainBackgroundLoadingTasksAsync from the dupl…
drmoisan Aug 26, 2026
fc9a20b
test(utilitiescs): close #498 QA loop and Qfc row-state coverage gap …
drmoisan Aug 26, 2026
505cab9
fix(473): drain background loading tasks through an atomic bag swap
drmoisan Aug 26, 2026
9b203a7
chore(498): redact host identity from feature evidence artifacts
drmoisan Aug 26, 2026
3daba6b
chore(446): capture phase 0 policy reads, bootstrap and baselines
drmoisan Aug 26, 2026
0d3ffde
test(446): failing-first regression tests for 446, 426 and 427-A prod…
drmoisan Aug 26, 2026
880777d
chore(446): scrub host identifiers from TRX regression evidence
drmoisan Aug 26, 2026
2281921
fix(446): report a dequeue stop reason, release rejected hooks, carry…
drmoisan Aug 26, 2026
7ebb98d
fix(448): terminate the undo consumer, reset the idle timer on every …
drmoisan Aug 26, 2026
f2cf7d6
docs(446): record the phase 3 commit sha and the evidence hygiene cor…
drmoisan Aug 26, 2026
cb74cd9
docs(446): record acceptance-criteria verification for AC1 through AC…
drmoisan Aug 26, 2026
06e9424
docs(446): record the phase 4 commit sha and check off P4-T26
drmoisan Aug 26, 2026
a12c229
chore(446): record final QA gates and coverage comparison
drmoisan Aug 26, 2026
c06b003
docs(446): record terminal acceptance criteria AC18, AC19, AC22, AC24…
drmoisan Aug 26, 2026
5fec192
docs(446): record the phase 5 terminal commit sha and check off P5-T18
drmoisan Aug 26, 2026
467ca43
docs(446): record feature review audits and correct the also-closes list
drmoisan Aug 26, 2026
a40fac0
docs(446): route the Actions.cs testability-seam debt to issue #624
drmoisan Aug 26, 2026
613e88c
docs(469): document the retained stackMovedItems contract and consume…
drmoisan Aug 26, 2026
90eb760
docs(446): record post-rebase toolchain verification at integration tip
drmoisan Aug 26, 2026
4938779
refactor(474): split the move-readiness evaluation from its notification
drmoisan Aug 26, 2026
48c9ad8
docs(468): commit phase 11-13 QA-gate and regression evidence
drmoisan Aug 26, 2026
902e5ce
Merge pull request #625 from drmoisan/bug/quickfiler-bug-family-446
drmoisan Aug 26, 2026
4c54d41
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 26, 2026
7f0e7a2
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 26, 2026
8c8f769
Merge pull request #626 from drmoisan/bug/breadcrumb-router-navigatio…
drmoisan Aug 26, 2026
141efcb
docs(epic): regenerate quickfiler-bug-family status after the 498 fan-in
drmoisan Aug 26, 2026
ef90790
Merge origin/epic/quickfiler-bug-family-integration into bug/qfc-coll…
drmoisan Aug 26, 2026
5f8026a
fix(474): make move readiness inspectable without presenting a dialog
drmoisan Aug 26, 2026
71713df
docs(468): dossier, audits, downstream handoff, and follow-up entries
drmoisan Aug 26, 2026
e265a26
docs(468): final QA loop evidence and coverage comparison
drmoisan Aug 26, 2026
fa0446b
docs(468): check off AC-1 through AC-26 and record orchestrator defer…
drmoisan Aug 26, 2026
f077696
docs(468): close out phase 16 acceptance-criteria check-off
drmoisan Aug 26, 2026
68826ef
docs(468): record final clean-tree verification
drmoisan Aug 26, 2026
9194305
docs(468): record follow-up issue numbers 629-635 and check off AC-29
drmoisan Aug 26, 2026
7c8d843
docs(468): add feature, policy and code-review audit artifacts
drmoisan Aug 26, 2026
3540556
docs(468): verify PR body against the five accuracy constraints and c…
drmoisan Aug 26, 2026
808bf46
Merge pull request #636 from drmoisan/bug/qfc-collection-controller-d…
drmoisan Aug 26, 2026
b697a2b
docs(epic): regenerate quickfiler-bug-family status after the 468 fan-in
drmoisan Aug 26, 2026
412bc93
Merge branch 'main' into epic/quickfiler-bug-family-integration
drmoisan Aug 27, 2026
125c36b
Merge remote-tracking branch 'origin/main' into epic/quickfiler-bug-f…
drmoisan Aug 27, 2026
049f93e
fix(efc): atomic single-move guard and correct metrics duration/cultu…
drmoisan Aug 27, 2026
25cb172
fix(qfc): replace async-void metrics timer with deterministic flush (…
drmoisan Aug 27, 2026
8934e73
docs(442): record plan progress, spec disposition, and execution evid…
drmoisan Aug 27, 2026
2b3760e
chore(agent-memory): record subagent course-correction limitation
drmoisan Aug 27, 2026
0ddab41
docs(epic): record the resumed wave and the in-flight batch
drmoisan Aug 27, 2026
889fa29
fix(qfc): align EfcHomeController re-entrancy test with Interlocked i…
drmoisan Aug 27, 2026
c182696
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 27, 2026
12256da
docs(444): promote count-mismatch follow-up defect as issue #644
drmoisan Aug 27, 2026
e7b74e3
docs(qfc-442): record Phase 6 re-run toolchain gate evidence
drmoisan Aug 27, 2026
6a1b9ca
docs(qfc-442): close Phase 7, check off 24 of 25 criteria, promote CFN-4
drmoisan Aug 27, 2026
9deb2be
docs(444): capture phase 0 baselines and verify upstream 468
drmoisan Aug 27, 2026
2057a3f
test(quickfiler): funnel UiThread dispatcher mutations through a shar…
drmoisan Aug 27, 2026
18a2463
fix(444): guard the KbdActions enumerable constructor against duplica…
drmoisan Aug 27, 2026
753fa22
docs(quickfiler): record #493 acceptance criteria and Phase 4-5 evidence
drmoisan Aug 27, 2026
1118e5a
docs(444): check off the issue 444 acceptance criteria
drmoisan Aug 27, 2026
4478085
docs(quickfiler): check off the final #493 plan task
drmoisan Aug 27, 2026
8d643a0
chore(agent-memory): record #493 msbuild-log gate and epic-base stale…
drmoisan Aug 27, 2026
1fd417d
docs(qfc-442): record feature-review audits and disposition every fin…
drmoisan Aug 27, 2026
98113b0
docs(quickfiler): capture the #493 R-1 residual as issue #648
drmoisan Aug 27, 2026
9494ca3
fix(472): unregister navigation keys at the width they were registered
drmoisan Aug 27, 2026
2bdfebf
docs(472): check off the issue 472 acceptance criteria
drmoisan Aug 27, 2026
4f23828
Merge pull request #649 from drmoisan/bug/quickfiler-home-controller-…
drmoisan Aug 27, 2026
a4c0c18
fix(482): route expansion registration through a single owner
drmoisan Aug 27, 2026
d0b0d49
docs(482): check off the issue 482 acceptance criteria
drmoisan Aug 27, 2026
5fa072c
docs(quickfiler): record #493 feature-review audit artifacts
drmoisan Aug 27, 2026
ae7d948
docs(444): record P4-T1 final-loop formatting gate evidence
drmoisan Aug 27, 2026
3f373f5
Merge origin/epic/quickfiler-bug-family-integration into bug/quickfil…
drmoisan Aug 27, 2026
3c6ed27
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 27, 2026
570791f
test(quickfiler): re-verify #493 toolchain against the moved epic base
drmoisan Aug 27, 2026
50fb25c
docs(quickfiler): re-verify #493 plan tasks and ACs against ground truth
drmoisan Aug 27, 2026
13a22ad
Merge pull request #653 from drmoisan/bug/quickfiler-test-uithread-di…
drmoisan Aug 27, 2026
4027d78
chore(444): record the final toolchain and coverage evidence
drmoisan Aug 27, 2026
7c63e47
docs(444): check off the toolchain and coverage acceptance criteria
drmoisan Aug 27, 2026
dbd7024
chore(webview2-host-476): capture Phase 0 policy reads and baseline e…
drmoisan Aug 27, 2026
ad924a9
docs(444): reconcile acceptance criteria and record deferred disposit…
drmoisan Aug 27, 2026
833423b
docs(444): record terminal clean-tree verification
drmoisan Aug 27, 2026
dc6d617
test(webview2-host-476): add eleven failing-first regression tests
drmoisan Aug 27, 2026
04b725b
docs(444): record feature-review policy, code and feature audit artif…
drmoisan Aug 27, 2026
b09565c
Merge origin/epic/quickfiler-bug-family-integration into bug/quickfil…
drmoisan Aug 27, 2026
b1dec0c
fix(webview2-host-476): correct host lifecycle, marshalling and seam …
drmoisan Aug 27, 2026
51f929b
docs(444): record post-merge toolchain gate and close the final three…
drmoisan Aug 27, 2026
072bc9f
refactor(webview2-host-476): move coverage exemptions to the host-bou…
drmoisan Aug 27, 2026
69e8317
Merge pull request #654 from drmoisan/bug/quickfiler-keyboard-action-…
drmoisan Aug 27, 2026
45cf382
docs(efc-464): record plan base-drift addendum against the real execu…
drmoisan Aug 27, 2026
1074e00
wip(501): preserve in-progress breadcrumb coordinator hub work
drmoisan Aug 27, 2026
a68760f
wip(476): preserve in-progress WebView2 host initializer work
drmoisan Aug 27, 2026
67a5ce8
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 27, 2026
9cb2c4f
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 27, 2026
0a701fd
docs(webview2-host-476): record the base merge and restart Phase 4
drmoisan Aug 27, 2026
0023359
docs(efc-464): record binding upstream constraints from merged 484 an…
drmoisan Aug 27, 2026
cecd781
docs(489): record Phase 0 policy reads for P0-T1 through P0-T5
drmoisan Aug 27, 2026
e7d4052
docs(489): record Phase 0 bootstrap, repo state and csharpier baseline
drmoisan Aug 27, 2026
329fc96
test(webview2-host-476): re-run the Phase 4 QC loop against the merge…
drmoisan Aug 27, 2026
08d288e
docs(489): record Phase 0 analyzer baseline - build FAILED, inherited…
drmoisan Aug 27, 2026
c132220
docs(489): record Phase 0 nullable, vstest and coverage baselines
drmoisan Aug 27, 2026
d1dcabd
docs(webview2-host-476): reconcile all 37 acceptance criteria against…
drmoisan Aug 27, 2026
cc84398
docs(489): record Phase 0 line counts, anchors, csproj tails and index
drmoisan Aug 27, 2026
2434f07
fix(breadcrumb): enforce close, lifetime, broadcast and lease invariants
drmoisan Aug 27, 2026
cab1a0f
docs(501): record scope lock, handoff index and final plan reconcilia…
drmoisan Aug 27, 2026
6d614b7
docs(efc-464): capture Phase 0 baseline and toolchain bootstrap
drmoisan Aug 27, 2026
fb05244
docs(webview2-host-476): record feature-review policy, code and featu…
drmoisan Aug 27, 2026
d86ee40
docs(501): record feature review, disposition findings, file residuals
drmoisan Aug 27, 2026
5793b8c
Merge pull request #658 from drmoisan/bug/webview2-host-initializer-d…
drmoisan Aug 27, 2026
9790094
docs(489): amend plan and spec for the 500-line ceiling reroute
drmoisan Aug 28, 2026
9c6c0b4
merge(501): integrate epic/quickfiler-bug-family-integration tip 5793…
drmoisan Aug 28, 2026
4cb709d
Merge pull request #659 from drmoisan/bug/breadcrumb-coordinator-hub-…
drmoisan Aug 28, 2026
3d6dbf7
docs(489): re-record Phase 0 analyzer and nullable baselines after sk…
drmoisan Aug 28, 2026
51cfa94
docs(501): record post-base-merge toolchain and base-reconciliation e…
drmoisan Aug 28, 2026
5d567e7
fix(efc-464): remove dead EfcItemController surface (#459, #464 D, #4…
drmoisan Aug 28, 2026
ce53d85
docs(489): re-record Phase 0 vstest and repo coverage baselines
drmoisan Aug 28, 2026
345f684
fix(efc-464): remove dead EfcViewer surface and EfcViewer3 orphans (#…
drmoisan Aug 28, 2026
38f0978
Merge pull request #660 from drmoisan/bug/breadcrumb-coordinator-hub-…
drmoisan Aug 28, 2026
b8a7200
fix(efc-464): remove the dead conversation-expanded handler (#461)
drmoisan Aug 28, 2026
ed129fc
test(quickfiler): add failure-first regression tests for issue #486
drmoisan Aug 28, 2026
abb825d
fix(efc-464): correct the WebView2 incognito argument at both live si…
drmoisan Aug 28, 2026
6be275f
fix(quickfiler): remove redundant move-option menu handlers and wire …
drmoisan Aug 28, 2026
2592467
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 28, 2026
866807b
docs(489): XML-escape the redaction placeholders in every sanitised TRX
drmoisan Aug 28, 2026
aa55e9a
test(quickfiler): add failure-first regression tests for the dead Par…
drmoisan Aug 28, 2026
23e953c
chore(efc-464): record post-merge toolchain verification before Phase 5
drmoisan Aug 28, 2026
e7e8941
fix(quickfiler): remove the dead ParentChanged handlers for issue #487
drmoisan Aug 28, 2026
2613d48
test(quickfiler): add failure-first regression tests for issue #489 m…
drmoisan Aug 28, 2026
ace2247
fix(efc-464): RC1 post-teardown null-state contract and RC2 timer dis…
drmoisan Aug 28, 2026
6281d21
fix(quickfiler): marshal the theme write and drop the unused UiSchedu…
drmoisan Aug 28, 2026
35c6bb1
fix(efc-464): contain the #464 fault boundaries and preserve the reth…
drmoisan Aug 28, 2026
cef4a74
test(quickfiler): add failure-first regression tests for issue #490 s…
drmoisan Aug 28, 2026
1c4b9f1
test(quickfiler): add the compile-time RED for the issue #490 FocusSu…
drmoisan Aug 28, 2026
dca9110
fix(quickfiler): rename SetFolderItems, return bool from FocusSubject…
drmoisan Aug 28, 2026
93629f6
fix(efc-464): correct the #465 action paths (RC8, RC9, RC7)
drmoisan Aug 28, 2026
a4758e8
docs(489): record the Phase 8 verification evidence for issue #490
drmoisan Aug 28, 2026
28d244e
fix(efc-464): restore the Alt+F and Alt+M menu mnemonics (#467)
drmoisan Aug 28, 2026
e651cf0
docs(quickfiler): document the IItemViewer threading and ordering con…
drmoisan Aug 28, 2026
2b99d7e
docs(efc-464): record Phase 9 scope, ownership and contract verification
drmoisan Aug 28, 2026
5935fc9
docs(489): record the Phase 10 scope-discipline and reconciliation ev…
drmoisan Aug 28, 2026
727fd62
docs(489): record the P10-T18 interim commit and close out Phase 10
drmoisan Aug 28, 2026
7e2265e
docs(489): redact the account and machine name from the P9-T9 artifact
drmoisan Aug 28, 2026
bdf804f
test(efc-464): record the Phase 10 final QC toolchain loop
drmoisan Aug 28, 2026
7c9b02e
docs(efc-464): complete acceptance criteria and record the Phase 11 h…
drmoisan Aug 28, 2026
ac4a996
docs(489): record the Phase 11 format, analyzer and scoped-test gate …
drmoisan Aug 28, 2026
7c5303c
docs(efc-464): capture feature-review audit artifacts
drmoisan Aug 28, 2026
7f219eb
docs(489): record the Phase 11 coverage, line-count and guard-run evi…
drmoisan Aug 28, 2026
6e45ab2
docs(489): close out Phase 11 with the commit record and clean-tree lock
drmoisan Aug 28, 2026
ee7d0ec
Merge pull request #661 from drmoisan/bug/efc-controller-surface-defe…
drmoisan Aug 28, 2026
e31b95f
docs(489): check off AC1-AC11 (Phase 0 baseline and issue #486)
drmoisan Aug 28, 2026
e8a7ab9
docs(489): check off AC12-AC25 (issues #487 and #489)
drmoisan Aug 28, 2026
f9851c6
docs(489): check off AC26-AC46 (issue #490 and scope discipline)
drmoisan Aug 28, 2026
c2f0d24
docs(489): check off AC47-AC62 (file size, toolchain, coverage, evide…
drmoisan Aug 28, 2026
6965bbb
docs(489): record P12-T63 final clean-tree evidence and complete the …
drmoisan Aug 28, 2026
74d02ad
docs(489): record the P12-T63 follow-up commit sha
drmoisan Aug 28, 2026
7ad2bd1
docs(489): feature-review artifacts — 62/62 AC pass, one Blocking fin…
drmoisan Aug 28, 2026
899000d
docs(489): add the cycle-1 remediation plan for RC-1
drmoisan Aug 28, 2026
d77ac21
docs(489): record the cycle-1 P0-T1 policy and remediation-source reads
drmoisan Aug 28, 2026
aedfde5
docs(489): record the cycle-1 Phase 0 remediation baseline
drmoisan Aug 28, 2026
71e363e
test(quickfiler): add the RED regression test for the missing Picture…
drmoisan Aug 28, 2026
6d6a0ee
fix(quickfiler): detach PicturesChanged in UnwireIntentEvents
drmoisan Aug 28, 2026
77596b5
docs(489): reconcile the spec and handoff record with the in-branch d…
drmoisan Aug 28, 2026
2a7521d
docs(489): record the cycle-1 Phase 4 final QC gates
drmoisan Aug 28, 2026
923cd3c
docs(489): close out remediation cycle 1 with the clean-tree lock
drmoisan Aug 28, 2026
a303954
docs(489): reaudit artifacts — remediation cycle 1 exit gate, RC-1 cl…
drmoisan Aug 28, 2026
47b8145
Merge remote-tracking branch 'origin/epic/quickfiler-bug-family-integ…
drmoisan Aug 28, 2026
1246504
Merge pull request #669 from drmoisan/bug/itemviewer-surface-defects-489
drmoisan Aug 28, 2026
b61fadd
chore(488): Phase 0 baseline capture and worktree bootstrap evidence
drmoisan Aug 28, 2026
26b9187
fix(quickfiler): dispose the outgoing breadcrumb host before its repl…
drmoisan Aug 28, 2026
b210ceb
fix(quickfiler): replay the retained breadcrumb theme onto the adopte…
drmoisan Aug 28, 2026
a52fb2b
fix(quickfiler): fail fast on a second, different breadcrumb provider…
drmoisan Aug 28, 2026
5c841d1
fix(quickfiler): declare and enforce breadcrumb UI-thread affinity (#…
drmoisan Aug 28, 2026
fbdd78d
fix(quickfiler): refuse breadcrumb resource creation during teardown …
drmoisan Aug 28, 2026
9a0bd44
fix(quickfiler): remove the ambient-probing breadcrumb selector (#475…
drmoisan Aug 28, 2026
bb26020
docs(488): scope, ownership, contract, and follow-up verification
drmoisan Aug 28, 2026
6d2cf3b
test(488): final QC toolchain loop, one consecutive clean pass
drmoisan Aug 28, 2026
99c921d
docs(488): acceptance-criteria completion and handoff
drmoisan Aug 28, 2026
9ed32d7
chore(488): record final commit and clean-tree verification
drmoisan Aug 28, 2026
d9ed9eb
docs(488): promote the D5 follow-up and complete the acceptance criteria
drmoisan Aug 28, 2026
f1a4185
docs(488): feature review artifacts and evidence hygiene remediation
drmoisan Aug 28, 2026
f2109ca
docs(488): track the repo-wide evidence-hygiene findings as an issue
drmoisan Aug 28, 2026
4b6d38d
Merge pull request #672 from drmoisan/bug/itemviewer-breadcrumb-lifec…
drmoisan Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
76 changes: 43 additions & 33 deletions .claude/agent-memory/atomic-executor/MEMORY.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: confirmatory-preflight-proportionate-bar
description: On a confirmatory preflight over a small delta to an already-cleared plan, block only on an actually-wrong edit or an actual regression; incomplete enumerations are non-blocking observations
metadata:
type: feedback
---

When a directive says "CONFIRMATORY PASS" over N named edits to a plan that already earned
`PREFLIGHT: ALL CLEAR`, say `REVISIONS REQUIRED` only if one of those edits is actually wrong
or actually regressed something the prior pass verified. Wording preferences, belt-and-braces
suggestions, and *incomplete enumerations* go under an ALL CLEAR as non-blocking observations.

**Why:** the prior ALL CLEAR is authority, not a starting point to re-litigate. Re-auditing the
whole plan burns a cycle and risks the "make the citation exist" failure mode recorded in
[[project_preflight_citation_match_propagates_false_fact]] — a delta that edits correct text to
match a re-derived opinion. The user states the bar explicitly: "Hold a proportionate bar and
converge."

**How to apply:** distinguish a FALSE claim from an INCOMPLETE one. On #498 v2.3, `P4-T1` said
its recorded value "is the sole input to the branch conditions in `P5-T4` and `P5-T5`" after
`P5-T3` also gained a gate on it. That sentence is still true of the two tasks it names; it is
merely no longer exhaustive, and the task's own governing text plus the binding "Conditional
branches" rule both state the condition. Nothing is unsatisfiable and no executor is stranded,
so it is an observation, not a blocker. Contrast with the genuinely blocking shapes in
[[project_exact_count_gate_vs_remediation_loop]] and
[[project_preflight_absolute_zero_gate_on_sibling_owned_assembly]], where a gate is
*unsatisfiable* or *unwaivable*.

**Polarity test for a clause an earlier task invalidates.** When phase N asserts a fact about a
file that phases 1..N-1 change, ask which way the clause breaks. A clause that becomes FALSE at its
own point strands the executor — it counts literally, records a mismatch, and leaves the task
unchecked under the fail-closed rule (#464 `[P5-T11]`: "the two timer arming sites still bind" after
`[P1-T6]` deleted the method holding one of them). A clause that becomes TRIVIALLY TRUE only loses
gating power (#464 `[P6-T13]`: a zero-match search for `throw (e.InitializationException)` that
`[P6-T10]` had already driven to zero). The first is blocking; the second is an observation, provided
the task carries at least one other clause that can still fail. Same defect family, opposite cost.

Cheap mechanical confirmations that make a confirmatory pass fast and defensible: diff the two
committed plan revisions with `git diff -U0` and read only the hunk headers (a fifth undisclosed
hunk is itself a finding); compare the `file:line` citation MULTISET across revisions to prove
"no citation was touched"; compare the sorted task-ID list to prove "no addition, removal or
renumbering". Still verify every factual assertion you make against the file — see
[[feedback_verify_line_citations_with_numbered_output]].
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,34 @@ line citation against line-numbered output before asserting it."
numbered read is far below the cost of a corrupted plan revision cycle.
- Related: [[project_418_plan_rationale_clauses_are_evidence]] — unmeasured world-state claims in
plan prose are the other recurring source of preflight churn.

## Corollary: never assert a file LOCATION you have not listed (#498 preflight cycle 2)

The same rule governs *where* a file lives, not only which line. In #498 preflight cycle 2 I
reported that the CSharpier tool manifest is at `.config/dotnet-tools.json` and asked the planner
to "correct" a plan sentence that was already right. `.config/` does not exist in this repository
at all; the manifest is at the repo root as `dotnet-tools.json` with `"isRoot": true`, which
CLAUDE.md also states. The planner independently verified and correctly REJECTED the observation.

**How to apply:** before writing "the file is at X", run `ls X` or `find . -maxdepth 2 -name <f>`.
Ecosystem defaults are the trap — `.config/dotnet-tools.json` is the .NET convention and this repo
deviates from it. A plausible-by-convention location is a hypothesis, not a fact. (Re-confirmed
independently during #488 preflight round 2: still root-level, still no `.config/`.)

## Corollary: verify the citation ANCHOR SHA, not only the numbers (#488 preflight round 2)

A plan that declares "line citations are anchored to `<SHA>`" is making a second, separate claim
that is easy to miss once the numbers themselves check out. In #488 the plan anchored to the
then-tip-of-main `988e819b`, but the branch had advanced to `0a6aaa31`, and in between
`QuickFiler.Test/QuickFiler.Test.csproj` gained one `<Compile Include>` line near the top. Every
citation below that insertion shifted by one: the plan's `line 82` and `467-471` were correct at
HEAD (where the executor works) and off by one at the declared anchor. Round 1 verified the
numbers against HEAD and passed them, without noticing the anchor label had gone stale.

**How to apply:**
- Run `git merge-base --is-ancestor <ANCHOR> HEAD` and then `git diff --name-only <ANCHOR> HEAD`,
and intersect that list with every file the plan cites by line. A hit means the anchor is
load-bearing and must be re-derived or re-labelled.
- The *numbers* being right at HEAD does not clear the *anchor*; an executor told to resolve
against the anchor will mislocate. Re-anchor to the current branch HEAD and say so.
- Cheap and mechanical — do it once per preflight round, before checking any individual citation.
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,14 @@ untracked) — neither alone proves "no file was added or removed". Note also th
`git diff --name-only` is worktree-vs-index; if anything gets staged mid-execution, switch to
`git diff --name-only HEAD -- <pathspec>`.

**Re-check Phase 0 after a revision pass fixes the late phases.** On issue #501 the planner was told
to scope the clean-tree checks and scoped only the two *commit-time* tasks (P9-T4, P9-T6), leaving
the **Phase 0 baseline** task's `git status --porcelain` "produced zero output lines" acceptance
unscoped. That one is the *most* certain to fail: at execution start the planner's own dirty
agent-memory files and the not-yet-committed plan file are still in the tree (measured: three
entries). When you accept a fix for this defect class, re-grep the whole plan — the natural mental
model is "clean tree at the end", so authors patch the end and miss the baseline capture.

Related: [[project_preflight_selfderived_gate_thresholds_are_blind]],
[[project_418_plan_rationale_clauses_are_evidence]].
[[project_418_plan_rationale_clauses_are_evidence]],
[[project_preflight_ac_checkoff_and_tooloutput_paths]].
Original file line number Diff line number Diff line change
@@ -1,12 +1,56 @@
---
name: analyzer-version-skew-fresh-worktree
description: Fresh TaskMaster worktree fails first analyzer build with CS0006 (missing Meziantou/Sonar/BannedApi analyzer DLLs) — csproj Analyzer Include paths lag packages.config; install the old versions into gitignored packages/
description: Fresh TaskMaster worktree fails EVERY build (not just the analyzer gate) with CS0006 — 16 csproj <Analyzer Include> paths lag packages.config; it recurs after each Dependabot analyzer bump and blocks the whole plan, so surface it at P0-T13
metadata:
type: project
---

On a clean TaskMaster worktree, the first `msbuild TaskMaster.sln ... /p:EnableNETAnalyzers=true` fails with `error CS0006: Metadata file '..\packages\Meziantou.Analyzer.3.0.101\...\Meziantou.Analyzer.dll' could not be found` (also SonarAnalyzer.CSharp.10.27.0.140913 and Microsoft.CodeAnalysis.BannedApiAnalyzers.3.3.4).
On a clean TaskMaster worktree, the first `msbuild TaskMaster.sln ... /t:Rebuild` fails with
`error CS0006: Metadata file '..\packages\<Analyzer>.<oldVersion>\...\<X>.dll' could not be found`.

**Why:** This is a pre-existing repo-wide skew on `origin/main` (commits like 097f0ba2 "Bump the analyzers-dev-deps group"): `packages.config` was bumped to newer analyzer versions (Meziantou 3.0.123, BannedApi 5.6.0, Sonar 10.29.0.143774) but the hand-written `<Analyzer Include>` DLL paths in 16 first-party csproj files still reference the OLD versions. On dev/CI machines the old analyzer package folders linger in `packages/`; a clean-worktree restore installs only the current `packages.config` versions, so the old folders are absent -> CS0006.
**Why:** pre-existing repo-wide skew. `packages.config` and the `<Import>`/`<Error>` restore-check lines are
bumped by Dependabot ("Bump the analyzers-dev-deps group"), but the hand-written `<Analyzer Include>` DLL
paths in **16** first-party csproj files still name the OLD versions. On dev/CI machines the old package
folders linger in the gitignored `packages/`; a clean-worktree restore installs only the current
`packages.config` versions, so the old folders are absent.

**How to apply:** Do NOT edit the 16 csproj files (out of scope, huge churn). Install the missing OLD analyzer versions into the gitignored `packages/` folder with the winget nuget.exe: `nuget install Meziantou.Analyzer -Version 3.0.101 -OutputDirectory packages` (repeat for `Microsoft.CodeAnalysis.BannedApiAnalyzers 3.3.4` and `SonarAnalyzer.CSharp 10.27.0.140913`). This touches no tracked files. Also required on a fresh worktree before any build: `pwsh ./scripts/vscode/Install-RepoDotNetSdk.ps1` then `./.dotnet-sdk/dotnet.exe tool restore` (for csharpier 1.2.6) and `pwsh ./scripts/vscode/Invoke-Restore.ps1` (nuget restore). csharpier via repo SDK: `./.dotnet-sdk/dotnet.exe tool run csharpier format|check .`.
Observed instances (the pair moves with each bump; re-measure, do not assume):
- 2026-08 @ `61edc19` (epic/quickfiler-bug-family-integration): `<Analyzer Include>` names
`Meziantou.Analyzer.3.0.156` + `Roslynator.Analyzers.4.16.0`; restore installs `3.0.174` + `4.16.1`.
AsyncFixer 2.1.0, BannedApiAnalyzers 5.6.0, SonarAnalyzer.CSharp 10.32.0.713 all agree — only 2 skew.
- earlier: Meziantou 3.0.101, BannedApi 3.3.4, Sonar 10.27.0.140913.

**Blast radius is the whole solution, not just the analyzer gate.** `<Analyzer Include>` is unconditional, so
the plain nullable Rebuild (`/p:TreatWarningsAsErrors=true`, no analyzer properties) fails identically. Only
`VBFunctions` and `UtilitiesCS` emit the 10 diagnostics; the other 13 projects fail transitively on the broken
project reference. `SVGControl` / `SVGControl.Test` are the only projects that build (they carry no stale
reference). Consequence: `<Test>/bin/Debug` is EMPTY, so any full-suite or scoped vstest task and any coverage
baseline is unreachable, and every "analyzer Rebuild returns EXIT_CODE: 0" acceptance in the plan is
unsatisfiable. Diagnose it at the first analyzer gate rather than at the first test run.

**How to apply:**
1. Verify it is pre-existing, not yours: `git status --porcelain -- '*.csproj' '*/packages.config'` must be
empty; then `ls -d packages/Meziantou* packages/Roslynator*` vs
`grep -n "Analyzer Include" <proj>.csproj`. The `<Import>` at csproj line ~3 shows the NEW version while
the `<Analyzer Include>` block shows the OLD one — that contrast is the fingerprint.
2. Remedy that touches no tracked file: install the missing OLD versions into the gitignored `packages/`
(`nuget install Meziantou.Analyzer -Version <old> -OutputDirectory packages`, likewise Roslynator).
3. **But check the delegation prompt first.** A caller may explicitly forbid this — the #498 execution
directive said "If a restore still produces `error CS0006` from skewed analyzer package versions, report it
rather than working around it." In that case record the red baseline truthfully with `ExpectedExitCode: 1`
and stop at the first task that needs a built assembly, rather than provisioning the packages.
4. The durable fix is upstream: update the 16 `<Analyzer Include>` version strings in the same commit as the
`packages.config` bump. Worth an issue; it recurs on every analyzer bump.

**Resolved instance, 2026-08-26 @ `61edc19` (#498).** After the orchestrator provisioned the two missing
gitignored package dirs, the SAME analyzer and nullable Rebuild recipes went from `EXIT_CODE: 1` / 10 CS0006
to `EXIT_CODE: 0`, 0 errors, 5 warnings (all the uncoded `System.Reactive.PackagesConfigCheck.targets`
packages.config advisory, on QuickFiler/TaskMaster/ToDoModel/UtilitiesCS/UtilitiesCS.Test). `git status
--porcelain -- packages` stayed empty, so the ownership gate was untouched. All 9 test assemblies then
existed and the full suite ran 6482/6482 green at 84.78% repo line rate.

**Never carry a CS0006 baseline forward as the plan's baseline.** Under a Baseline-Comparison Rule, a
non-zero Phase-0 analyzer/nullable baseline permanently DEGRADES the Phase-8 gates into gates that cannot
fail, and licenses every intermediate "analyzer Rebuild returns 0" check to pass while compiling nothing.
If the provisioning gap is later fixed, re-run both gates and OVERWRITE the artifacts, deleting the
`ExpectedExitCode: 1` line — the field is what normalizes a red row to `pass` in PR-body collection.
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,31 @@ Detection signals (reusable):
**Why:** The orchestrator apparently launched (or left alive) a duplicate executor on the same branch/worktree. Racing it corrupts `FlagTasks.cs`, the csproj, and later test/coverage runs.

**How to apply:** Before Phase 0 baseline, snapshot `git status --porcelain` and key mtimes; re-check after a few tool calls. If untracked/modified files you did not author appear or advance, STOP — do not stash/reset (it clobbers the other writer via 3-way merge) and do not race. Report the concurrent-execution conflict to the orchestrator and let it enforce a single executor per worktree. See [[epic-orchestrator-worktree-isolation]] for the worktree-isolation principle.

## Second confirmed occurrence — #501 breadcrumb-coordinator-hub, 2026-08-27

Worktree `agent-a5f370e5c08f8ddb0`, plan `breadcrumb-coordinator-hub-defects-501/plan.2026-08-24T09-40.md`.
Detected during preflight, before writing anything. Two additional signals, both cheaper and more
decisive than the source-file mtime sweep:

- **The plan file's own checkbox count advances while you only read.** Fingerprinted the plan at
preflight (sha256 `6bf57583...`, `DONE: 0`). Minutes later, without writing, it was sha256
`446430ed...`, `DONE: 5`, then `DONE: 7`. The plan file IS the shared todo list, so a check-off
count that rises during your own turn is proof of a second writer by itself. Re-hash the plan
immediately before the first check-off, always.
- **A bootstrap side-effect DIRECTORY growing localises the other agent to a task ID.** Phase 0
provisioning tasks have large filesystem side effects (`.dotnet-sdk/` from
`Install-RepoDotNetSdk.ps1`, `packages/` from `Invoke-Restore.ps1`). Sampling `du -sk .dotnet-sdk`
twice ~20s apart names the task the sibling is inside even before it writes its evidence artifact.
Here `.dotnet-sdk/` appeared holding only `dotnet.exe` + `host/`, grew to 764 MB, then `packages/`
followed — the sibling was mid-P0-T6, then P0-T7, then P0-T8.

**Why this one mattered:** the launching agent's prompt was the literal string
`SendMessage placeholder - not used` — no plan path, no directive, no task. A degenerate or
placeholder delegation message is itself a signal that the harness may have double-launched; treat
it as a reason to fingerprint shared state before acting, not as a licence to go find work to do.

**How to apply (addendum):** blocking is permitted only at preflight, and a concurrent-writer
conflict is detectable at preflight for free — hash the plan, count the evidence dir, sample twice.
Do that BEFORE the first check-off. Once you have written even one artifact you have joined the race
and the clean stop is no longer available.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: directory-scoped-format-breaks-ownership-gates
description: A final-QC csharpier pass scoped to whole DIRECTORIES can rewrite must-not-write files, contradicting the same plan's unmodified-file assertions; scope the mutating pass to explicit file paths.
metadata:
type: project
---

A plan that correctly refuses a repo-wide `dotnet tool run csharpier format .` (because concurrent
sibling epic children share the branch) can still defeat itself by scoping the MUTATING pass to
directories rather than to explicit file paths. Observed on plan
`docs/features/active/breadcrumb-router-navigation-defects-498/plan.2026-08-24T09-39.md` (P7-T1):
the scoped list named 6 files plus `QuickFiler.Test/Controllers`, `QuickFiler.Test/Viewers`, and
`UtilitiesCS.Test/OutlookObjects/Folder` — 181 `.cs` files, of which the plan writes about 7.

**Why:** those directories contain files the same plan lists as MUST NOT WRITE and asserts are
unmodified via `git status --porcelain -- <path>` producing no output
(`QuickFiler.Test/Viewers/FolderBreadcrumbAssetContractTests.cs`,
`UtilitiesCS.Test/OutlookObjects/Folder/BreadcrumbStateModelSelectorTests.cs`,
`BreadcrumbStateModelSequenceTests.cs`). If csharpier rewrites any of them the plan fails its own
ownership acceptance criteria. Whether it actually rewrites them depends on the pre-existing
baseline formatting state, which the plan captures only later — so the gate is a coin flip, not a
guarantee.

**How to apply:** at preflight, whenever a plan scopes the mutating format pass, check that every
entry is a FILE path, not a directory, and cross-check each entry against the plan's must-not-write
list and against every task whose acceptance is "`git status --porcelain -- <path>` produces no
output". Flag a bare directory as a Blocking revision. New files created mid-plan must be added to
the list by path, which the plan should say explicitly. See
[[project_csharpier_pipefiles_nonenforcing_gate]] and
[[project_count_idiom_pitfalls_csharpier_and_measureobject]] for the companion traps in verifying
that the format step actually did something.
Loading
Loading