Repository navigation
Conversation
A possible root twin whose read the reader holds complete and that carries none of the five-tuple definition arcs answers the same body to every read, so the twin pass could never settle it and the walk refused the family with member_not_resolvable. Under a confirmed root, _read_root_twins now settles such stubs before spending the twin budget and returns them as MemberGroup.stub_candidates. The walk log shows them as stubs= and the mint trace states them as trace.stub_candidates. Without a confirmed root, with an incomplete read, or with any definition arc present, the refusal stays.
…nes in coverage_below_scope (#120) A group mint named every member the facet election did not count as "No observations were served for dcid:...", whether the member reported the requested years at another frequency, which the figures leave out, or held nothing in the window. `_plan_group_members` now splits the two, and the warning carries them as `off_cadence_members` and `out_of_window_members` (`{count, refs}`) beside `member_count`. The out-of-window case is dropped when the served provenance declares absent members as zero. The stored message states counts only; the presentation store labels the refs in its existing label read and the card names them within its length limit.
A node holding several `name` values was labelled by position, and two
surfaces picked different positions: the node door took the first name that
differs from the dcid ("United States"), the frame store the last one
("United States of America"). The graph returns names in the order they were
stored, so either pick depended on how the graph was imported.
`dc_graph.display_name` takes the greatest name by code point, which matches
the label the dev mixer records on every recorded multi-name node, and
`label_or_self_name` also accepts a dcid when that is a node's only name.
Every site that turns names into a label calls one of them, Search's
open-axis value labels included, and `alternateName` never becomes a label.
…e-word-requirement fix(search): refuse an answer that drops a measure the question names
… a 202 done (#123) * fix(search): judge a sole value claimed from a sample against the walked family _validate_sole_option_bindings knew whether a sole-value claim rested on the whole family or on a recall sample, and dropped that knowledge, so the member walk read the family filtered by a claim it never tested. A one-member sample asserting gender=Female answered the female series where the question asked for the total. A claim from an incomplete population now carries sampled=True (excluded from every dump and schema). The walk reads sampled slots open, and _judge_sampled_claims confirms each claim on the walked members or refutes it and unbinds the slot. An unsettled walk leaves the claim standing under membership_unverified. No extra member read. Refs #101 (cherry picked from commit 8214f72fdad8df9065b5c624c9a2fcb95800d401) * test(eval): expect the DFO GNI series for a plain GNI question dq-dac-016 "GNI of Denmark" expected the World Bank family base.gni, but the DFO series dev answers with carries the World Bank indicator NY.GNP.MKTP.CD, and DAC1 is its only provenance for Denmark. Pin the dac1.gni family to that series, point the case at it, and drop the known failure, whose issue number did not exist. (cherry picked from commit f98b2b8994c8d38de2f3dc5cd2251c36f5441e8b) * fix(datasets): reset every done operation a submission finds A submission reaches the operation store only when the subject's head could not answer it, yet create_or_get returned a done row at another version unchanged. Two renderings of one over-budget subject make that deterministic: a csv mint after an xlsx rebuild answered 202 done, and its poll served the old version. A client following the contract also raises on a 202 done, which carries no manifest. create_or_get now resets every done row to pending and enqueues it again, and the run serves what the head rule gives at run time. This removes the rejected-version plumbing through submit_over_budget, current and spec_id, and the refresh door's done branch, two-pass loop and RefreshRebuildUnservable. C187, the datasets README and datasets-sync-ceiling state the rule. (cherry picked from commit 37b2e6ff660ebcf0c6485acd4634988daa1ff35c) * fix(datasets): serve the head when a full backlog refuses its submission A submission that found its operation just completed reset it and went through backlog admission again, so with a full backlog it answered 503 although the head already served the result. serve_mint and the definition door's _materialise_and_record now catch OperationBacklogFull, read and judge the head once more under their own head rule, and answer from it when it serves; otherwise the refusal stands. Admission itself is unchanged, and the recheck costs one head read on the 503 path only. (cherry picked from commit 877a2ea20558a79c12b004eb08c4e96bd1082d52) * fix(search): keep a place's own name when another shares its words 0b5ea77 renamed an entity to the span the user wrote whenever the span's ambiguity settled it. For "aid from Congo to Congo" both ends became "Congo", and since the parsed door reads one text as one place per part, every option pinned both ends to the same country. _recover_entity_surfaces now renames a name to its span only when no other name in the part would carry the same text, so the two ends keep the extractor's names and independent choices, while "ODA disbursements from Germany to Congo" still reads "Congo". (cherry picked from commit 5d42bbd6ba3bf4f0b159abebf331554d141bce4b) * fix(datasets): pace only a failed operation at the floor, and state the backlog recheck * test(live-refresh): give the composed worker the head store the deployed worker has * fix(search): bind the value an unexported family is told apart by over a sampled claim bind_shared_values binds the value an unexported family shares on a property the exported rows also carry, since that value is what tells the family apart (IDS debt service: financialFlowType=ServicingPayment on a five-tuple the index shares with CRS). _unexported_shared_values counted a sampled claim as already bound and skipped the slot, so only the sample backed the claim; the walk then read the slot open, listed interest payments too, and refuted it, and "total debt service of Kenya" served both flows unbound (eval dq-ids-001, 002, 014, 020, 035). A sampled claim now leaves the slot open to the rule, and a claim of the shared value is kept with its flag cleared. * build: pin spec-kit 0d19172, which reads proxy refusals as problem documents
…int writes them (#128) WarningModel gains optional `unserved_entities` and `omitted_entities` (`{count, refs}`) and `omitted_entity_years` (`{count, entities: [{ref, years}]}`), and #120's member model is renamed CountedRefsModel with the same stored keys. Stored bodies are extra="forbid", so this reader deploys before the writer that emits the fields. Nothing writes them yet.
…they named (#129) coverage_below_scope's unserved-entity list, currency_unmapped_omitted and deflator_missing_omitted named raw refs in their stored messages, which no later code change could relabel. Their messages now give counts only, and the warning carries the refs as `unserved_entities`, `omitted_entities` and `omitted_entity_years`: five unserved entities, and the ten entities the conversion messages used to name, each deflator entity with its omitted years. Cards label the refs in the frame store's existing label batch, and Search's two omission warnings carry the entities, their labels and the deflator years in `params`. Structural tests tie every counted field to a writer and a card row, and pin that no stored message names its refs.
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.
Promotes #114, #120, #123, #124, #125 and #128 to prod.
Prod serves #121's reader for the new warning fields on every instance (
dfo-prod-apisanddfo-prod-datasets-workerate6f32a6e), so #120's writer can follow. #120 makes a group mint'scoverage_below_scopewarning tell off-cadence members from empty ones, withmember_count,off_cadence_membersandout_of_window_members. #114 settlesCount_Personstub twins under a confirmed root, so population mints no longer end inmember_not_resolvable. #123 checks a sole slot value claimed from a recall sample against the walked family, so a one-member sample no longer narrows a total to one gender, and resets everydoneoperation a submission finds, so no 202 answersdone. #128 adds the reader half of the next warning change: three optionalWarningModelfields (unserved_entities,omitted_entities,omitted_entity_years) that its writer, #129, will emit. #129 is not on dev, so this release must reach prod before the release that carries it. #124 gives every graph node one display name on the node door and in presentation frames. #125 makes search refuse an answer that drops a measure the question names, such as "mobilised" foramountMobilised, whatever the stated-word rating.The deploy runs no migration.
Testing: CI and the eval gate passed on each PR into dev, and dev serves
2a7a490c. The production deploy waits for approval. Not applied.