Repository navigation
fix(queryexec): the missing-feature fan-out keeps every element lacking the feature; the ambiguousName finding names the owning namespace - #1586
Merged
Conversation
…ng the feature in the record, naming the others in the message Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
NicolasRouquette
marked this pull request as ready for review
October 27, 2026 16:22
…the duplicates, as the QVTS reference semantics do Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…lved candidates, one finding per owning namespace Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…ng the duplicate names, aliases where they are declared Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…finding; only the targets are deduplicated Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
NicolasRouquette
approved these changes
Oct 27, 2026
…the re-recorded baseline The baseline moved with the re-pinned libraries and the tolerate examples (3fed3b3) but the record's scorecard headline and launch-ready gap rows were left at the earlier totals, failing TestRecordStatesTheBaselinesFigures in the rest shard. Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…kdown from the re-recorded baseline Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…rent rows from the re-recorded baseline Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
HuiJun
approved these changes
Oct 27, 2026
HuiJun
enabled auto-merge
October 27, 2026 17:51
…rrent baseline Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
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.
What and why
Two alignments of the native QVTS record with the reference semantics in Open-MBEE/qvts, both surfaced by its three-way differential (
make native, Open-MBEE/qvts#7; Lean vs SPARQL image vs native), plus a record-figures fix the full tier exposed:Project/WhereFeatureon a feature that several element rows lack reported only the first such element: the loop kept onemissing-featureerror per column and dropped the rest (MassTable/FanOutwerepathError@Feature(mass)×2in Lean and the image,×1natively). Now every element lacking the feature yields its failure andjoinMissingfolds them into one error: the record carries oneFailure{Feature(<name>), expected, frontier at <element> with its features}per element, the message names the first element and counts the others —… its features are mas, volume (also absent on Observatory::root::c)— via the newError.Also.tolerate = trueis unchanged.ambiguousNamefinding names the namespace declaring the duplicates.Namedon a name declared twice put the duplicated name inFinding.Element; the reference semantics (lean/QVTS/Ops.lean,Model.named) name the namespace that owns two members of one name — it, not the name, violates the constraint.denotednow keeps every registration the name matched (a declaration or an alias) with the element it denotes;elementsOfdeduplicates the targets forNamed's resolution andError.Candidates;ambiguousElementemits one finding per namespace declaring a matched registration (an alias counts where it is declared, not where its target is), each listing every element denoted there. SoNamed("Duplicates::a")→Observatory::Duplicates; an unqualifiedNamed("a")matching two namespaces → one finding each; twoPickaliases inChoices→Observatory::Choices = Targets::t1, Targets::t2, even when another namespace aliases the same target.docs/project/api-json-differential-baseline.json(re-pinned libraries, the examples that now saytolerate) but leftdocs/project/api-json-differential.md's scorecard headline and launch-ready gap rows at the earlier totals, soTestRecordStatesTheBaselinesFiguresfails in therestshard ondeveloptoo. The 23 figures are rewritten from the baseline;go run -C tools ./cmd/doc-counts -checkis "already current".Specification basis
Not a SysML v2 clause: QVTS-Core fan-out and finding semantics (
docs/qvts-core.md§3,lean/QVTS/Outcome.leanfanOut,lean/QVTS/Ops.leanModel.named). No row ofdocs/project/spec-compliance.mdmoves.How it was verified
internal/doc/queryexec/missing_feature_test.go: the fixture gains a third partclackingmass;Masses/HeavyOnesassert two failures (root::bwithmas, volume,root::cwithvolume) and the(also absent on …)message;ToleratedMasseskeeps three rows with two empty cells.internal/doc/queryexec/outcome_test.go:Duplicates(owner from the candidates),Partial(Named("Duplicates::a")),Spread(unqualified name over two namespaces),Aliased(two aliases in one namespace to distinct targets),Shared(A aliases t1; B aliases t1 and t2 — B's finding lists both).go test -C tools ./referee/apijsonpasses;go run -C tools ./cmd/doc-counts -check.go test ./internal/doc/queryexec/ ./internal/frontend/repl/ ./internal/frontend/grpc/ ./cmd/sysml/ ./examples/pass;go vet,staticcheck,gofmtclean;make changelog-check.Checklist
make testandmake lintpass locally (packages touched; full tier in CI)docs/internals/design/query-outcomes.md)changes/unreleased/query-fanout-failures.fixed.mdLink to Devin session: https://nasa-jpl-demo.devinenterprise.com/sessions/18ad47adf36f44e9b6824a4472f9678d
Open in Devin Desktop: https://nasa-jpl-demo.devinenterprise.com/desktop/session/18ad47adf36f44e9b6824a4472f9678d?variant=devin
Requested by: @NicolasRouquette