Skip to content

Umbrella: the jurisdiction-compliance lens — check postings, forms, and process timelines against the candidate's local employment law #2026

Description

@Schlaflied

Hiring is quietly becoming a regulated activity — pay-transparency laws across US states and the EU, Ontario's 2026 ESA posting rules, salary-history bans in ~20 states, Japan's MHLW fair-hiring framework. career-ops reads exactly the surfaces these laws regulate: posting text, application forms, process timelines, offer documents — and the interview conversation itself. This umbrella tracks the signals that check those surfaces against the candidate's own jurisdiction — a private, local, warn-only decision aid. Nothing here asserts an employer broke the law, auto-acts, or leaves the candidate's machine.

Status (updated 2026-08-10): 11 of 13 identified members merged. Two remain — see table.

Members

Member Surface Verified seed(s) Issue PR Status
Rejection latency Process timeline Ontario ESA 45-day post-interview notification window #2013 #2014 MERGED
Prohibited content Posting + application form "Canadian experience" ban (ON ESA); salary-history ban (California §432.3) #2018 #2020 MERGED
Pay-transparency disclosure Posting Ontario $50K range-width cap (O. Reg. 476/24) #2019 #2021 MERGED
Minimum-wage floor Posting Ontario $17.60/hr → pre-announced $17.95 (ESA 2000, CPI-indexed) #2025 #2027 MERGED
Restrictive-covenant notes Offer document California §16600/§16600.5/§16600.1; Ontario ESA s.67.2 #2028 #2029 MERGED
Sub-statutory terms check Offer document Ontario ESA floors + Waksdale v. Swegon whole-provision voiding doctrine (2020 ONCA 391); candidates: UK ERA s.86/WTR 5.6wk, Germany §622 BGB/BUrlG, EU WTD 4wk, Japan LSA art.39 #2039 #2042 MERGED
Protected-grounds questions Interview conversation Ontario Human Rights Code s.5(1) — 16 grounds; Japan MHLW 14-item do-not-ask list #2030 #2031 MERGED
Immigration-status requirement overreach Posting + application form 8 U.S.C. §1324b (DOJ IER enforcement); Ontario HRC citizenship ground + s.16 exceptions, Haseeb v. Imperial Oil #2033 #2034 MERGED
Employment-classification signals (pre-umbrella member) Posting (heuristic v1 — shipped before this umbrella existed) #1630 #1631 MERGED — shipped as Block G Signal 6; retrofit candidate: a jurisdiction table (California AB5 ABC test, Ontario Digital Platform Workers' Rights Act) would bring it up to this umbrella's verified-seed contract
Agency/recruiter licensing check Posting (keyed to who posted) Ontario THA/recruiter licensing (ESA + O. Reg. 99/23, mandatory since 2024-07-01) + the ministry's public licence-status checker #2037 #2041 MERGED — shipped as Block G Signal 10; zero-fetch by design — points the candidate at the official registry, never scrapes or asserts unlicensed status; composes with the tracker's via={Agency} field (#1596)
Table-freshness validator (infrastructure — keeps every row above true over time) enforces the as_of / next_effective contract the table headers already carry #2036 #2038 MERGED — zero-LLM watchdog (expired = exit 1, review-due = soft); schema-agnostic runtime discovery — empty main is designed behavior, picks up member tables automatically as they land; monthly Action deferred to v2
Vacancy-status disclosure Posting Ontario existing-vacancy statement requirement to follow — NOT STARTED — previously blocked on #1938's cross-source (platform vs employer page, same req ID) machinery; #1938 has since merged, so this blocker should be clear — needs re-confirmation before picking up
AI-screening disclosure Posting / portal — parked — NOT STARTED — honest version is disclosure capture feeding the ATS-channel analytics (#1404/#1405) — touches the analytics layer and ADR #1754's review bar; needs its own scoping pass before an issue can be filed

The shared contract

Every member follows it; the merged PRs pin most of it in tests:

  1. Generic engine + jurisdiction-keyed table. The check logic is universal; only data rows are local. Never a Canada feature — Ontario is just the most frequent first seed, the same way modes/de seeded the market modes. (The covenant member's lead seed is California; the interview member's second seed is Japan.)
  2. Seed discipline: no table entry without a citable legal source and an effective date. Candidate rows can be broad (listed as comments); seeds must be narrow and verified.
  3. Phrasing discipline: state the verifiable fact about the text/timeline ("this range is $90K wide; O. Reg. 476/24 caps covered ranges at $50K") — never "this employer is breaking the law." Employer size, posting type, and exemptions aren't verifiable from a JD. Not-legal-advice notes throughout.
  4. Warn-only, human-in-the-loop: never blocks, never auto-answers, never auto-edits user files. Blacklist output is a ready-to-copy suggestion row (feat(scan): data/blacklist.md — user-owned do-not-apply list respected by scan and evaluation #1748/feat(interview-redflag): suggest a data/blacklist.md entry at the Reconsider tier #1856 guarantee unchanged).
  5. Evidence-strength honesty: presence-based signals can fire standalone; absence-based signals are corroborating-only (aggregators strip compliance blocks — the feat(oferta): Block G signal — benefits/employment terminology country mismatch #1936 precedent).

Where a new member's section lives (by surface)

  • Posting / application form → modes/oferta.md Block G — currently at Signal 10 (Agency Licensing Check), so a new posting-surface signal is Signal 11
  • Offer document → modes/offer-prep.md
  • Interview conversation → modes/interview-redflag.md
  • Process timeline → modes/followup.md

Coordination items for whoever reviews the cluster

  • The "Signal 9" renumber dance during the review window is now resolved — all merged members have their final Signal numbers in the table above.
  • If a single consolidated templates/jurisdiction-*.yml is preferable to per-feature tables, that call is best made here before more members land — happy to consolidate.

Contributions of verified jurisdiction rows (US states, EU member-state transpositions of Directive 2023/970, anywhere with regulator-grade sources) are the most valuable way to help. Want to pick something up? Comment on the specific issue, not here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectural-proposalRFC / design proposal awaiting an architecture decision

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions