[1.129.1] — 2026-07-29
Fixed
- AI-review follow-ups on the v1.128.0/v1.129.0 web-ports (all advisory, none blocking; fixed at source):
job-facets.jsseniority precedence — an explicit modifier now wins over a management word:Senior Engineering Manager→senior(waslead),Staff Manager→staff, while a bareEngineering ManagerstaysleadandSenior Staff Engineer→staff. The modifier buckets (staff/senior/junior/intern) are tested before the role-levelleadbucket.server/lib/states.mjsfallback is no longer pinned — a SUCCESSFULtemplates/states.ymlread is still memoized, but the built-in FALLBACK is returned uncached, so a parent whosetemplates/was momentarily unavailable at boot (or updated live) is re-read on the next call instead of being stuck for the process lifetime. A present-but-malformed file now emits aconsole.warn(drift is surfaced to ops) while a genuinely absent file stays quiet.score-tone.js— a not-yet-scored row is neutral, not red — a null/blank score now returnsmuted(.score-muted) instead ofbad; a real low grade (D/F) still readsbad.company-logo.jsdomainFromName()skips non-ASCII slugs — a name like株式会社no longer builds an invalid host handed to/api/logo(whoselooksLikeHostguard would reject it anyway); it goes straight to the letter-avatar, sparing the round-trip.tests/states.test.mjsisolation guard — a first sanity assertion pinsPATHS.statesYmlto the tempCAREER_OPS_ROOT, so if the per-file test isolation ever regresses the fallback assertions fail loudly instead of silently passing against the real parent's file. +4 tests → 2073.