Commit graph

58 commits

Author SHA1 Message Date
LLLin000
34e306fd60 docs: record redesign issue queue 2026-07-20 02:32:11 +08:00
LLLin000
9a15f36485 docs: define control center UX redesign 2026-07-20 01:49:33 +08:00
LLLin000
b9f3ca1719 fix: repair stash merge artifacts in i18n.ts and memory.py
- i18n.ts: remove duplicate md_select_* keys from stash conflict
- memory.py: replace corrupted _restore_backup/run merge with clean copy
2026-07-19 14:14:41 +08:00
LLLin000
b4c0404542 feat: deliver actionable Maintenance inbox and privacy-safe issue drafts (#80)
Maintenance derives worst-constituent severity from Installation/
Library/OCR/Memory/Help with no independent probe/action. Items
route to constituent module actions; re-probe removes resolved
items. Accessible destructive confirmation (Tab trap, Escape,
inert bg, focus restore) plus editable locally redacted OCR
issue drafts with explicit GitHub open and no token storage.

Backend: probe_maintenance aggregation, quality_unacceptable
detection with scope_count, 78/78 gate.

Frontend: Maintenance tab, inbox rendering, PaperForgeConfirmModal,
PaperForgeIssueDraftModal with double-redaction, excluded-category
preview, _REAL_PROBE + strict envelope validation, container-query
responsive at 730/768px.

Verified: 78/78 backend, 384/385 plugin (1 known baseline),
typecheck clean, 264.9KB build, Obsidian 1.12.7 smoke.
2026-07-19 14:09:54 +08:00
LLLin000
c23d6b9a7f Merge branch 'feat/issue-78-capability-tracers' into feat/issue-80-maintenance
# Conflicts:
#	PROJECT-MANAGEMENT.md
#	paperforge/plugin/main.js
#	project/current/ocr-v2-active-queue.md
2026-07-19 10:26:47 +08:00
LLLin000
6bed0d7151 feat: migrate plugin credentials to SecretStorage (#79) 2026-07-19 01:00:41 +08:00
LLLin000
69a6223910 feat: expose library OCR and memory capability tracers (#78) 2026-07-18 18:13:08 +08:00
LLLin000
85a7ae30a2 feat: add OCR rebuild UX and capability tracer 2026-07-15 20:36:15 +08:00
LLLin000
e56a5faf44 docs: record control-center PRD and setup migration 2026-07-15 02:30:05 +08:00
LLLin000
b97e82ab7c docs: close #71/#72 prototypes, set #73 as active frontier
Record the completed six-module control-center and maintenance-inbox
prototype wave. Both prototype pairs passed independent Critical/Important
PASS review and direct browser verification at 768px without production
code changes. Update executive summary, active queue, decision log,
session timeline, and milestone checkpoint.

- #71 resolved: six-module control-center HTML prototype
  (5 scenarios x 6 modules, plain-button switcher, responsive 768px)
- #72 resolved: actionable-only maintenance inbox prototype
  (single-action rows, inline issue-draft, confirmation-first report)
- #73 promoted to active frontier: integrate accepted model into
  production control-center plugin
2026-07-15 00:41:28 +08:00
LLLin000
d7b0a52780 closeout: record #69/#70 resolution, capability model, runtime architecture, maintenance regression fixes
- Update PROJECT-MANAGEMENT.md for #69/#70 resolved, #71/#72 as live frontier
- Add orthogonal capability/activity/attention model and managed-runtime immutable-slot
  architecture decisions to decision log and timeline
- Record OCR maintenance regression: canonical per-row action routing (display_action->verb),
  redo confirmation gate, cache manifest preservation (19/19 tests pass)
- Add research reports: docs/research/2026-07-14-capability-state-action-contract.md,
  docs/research/2026-07-14-managed-runtime-architecture.md
- Update project/current/ocr-v2-active-queue.md with resolved items and new frontier
2026-07-15 00:03:16 +08:00
LLLin000
29a0e27077 docs: research control center recovery patterns 2026-07-14 23:08:26 +08:00
LLLin000
68f342ddf9 docs: audit control center contracts 2026-07-14 19:58:30 +08:00
LLLin000
92fe2b7847 docs: chart control center UX wayfinder 2026-07-14 19:04:20 +08:00
LLLin000
b7e80c84d6 docs: record OCR rebuild UX completion 2026-07-14 18:33:37 +08:00
LLLin000
3a0d171e31 docs: update PROJECT-MANAGEMENT and ocr-v2-active-queue with retrieval recovery Wayfinder checkpoint 2026-07-11 01:30:58 +08:00
LLLin000
077c190b60 docs: update project management for PR9A-C embedding pipeline work 2026-07-09 00:30:50 +08:00
LLLin000
f76396220d docs: mark Layer 2 done, update project docs
- Active queue: Layer 2 added to completed with commit reference
- PROJECT-MANAGEMENT: updated header, test counts, component table,
  Layer 3 replaced health hardening with done status, active queue
  reprioritized, key file map updated, 7 decision log entries added
- Session timeline entry pending (manual update)
2026-07-04 23:41:59 +08:00
LLLin000
26715a9d7e feat: layout-category truth audit complete
Workstream X: 11 papers audited across 6 layout classes,
5 verified via vision subagents. 6 real bug patterns identified
with code locations and root cause analysis.

Bug patterns:
A - _is_obviously_formal_figure_caption heuristic too aggressive
    (ocr_roles.py:193)
B - Cross-column figure asset mis-assignment ignores boundaries
    (ocr_figures.py:704)
C - Render frontmatter skip silently drops authors/affiliations
    (ocr_render.py)
D - Two-column same-page boundary body→backmatter zone pollution
    (ocr_document.py)
E - Frontmatter headings misclassified (ocr_roles.py)
F - Supplementary-only PDFs not handled

Full report: docs/superpowers/analysis/2026-07-05-layout-truth-audit-findings.md

Also: codebase-memory-mcp 0.8.1 installed and repo indexed.
2026-07-04 21:26:15 +08:00
LLLin000
6f479ae46d test: widen v3 parity to six replay fixtures
- add fixture-backed replay parity for 37LK5T97, 8CCATQE3, and 5MAW65YD
- keep existing DWQQK2YB, VAMSAZMG, and PJBMGVTF gates
- update OCR project status and queue to 105-test state
2026-07-04 19:15:26 +08:00
LLLin000
ae3b5ce07c test: expand v3 replay parity corpus
- add fixture-backed parity replay for VAMSAZMG and PJBMGVTF
- keep DWQQK2YB as existing replay gate
- sync post_match render/index defaults to legacy contract
- update OCR status docs to 102-test state
2026-07-04 19:11:31 +08:00
LLLin000
2a4cda9782 test: add DWQQK2YB v3 parity gate
- sync render/index defaults in post_match_normalize to match legacy
- add fixture-backed real-paper parity test for DWQQK2YB
- update OCR project status and active queue to 100-test state
2026-07-04 18:33:32 +08:00
LLLin000
268462c781 docs: sync OCR records after A/B/C merge 2026-07-04 18:00:38 +08:00
LLLin000
3cda942f96 fix: appendix numbering cross-cutting bugs (TABLE regex, int block_id, table alpha prefix, weak-caption tie-break)
3 distinct bugs found and fixed:

1. TABLE in figure regex (_FIGURE_NUMBER_PATTERN)
   Removed TABLE/Table from figure regex — caused table captions to be
   extracted as figure numbers and roadmapped into figure inventory.
   Added unit tests (table_numeric_caption_is_not_a_figure_number,
   table_appendix_caption_marker_has_no_figure_number).

2. int block_id type mismatch in cross-page lookup
   CrossPageSettlementPass and PrimarySamePagePass compared block_id
   with === but deduped_legends use int keys while ResourceRef stores
   str.  Fixed by casting both to str.  Table continuation lookup
   missed page filter, picking wrong page's same block_id.  Added
   page filter + int_block_id tests.

3. Table appendix support gaps
   - Table prefix regex only accepted digits/roman, not 'TABLE A1'.
     Added [A-Z]\d+ token and strip-leading-alpha in parse.
   - _is_validation_first_table_candidate didn't cover figure_title
     raw_label blocks with table_caption_like style.  Added second
     gate.
   - _is_weak_explicit_table_caption only checked table_caption roles.
     Extended to include validation-first candidates.
   - Same-page tie-break didn't apply for weak-explicit captions.
     Ported _bare_table_tie_break into vnext pass.
   - figure_caption_candidate not excluded from note attachment.
   - Continuation merge stripped leading duplicate table marker.

M84CTEM9 vault verification: 6/6 figures matched (3 main + 3
appendix + assets), 4/4 tables (Table 1,2 + Table A1,A2 + assets),
0 false positives, 0 figure asset leakage.
2026-07-04 01:29:06 +08:00
LLLin000
2e542dabd0 fix(ocr): unblock pairing framework merge 2026-07-03 22:50:15 +08:00
LLLin000
28827d1f64 fix(ocr): fix verdict false positives - 26->8 regression, add noise_cleanup/consolidated verdicts 2026-07-03 18:20:00 +08:00
LLLin000
14d971f9c7 Merge branch 'feat/figure-pipeline-vnext'
# Conflicts:
#	paperforge/worker/ocr_figure_vnext_corpus.py
#	paperforge/worker/ocr_figure_vnext_passes.py
#	paperforge/worker/ocr_figure_vnext_state.py
#	paperforge/worker/ocr_figure_vnext_types.py
#	paperforge/worker/ocr_figures.py
#	scripts/dev/compare_figure_inventory_legacy_vs_vnext.py
#	tests/test_ocr_figure_vnext_compare.py
#	tests/test_ocr_figure_vnext_corpus.py
#	tests/test_ocr_figure_vnext_passes.py
#	tests/test_ocr_figure_vnext_state.py
#	tests/test_ocr_figure_vnext_types.py
#	tests/test_ocr_figures.py
2026-07-03 17:49:54 +08:00
LLLin000
239d44bfe4 feat(ocr): checkpoint layout robustness and figure vnext groundwork on master 2026-07-03 17:48:50 +08:00
LLLin000
368ff961ba feat(ocr): switch figure inventory wrapper to vnext by default 2026-07-03 17:45:56 +08:00
LLLin000
9b8d46b448 test(ocr): complete vnext cutover gate verification — all 4 gates pass 2026-07-03 17:13:35 +08:00
LLLin000
17958f1c15 analysis(ocr): generate vnext cutover diff reports for full corpus 2026-07-03 17:12:39 +08:00
LLLin000
4c788b8288 revert: undo two adversarial-review changes to _recover_figure_heading_prefix, record issue in project/
Reverts 5e1040b (bbox bound) and f5f8294 (multi-column scan).
Original single-next-line check restored.
Issue documented: project/current/pending-issues/media-asset-caption-prefix-multi-column.md
2026-07-03 02:12:50 +08:00
LLLin000
1791edd7cd docs: record round 2 truth audit + 3 bug fixes for 37LK5T97 2026-07-02 15:02:42 +08:00
LLLin000
5af3a1f8ca feat: asset-internal figure number recovery for rotated vector figures
adds a metadata-only recovery pass that scans matched figure assets for
internal PDF line labels ("Figure N.", "Fig. N:") when the figure lacks
a figure_number.

new components:
- extract_pdf_lines_normalized() in ocr_pdf_spans.py — reads PDF rawdict
  lines page-by-page, normalizes coordinates to OCR space
- _recover_missing_figure_numbers_from_assets() — inventory pass between
  synthetic fallback and dedup
- _needs_asset_internal_figure_number_recovery() — gate supporting both
  synthetic_figure and figure_unknown entries
- _looks_like_internal_figure_label() — regex-based label detection
- _asset_edge_band_score() — geometric rejection for center-positioned
  lines or lines covering >15% asset area
- page_pdf_lines_by_page parameter added to build_figure_inventory()

verification: U746UJ7G figure_unknown_000 -> figure_002 with recovered
label "Plot of Criteria Time". 428 regression tests pass (6 new).
2026-07-02 03:00:33 +08:00
LLLin000
d41712d7bc fix: normalize rotated figure captions before normal matching
- preserve PyMuPDF dir/wmode in span_metadata and bump span backfill version
- promote rotated vision_footnote figure descriptions into normal legend prematch
- normalize rotated caption/asset regions before score_figure_match
- carry rotation_correction_deg into matched figures and cropped renders
- use LANCZOS resampling on rotated figure crops to avoid aliasing
- keep synthetic fallback as last resort, reusing the same rotation metadata
2026-07-02 02:28:56 +08:00
LLLin000
03d2bcafdb docs: update project records for 3 audit fix commits
- Timeline: 3 new commits + Commit 3 pre-existing
- §9.18: mark execution complete
- Active queue: current priorities + cumulative completed list
2026-07-02 00:52:19 +08:00
LLLin000
2593690b91 docs: record truth audit session (10 papers + GPT review)
Add timeline entry + §9.18 archive for 10-paper audit.
Update active queue to reflect 4-commit GPT-reviewed fix plan.
2026-07-02 00:28:27 +08:00
LLLin000
03e2c795c4 docs: clean active queue priorities (remove done item, dedup) 2026-07-01 21:54:40 +08:00
LLLin000
6ee91fd79f docs: update project management for residual fixes session
Add 7 fix entries to §2.3, timeline entry to §8, update executive
summary and active queue for completed 6-issue fix series.
2026-07-01 21:53:21 +08:00
Research Assistant
7b0bb41a9c project: update for Gate 5 session — PM rules, archive, active queue
- PROJECT-MANAGEMENT.md: new project folder management rules (7.1),
  updated status, fix table, decision log, session timeline, active queue
- project/current/ocr-v2-active-queue.md: refreshed for Gate 5 completion
- project/archive/: moved 3 stale current/ files with archive headers
  (ocr-v2-closeout-priority.md, phase2-root-cause-analysis.md,
  ocr-error-root-cause-fix-queue.md)
2026-06-28 22:31:39 +08:00
Research Assistant
fb28eca1fe fix: converge figure ownership arbitration and add VFS8CBW2 dense-composite diagnostics 2026-06-23 02:42:22 +08:00
Research Assistant
40123d1866 docs: remove OCR truth surface contradictions 2026-06-19 23:30:08 +08:00
Research Assistant
7ffe3ddd84 docs: realign OCR truth surface roles 2026-06-19 23:26:40 +08:00
Research Assistant
c96d4a5fba docs: update cross-links from frozen closeout to active queue 2026-06-19 23:25:40 +08:00
Research Assistant
6826506b26 docs: add OCR active queue and freeze closeout queue 2026-06-19 23:23:22 +08:00
Research Assistant
33a8028ffc docs: reconcile project truth files after blind audit
- Update PROJECT-MANAGEMENT.md header to 2026-06-19
- Update ocr-v2-closeout-priority.md baseline 945->975, fix typo
- Mark ocr-error-root-cause-fix-queue.md as SUPERSEDED
- Add .gitignore for .opencode/tmp/ and audit annotated_pages
- Add blind audit structured evidence (21 papers, JSON/CSV only)
2026-06-19 15:52:12 +08:00
Research Assistant
773bead726 docs: update project truth files after blind audit
- PROJECT-MANAGEMENT: record audit diff/canonical-roles/structural-gate session (10.13) and blind audit session (10.14)
- closeout-priority: Gate 5 DONE, next step is merge
- remaining-issues: post-blind-audit residuals documented
2026-06-19 00:37:02 +08:00
Research Assistant
70a7978de8 feat: complete OCR-v2 readiness gates + blind audit validation
- Gate 1: completeness signals for page text coverage
- Gate 2: DW figure ownership generalization with strict regression
- Gate 3: reference boundary enforcement from structure
- Gate 4: layout coverage taxonomy in audit/coverage_ledger.json
- diff_audit.py: canonical role alias mapping + auto-normalize truth_role
- ocr_structural_gate.py: table caption text-evidence fallback
- ocr-canonical-roles.md: canonical role list for audit workflow
- ocr-truth-audit.md: pre-flight checklist enforces canonical roles
- Blind audit: 5 unseen papers across domains, all PASS with coverage
2026-06-19 00:35:21 +08:00
Research Assistant
057c2b3653 docs: record OCR blind-audit entry gate 2026-06-18 22:20:39 +08:00
Research Assistant
d574b191d7 test: formalize OCR layout coverage readiness classes 2026-06-18 22:20:12 +08:00