Repository navigation
fix(trace): resolve the by feature of a satisfy, and empty collections - #11
Merged
Merged
Conversation
`satisfy massBudget by budget;` showed as an unresolved link ("Unexpected
relationship result: VoidExpressionResult"): SysON v2026.7.0 records the
`by` feature as the value of the relationship's subject parameter and
derives no satisfyingFeature from it. When the derived accessor is
empty, the trace now reads that explicit binding. A satisfy without a
`by` feature stays unresolved; no target is inferred.
Verified on a live SysON: the Drone budget trace goes from 0 to 2 of 3
requirements covered, and the Batmobile specification is satisfied by
batmobileDesignV23.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SysON answers an empty AQL collection with a result object that has no
__typename (a StringsExpressionResult the GraphQL query does not select), so
evalAql returns {}. The requirements trace reported it as "Unexpected result
type: undefined" for a root without requirements, and as "Could not resolve
satisfy relationships: Unexpected relationship result: undefined" for every
requirement when nothing satisfies them.
An undefined result type is now an empty collection in both places; other
unexpected result types (String, Int, Boolean...) still fail, and
VoidExpressionResult keeps its allowAbsent behaviour.
Tests cover both empty shapes, assert the exact AQL sequence so the `by`
fallback is not queried when satisfyingFeature is non-empty, and pin the
top-level error of a satisfy without a `by` feature.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… path `satisfy cellLife by rover.pack.cell;` makes the subject's referent an anonymous Feature carrying FeatureChaining, so the trace reported that nameless node as the satisfying target. The chain's `chainingFeature` list now gives the target: its last feature (a real, navigable element) labelled with the whole path (`rover.pack.cell`), so two `cell`s in different packs stay distinct. Verified on a live SysON: `by rover.pack.cell` and `by rover.pack` resolve to the `cell` and `pack` part usages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…feature # Conflicts: # CHANGELOG.md
Merged
2 tasks done
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.
Summary
The
byfeature of a satisfy is resolved.satisfy massBudget by budget;came back as an unresolved link ("Unexpected relationship result: VoidExpressionResult").SatisfyRequirementUsageImplderivessatisfyingFeaturefrom a subsetting or a binding connector, never from theFeatureValuethat the textual import writes.subjectParameter→FeatureValue→FeatureReferenceExpression.referent.byfeature stays unresolved, with no inferred target.Feature chains.
by rover.pack.cell, the referent is an anonymousFeaturecarryingFeatureChaining.rover.pack.cell).cells in different packs stay distinct.An empty collection is no longer an error. SysON answers an empty AQL collection with no result type (a
StringsExpressionResultthe GraphQL query does not select). Two cases reported errors before:Both are now zero objects. Other unexpected result types still fail.
Test plan
byfallback;by;Feature);satisfyingFeaturepins the exact AQL sequence: the fallback is not queried when the derived accessor answers.deno task fmt,lint,check,test(281 passed).massBudgetandthrustMarginbybudget);cellLifebyrover.pack.cell→ thecellpart usage,packLifebyrover.pack→pack;batmobileSpecificationbybatmobileDesignV23;bystays unresolved, with "Satisfaction relationship has no explicit satisfying feature";🤖 Generated with Claude Code