Skip to content

feat(DocumentQueries): Project and WhereFeature take tolerate, to keep an empty cell where an element lacks the feature - #14

Merged
NicolasRouquette merged 2 commits into
mainfrom
feature/project-wherefeature-tolerate
Oct 27, 2026
Merged

NicolasRouquette merged 2 commits into
mainfrom
feature/project-wherefeature-tolerate

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

OpenSysML is making Project/WhereFeature on a feature an element row lacks a path error that names the element and the features it does have (the QVTS outcome semantics: a feature present and empty is a value; a feature the element has none of is a path error). Sources that mix element kinds — the cookbook's MassTable over parts and connections — need a way to keep today's empty cell, so both operations take an opt-in:

calc def WhereFeature {
    in source : Element[0..*] ordered;
    in 'feature' : String[1];
    in operator : String[1];
    in value : String[1];
+   in tolerate : Boolean[1] default false;
    return result : Element[0..*] ordered;
}
calc def Project {
    in source : Element[0..*] ordered;
    in properties : String[0..*] ordered default null;
    in columns : ColumnSpec[0..*] ordered default null;
+   in tolerate : Boolean[1] default false;
    return result : Element[0..*] ordered;
}

Semver: the parameter is additive, but its default changes the meaning of an existing Project/WhereFeature over rows that lack the feature (empty cell → path error), which the README classifies as MAJOR. The alternative — default true now, flipping in a later MAJOR — is open in the review thread for the maintainers to decide. engine-contract.json is untouched (no new bound name); .meta.json regenerated with scripts/write-project-meta.py.

The matching OpenSysML change (executor, cookbook moved to tolerate = true, design note) is ready on its feature/query-feature-outcomes branch and will re-pin the vendored copy once this merges.

Link 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


Devin Review

…p an empty cell where an element lacks the feature

OpenSysML is making a feature an element row lacks a path error naming the element and the features it does have (QVTS outcome semantics); tolerate = true opts back into the empty cell for sources that mix element kinds. Additive, default false: MINOR.

Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

devin-ai-integration[bot]

This comment was marked as resolved.

…n Project's properties, against a Column path

Co-Authored-By: Nicolas Rouquette <nicolas.f.rouquette@jpl.nasa.gov>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant