Skip to content

chore(schemas): align score schema with Eclipse S-CORE comparison#320

Merged
avrabe merged 3 commits into
mainfrom
chore/score-schema-eclipse-comparison-update
May 24, 2026
Merged

chore(schemas): align score schema with Eclipse S-CORE comparison#320
avrabe merged 3 commits into
mainfrom
chore/score-schema-eclipse-comparison-update

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 24, 2026

Summary

Carries forward an out-of-band update from an Eclipse S-CORE comparison
agent that aligned `schemas/score.yaml` with the upstream Eclipse
S-CORE metamodel (+453 lines, -14 lines — widens artifact-type
vocabulary and field set).

Also adds `examples/score-conversion/` — a worked sketch
converting the Eclipse S-CORE `persistency::kvs` slice into rivet's
generic-YAML against the updated schema. The README captures the
end-to-end conversion shape and the residual schema deltas flagged for
follow-up. It's its own rivet project (own `rivet.yaml`) so it does
not interact with the main repo's validation.

Test plan

  • `rivet validate` on the rivet project PASSes with no new
    errors after the schema update (144 warnings unchanged from
    baseline).
  • CI green.

🤖 Generated with Claude Code

Update `schemas/score.yaml` to reflect the upstream Eclipse S-CORE
metamodel as surfaced by an Eclipse-S-CORE comparison agent. +453
insertions, -14 deletions; widens the artifact-type vocabulary and
field set so a real conversion from S-CORE's sphinx-needs RST sources
round-trips through rivet validation against the right shape.

Also adds `examples/score-conversion/` — a worked sketch converting
the Eclipse S-CORE persistency::kvs slice into rivet's generic-YAML
against the updated schema. README captures (a) what the conversion
looks like end-to-end and (b) the residual schema deltas the agent
flagged for follow-up work. The example is its own rivet project
(own `rivet.yaml`), so it has no effect on the rivet repo's own
validation.

Verified: `rivet validate` on the rivet project PASSes with no new
errors after the schema update (144 warnings unchanged from
baseline).
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 24, 2026

📐 Rivet artifact delta

No artifact changes in this PR. Code-only changes (renderer, CLI wiring, tests) don't touch the artifact graph.

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: c3fe631 Previous: 6d72f03 Ratio
link_graph_build/10000 40405137 ns/iter (± 1952795) 31434189 ns/iter (± 1705384) 1.29
validate/10000 21994571 ns/iter (± 1803482) 18173622 ns/iter (± 1432049) 1.21
query/10000 144092 ns/iter (± 875) 115094 ns/iter (± 1200) 1.25

This comment was automatically generated by workflow using github-action-benchmark.

… corpus

Round-2 schema deltas surfaced by validating against the *complete*
eclipse-score corpus (4 upstream repos: score, process_description,
persistency, docs-as-code = 757 RST files, 2752 needs converted) rather
than the single hand-picked persistency::kvs slice that drove round 1.

Specific changes (all in schemas/score.yaml; +80/-31 lines):

  Required-field relaxations (eclipse leaves these empty in real data):
   - fmea-entry.failure-mode: required → optional. Eclipse encodes the
     failure description via :failure_id: + :failure_effect: rather than
     a single :failure_mode: option, so requiring it as a schema field
     produced ~25 false-positive errors on real FMEAs.
   - dfa-entry.analysis:      required → optional. Eclipse DFAs carry
     the narrative in the body, not in a dedicated field.
   - decision-record.rationale: required → optional. Many eclipse
     dec_rec entries put the rationale in the body or split it across
     :context:/:decision: rather than calling it out explicitly.

  Required-link relaxations (downgrade to lifecycle-warning):
   - feat-req.satisfies → stkh-req: required: true / cardinality:
     one-or-many → cardinality: zero-or-many.
   - comp-req.satisfies → feat-req: same.
   - comp.realizes → feat:          same.
   - mod.belongs-to → comp:         same.
     The traceability-rules feat-req-derives-from-stkh /
     comp-req-derives-from-feat / comp-realizes-feat / mod-belongs-to-comp
     keep flagging the gap (downgraded from severity:error to
     severity:warning) so the chain is still visible, just not blocking.

  Link target-type widenings (eclipse's real link graph is wider):
   - uses link-type + comp.uses + mod.uses link-fields: now include
     logic-arc-int / real-arc-int / tsf as legitimate target types.
     Eclipse component artifacts `:uses:` logical and real interfaces,
     not just other components.
   - violates link-type + fmea-entry.violates link-field: target-types
     widened from [comp-req, feat-req] to also include feat, comp, and
     the eight arch-refinement types (feat-arc-sta/dyn, comp-arc-sta/dyn,
     logic-arc-int, real-arc-int). Eclipse safety analyses `:violates:`
     architecture elements (whose property the failure breaks), not just
     requirements.
   - tool-req.satisfies: target-types widened to include guidance —
     eclipse tool requirements often `:satisfies:` a gd_req directly.
   - workproduct.complies: target-types widened to also include std-req
     (eclipse ASPICE work products frequently reference standard-req
     clauses directly, not just std-wp).

Falsification result that drove these deltas: the corpus oracle dropped
from 1476 errors → 0 errors / 2289 warnings across 2752 artifacts. The
remaining warnings are all about lifecycle gaps in eclipse's own
artifact set (missing test-spec / dd-dyn links), not schema issues.

The fork workspace and converter that drove this discovery live at
/Users/r/git/pulseengine/eclipse-score-fork/ (intentionally outside the
rivet repo) and are governed by their own README. Per pulseengine
methodology, the corpus oracle is the falsification gate — a delta
landed here means the gate stayed green on a 2752-artifact slice of
real ASIL-rated safety work.

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

codecov Bot commented May 24, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…chema)

The Eclipse-S-CORE-comparison score schema (this branch) carries
`ISO 26262-6:7.4.3.2` in the `external-clause` artifact-type
description — a stable standard-clause identifier the
EmbeddedVersionLiterals invariant catches as a 3-part version. Same
pattern the existing allowlist uses for ASPICE process IDs
(`2.1.7`, `2.2.4`).
@avrabe avrabe merged commit 75ce3fa into main May 24, 2026
20 of 38 checks passed
@avrabe avrabe deleted the chore/score-schema-eclipse-comparison-update branch May 24, 2026 10:03
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