Two-column headerless work history is dropped and the probe still reports ok
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- testing-qa
Research direction
Start in src/lib/heuristics/sections.ts and src/lib/heuristics/localize/experience.ts, especially the region-scoping logic around line 92, then inspect the EXPERIENCE_DEFECT_CLASSES definition and tests for /probe-experience. Add coverage for a two-column headerless work-history fixture using the synthetic-persona policy in tests/fixtures/pdfs/README.md. Done means the dated cluster produces experience-no-section rather than Verify: ok, without widening recovery.
Written by the indexing model from the issue text.
Description
Follow-up to #492, split out so the residue that PR #842 does not cover is recorded before #492 closes on merge.
What still breaks
recoverHeaderlessExperience (src/lib/heuristics/sections.ts) returns early on !singleColumn. So a two-column résumé whose work history carries no recognized experience heading is still dropped whole — exactly the #492 symptom, on the layout the recovery deliberately excludes.
The single-column case is fixed by #842 and is not in scope here.
Why it is invisible
#492's AC 5 asked that /probe-experience report a defect (not ok) on a headerless-experience résumé. #842 satisfies that AC by dissolving it for single-column — the fixture now routes an experience section, so ok is the correct verdict. It does not satisfy it for two-column:
localizeExperiencescopes its date-range oracle to the already-routed experience region (src/lib/heuristics/localize/experience.ts:92). With no experience section routed, there is no region, so the oracle never sees the dated role cluster sitting inother.EXPERIENCE_DEFECT_CLASSEShas onlyexperience-parser-missandexperience-under-segmented. Neither describes "no experience region exists at all".
Net: the probe reports Verify: ok with zero roles parsed, silently. That is worse than the parse miss itself — the lane whose job is to flag the miss reports clean.
Acceptance criteria
- A new
experience-no-sectiondefect class inEXPERIENCE_DEFECT_CLASSES. - The oracle runs document-wide (not region-scoped) when no
experiencesection was routed, so a dated title-cased cluster anywhere in the document raises the defect. /probe-experiencereportsexperience-no-section— notok— on a two-column headerless-experience fixture.- A fixture pinning the two-column headerless shape, with a synthetic persona per the
tests/fixtures/pdfs/README.mdpolicy. - Recovery itself stays out of scope: this issue makes the drop visible, it does not make it parse. Widening
recoverHeaderlessExperiencepastsingleColumnis a separate decision — the two-column reader has to distinguish a headerless work-history rail from a sidebar, which the single-column recovery never has to.
Notes
- Non-regression: these résumés were dropped before #842 too. This is uncaptured pre-existing behaviour, not new breakage.
- Related: #492 (the parent symptom, closed by #842 for single-column), #646 (the scored-router item that would subsume the region-scoping limitation).
- Dominant language
- TypeScript
- Stars
- 11
- Forks
- 4
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 40
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from offlinecv/OfflineCV
-
chore
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
testing
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
improvement ux:edit-export
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
refactor testing
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
chore
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
All issues in offlinecv/OfflineCV
Similar issues
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
motiondivision/motion#3849 ·
-
Add: S Play Event HD Opencheck:passed streams:add
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
i-am-bee/beeai-framework#1697 · 1 reaction ·
-
Support bun dedupe Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
antfu/node-modules-inspector#214 ·