Skip to content

feat(compensation): refresh market benchmarks during discovery - #795

Open
ebarti wants to merge 3 commits into
feat/automatic-compensation-discoveryfrom
feat/discovery-compensation-refresh
Open

feat(compensation): refresh market benchmarks during discovery#795
ebarti wants to merge 3 commits into
feat/automatic-compensation-discoveryfrom
feat/discovery-compensation-refresh

Conversation

@ebarti

@ebarti ebarti commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • run lease-fenced compensation benchmark refresh automatically after terminal discovery enrichment while preserving Temporal replay compatibility and source opt-in policy
  • materialize the latest direct or geographically extrapolated canonical benchmark onto matching active jobs without mixing employer-posted salary into market authority
  • preserve the last usable range across source failures, expose canonical warnings and geography scope consistently in Python and TypeScript, and refresh missing or seven-day-stale benchmark slices
  • commit each market estimate and its durable CompensationFactsUpdated event before notifying in-process subscribers, preventing a projection subscriber from erasing the repository savepoint
  • migrate settled compensation projections to version 3 so historical posted-as-market rows rebuild safely
  • document the automatic lifecycle, provenance boundaries, failure cadence, and local QA contract

Why

Jobs with ingested posted salaries need reliable list/detail display, while jobs without posted pay need reusable, auditable market benchmarks. Discovery is the natural trigger for missing or stale role-family and country slices, but it must not silently opt into providers, erase the last good result, publish a partial estimate/event aggregate, or present inferred geography as direct evidence.

Validation

  • corepack pnpm python:test on the cumulative exact head — 3,584 passed, 2 skipped
  • focused workflow, repository, network, materialization, and source suites — 79 passed
  • actual disposable 105-job Temporal refresh with production-style projection subscriber — succeeded; estimates, events, list projections, and detail projections remained consistent
  • corepack pnpm api:test — 57 files, 776 tests passed
  • corepack pnpm web:test — 324 files, 2,007 tests passed
  • corepack pnpm check — passed
  • corepack pnpm docs:build — passed, 9,651 references across 359 files
  • git diff --check — passed
  • cumulative independent Tier 3 reviewer gate — PASS, zero findings
  • cumulative independent Tier 3 QA gate — PASS, zero findings

Stack

Depends on #794. Canonical public documentation and end-to-end UI lineage are completed in #796.

@ebarti
ebarti force-pushed the feat/discovery-compensation-refresh branch 2 times, most recently from 1228513 to 3181ec7 Compare August 12, 2026 08:57
@ebarti
ebarti force-pushed the feat/discovery-compensation-refresh branch from 3181ec7 to a05d2e8 Compare August 12, 2026 12:52
@ebarti
ebarti force-pushed the feat/discovery-compensation-refresh branch from a05d2e8 to 4995228 Compare August 12, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant