fix(salary): convert the IDA workbook again ("Firmanavn og by" header); list `unreachable` in the scrape schema

Merged
MA
17d ago
+32-3

What changed and why

tools/convert_salary_excel.py has not converted the repository's own demonstration workbook (IDA firmastatistik) since #75: that change made header matching whole-token only, and the workbook heads its company column "Firmanavn og by", where "firma" is glued to "navn". Both sheets were skipped with Could not find header row and the converter exited 1. Found during the 2026-10-17 triage sweep while verifying the salary PRs against the real workbook; the converted file in use predates the regression, which is why nobody noticed.

Fix: "firma" joins COMPOUND_PATTERNS, the same mechanism the other glued Danish headers use. Every other workbook converts byte-identically (verified on the synthetic fixtures and on the real workbook with the header patched both ways).

Second, a one-line follow-up to #564: the status enum in the seen_jobs.json schema block of job-scraper/SKILL.md still read new/skipped/ranked/expired while the dedup rule further down already named unreachable.

Failing case / reproduction

python tools/convert_salary_excel.py ida-firmastatistik-2025.xlsx --output out.json
# master:  Warning: Could not find header row in sheet 'Med ledere'. Skipping. ... exit 1
# branch:  Done! Wrote 1736 company entries ... exit 0

The new test test_parse_sheet_detects_danish_compound_company_header fails with the converter hunk reverted and passes with it.

Verification

  • python -m unittest discover -s tests -t .: 590 tests OK (Windows, Python 3.14)
  • python tools/lint_skills.py, python tools/check_framework_version.py, python tools/security_guards.py: OK
  • CHANGELOG entries under [Unreleased] > Fixed

šŸ¤– Generated with Claude Code