Skip to content

Evaluation follow-ups #2: SoA evidence linkage, whiteboard field-merge, screen splits - #25

Merged
nicpozent merged 3 commits into
mainfrom
claude/code-examination-qx719b
Jul 13, 2026
Merged

Evaluation follow-ups #2: SoA evidence linkage, whiteboard field-merge, screen splits#25
nicpozent merged 3 commits into
mainfrom
claude/code-examination-qx719b

Conversation

@nicpozent

Copy link
Copy Markdown
Owner

Addresses the three remaining gap-items from the evaluation.

1 — SoA automated per-control evidence linkage (was: "per-control automated evidence linkage… remain")

The ~20 ISO 27001 Annex A controls the Atlas platform satisfies by construction now carry a standing evidence note mapped to the concrete mechanism — RBAC → A.5.15/A.5.18/A.8.3, append-only audit log → A.8.15, backups → A.8.13, OpenTelemetry → A.8.16, CI SAST/SCA/DAST → A.8.8/A.8.25/A.8.28/A.8.29, secret redaction → A.8.11, TLS/CSP → A.8.20/A.8.24, Entra SSO → A.5.16/A.5.17/A.8.5 — so a SoA review starts from what the product provides, not a blank sheet. New autoEvidenced coverage KPI + a per-row chip. (SoAs for other frameworks generalise on the same row model — a data-addition, noted as a follow-up in ADR-0066.)

2 — Whiteboard field-level merge (the CRDT/OT question)

Evaluated a full CRDT/OT upgrade and declined it as disproportionate (heavy dep, would replace the typed rows with an opaque CRDT doc + binary protocol, for a sub-RTT same-field race that already self-heals). Implemented the proportionate step: field-level merge. Co-editing node ops now send only the changed properties (WbNodePatch); the server merges per field, so two people editing different aspects of one node (A moves, B recolours) both survive. Only same-field edits stay LWW. Backward compatible; create still sends a full node.

3 — Split the two largest screens (was: "Project.tsx / Admin.tsx remain large-component candidates")

ADR-0041 decomposition continued: Project.tsx 1617 → 1361 (Governance tab → project/Governance.tsx) and Admin.tsx 1177 → 897 (data-governance sections → admin/DataGovernance.tsx; shared styles → admin/styles.ts). Pure moves, no behaviour change.

Verification

  • API 444 xUnit (incl. field-merge + evidence tests) · web 111 vitest · 8 Playwright axe specs · lint + build clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7


Generated by Claude Code

claude added 3 commits July 13, 2026 22:00
The SoA previously started every control blank. Now the ~20 ISO 27001
Annex A controls that the Atlas platform satisfies by construction carry
a standing evidence note mapped to the concrete mechanism — RBAC →
A.5.15/A.5.18/A.8.3, append-only audit log → A.8.15, backups → A.8.13,
OpenTelemetry → A.8.16, CI SAST/SCA/DAST → A.8.8/A.8.25/A.8.28/A.8.29,
secret redaction → A.8.11, TLS/CSP → A.8.20/A.8.24, Entra SSO →
A.5.16/A.5.17/A.8.5 — so a review starts from what the product provides.

- server/Soa.cs: PlatformEvidence map; GET attaches per-control
  autoEvidence + an autoEvidenced coverage count; PUT echoes it.
- web: a "Platform-evidenced" KPI + a per-row evidence chip.
- tests: assert the evidence surfaces (>=15), a known control (A.8.15 →
  audit log) carries it, and a control with no platform mechanism
  (A.7.1) does not.
- ADR-0066 updated (this was previously listed as a gap there).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7
Evaluated a full CRDT/OT upgrade and declined it as disproportionate for
a bounded brainstorming canvas (heavy dep, would replace the typed rows
with an opaque CRDT doc + binary protocol, for a sub-RTT same-field race
that already self-heals). Implemented the proportionate step instead:
field-level merge.

- Co-editing node ops now send only the changed properties (WbNodePatch):
  a move sends geometry, a recolour sends the colour, a text edit sends
  the text. The server merges per field onto the existing row, so two
  people editing different aspects of one node (A moves, B recolours)
  both survive — no cross-field last-write-wins clobber. Create still
  sends a full node; only same-field edits remain LWW.
- server/Whiteboards.cs: WbNodePatch + merge-on-existing node upsert
  (backward compatible — a full-node body still creates/replaces).
- web: patchNode() for move/resize/recolour/text/keyboard-nudge.
- tests: color-only then move-only patches both persist and don't revert
  each other or the untouched size (444 API, 111 web green).
- ADR-0064 updated (convergence addendum + consequence).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7
…ce out of Admin.tsx

Continues the ADR-0041 large-screen decomposition to the two biggest
remaining screens.

- Project.tsx (1617 → 1361): the Governance tab (stage-gate rail,
  review checkpoints, decision log + its modals) moves to
  project/Governance.tsx; Project.tsx imports it.
- Admin.tsx (1177 → 897): the data-governance sections (database-
  password rotation, GDPR data-subject rights + retention, Backups &
  restore) move to admin/DataGovernance.tsx; the shared section styles
  (GRADIENT, sectionTitle/Sub, colHeadStyle) move to admin/styles.ts so
  both files share one source.

Pure move — no behaviour change. Build + lint clean; 111 web tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7
@nicpozent
nicpozent merged commit 7fb361e into main Jul 13, 2026
6 checks passed
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