Repository navigation
feat(triage): give up on leads that stay unjudgeable (#402) - #410
Merged
Merged
Conversation
MrReasonable <4990954+MrReasonable@users.noreply.github.com>
MrReasonable <4990954+MrReasonable@users.noreply.github.com>
New opt-in `triage.unjudgeable_give_up_after` (0, the default, is off). Each landed `unjudgeable` result, from the pre-judge gate or the judge, adds one to the lead's `triage_unjudgeable_count` in the same compare-and-set write as the status; any other landed classification or verdict clears it. A landed judge `unjudgeable` also drops the lead's cached page (new `DossierCache.forget`), so every later count is a fresh fetch. Results decided on the note's own pasted job description never count. A lead at `unjudgeable` whose count reaches the threshold is still classified (free, so a reject rule can still dismiss it) but is no longer sent to company resolution, fetched or judged, does not use up `--limit`, and is counted under a new `given_up` digest row that says how to retry: delete the key, or paste the posting under `## Job description`. MrReasonable <4990954+MrReasonable@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Triage re-fetched and re-judged every
unjudgeablelead on every run with no end, paying a judge call per lead per night for a page that was never a posting (#402). This adds an opt-in give-up threshold.triage.unjudgeable_give_up_after(int, default0= off). At0nothing is counted, evicted or skipped. It ships commented insluice.yaml.example. The validator refuses YAML bools, floats and quoted numbers.triage_unjudgeable_counton the lead, written in the same compare-and-setupdate_fieldscall as the status. It only lands where anunjudgeablewrite may land (new/unjudgeable). It always carries arequire_unchanged, so a count a person types or resets mid-judge is never overwritten. When only the counter's guard refuses,_write_countedretries without it, so the verdict still lands. Any other landed classification or verdict clears it. A result decided on the note's own pasted job description never counts.unjudgeabledrops that lead's cached page (DossierCache.forget).get_or_buildtreats an entry evicted between its freshness check and its read as a miss.unjudgeablewith a count at or above the threshold, and no pasted job description, is still classified (free), so a reject rule can still dismiss it. It is not sent to company resolution, not fetched and not judged, and does not use up--limit. It is counted under a newgiven_updigest row that says how to retry.Design spec:
docs/superpowers/specs/2026-10-14-unjudgeable-give-up-design.md(three/review-planrounds, ending with no Critical or High findings). Plan:docs/superpowers/plans/2026-10-14-unjudgeable-give-up.md.Owner decisions (delegated to my recommendations)
unjudgeableresults, counted per fetch, not per day.last_seen(bumped by every ingest), a new URL (never rewritten by ingest) and the dossier ttl were rejected.Residuals, stated
unjudgeableleads healed in four weeks.Test plan
python -m pytest: full suite green locally, including withPATH=/usr/bin:/bin.ruff check sluice tests scripts/review-pr: two rounds with five reviewers plus the CodeRabbit CLI. All findings are fixed, including the CLI's never-clobber finding about a count typed into an absent key.Closes #402
Summary by CodeRabbit
New Features
Documentation