originelle.eu

A non-commercial project

devAssist: requirements to release,
one traceable chain.

A project exploring how requirements, architecture models, code, documents and test results can live in one workspace — and how a link can notice that it has gone stale. This site documents what has been built and how.

# translate a test tool's report, preview, then commit
$ ./import-results.sh
  312 cases mapped · 4 verdicts unmapped · 0 written
$ ./import-results.sh --import
  ✓ run ingested · 12 links marked suspect

The question behind it

Traceability usually decays in spreadsheets. This project asks what happens if it doesn't.

Stale links

A requirement changes, the test covering it doesn't. Can the system say so, and why?

Separate tools

Requirements, models and results in different places. Can they be linked without copying data?

Manual reports

Coverage and gaps assembled by hand. Can they be computed live instead?

Separate services, one workspace

Each module is its own backend service. A project enables only the ones it needs.

req

Requirements

Structured artifacts with status, versions and review.

arch

Architecture

Canvas-based models with nesting, templates and exchange.

coding

Coding

Git-backed code with versioning and ref browsing, linked to artifacts.

doc

Documents

Versioned documents kept next to the work they describe.

testing

Testing

Test cases, runs and imported results from existing tools.

trace

Traceability

Links, coverage, gap and impact analysis across the rest.

collab

Collaboration

Discussions, notifications and change requests in context.

presets

Domain presets

Starter structures for automotive, aviation, medical, energy and generic projects.

Presets are starting points for structure, not a claim of conformance to any standard.

Links that know when they're wrong

When a link is created, the status, version and content hash of both endpoints are snapshotted. A recompute re-fetches the live artifacts, diffs them against the snapshot and classifies the link.

  • Dashboard of coverage and link health per scope
  • Graph, hierarchy, table and matrix views
  • Gap analysis for anything unlinked
  • Impact analysis for everything that needs review
  • Export and import as xlsx, csv or json

Links, not copies: the trace service owns links and a change log, never artifact data. Artifacts are resolved live from the module that owns them.

validboth ends unchanged since the link was made
suspectstatus, version or content changed; a readable reason is recorded
invalidthe target moved to failed, draft, rejected or obsolete

Built as services, isolated by tenant

frontend (Vue)
     │
     ▼
 api-gateway ──▶ auth · project · req · arch
     │           coding · doc · testing
     │           collab · notification · trace
     ▼
 one database per service
 redis · object storage
  • Gateway only. The UI talks to one API gateway; services stay internal.
  • Tenant + project on every row. Cross-tenant links are forbidden.
  • Owners keep their data. Other services resolve artifacts live.
  • SAML SSO. Identity-provider groups map to platform roles.
  • Roles at two levels. Platform roles plus per-project admin, contributor, reviewer and viewer; guests don't consume a seat.
  • Containerised. The whole stack runs from Docker Compose.

Bring your own test tool

One script turns a tool's report into canonical JSON. The mapping is a config file in your repository — when the tool's output changes, you edit a line instead of waiting for a release.

your report→report2canonical.py→canonical JSON→devAssist

--explain lists what couldn't be mapped — missing identifiers, unknown verdicts — so nothing imports silently wrong. --preview resolves everything and writes nothing. Five worked example configs ship with sample reports.

A project, not a product

originelle.eu is a non-commercial home for devAssist: nothing to buy, no pricing, no sales contact. It is a work in progress, and this page describes the intent and the current code, not a finished release.

Questions, feedback or ideas are welcome: contact@originelle.eu