Repository navigation
feat(queryexec): Project and WhereFeature tell a feature the element lacks from one that is empty — a missing-feature path error with the QVTS record, tolerate to keep the empty cell - #1577
Merged
Conversation
…rate (745963b) Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…lacks from one that is empty, with tolerate to keep the empty cell Reading a feature of an element row that has none so named was an empty cell, indistinguishable from a feature present and unvalued. It is now a missing-feature error naming the element, the feature and the features the element does have (Error.Target, Property, Candidates), a path error about that element; a property no row carries stays unknown-property. tolerate: Boolean default false on Project and WhereFeature keeps the empty cell for sources that mix element kinds; the cookbook's MassTable and MassBudget use it, as do the fixtures that read a part's feature off a connection. Metadata paths (Tag::key) are unchanged: an annotation is optional by nature, recorded as the remaining item in query-outcomes.md. Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…he test-file line cap Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…— Feature(name) step, the element and its typed features as frontier Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…orded run that carries command in its metadata only 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)".
|
… the self-model's sparse filters tolerate Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…on libraries Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
NicolasRouquette
marked this pull request as ready for review
October 27, 2026 14:41
…the re-pinned libraries and the examples that now say tolerate pilot-diff totals reproduce the committed baseline exactly; the API JSON differential moves only in the examples and manual-examples roots the tolerate arguments touch, and in the pilot's count of library elements. Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
…nt from the record, not the last name of the member reached Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
This was referenced Oct 27, 2026
fix(queryexec): offer the features nearest to the missing segment, not the first three by name
#1581
Merged
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
Reading a feature of an element row that has none so named was an empty cell, indistinguishable from a feature present and unvalued — the
A->B->Cambiguity QVTS set out to remove. Now:Project/WhereFeatureon a property some rows carry and an element row lacks fail withmissing-feature, naming the element, the feature and the features it does have (Error.Target,Property,Candidates; library-inherited features filtered out) and carrying the QVTS record:Feature(<name>)step,expected: a feature named <name> on the element, frontieratthe element with its typedfeaturesand thenearestspelling.unknown-property(a misspelling, not a mixed source).tolerate = trueon either operation keeps the empty cell for sources that mix element kinds; the cookbook'sMassTable/MassBudget, the analysis-results provenance table (a-record-runrun carriescommandin metadata only) and three fixtures reading a part feature off a connection opt in.Tag::key) are unchanged — an annotation is optional by nature — recorded as the remaining row indocs/internals/design/query-outcomes.md.The
tolerate : Boolean[1] default falseparameter lives in the Extensions Library (Open-MBEE/OpenSysML-Extensions-Library#14, merged); this PR re-pins the vendored copy at745963bviascripts/sync-extension-libraries.sh. The default reverses what three in-repo fixtures recorded ("Vehicle's features are absent onspare, not errors"); that is the fail-closed decision of the QVTS design, carried as MAJOR on the library side.Specification basis
Not a SysML v2 clause: QVTS-Core outcome semantics (
Open-MBEE/qvtsdocs/qvts-core.md§6.3,lean/QVTS/Outcome.lean). No row ofdocs/project/spec-compliance.mdmoves.How it was verified
internal/doc/queryexec/missing_feature_test.go:Masses/HeavyOnes→missing-featureatObservatory::root::bwith frontiermas, volume, the record's step/expected/frontier/nearest, the message;ToleratedMasses/ToleratedHeavyOneskeep rows with an empty cell;ToleratedAbsent→unknown-property.derived_test,memberpath_test,objects_test,docrender_test(tolerate),queryplanpositional-surplus test (one more parameter).go test ./internal/doc/queryexec/ ./internal/frontend/repl/ ./internal/frontend/grpc/ ./internal/ir/queryplan/ ./cmd/sysml/ ./tests/hygiene/ ./tests/kpar/ ./tests/migrate/pass;go vet,staticcheck,gofmtclean;scripts/sync-extension-libraries.sh --checkclean at the new pin.Checklist
make testandmake lintpass locally (the packages touched; full tier in CI)docs/manual/query-cookbook.md,docs/internals/design/query-outcomes.md,examples/analysis-results-demo/README.md)changes/unreleased/query-feature-outcomes.changed.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