Repository navigation
Conversation
…ds done after dispatch (#127) * fix(search): let every pre-walk rule read a sampled claim as open A sole value claimed from a recall sample is provisional until the walk judges it, but the rules that run before the walk read it as an ordinary bound value. A claim blocked the declared or shape-slot default, the walk then refuted it, and the slot ended unbound: birth rate with only the live-birth series recalled answered total births. Each pre-walk span in _settle_bindings, _vet_election and _repair_bindings now runs its rules on without_sampled_claims and puts the claims back (with_sampled_claims) only on slots the rules left plain unbound, so a binding a rule writes replaces the claim and is authoritative. Readers that _unbind_refuted_claims re-runs after a refutation keep reading the claim. This replaces the special case b70236e added to bind_shared_values. * fix(datasets): build a submission's 202 from the row it recorded A worker that finished during enqueue left the row done before mark_dispatched returned it, and submit_over_budget put that state in the 202, which then read done with no manifest. The 202 now comes from the row create_or_get recorded, which is never done; dispatch_if_due runs for its side effect only. A completion during dispatch leaves the 202 pending, and the client's first poll serves the manifest. * fix: decide a reset again when its write matches nothing, and judge whole totals without sampled claims LiveOperationStore.create_or_get ran its reset UPDATE and final SELECT as separate statements, so under READ COMMITTED a claim and completion landing between them returned a done row. The INSERT and the reset UPDATE now RETURN the row they write; a write that matches nothing decides again under the same advisory lock, up to three passes, then raises DatasetsStoreUnavailable. holds_whole_total and the breakdown decision read sampled claims as bound and are not re-run after a refutation. _bind_query_places, _settle_direction and _walk_assignment now judge a whole total on without_sampled_claims, and _narrow_to_breakdown runs before the claims are restored. _settle_bindings assigns its bindings once, after the restore.
#132) Every pass after the bind reads a slot only through its draft, so a slot the binder's reply left out was never read as open: declared defaults skipped it and no sole value was claimed. "German aid to Kenya" bound no aid type where "aid from Germany to Kenya" got DAC2aAidType206. _settle_bindings now drafts every omitted slot of the elected shape unbound first (_with_every_slot_drafted). Drafting every slot turns on sole-value claims the tests had never reached, and four places needed the claim judged on the right rows: - _validate_sole_option_bindings and its sibling readers read identity_member_facts, the family the identity denotes: the named dataset's rows for a named part, every dataset's rows for an unnamed one, so an exclusion no longer mints a different identity. - _sample_forces states its three readings and refutes a sibling across a split (_splits_without_value) for answers the walk cannot judge. - _bound_code_records, _stand_in_members and the no-data relaxation in grounding._suggest_nearest_real skip values the request never named (bind.sole_option_properties), so a sole value neither names a refusal, nor strikes out a sibling, nor is relaxed and re-probed. 70 expectations move: declared defaults (CRS education 434 to 257 members, DAC1AidType1010), sole values the walked family confirms, 15 place-scenario snapshots, and 18 Jev goldens regenerated through SEARCH_UPDATE_JEV_GOLDEN, where only expected.bind.bindings changed (20 sole_option values and 11 unbound drafts; stored answers untouched). ent-demonym-german-aid loses its known failure. Closes #99 Closes #101
…mat (#133) `python -m dataset_store.warning_formats` counts, in a read-only transaction, each stored warning format that migration 0039 rewrites, and checks each stored `member_count` against its trace's `resolved_stat_vars`. It runs as an execution of the datasets migration job with its args overridden, so the counts are read before the deploy that applies 0039.
…on a wall-clock budget (#134) `test_deadline_cancelled_probe_preserves_primary_completion` gave the whole request a 1 s budget and relied on the fake fan-out finishing first. On a stalled CI runner the primary leg itself missed the budget (1014 ms and 1068 ms), so `done.timed_out` was true. The test now wraps `raw_text._stream_slot_options` to run with an expired deadline. That call starts only after the response event, so the primary runs under the default request budget on any runner. The probe blocks on a `threading.Event` the test releases, so no worker thread outlives it.
This branch was successfully deployed
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.
Releases
devatd340e158bto production: #127, #132, #133 and #134. Dev servesc9a1b9059(#133); #134 changes one test only.#127 makes a sole value claimed from a recall sample yield to every rule that runs before the member walk, so a declared or shape-slot default is no longer blocked by a claim the walk then refutes, and it makes a 202 never read
doneafter dispatch (datasets_api/operation_store.pyretriescreate_or_getunder the advisory lock). #132 drafts every constraint slot the binder's reply leaves out as an open slot, so "German aid to Kenya" and "aid from Germany to Kenya" bind the same aid type. #133 addspython -m dataset_store.warning_formats, a read-only count of stored warnings that name refs, by old format; it runs as an execution ofdfo-prod-datasets-migrateand is the precondition for migration 0039 in #135. #134 drives the enrichment deadline intest_deadline_cancelled_probe_preserves_primary_completionitself.The deploy runs no migration and reads no new setting.
pyproject.toml,uv.lock, theDockerfileand the workflows are unchanged, so the spec-kit pin stays at0d19172. Nosearch/modelsfile changes, so the search wire shape the website mirrors is the same.Testing: CI and the eval gate passed on each PR into dev; CI and Eval nightly passed on
d340e158b. The nightly Full grids job fails ondevon the I9 pinned-resubmit invariant, as it has on each of its last 30 runs. The production deploy waits for approval.