mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
fix(upskill): give Step 3.3 a rule for blank fit_rating rows
/outcome-created tracker rows (applications made outside the workflow) never got a fit evaluation, so fit_rating is blank - and Step 3.3's weight formula divides by it with no stated rule. Blank read as 0 means weight 1.0, the maximum: the job the framework knows least about would dominate the heatmap and the learning plan. Blank now falls back to a matched ranked entry's rank_score, else skip+count+report once - the same pattern the skill already applies to missing gaps. Review finding F29 (2026-08-19). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
57e82d2b59
commit
0e054f16e7
@@ -56,6 +56,14 @@ per-file diff commands.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`/upskill` no longer divides by a blank `fit_rating`** - `/outcome` creates tracker
|
||||
rows for applications made outside the workflow with no fit evaluation, so their
|
||||
`fit_rating` is blank, and Step 3.3's `(100 - fit_rating) / 100` had no rule for that.
|
||||
The naive blank-as-0 reading yields weight 1.0 (the maximum), letting the one job the
|
||||
framework knows nothing about dominate the skill-gap heatmap. A blank or non-numeric
|
||||
`fit_rating` now falls back to a matched ranked entry's `rank_score`, else the row is
|
||||
skipped, counted, and reported once - mirroring the skill's own missing-`gaps`
|
||||
handling. Pinned by `tests/test_upskill_skill.py`.
|
||||
- **`/rank`'s expiry sweep parses stored deadlines defensively** - the sweep changes
|
||||
status automatically from a date comparison against values on disk, but portals have
|
||||
shipped non-ISO shapes into `seen_jobs.json` (`"ASAP"`, `DD.MM.YYYY`, free text), and
|
||||
|
||||
Reference in New Issue
Block a user