Skip to content

πŸš€ Release 0.3.1 β€” reevaluation gate fixes + compEstimate staleness#10

Merged
scttbnsn merged 3 commits into
mainfrom
dev
Jun 29, 2026
Merged

πŸš€ Release 0.3.1 β€” reevaluation gate fixes + compEstimate staleness#10
scttbnsn merged 3 commits into
mainfrom
dev

Conversation

@scttbnsn

Copy link
Copy Markdown
Contributor

Release 0.3.1

Bugfix-led patch: fixes a reevaluation-gate false positive and the same recompute-instead-of-read class elsewhere, plus a small backward-compatible comp-staleness addition.

Fixes (read the persisted gate, don't recompute it)

  • reevaluate-strategy β€” STEP 0 reads tracker.json#analytics.reevaluation (npm run analytics) instead of the descriptive analyze:outcomes CLI; STEP 1 partitions fit-bands by the persisted app.fitBucket rather than re-deriving from current fit_bands.
  • AGENTS.md β€” reevaluation contract now states the trip is the delta since the last review, not the cumulative total; added a "read the block, don't hand-count" rule and a two-distinct-gates clause (dashboard nudge vs reevaluation.due).
  • track-outcomes β€” added the missing npm run analytics -- --write refresh to STEP 3 so the gate block isn't read one run stale (root cause of the stale block).
  • company-health β€” screen now counts toward the interview fire-band (matches classifyStage).
  • apply-job β€” reads the persisted fitBucket before re-deriving the FIT tier.

Feature

  • compEstimate staleness β€” persist asOf + a freshness/decay rule mirroring company_health (comp_estimate.recheck_days, default 30); surfaced as "as of <date>" in the comp range card. Additive/optional schema change β€” non-breaking.

Gates

  • npm test: 909 pass, 0 fail
  • lint:placeholders: clean
  • doctor: clean
  • privacy grep on the diff: clean
  • pre-commit structure-guards + Biome: clean; pre-push tests: clean

CodesWhat added 3 commits June 29, 2026 11:53
The reevaluation gate fired a false positive β€” a track-outcomes pass hand-counted
cumulative rejections instead of reading the persisted analytics block, which trips
on the delta since the last strategy review. Root cause was contract prose inviting a
recompute that diverged from the implemented logic. Swept for the same class and fixed
the siblings.

- πŸ› fix(reevaluate-strategy): STEP 0 reads tracker.json#analytics.reevaluation (npm run
  analytics) not the descriptive analyze:outcomes CLI; STEP 1 partitions fit-bands by the
  persisted app.fitBucket, not re-derived from current fit_bands thresholds
- πŸ“ docs(AGENTS): reevaluation contract trips on the since-last-review delta, not the
  cumulative total; added "read the block, don't hand-count" + a two-distinct-gates clause
- πŸ› fix(track-outcomes): add the missing `npm run analytics -- --write` refresh to STEP 3
  so STEP 6 doesn't read a one-run-stale gate block
- πŸ› fix(company-health): screen counts toward the interview fire-band (matches classifyStage)
- πŸ› fix(apply-job): read the persisted fitBucket before re-deriving the FIT tier
Comp estimates were effectively eternal β€” no way to detect drift as comparables
accumulate in the tracker. Mirror the company_health asOf/recheck_days pattern.

- ✨ feat(evaluate-job): persist compEstimate.asOf + a freshness/decay rule (reuse if
  fresher than comp_estimate.recheck_days, default 30; re-estimate and bump asOf otherwise)
- ✨ feat(dashboard): surface "as of <date>" in the comp range card (dashboard-data + shell)
- πŸ”§ config(modes): add comp_estimate.recheck_days to the schema + example

@biggest-littlest biggest-littlest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving: gate-truth fixes are correct, tests green.

@ALARGECOMPANY ALARGECOMPANY left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Second approval β€” release 0.3.1.

@scttbnsn scttbnsn merged commit 0baf675 into main Jun 29, 2026
4 checks passed
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.

3 participants