You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
The shortlist tie-break was acting as a recency filter inside large equal-score bands. The
ordered cut handed to the reranker keyed on score DESC, origin_count DESC, date DESC, and in a
real pool the first two tiers tie across dozens of papers — so date decided, and the cap dropped
central papers for being older than their band. On the recorded topic-2 acceptance run a paper
screened 3 sat at rank 90 of a 289-strong in-window population and never reached the reranker; on
the golden-topic run the cut fell inside the score-3 band and lost two. Latent since v0.4 and
present on both eras of artefact — the evidence is in docs/measurements.md, 552f09c462dce07a7c20fa3f30e85c3264f42346:research/experiments/phase12-selection/results/report_tail.md
§4, and the audit record in #1. Fixed in 1fd1465f413c21104d7af3710ed219ce595ca49a, with the replay that proves it in 1fd1465f413c21104d7af3710ed219ce595ca49a:research/experiments/phase12-selection/results/src-t1-replay.json.
Pooled golden survival into the rerank frontier at the shipped cap goes from 8/11 to 10/11,
which is the finite maximum, with no cap change and no new weights.
Added
A runtime deployment fingerprint: the server logs it at startup and /health reports it, so
a running deployment can be matched to the commit it was built from. RELEASING.md gained the
post-release step that exercises it — restart, then verify the fingerprint against the release
SHA — and a release receipt.
An experimental reference cognition driver in drivers/stateless/, repo-only. It screens a
run's batches through stateless provider calls behind a reconciling CID contract, and every run
writes a machine-readable engine provenance record. It is not part of the installed package:
it lives outside src/, is excluded from the sdist, was never in the wheel, carries its own
pinned dependency contract, and the package's own dependency list is unchanged. It informs the
provider-neutral engine protocol that has not shipped
(#4); promotion to a documented
path requires
end-to-end golden non-inferiority against a fresh multi-replicate conversational control, and
cost is not a promotion criterion.
Changed
Shortlist ordering is now a total order: score DESC, criteria_supported DESC, origin_count DESC, best_retrieval_rank ASC, date DESC, cid ASC. criteria_supported counts the
distinct sub-criteria screening attributed to a paper (restricted to the ids queries.json
defines, when the run has that file); best_retrieval_rank is the best position any source gave
it. Both are evidence the pipeline already produced. The final cid tier removes the last
dependence on candidates.json order — on the six frozen inputs it moves four rows, all inside
fully tied bands, with membership at the shipped caps unchanged. No other selection semantics
change: same caps, same threshold, same two windows, same slot rules at emit.
The fields that order reads now have domains narrow enough to trust.score and Origin.rank are strict integers: Pydantic's lax coercion turned true into 1 and "3" into 3, so a malformed screen.json bought a place in the order instead of exiting 2. A run whose
artefacts carry a score or a rank as a string or a boolean now fails at the stage that reads it,
with the field named. rank keeps its ≥ 0 floor — ranks are zero-based, and the top hit is
rank 0. publication_date is unchanged at the schema, where partial dates are legitimate
metadata, but the date tier resolves through a calendar check, so "2024-13-01" sorts with the
unknowns instead of outranking "2025-01-01" as a raw string. And shortlist.build refuses a
screen file that scores one cid twice, which both shipped call paths already refused upstream.