Open-Issue Triage Report β theaccessible-platform
Date: 2026-07-07 Β· Open issues: 201 Β· Open PRs: 41
Cross-checked against git log --oneline -100 on main and the last 60 merged PRs.
Note: #1200, #1168, and #1266 (flagged for obsolescence checks) are open PRs, not issues β covered in the close-candidates section.
(a) Top 10 Quick Wins (ranked by value/effort)
| Rank | Issue | Why |
|---|---|---|
| 1 | #846 / #848 / #849 | Zero new work β open PR #851 already implements all three lint cleanups. Review, merge, close three issues at once. |
| 2 | #1169 | vpat-parse recordCostAsync missing ctx.waitUntil β essentially a one-liner that stops silent cost-event loss (violates cost-tracking standard). |
| 3 | #1103 | VPAT batch-upload failures swallowed by empty catch blocks β small fix, ends user-invisible data loss. |
| 4 | #1102 | Stop persisting bogus score_508 for Software-type ACRs β small data-integrity fix in one write path. |
| 5 | #897 | Skip redundant alt-text passes on Marker output (use_llm already generates them) β direct per-conversion AI cost savings for a conditional. |
| 6 | #850 | Never render single-item bulleted lists β one post-processing rule, visible output-quality gain on every conversion. |
| 7 | #1051 | Course-map card spacing (prereq lines unreadable) β CSS/layout constant change, big readability payoff. |
| 8 | #1075 | Retire /api/onboarding/me + wizard type polish β scoped dead-code removal already itemized in the issue. |
| 9 | #638 | Verify CorporateFooter feedback-widget endpoint in apps/audit β 30-minute verification; a broken feedback widget silently eats user reports. |
| 10 | #489 | Migrate workers/api/src/utils/file-list.ts off console.* to the structured logger β mechanical, aligns with logging standard. |
Also cheap: #942 (clean corporate logos), #782 (claude:// deep link), #977 (table-test computeLegacyRedirect), #482 (smoke-test footnote linker), #724/#725 (S3 usage-cost rollup + digest email β newly relevant now that the S3 stack is live).
(b) Top 10 Bugs to Fix Soon
| Rank | Issue | Why |
|---|---|---|
| 1 | #1449 | Node API entry omits ~25 route groups Lambda registers β intermittent prod 404s (same failure class as the worksheet /access incident). Open PR #1445 fixes it β review/merge/deploy is the whole job. |
| 2 | #1188 | Fix-with-AI dialog hangs in βApplyingβ¦β forever (no fetch timeout / error boundary). Pairs with in-flight PR #1444 (NovaβHaiku chain) β fix the timeout in the same area. |
| 3 | #1044 | Program parser treats choose-from option lists as all-required β inflated credit totals in generated plans. Data-integrity bug in the advising productβs core output. |
| 4 | #972 | Sibling wcag-*-checker.ts manufacture phantom WCAG failures on any Puppeteer error β corrupts paid audit results. |
| 5 | #740 | Synthetic axe-runtime-error corrupts compliance score on infra failure β same family as #972; open PR #747 exists, review/merge. |
| 6 | #732 | WCAG validation: silent failures in stale state + unknown-rule classification β third leg of the audit-integrity cluster (with #741). |
| 7 | #955 | snapshotHtmlVersion overwrites on snapshot failure β potential silent data loss of user document versions. |
| 8 | #727 | Org-chart Checkout uses ad-hoc price_data instead of the saved stripe_price_id β billing correctness/drift risk. |
| 9 | #1399 | Pages missing .pdf-page wrappers; figure lists truncated mid-transcription β conversion-fidelity bug in the flagship product. |
| 10 | #1392 | Figure crop absorbs body text above diagrams (vision bbox too tall) β regression-adjacent to the just-shipped region-crop work (#1400β#1411), fix while context is fresh. |
Honorable mentions: #1068 (reload after successful edit shows error page), #988 (parser-boundary credit validation), #1114/#1117 (high/critical npm vulns β policy says never ignore), #954/#953 (Fix-with-AI reload + focus-trap a11y).
(c) Close Candidates (likely obsolete)
Issues β superseded by shipped work:
- #688 β S3 bucket watch & auto-remediate: fully shipped; writeback/pagination/loop-guard live 2026-07-06 (#1436, #1437, #1440, #1441).
- #1378 β In-app rename to canonical names: superseded by shipped rebrand PRs #1385/#1386/#1387 (issue #1401 work); the names it asks for (βAccessible PDFβ, βACR Scorecardββ¦) are now the retired variants.
- #1193 β βUse Bedrock for Zero Data Retentionβ: duplicate umbrella of #1191; the Bedrock zero-retention path shipped for vpat-parse in #1373/#1374.
- #1202 β Align billing backend with prepaid-balance pricing: superseded by the entitlement-packages billing cutover (#1350/#1358/#1364/#1366, migrations 195β198, live 2026-06-28).
- #1220 β Add βOrg Chartsβ card to the 6-card pricing catalog: superseded by the six-entitlement-packages marketing rewrite (#1363); org-chart was folded into the
org_chartadd-on. - #777 β Smoke-failure snapshot from 2026-05-23: stale point-in-time alert, prod smoke has been green through dozens of deploys since.
- #830 and #836 β Migration-ledger reconciliation /
db pushversion mismatch: both folded into the migration-tracking rework tracked by #1327; close as duplicates of #1327. - #585 β Apply migration 20260505_096 to staging Supabase: staging stack was shut down after the 2026-05-08 pollution incident; superseded by #1327βs clean-apply model.
- #641 β Funnel
deduct_creditscallers through cache-invalidating helper: credit charging replaced by entitlement RPCs (#1364); verify no callers remain, then close. - #816 β Internal TOC links break: TOC handling was overhauled in #1393/#1394; re-test one affected PDF and close if fixed.
- #211 and #78 β βNew product: AccessibleRemediateβ / βadd auto-remediation productβ: shipped as TheAccessibleWeb (apps/remediate).
- #160 β Team shared credit pools / member management: shipped as team management with per-member entitlement quotas (#1369).
- #448 β Epic: Team workspaces: largely delivered by #1369; close or re-scope the small remainder.
- #773 β Org/subscription tier model: delivered by the entitlement model (migrations 195β198, live 2026-06-28).
- #53 β Track 10 free conversions permanently: free-credits model no longer exists under entitlement pricing.
- #1181 β Out-of-credits dialog coverage: credits UX replaced by the balance pre-flight shipped in #1405; verify then close.
- #1161 β Migrate off retiring Sonnet 4.x: issue itself notes live code runs 4.5/4.6 and nothing errors; either fold into #1162 (centralize model management) or close.
Stale open PRs (superseded by merged work):
- PR #1200 and PR #1168 β vpat-parse 502/truncation fixes: superseded by merged #1371 (output cap + truncated-JSON salvage), #1373 (Nova 5K cap), #1374 (NovaβClaude-on-Bedrock escalation). Close both.
- PR #1266 (org-chart cost ledger) is not obsolete β itβs the pending implementation; review and merge instead.
(d) Counts per Category
| Category | Count |
|---|---|
| Quick wins | 19 |
| Bugs worth fixing soon | 17 |
| Epic / architecture | 51 |
| Likely obsolete (close candidates) | 18 issues (+2 stale PRs) |
| Deferred-by-design (priority:later / deferred / wontfix-candidate β untouched) | 96 |
| Total open issues | 201 |
Notes on the epic/architecture bucket (51)
Dominant clusters, in case you want to pick one to schedule:
- Editor / Fix-with-AI UX (#948, #949, #950, #943, #944, #953, #954, #974, #976) β one coherent workstream.
- Audit correctness & coverage (#731, #741, #789, #791, #793, #794, #804) β overlaps the bug list above.
- Course-map robustness (#986, #988, #1040, #1046, #1131, #1138, #1144, #1031, #1068).
- Math/equation quality gate (#523, #524, #526).
- Model/provider strategy (#1162, #1190, #795, #636, #858) β #1162 (one-line model switching) would de-risk every future retirement like #1161.
- Pricing/catalog plumbing (#1333 remaining scope, #1213 nice-to-haves, #1204 refund policy, #910 Marker billing actuals).
- Zero-retention completion (#1191 remaining scope: immediate-delete setting +
vpat_parse_cacheretention β the Bedrock routing itself already shipped).