You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From verification of #78 (#78 verify report, finding #3):
「Macdoc 的 clean-clone swift build 失敗 on HEAD because packages/pdf-to-latex-swift/ and Tests/WordToMDTests/ are gitignored/untracked (same pattern #78 fixed for note-* packages, applied to other paths).」
— Source: codex independent verifier, 2026-04-18
#78 successfully extracted the 3 note-* packages to independent PsychQuant/* repos so they could be properly version-controlled. That fix did not generalize to other gitignored/untracked paths in macdoc:
packages/pdf-to-latex-swift/ — declared as path: in Package.swift but matched by .gitignore blanket packages/ rule (no whitelist entry). Source files exist only on the developer's filesystem.
Tests/WordToMDTests/ — referenced by macdoc's Package.swift.testTarget, but not tracked in git (git ls-tree HEAD Tests/ shows only MacDocCLITests and OCRTests)
A fresh git clone PsychQuant/macdoc.git && swift build would fail or silently use stale packages/note-*-swift/ directories that an existing developer machine already has.
Type
refactor
Expected
Each currently-gitignored package under packages/* either:
35/35 Spectra tasks done; all 5 body Strategy phases done; clean-clone git clone && swift build verified 95.80s (from zero pre-state)
Scope expansion: Track D audit surfaced 6 MORE packages with missing sources — fixed in-scope via extended .gitignore whitelist (48 files / 9,059 insertions in commit a380cfc)
Track A found PsychQuant/pdf-to-latex-swift already existed from earlier aborted extraction; diff -rq confirmed byte-identical → reconciliation collapsed to tag v0.1.0 + swap dep
Problem
#78 successfully extracted the 3
note-*packages to independentPsychQuant/*repos so they could be properly version-controlled. That fix did not generalize to other gitignored/untracked paths in macdoc:packages/pdf-to-latex-swift/— declared aspath:inPackage.swiftbut matched by.gitignoreblanketpackages/rule (no whitelist entry). Source files exist only on the developer's filesystem.packages/ocr-swift/— same pattern (just discovered while reviewing refactor: extract NoteCore / NoteToPDF as separate PsychQuant repos (packages 應該要是獨立套件) #78's PageOCRRunner.swift workstream)Tests/WordToMDTests/— referenced by macdoc'sPackage.swift.testTarget, but not tracked in git (git ls-tree HEAD Tests/shows onlyMacDocCLITestsandOCRTests)A fresh
git clone PsychQuant/macdoc.git && swift buildwould fail or silently use stalepackages/note-*-swift/directories that an existing developer machine already has.Type
refactor
Expected
packages/*either:PsychQuant/*repo with av0.1.0tag (same as refactor: extract NoteCore / NoteToPDF as separate PsychQuant repos (packages 應該要是獨立套件) #78's approach for note-*), or.gitignoreand committed in-tree (same assrt-to-html-swift,md-to-html-swift, etc).Tests/WordToMDTests/Fixtures/*either added to git or moved out of the macdoc repo.git clone … && swift buildsucceeds without any local-disk pre-state.Actual
Strategy
Mirror #78's phased approach:
pdf-to-latex-swift→ newPsychQuant/pdf-to-latex-swiftrepo, tag v0.1.0, swappath:→url:in macdocPackage.swift— Track A; shipped in9170093(part of PR refactor: extract pdf-to-latex-swift + ocr-swift + flip gitignore strategy (#79) #89 squash)ocr-swift→ newPsychQuant/ocr-swiftrepo, tag v0.1.0 — Track B; shipped in3a2806a(part of PR refactor: extract pdf-to-latex-swift + ocr-swift + flip gitignore strategy (#79) #89 squash); PR fix: PageOCRRunner uses OCRCore.backend API (unblocks main build) #84 PageOCRRunner compiles against new url depTests/WordToMDTests/Fixtures/*decision: delete (dir was completely empty scaffolding) — Track C; shipped in6fd4880(part of PR refactor: extract pdf-to-latex-swift + ocr-swift + flip gitignore strategy (#79) #89 squash)git clone && swift buildsucceeds in 95.80s;swift testruns 26 Swift Testing tests clean (2 XCTest NoteConvertTests XCTSkip per test: add NoteConvertTests smoke coverage (.note → pdf/html) to MacDocCLITests #81 Option B, expected).gitignorewhitelist expansion ina380cfc(part of PR refactor: extract pdf-to-latex-swift + ocr-swift + flip gitignore strategy (#79) #89 squash); see PR refactor: extract pdf-to-latex-swift + ocr-swift + flip gitignore strategy (#79) #89 body for full listRelated
Current Status
Phase: closed
Last updated: 2026-04-20 by idd-close (retroactive)
Key Decisions
Closes #79.trailer which auto-closed on merge, bypassing idd-close gate check. Retroactive Closing Summary posted to preserve audit trail.git clone && swift buildverified 95.80s (from zero pre-state).gitignorewhitelist (48 files / 9,059 insertions in commita380cfc)PsychQuant/pdf-to-latex-swiftalready existed from earlier aborted extraction;diff -rqconfirmed byte-identical → reconciliation collapsed to tag v0.1.0 + swap depPsychQuant/ocr-swiftv0.1.0; verified PR fix: PageOCRRunner uses OCRCore.backend API (unblocks main build) #84's Qwen3-VL/OCRBackend wiring still compilesextract-remaining-packagesready for/spectra-archiveScope Changes
.gitignore"flip strategy" attempted mid-apply but didn't reach final merged commit — functionally equivalent, just verboseBlocking
.gitignoreper-file whitelist is now 80+ lines; could simplify withpackages/*/.build/exclude-only patternCommits (squashed into d181090 via PR #89)
9170093Track A — pdf-to-latex-swift url dep3a2806aTrack B — ocr-swift extraction to PsychQuant/ocr-swift6fd4880Track C — delete empty WordToMDTests testTargeta380cfcTrack D — extend .gitignore whitelist + track 48 previously-missing package sourcesfe1f2b9Track E — CLAUDE.md Sub-Repositories table updateNew Repos