Skip to content

design: Track E research — migration / design-space oracle (#150)#153

Merged
avrabe merged 1 commit intomainfrom
docs/track-e-migration-research-v2
Apr 25, 2026
Merged

design: Track E research — migration / design-space oracle (#150)#153
avrabe merged 1 commit intomainfrom
docs/track-e-migration-research-v2

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 25, 2026

Summary

Research + design-space exploration document for issue #150 (Track E:
frozen-platform/mobile-application split + hypothetical-rebinding oracle).

  • 10-tool comparison of existing component-placement tooling (OSATE2, Stood,
    Capella, AUTOSAR Classic + Adaptive, SCADE Architect, ROS 2, etc.) with
    GOOD / MISSING analysis for spar.
  • Multi-objective allocation literature survey (NSGA-II, MILP/CP, RL),
    including per-paper applicability scoring.
  • LLM + constraint-solver pattern survey (FunSearch, Lean Copilot,
    Sledgehammer, ConstraintLLM, LLM-as-architect).
  • MCP tool design for read-only verification oracles, with concrete JSON
    Schema for spar.verify_move and spar.enumerate_moves.
  • AUTOSAR Classic + Adaptive contract layer mapped concept-by-concept to
    AADL and spar's hooks.
  • Six-axis design space for spar: property set, HIR cache, CLI surface,
    solver extension, MCP surface, rivet-variant integration.
  • Commit-by-commit roadmap for v0.8.0 (~8 weeks core) and v0.9.0
    (~8.5 weeks LLM/MCP).

Recommendations (TL;DR)

  1. Add property set Spar_Migration::{Frozen, Mobile, Allowed_Targets, Pinned_Reason, Migration_Cost}.
  2. Build hypothetical-binding HIR overlay; prune by Allowed_Targets;
    reuse existing analysis passes — no MILP for v0.8.0.
  3. CLI-first (spar moves verify + spar moves enumerate) ships in v0.8.0.
    MCP surface (LLM-facing) deliberately deferred to v0.9.0.
  4. MCP boundary is read-only by design: verify_move + enumerate_moves
    only. The apply verb is CLI-exclusive. The LLM never crosses into the
    certified path.
  5. Reuse rivet variants v1 (docs: rivet <-> spar variant binding contract v1 (proposed) #144) as the AUTOSAR-EcucPostBuildVariants
    analogue.

Scope

Test plan

  • Document compiles as markdown without errors
  • All cited URLs resolve to live sources
  • Length within 800–1200 line target (841 lines)
  • Reviewer sign-off on certification-boundary argument (§8.2)
  • Reviewer sign-off on v0.8.0 / v0.9.0 cut-line (§7.3)

Closes part of: #150
Depends on: #144 (rivet variants v1)

🤖 Generated with Claude Code

Survey + design-space exploration for issue #150:
- Existing component-placement tooling (10-tool comparison table)
- Multi-objective allocation literature
- LLM + constraint-solver patterns
- MCP tool design for verification oracles
- AUTOSAR's contract layer mapped to spar hooks
- spar's design space across 6 axes
- Roadmap proposal for v0.8.0/0.9.0

No production code. Refines acceptance criteria for #150.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 25, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit dec8a71 into main Apr 25, 2026
14 checks passed
@avrabe avrabe deleted the docs/track-e-migration-research-v2 branch April 25, 2026 08:17
avrabe added a commit that referenced this pull request Apr 25, 2026
…I integration (#154)

Closes the v0.7.0 Track A milestone:

- COMPLIANCE.md "In progress / v0.7.0" expanded into a full narrative
  covering all four Track A commits (foundation #145, hierarchical RTA
  #147, Lean convergence #148, this close-out), the Track B variant-
  contract foundation (#144), v0.7.x infrastructure landings (#141-143,
  #151), and v0.8.0 planning anchors (Track D #149/#152, Track E
  #150/#153).

- Updated header date to 2026-04-25 and crate count from "16 crates,
  1200+ tests" to "17 crates, 1900+ tests" reflecting the test growth
  through Track A and the v0.7.x infrastructure additions.

- New CLI integration test crates/spar-cli/tests/track_a_close_out.rs
  exercises the full parse → instance → analyze pipeline on a model
  using the Spar_Timing::ISR_* property surface plus a sporadic handler
  thread. The unit + fixture tests in spar-analysis cover the algorithm
  at the analysis-crate level; this test guards the property surface
  flowing through the CLI binary end-to-end.

Out-of-scope items explicitly recorded: PIP/PCP blocking deferred to
v0.7.1, multi-processor ISR migration deferred, cache-aware
interference inflation deferred to v1.0+.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 25, 2026
…lpers (Track E commit 1/8)

Foundation for v0.8.0 Track E (frozen-platform / mobile-application
split + hypothetical-rebinding oracle, #150).

Spar_Migration::{Frozen, Mobile, Allowed_Targets, Pinned_Reason}
provide the AADL vocabulary for declaring which items are platform
(immutable for hypothetical rebinding) vs. which are application
(eligible for movement). Per the research in PR #153 §6.1.

Helper functions is_frozen() / is_mobile() expose the boolean state
to downstream analyses without requiring a salsa query yet — the
per-instance cache lands when the hypothetical-binding overlay needs
it (Track E commit 2). Per §6.2's tradeoff analysis: minimal
surface now, expand on demand.

No CLI surface, no MCP, no solver extension in this commit — those
are Track E commits 3-5.

New requirements: REQ-MIGRATION-{001,002,003}.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 25, 2026
…lpers (Track E commit 1/8) (#156)

Foundation for v0.8.0 Track E (frozen-platform / mobile-application
split + hypothetical-rebinding oracle, #150).

Spar_Migration::{Frozen, Mobile, Allowed_Targets, Pinned_Reason}
provide the AADL vocabulary for declaring which items are platform
(immutable for hypothetical rebinding) vs. which are application
(eligible for movement). Per the research in PR #153 §6.1.

Helper functions is_frozen() / is_mobile() expose the boolean state
to downstream analyses without requiring a salsa query yet — the
per-instance cache lands when the hypothetical-binding overlay needs
it (Track E commit 2). Per §6.2's tradeoff analysis: minimal
surface now, expand on demand.

No CLI surface, no MCP, no solver extension in this commit — those
are Track E commits 3-5.

New requirements: REQ-MIGRATION-{001,002,003}.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 25, 2026
* design: Track F — SysML v2 / KerML community engagement strategy

Research-backed strategy doc for community engagement in the OMG
SysML v2 / KerML ecosystem. Synthesizes two parallel research streams:

(a) Audit of spar-sysml2: 7,167 LOC, zero TODOs/stubs, 59+ tests,
8 fully bidirectional concepts including the entire requirements
roundtrip (satisfy/verify/refine/allocate/derive). Production-grade,
not a stub.

(b) Verified community landscape: KerML 1.0 + SysML v2 1.0 final
adoption Jun 2025; OMG `Systems-Modeling/SysML-v2-AADL-Release`
repo skeletal at 3 commits with named maintainers from Galois, CMU/SEI,
Ellidiss; SMC free for OMG members; OMG fees re-confirmation needed
(page auth-locked); Eclipse SysON via Obeo+CEA on 8-week cadence;
Rust ecosystem positioning (syster-base by Microsoft is adjacent,
not duplicate, since spar is the AADL side).

Action plan: 30/60/90-day sequence anchored on the AADL-Release repo
+ named-maintainer outreach + Google Group + OMG issue tracker.
Investment ladder with explicit Phase 1 ($2,150 Trial / $550 University)
and Phase 2 ($3,000 Influencing Member) trigger criteria.

Application text drafted for the sysml-v2-release Google Group
(long + short versions). Risks + unknowns explicitly flagged
including the auth-locked OMG fee page.

No production code changes. Mirrors the Track D #152 / Track E #153
research-doc-first pattern.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs: amend Track F with deeper syster findings + cooperation policy

Direct GitHub inspection of jade-codes/syster repos surfaced facts the
initial research missed:

- syster-base and syster-lsp have NO LICENSE files (only umbrella +
  syster-codegen + syster-cli are MIT). Default copyright is "all
  rights reserved" — code-level consumption is legally blocked until
  this is clarified.
- Last commits Feb 14-24, 2026 (~2 months stale). Mostly
  repo-restructure + submodule shuffling, not feature work. Momentum
  cooled.
- Architectural breadth is larger than initial Track F captured:
  full ecosystem (parser → codegen → CLI → Python wrapper → LSP →
  VS Code extensions → diagram core + UI).
- syster-codegen (MIT) generates the parser from KEBNF grammar files.
  This is a real architectural asymmetry vs. spar-sysml2's hand-rolled
  parser — auto-conformance to future spec revisions for free. Not a
  v0.8.0 candidate; tracked as v0.9.0+ consideration.

Refines §3 (Rust ecosystem) with license-status column flagging
unlicensed subcrates. Adds §3.1 corrected picture, §3.2 refined
positioning + cooperation policy, §3.3 KEBNF-codegen tracking note,
§4.2 minimum-viable engagement criteria for syster (one
license-clarification issue then stop until it's resolved).

The cooperation policy reflects the user's stated preference: spar's
SysML v2 work is a hobby track for an engineer whose day-job is
already heavy on talking + doing. Cooperation must be a strategic
asset, not a courtesy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 26, 2026
Adds BindingOverlay — a HIR-level immutable map from component idx to
hypothetical target processor idx — that lets any analysis run "as if"
the binding were rebound without mutating the SystemInstance.

The overlay validates against Spar_Migration::Frozen and Allowed_Targets
from commit 1, returning structured FrozenViolation / AllowedTargetsViolation
diagnostics. Empty overlay is the no-op identity (non-regression).

This is the technical foundation for spar moves verify (commit 3) and
spar moves enumerate (commit 4-5). No CLI surface, no solver wiring, no
MCP in this commit.

Per Track E research §6.4 (#153, merged).

New requirement: REQ-MIGRATION-004.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 26, 2026
Adds BindingOverlay — a HIR-level immutable map from component idx to
hypothetical target processor idx — that lets any analysis run "as if"
the binding were rebound without mutating the SystemInstance.

The overlay validates against Spar_Migration::Frozen and Allowed_Targets
from commit 1, returning structured FrozenViolation / AllowedTargetsViolation
diagnostics. Empty overlay is the no-op identity (non-regression).

This is the technical foundation for spar moves verify (commit 3) and
spar moves enumerate (commit 4-5). No CLI surface, no solver wiring, no
MCP in this commit.

Per Track E research §6.4 (#153, merged).

New requirement: REQ-MIGRATION-004.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 26, 2026
Adds BindingOverlay — a HIR-level immutable map from component idx to
hypothetical target processor idx — that lets any analysis run "as if"
the binding were rebound without mutating the SystemInstance.

The overlay validates against Spar_Migration::Frozen and Allowed_Targets
from commit 1, returning structured FrozenViolation / AllowedTargetsViolation
diagnostics. Empty overlay is the no-op identity (non-regression).

This is the technical foundation for spar moves verify (commit 3) and
spar moves enumerate (commit 4-5). No CLI surface, no solver wiring, no
MCP in this commit.

Per Track E research §6.4 (#153, merged).

New requirement: REQ-MIGRATION-004.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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