diff --git a/docs/superpowers/plans/2026-09-05-open-issue-audit.md b/docs/superpowers/plans/2026-09-05-open-issue-audit.md index 6df16ef54..cda2085e2 100644 --- a/docs/superpowers/plans/2026-09-05-open-issue-audit.md +++ b/docs/superpowers/plans/2026-09-05-open-issue-audit.md @@ -11,14 +11,16 @@ Every initial open issue was read with its comments and compared with relevant current code, history, existing PRs, or tests. Each entry states the evidence actually obtained. Passing package tests establish a baseline; they do not prove every screenshot or production incident is resolved. Reports requiring missing fixtures or deployment data remain open. Features are not classified as bugs solely because they are absent. -Issues fixed only in unmerged PRs remain open. Already-fixed issues close only with matching evidence or reporter confirmation. Duplicate closure retains a canonical open report. Merge status below reflects the final GitHub refresh. +Issues fixed only in unmerged PRs remain open. Already-fixed issues close only with matching evidence or reporter confirmation. Duplicate closure retains a canonical open report. Merge status below reflects the latest GitHub refresh. ## Progress +**Status snapshot:** 2026-09-05 18:31 UTC. Linked PRs carry subsequent issue updates. + - 115 issues triaged: the initial 114 plus new report #3433. Verification continues for reports needing exact fixtures or deployment reproduction. -- 40 implementation PRs created by this audit; all 40 are merged. Audit-only documentation PRs #3418 and #3440 are excluded and are both merged. +- 42 implementation PRs created by this audit; all 42 are merged. Audit-only documentation PRs #3418, #3440 and #3444 are excluded and are all merged. - 50 audited issues closed: 49 evidence-backed or reporter-confirmed closures plus one product-decision closure (#3272). Complete closure set: [#2650](https://github.com/amruthpillai/reactive-resume/issues/2650), [#2735](https://github.com/amruthpillai/reactive-resume/issues/2735), [#2739](https://github.com/amruthpillai/reactive-resume/issues/2739), [#2745](https://github.com/amruthpillai/reactive-resume/issues/2745), [#2804](https://github.com/amruthpillai/reactive-resume/issues/2804), [#2805](https://github.com/amruthpillai/reactive-resume/issues/2805), [#2878](https://github.com/amruthpillai/reactive-resume/issues/2878), [#3008](https://github.com/amruthpillai/reactive-resume/issues/3008), [#3017](https://github.com/amruthpillai/reactive-resume/issues/3017), [#3051](https://github.com/amruthpillai/reactive-resume/issues/3051), [#3068](https://github.com/amruthpillai/reactive-resume/issues/3068), [#3146](https://github.com/amruthpillai/reactive-resume/issues/3146), [#3174](https://github.com/amruthpillai/reactive-resume/issues/3174), [#3175](https://github.com/amruthpillai/reactive-resume/issues/3175), [#3180](https://github.com/amruthpillai/reactive-resume/issues/3180), [#3200](https://github.com/amruthpillai/reactive-resume/issues/3200), [#3247](https://github.com/amruthpillai/reactive-resume/issues/3247), [#3251](https://github.com/amruthpillai/reactive-resume/issues/3251), [#3255](https://github.com/amruthpillai/reactive-resume/issues/3255), [#3272](https://github.com/amruthpillai/reactive-resume/issues/3272), [#3285](https://github.com/amruthpillai/reactive-resume/issues/3285), [#3291](https://github.com/amruthpillai/reactive-resume/issues/3291), [#3305](https://github.com/amruthpillai/reactive-resume/issues/3305), [#3311](https://github.com/amruthpillai/reactive-resume/issues/3311), [#3312](https://github.com/amruthpillai/reactive-resume/issues/3312), [#3334](https://github.com/amruthpillai/reactive-resume/issues/3334), [#3337](https://github.com/amruthpillai/reactive-resume/issues/3337), [#3338](https://github.com/amruthpillai/reactive-resume/issues/3338), [#3339](https://github.com/amruthpillai/reactive-resume/issues/3339), [#3340](https://github.com/amruthpillai/reactive-resume/issues/3340), [#3341](https://github.com/amruthpillai/reactive-resume/issues/3341), [#3343](https://github.com/amruthpillai/reactive-resume/issues/3343), [#3344](https://github.com/amruthpillai/reactive-resume/issues/3344), [#3347](https://github.com/amruthpillai/reactive-resume/issues/3347), [#3348](https://github.com/amruthpillai/reactive-resume/issues/3348), [#3352](https://github.com/amruthpillai/reactive-resume/issues/3352), [#3359](https://github.com/amruthpillai/reactive-resume/issues/3359), [#3360](https://github.com/amruthpillai/reactive-resume/issues/3360), [#3361](https://github.com/amruthpillai/reactive-resume/issues/3361), [#3366](https://github.com/amruthpillai/reactive-resume/issues/3366), [#3368](https://github.com/amruthpillai/reactive-resume/issues/3368), [#3369](https://github.com/amruthpillai/reactive-resume/issues/3369), [#3370](https://github.com/amruthpillai/reactive-resume/issues/3370), [#3374](https://github.com/amruthpillai/reactive-resume/issues/3374), [#3380](https://github.com/amruthpillai/reactive-resume/issues/3380), [#3391](https://github.com/amruthpillai/reactive-resume/issues/3391), [#3392](https://github.com/amruthpillai/reactive-resume/issues/3392), [#3393](https://github.com/amruthpillai/reactive-resume/issues/3393), [#3401](https://github.com/amruthpillai/reactive-resume/issues/3401), [#3433](https://github.com/amruthpillai/reactive-resume/issues/3433). -- In progress: Unicode-space preservation discovered during #3093 and remaining issue reproductions. Merged paragraph-indentation PR #3448 addresses the approved whole-paragraph alternative, while #3397 remains open for literal leading spaces and tabs. Merged ordered-list-marker PR #3449 fixes the reproduced overlap, while #2751 remains open because the original missing-digit report is unproven. RTL canvas PR #3447 is owner-merged; broader exported-PDF scope keeps #3275 open. Bullet pagination (#3344), Ditgar alignment (#3068), and Arabic preview centering (#2745) are owner-merged. Reporter confirmed #3433 no longer reproduces after restarting their setup; issue closed without an attributed code fix. #3196 remains open because merged #3438 addressed a separate content-loss regression, not missing table borders. GitHub state refreshed against the current open-issue and PR inventories. +- In progress: exact original reproduction for #3093 after the separately reproduced glyph-cache correction #3450 and Unicode-space preservation #3451 merged, plus remaining issue reproductions. Merged paragraph-indentation PR #3448 addresses the approved whole-paragraph alternative, while #3397 remains open for literal leading spaces and tabs. Merged ordered-list-marker PR #3449 fixes the reproduced overlap, while #2751 remains open because the original missing-digit report is unproven. RTL canvas PR #3447 is owner-merged; broader exported-PDF scope keeps #3275 open. Bullet pagination (#3344), Ditgar alignment (#3068), and Arabic preview centering (#2745) are owner-merged. Reporter confirmed #3433 no longer reproduces after restarting their setup; issue closed without an attributed code fix. #3196 remains open because merged #3438 addressed a separate content-loss regression, not missing table borders. GitHub state refreshed against the current open-issue and PR inventories. - Baseline server/API typecheck errors in `packages/email/src/transport.ts` are fixed separately by [#3416](https://github.com/amruthpillai/reactive-resume/pull/3416). All three affected package typechecks and existing email tests pass there. | Issue | Fix PR | Result | @@ -62,6 +64,8 @@ Issues fixed only in unmerged PRs remain open. Already-fixed issues close only w | [#3275](https://github.com/amruthpillai/reactive-resume/issues/3275) | [#3447](https://github.com/amruthpillai/reactive-resume/pull/3447) | Merged head `bdb7abb3b`: fixes inherited canvas drawing direction while preserving resume and interface DOM direction. Production baseline has two Arabic-resume failures with 35,009 differing pixels and two English-resume controls passing; final eight browser cases verify exact PDF raster parity and preview centering. All 777 web tests, build, typecheck, boundaries and repository checks pass. Independent review clean; all CI checks pass, including 34 browser scenarios. Broader exported-PDF report remains open. | | [#3397](https://github.com/amruthpillai/reactive-resume/issues/3397) | [#3448](https://github.com/amruthpillai/reactive-resume/pull/3448) | Merged head `6cfb00387`: adds approved whole-paragraph/heading indentation through existing controls, with persisted levels and PDF/DOCX export. PDF reserves at least half the available block width. All 945 PDF, 68 DOCX and 177 affected web tests pass, along with build, three typechecks and boundaries. Production authoring/save/reload/export and an independent 16-case narrow-width matrix pass; LTR/RTL continuation-page tests retain text and inset. The final quote/list fix has red/green XML coverage, a fresh 68-test DOCX pass, and all hosted checks green, including 34 browser scenarios. Literal leading whitespace/tabs and existing equivalent-width overlong-word clipping remain outside this implementation; issue remains open for that residual scope. | | [#2751](https://github.com/amruthpillai/reactive-resume/issues/2751) | [#3449](https://github.com/amruthpillai/reactive-resume/pull/3449) | Merged head `7ac7fd31b`: prevents ordered-list markers from overlapping body text, with a common gutter based on digit count, resolved font size and letter spacing. All 975 PDF tests, including marker and pagination regressions, typecheck, boundaries and repository checks pass; all hosted checks are green, including 34 browser scenarios. Independent reviews produced and verified custom-letter-spacing and linear-time list-length corrections. Direct/inherited styles, fonts, digit transitions, RTL, columns and page breaks are covered. Original missing leading digit is unproven; nested RTL list flattening matches unchanged baseline and remains separate, so the issue remains open. | +| [#3093](https://github.com/amruthpillai/reactive-resume/issues/3093) | [#3450](https://github.com/amruthpillai/reactive-resume/pull/3450) | Merged head `fa14e4bc6`: isolates character metadata when different Unicode sequences share one cached font glyph. Full 981-test PDF suite passes; all six glyph-cache regressions cover bounded cache size and distinct alias identity. Typecheck, boundaries, frozen install and repository checks pass. Independent four-runtime checks preserve geometry and bounded cache size. Production browser/server sequential exports retain exact ordinary-space text and 35.12pt width. All hosted checks and reviews pass; original screenshot equivalence remains unproven. | +| [#3093](https://github.com/amruthpillai/reactive-resume/issues/3093) | [#3451](https://github.com/amruthpillai/reactive-resume/pull/3451) | Merged head `1dbc75b26`: preserves literal ideographic and nonbreaking spaces through HTML collapse and app normalization while retaining ordinary ASCII collapse. Full 1,000-test PDF suite passes, along with typecheck, boundaries, repository checks and frozen install. Independent sequence/edge/NBSP review clean. Production browser/server exports agree at 50pt, 60pt after authoring a leading ideographic space, and 35.12pt for the ASCII control. Rebased onto merged #3450; all hosted checks and reviews pass. Named/numeric entity decoding remains unchanged. | ## Product decisions @@ -77,24 +81,24 @@ Issues fixed only in unmerged PRs remain open. Already-fixed issues close only w ## Priority order -1. Finish verified regressions with isolated PRs, actual failure reproduction, and targeted regression coverage. -2. Complete OAuth compatibility and API contract fixes without weakening authentication or stored-data compatibility. -3. Restore download statistics using explicit browser download events and implement approved sharing controls. -4. Reproduce PDF/font/overflow reports using supplied fixtures; distinguish shared causes from unrelated symptoms. -5. Review existing PRs against entire issue scope and avoid duplicate fixes. -6. Resolve product architecture questions; request precise missing data for production-only incidents. +1. Obtain exact source text, resume JSON, original PDF and environment details for #3093; compare them against the two merged Unicode fixes before attributing the screenshot. +2. Obtain exact resume JSON, exported PDFs and environment details for remaining font, layout and pagination reports; compare current output before attributing them to merged partial fixes. +3. Re-test deployed OAuth registration and S3 failures with current builds and original logs, separating fixed local causes from unverified deployment reports. +4. Resolve pending product choices for JSearch restoration (#3010), local fonts (#3377) and item pagination controls (#3350), then scope the remaining visual and architecture requests. +5. Implement accepted feature scopes through separate PRs with focused verification; retain explicit compatibility and migration behavior. +6. Close remaining reports only after matching reproduction evidence, reporter confirmation, a retained canonical duplicate, or an explicit product decision. ## Current audit classifications -| Classification | Count | -| --- | ---: | -| already_fixed | 11 | -| confirmed_bug | 27 | -| duplicate | 1 | -| existing_pr | 5 | -| feature | 10 | -| needs_reproduction | 40 | -| product_decision | 21 | +| Classification | Audited | Still open | +| --- | ---: | ---: | +| already_fixed | 11 | 0 | +| confirmed_bug | 27 | 2 | +| duplicate | 1 | 0 | +| existing_pr | 5 | 0 | +| feature | 10 | 8 | +| needs_reproduction | 40 | 39 | +| product_decision | 21 | 16 | Classification describes the reported problem against the audit baseline; implementation and closure state are tracked separately. @@ -138,7 +142,7 @@ Classification describes the reported problem against the audit baseline; implem ### [#3398](https://github.com/amruthpillai/reactive-resume/issues/3398) — MCP OAuth login fails during dynamic client registration with HTTP 500 -**Assessment:** `confirmed_bug`. **Confidence:** medium. **State:** Open pending resolution/merge. +**Assessment:** `confirmed_bug`. **Confidence:** medium. **State:** Open pending deployment retest and cause confirmation; related OAuth registration fix merged in #3421. **Evidence:** @@ -148,7 +152,7 @@ Classification describes the reported problem against the audit baseline; implem **Action plan:** -- Fix #3392 schema/config chain, verify Codex and Claude registration with supported redirects, correlate deployment logs before duplicate closure. +- PR #3421 merged the related OAuth schema/config fixes. Re-test Codex/Claude registration on that version and correlate deployment logs before attributing this report to the same cause or closing it. ### [#3397](https://github.com/amruthpillai/reactive-resume/issues/3397) — Allow indentations without list @@ -166,7 +170,7 @@ Classification describes the reported problem against the audit baseline; implem - Reproduce and define literal leading-space/tab persistence and export behavior separately. Bounded PDF inset and equivalent-width overlong-word behavior are documented. -**Implementation:** [PR #3448](https://github.com/amruthpillai/reactive-resume/pull/3448). Merged head `6cfb00387`: adds approved whole-paragraph/heading indentation through existing controls, with persisted levels and PDF/DOCX export. PDF reserves at least half the available block width. All 945 PDF, 68 DOCX and 177 affected web tests pass, along with build, three typechecks and boundaries. Production authoring/save/reload/export and an independent 16-case narrow-width matrix pass; LTR/RTL continuation-page tests retain text and inset. The final quote/list fix has red/green XML coverage, a fresh 68-test DOCX pass, and all hosted checks green, including 34 browser scenarios. Literal leading whitespace/tabs and existing equivalent-width overlong-word clipping remain outside this implementation. +**Implementation:** [PR #3448](https://github.com/amruthpillai/reactive-resume/pull/3448). Merged head `6cfb00387`: adds approved whole-paragraph/heading indentation through existing controls, with persisted levels and PDF/DOCX export. PDF reserves at least half the available block width. All 945 PDF, 68 DOCX and 177 affected web tests pass, along with build, three typechecks and boundaries. Production authoring/save/reload/export and an independent 16-case narrow-width matrix pass; LTR/RTL continuation-page tests retain text and inset. The final quote/list fix has red/green XML coverage, a fresh 68-test DOCX pass, and all hosted checks green, including 34 browser scenarios. Literal leading whitespace/tabs and existing equivalent-width overlong-word clipping remain outside this implementation; issue remains open for that residual scope. **Product/scope note:** User approved whole-paragraph indentation through the existing indent controls. Leading spaces and tabs remain part of the original request and require explicit export/persistence verification. @@ -839,16 +843,16 @@ Classification describes the reported problem against the audit baseline; implem ### [#3249](https://github.com/amruthpillai/reactive-resume/issues/3249) — [Bug] multiple fonts are improperly aligned vertically -**Assessment:** `confirmed_bug`. **Confidence:** high. **State:** Open pending resolution/merge. +**Assessment:** `confirmed_bug`. **Confidence:** high. **State:** Open for remaining Ropa Sans reproduction; reproduced font-metric fix merged in #3430. **Evidence:** - Font-specific reports reproduced by multiple commenters on 5.2.3; fonts include Roboto/Roboto Condensed/IBM Plex Sans Condensed and many templates. -- Shared templates align icon/text center; use-register-fonts.ts registers font files; external textkit metric patch and source font metrics require inspection. No actual current font-matrix PDF comparison yet. -- Exact attachment rendered: /tmp/fixture-3249.pdf and PNG; Roboto Condensed profile icon visibly sits below github label. Font baseline problem still reproduced visually; root cause not yet isolated. +- Initial baseline investigation: Shared templates align icon/text center; use-register-fonts.ts registers font files; external textkit metric patch and source font metrics require inspection. No actual current font-matrix PDF comparison yet. +- Initial baseline investigation: Exact attachment rendered: /tmp/fixture-3249.pdf and PNG; Roboto Condensed profile icon visibly sits below github label. Font baseline problem still reproduced visually; root cause not yet isolated. - Current main 00a1357de exact July14 Roboto Condensed fixture reproduces high baseline; July19 attachment ALSO Roboto Condensed and contains authored margin workaround rules. Controlled IBM Plex Sans Condensed variant reproduces same metric cause. - patches/@react-pdf__textkit.patch introduced unconditional OS/2 typo metrics in dd7623f11 (#3070). Roboto/Roboto Condensed fsSelection.useTypoMetrics=false hhea1900→typo1536/2048; IBM Plex Sans Condensed false1025→780/1000. Actual PDF baseline RED3 cases; corrected flag-aware selection restores 1.7773pt/2.45pt at10pt. -- Draft worktree .worktrees/issue-3249-font-alignment retains explicit Noto Sans/Serif SC/TC/JP/KR and Source Han CJK metric exception plus intrinsic-height safeguard. Actual PDF15 tests pass including all8 configured Noto CJK fallback families at tight lineheight. +- Initial baseline investigation: Draft worktree .worktrees/issue-3249-font-alignment retains explicit Noto Sans/Serif SC/TC/JP/KR and Source Han CJK metric exception plus intrinsic-height safeguard. Actual PDF15 tests pass including all8 configured Noto CJK fallback families at tight lineheight. - Exact fixture remains1page. IBM Sans, Roboto Flex, Geist, and Ropa Sans controlled fixtures have byte-identical raster PNGs before/after. Ropa Sans historical claim not explained by this cause (hhea equals typo); do not claim universal font alignment resolved. See /tmp/3249-font-metrics.json and /tmp/current-fixture-3249-1.png vs /tmp/fixed-fixture-3249-1.png. - Published PR #3430 commit af3bb7faf; all 698 PDF tests across 58 files passed in 19.57 s, as did the final 15 targeted tests in 20.19 s, PDF typecheck, boundaries, pnpm check, frozen offline install, and web (11.58 s) and server production builds. - PR #3430 review follow-up 50bac62: actual selectable Noto Sans HK revealed missing exception (baseline23.2 vs18pt). Narrow HK regex addition restores18pt baseline and21.6pt line spacing; all16font PDF tests and699PDF tests pass, types/Biome/boundaries/frozenofflineinstall pass. fsSelection integer suggestion disproved by fontkit2.0.4 OS2 Bitfield decoder and actual font objects. @@ -911,7 +915,7 @@ Classification describes the reported problem against the audit baseline; implem ### [#3196](https://github.com/amruthpillai/reactive-resume/issues/3196) — [Bug] The table have not rows and columms -**Assessment:** `needs_reproduction`. **Confidence:** medium. **State:** Open pending resolution/merge. +**Assessment:** `needs_reproduction`. **Confidence:** medium. **State:** Open for original missing-border reproduction; separate imported-content fix merged in #3438. **Evidence:** @@ -1146,7 +1150,7 @@ Classification describes the reported problem against the audit baseline; implem ### [#3093](https://github.com/amruthpillai/reactive-resume/issues/3093) — [Bug]