Skip to content

Release 0.10.0: risk register, logs for the SIEM, steering dashboard - #62

Merged
0b3l1X-SolidGeeks merged 10 commits into
mainfrom
claude/strata-incident-muster-entlk7
Oct 28, 2026
Merged

0b3l1X-SolidGeeks merged 10 commits into
mainfrom
claude/strata-incident-muster-entlk7

Conversation

@0b3l1X-SolidGeeks

Copy link
Copy Markdown
Member

What this changes

Everything tried on the test artifact since 0.9.0, then the version set to 0.10.0. Commit by commit:

  • Risk register (a new Risks view of an IS, and Risks on every asset sheet):

    • Threats per asset: 30 threats, with their MITRE ATT&CK techniques, ENISA families and EBIOS RM risk sources, apply to an asset from its type, exposure, criticality, ports, system, vulnerabilities and role.
    • Risk matrix: each risk sits on a configurable matrix (3×3 to 5×5) before requirements, with those applied, and once the planned ones are applied too. The acceptance threshold is set per criticality, and an asset can have its own.
    • Baselines: for each risk, requirements from ANSSI (42 measures), NIST CSF 2.0, CIS Controls v8.1 or ISO 27001 Annex A are marked applied, planned or not applicable. CIS and ISO come as numbering and paraphrased titles only. Custom baselines import from JSON or CSV.
    • Decision per risk: treat, accept, transfer or avoid.
    • Storage: settings are a new shared document risk (PUT /api/risk, approvers), kept in the history, proposals, export and import. Treatments are saved on the asset (risk), and the IS landscape on the IS (landscape).
  • Overlapping requirements merged (Risks › Baselines, large view). One requirement per group is kept, chosen by a criterion (most demanding, widest coverage, best fit for the map, preferred baseline) or by hand.

  • Logs for the SIEM, per asset and as an onboarding plan for the IS:

    • the sources the asset has (19 kinds) and the events of its threats;
    • the verbosity its residual risk calls for, and how long to keep the logs.
  • The 2D plan of an asset lists the requirements against its risks, by baseline, under its firewall rules.

  • Dashboard and KPIs for a steering committee, measured on the server from the history (GET /api/kpi):

    • exposure;
    • age of open vulnerabilities against remediation deadlines;
    • owner coverage and scan coverage.

    It covers 12 weeks, 6 months or 12 months, prints to PDF and exports as CSV.

  • On the map:

    • a click on a plate shows its VLAN alone;
    • selecting an asset zooms on it and highlights it;
    • a click on an empty space zooms back out.
  • Performance: the 3D model is no longer drawn under a lens or the 2D diagram.

  • Release 0.10.0:

    • package.json, docker-compose.yml, the interface and the docs footers;
    • the dated CHANGELOG section, the README (roadmap, New in v0.10, limits), SECURITY.md (0.10.x supported);
    • the site.

New modules, all pure and tested in Node: public/risk.js, public/baselines.js, public/logs.js, public/kpi.js. The server loads kpi.js to measure.

How to check it

  • npm test: 97 tests pass, including the new tests/risk.test.mjs and tests/kpi.test.mjs, and the API tests for /api/risk and /api/kpi.
  • npm run test:e2e: 3 walk-throughs pass locally. The third covers:
    • the register, requirements applied, and the requirements in the 2D plan;
    • a VLAN shown alone, then left with a click on an empty space;
    • the baselines and their merging, the SIEM logs, and the dashboard.
  • npm run build:online builds the one-page version tested on the artifact.
  • Nix: the lockfile's version changed. If the Nix job asks for a new npmDepsHash, I will push it to this PR.

After merging: Actions › Release › Run workflow on main. It creates the v0.10.0 tag, then waits for a maintainer's approval.

The Solid checklist

  • Tests cover the change and pass in CI (unit, API and browser tests above)
  • Docs are updated (README, CHANGELOG, API reference, site)
  • No secrets, keys or personal data in the diff (the demo uses example.com addresses)
  • Every commit is signed off (git commit -s, see DCO)
  • New files carry the repo's SPDX license header

Generated by Claude Code

claude added 10 commits October 28, 2026 11:26
… from baselines

Each asset gets the threats of a 30-entry catalogue (MITRE ATT&CK, ENISA
Threat Landscape, EBIOS RM risk sources) that fit its type, exposure,
criticality, ports, system and vulnerabilities, and the threat landscape
of its IS. Each risk sits on a configurable matrix (3x3 to 5x5) before
and after the requirements applied from the ANSSI hygiene guide, NIST
CSF 2.0, CIS Controls v8.1, ISO 27001 Annex A or custom baselines, with
a decision per risk. A Risks view shows the register of an IS.

The risk settings are a new shared document kind (PUT /api/risk), kept
in the history, proposals, export and import.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
The matrix keeps one grid for every asset, so risks compare across the
register, but the highest acceptable level can now differ by criticality
(only low on critical assets, by default) and an asset can set its own.
A risk is open when it is above the threshold of its asset and not
accepted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
…merged, logs for the SIEM

- The 2D plan of an asset lists, under its firewall rules, the requirements
  that address its risks, by baseline, with their status.
- The Risks view gets tabs. Baselines: turn baselines on, order them, and
  merge the requirements that overlap between them (same threats, similar
  wording); one per group stands for the others, chosen by a criterion
  (most demanding, widest coverage, best fit for the map, preferred
  baseline) or by hand.
- Logs for the SIEM: per asset, the log sources it has and the events of
  the threats that apply to it, at the verbosity its residual risk calls
  for, with the setting to apply; a SIEM onboarding plan as CSV.
- The 3D model is no longer drawn while a lens covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
A click on a plate, in the 3D model or the 2D diagram, hides the other
VLANs, their assets and the flows to them, and flies to the plate. A bar
names the VLAN; "Show every VLAN", Escape or a second click brings back
the VLANs shown before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
A click where there is nothing (in 3D or in the 2D diagram) brings every
VLAN back, and the view returns to where it was before, zooming out as it
zoomed in. In the 2D diagram, showing a VLAN alone now zooms on its plate
too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
Exposure to the Internet, the age of open vulnerabilities against
remediation deadlines, owner coverage and scan coverage, over 12 weeks,
6 months or 12 months, for the whole map or one IS. The server measures
them on the map as it was at the end of each period, rebuilt from its
history (GET /api/kpi), and dates each vulnerability from the first
version where it appears. A browser-only map keeps a snapshot a day; the
demo comes with a year of past. Prints to PDF, exports as CSV.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
A click on an asset, in 3D or in the 2D diagram, or a search, brings the
view close to it. The asset glows in the accent colour with a breathing
ring under it (a pulsing halo in 2D). Closing its sheet or clicking an
empty space zooms back out to the view from before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
Changelog, version numbers, supported versions, README, documentation and
site: incident mode with Muster, the risk register with baselines, logs
for the SIEM, the steering dashboard, and the map's new navigation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke7yEW5dhDYFVpV2cdgs87
Signed-off-by: Claude <noreply@anthropic.com>
@0b3l1X-SolidGeeks
0b3l1X-SolidGeeks merged commit a9e6f93 into main Oct 28, 2026
11 checks passed
@0b3l1X-SolidGeeks
0b3l1X-SolidGeeks deleted the claude/strata-incident-muster-entlk7 branch October 28, 2026 18:17
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.

2 participants