Bausteinsicht Mini-ATAM Review Update
.1. Review Context
This is a follow-up Mini-ATAM review assessing the Bausteinsicht architecture 24 days after the initial full ATAM review (2026-03-06). It focuses on three questions:
-
Which recommendations from the initial review have been implemented?
-
Have new architectural changes introduced new risks or tradeoffs?
-
Is the architecture still aligned with its quality goals?
.1.1. Method
Delta review against the initial ATAM findings. No new utility tree or full scenario analysis — the quality scenarios (QS-1 through QS-6) remain unchanged.
.1.2. Input Artifacts
-
Initial ATAM review (2026-03-06)
-
Git history since 2026-03-06 (24 commits)
-
Current test suite (387 passing, 3 skipped)
-
Current
go.moddependencies
.2. Recommendation Tracking
.2.1. Group A — Before v1 Release
| ID | Recommendation | Status | Evidence |
|---|---|---|---|
A.1 |
Document trust model for CLI flag handling |
[check circle] Done |
|
A.2 |
Add development checklist for new model fields (PatchSave) |
[check circle] Done |
Documented (#256) |
A.3 |
Ensure |
[minus circle] Partial |
Getting-started improved (#257); additional template styles not yet added |
.2.2. Group B — After v1 Release
| ID | Recommendation | Status | Evidence |
|---|---|---|---|
B.1 |
Sync state file integrity check |
[check circle] Done |
Checksum added to |
B.2 |
Pin tested draw.io version |
[check circle] Done |
Pinned in Dockerfile (#260) |
B.3 |
Version the template format |
[check circle] Done |
Template versioning in |
B.4 |
Add sync mutex in watch mode |
[check circle] Done |
Mutex in |
B.5 |
Evaluate auto-layout |
[check circle] Done |
BFS-based layered layout engine (#3360519), ADR-005 accepted |
.2.3. Group C — v2 Considerations
| ID | Recommendation | Status | Evidence |
|---|---|---|---|
C.1 |
Profile with 500+ element models; add benchmarks |
[check circle] Done |
Benchmarks in |
C.2 |
Add configurable recursion depth limit (default 50) |
[check circle] Done |
Depth limit in |
C.3 |
Evaluate LSP implementation |
[times circle] Not started |
— |
C.4 |
Consider template gallery |
[times circle] Not started |
— |
Summary: 11 of 13 recommendations addressed. Remaining two (C.3 LSP, C.4 template gallery) are v2 scope.
.3. Updated Risk Assessment
.3.1. Resolved Risks
| ID | Risk | Resolution |
|---|---|---|
R-2 |
Sync state file corruption |
Integrity checksum added (#259). Corrupted state now produces clear error message. |
R-7 |
Watch mode race conditions |
Mutex guard added (#262). No concurrent sync runs possible. |
R-8 |
Missing recursion depth limit |
Depth limit of 50 implemented (#258) with error message. |
.3.2. Mitigated Risks (reduced severity)
| ID | Risk | Change |
|---|---|---|
R-1 |
Path traversal via CLI flags |
Trust model documented (#255). |
R-3 |
draw.io XML format changes |
draw.io version pinned in Dockerfile (#260). Integration tests against multiple versions still missing — risk remains Medium likelihood, High impact. |
R-5 |
PatchSave regression with new fields |
Dev checklist added (#256). Risk remains Medium but process mitigation is in place. |
R-6 |
Template compatibility across versions |
Template versioning implemented (#261). Migration path for breaking changes still needs documentation. |
.3.3. New Risk: Auto-Layout Engine
R-9: Auto-Layout Quality for Complex Diagrams
Likelihood: Medium — the BFS-based layered layout does not consider relationships (no edge-crossing minimization).
Impact: Low — layout is only applied to new pages; existing positions preserved. Users can manually adjust or use --relayout.
Affected QS: QS-1 (learnability — first impression of a generated diagram), QS-3 (LLM friendliness — automated diagrams may have crossing edges).
Mitigation: Per-view layout property allows switching to grid or none. --relayout provides re-application.
Recommendation: [C] Monitor user feedback. Consider relationship-aware layout (force-directed) as additional mode if needed.
.4. Updated Sensitivity Points
| ID | Description | Severity | Change since initial review |
|---|---|---|---|
SP-1 |
RenderedElements mapping in reverse sync |
HIGH |
Unchanged. Bug fixes in #265, #266, #268 address edge cases but fundamental sensitivity remains. |
SP-2 |
JSONC PatchSave boundaries |
MEDIUM |
Unchanged. Dev checklist (A.2) reduces regression risk but byte-level patching remains inherently fragile. |
SP-3 |
JSON Schema completeness |
MEDIUM |
Unchanged. No new model constructs added since review. |
SP-4 |
add-element / sync state coordination |
MEDIUM |
Unchanged. No architectural change to the two-step workflow. |
SP-5 |
AutoDetect first-match template behavior |
LOW |
Template versioning (#261) adds metadata but does not change the matching algorithm. |
.4.1. New Sensitivity Point
SP-6: Layout Algorithm Tier Assignment (LOW)
The layered layout assigns elements to tiers based on the definition order of kinds in specification.elements.
If a user reorders their specification, all auto-layouts change.
This is documented in ADR-005 as intended behavior, but could surprise users who don’t expect visual changes from specification reordering.
.5. Updated Tradeoff Analysis
.5.1. TP-1 Resolved: Auto-Layout Now Available
The most significant tradeoff from the initial review — manual layout vs. auto-layout (TP-1) — has been resolved by ADR-005.
| Before (TP-1) | After (ADR-005) |
|---|---|
First sync produced flat row of elements |
First sync produces layered layout grouped by element kind |
LLM workflows could not produce readable diagrams |
LLM workflows get architecturally meaningful layouts automatically |
User had to manually arrange every element |
User positions preserved after initial layout; |
New tradeoff: The layered layout does not minimize edge crossings (no relationship awareness). This is a conscious decision documented in ADR-005 — relationship-aware layout can be added as an additional mode later.
.5.2. Remaining Tradeoffs (unchanged)
| ID | Decision | Assessment |
|---|---|---|
TP-2 |
JSONC vs. custom DSL |
Still valid. JSON verbosity accepted for IDE/LLM benefits. |
TP-3 |
Byte-level patcher vs. full round-trip |
Still valid. Dev checklist mitigates maintenance burden. |
TP-4 |
Model-wins conflict resolution |
Still valid. No user requests for interactive merge reported. |
TP-5 |
CLI-only interface |
Still valid. LSP (C.3) would address real-time feedback gap but is v2 scope. |
TP-6 |
Embedded templates (no gallery) |
Partially addressed — template versioning added, but still only one default template. |
.6. Test Suite Health
| Metric | Initial Review (2026-03-06) | Current (2026-03-30) |
|---|---|---|
Total tests |
215 |
387 |
Passing |
188 |
387 |
Skipped |
26 |
3 |
Unexpected failures |
0 |
0 |
Property-based tests |
Present (label roundtrip) |
Present (label roundtrip) |
Benchmarks |
Not present |
Added (#263) |
Notable improvement: Skipped tests reduced from 26 to 3. Test count nearly doubled (215 → 387).
The 3 remaining skips:
-
TestSyncPreservesJSONCComments— environment-dependent -
TestSyncConcurrentModelAndDrawioChanges— environment-dependent -
TestExportPage_Integration— requires draw.io binary
All 9 packages pass. No race conditions detected.
.7. Dependency Status
Dependencies remain minimal and unchanged:
| Dependency | Version | CVEs |
|---|---|---|
beevik/etree |
v1.6.0 |
None |
fsnotify/fsnotify |
v1.9.0 |
None |
spf13/cobra |
v1.10.2 |
None |
pgregory.net/rapid |
v1.2.0 |
None (test only) |
golang.org/x/sys |
v0.41.0 |
None |
Go |
1.24.0 |
None |
Supply chain risk remains minimal: 5 direct dependencies, no npm, no post-install scripts.
.8. Findings Summary
.8.1. What improved since the initial review
-
11 of 13 recommendations implemented — including all Group A (pre-release) and all Group B (post-release) items
-
Auto-layout engine (ADR-005) resolves the most impactful tradeoff (TP-1) from the initial review
-
Test suite nearly doubled (215 → 387 tests) with only 3 skips remaining
-
Three risks fully resolved (R-2 state corruption, R-7 watch race, R-8 recursion depth)
-
Benchmarks added to CI, enabling performance regression detection
.8.2. What remains open
-
R-3 (draw.io format changes) — version pinned but multi-version integration tests still missing
-
R-1 (path traversal) — trust model documented, but
--restrict-to-dirflag not implemented -
TP-5 (CLI-only) — LSP evaluation (C.3) not started
-
TP-6 (template gallery) — still a single default template
.8.3. New findings
-
R-9 (auto-layout quality) — new LOW risk from layout engine not considering relationships
-
SP-6 (tier assignment sensitivity) — specification reordering changes layouts
.8.4. Overall Assessment
The architecture has significantly matured since the initial ATAM review. The rapid implementation of recommendations demonstrates good architectural governance.
The core architecture remains well-aligned with all six quality goals:
-
QS-1 (Learnability): Improved by auto-layout — first diagrams are now immediately readable
-
QS-2 (IDE Support): Unchanged — JSON Schema works well
-
QS-3 (LLM Friendliness): Improved by auto-layout — LLM-driven workflows produce meaningful diagrams
-
QS-4 (Sync Reliability): Strengthened by state file checksums, watch mutex, and depth limits
-
QS-5 (Installability): Unchanged — single binary, zero dependencies
-
QS-6 (Flexible Hierarchy): Unchanged — arbitrary nesting with depth limit safety
Architecture readiness: Ready for v1 release. No blocking risks remain. The two open Group C items (LSP, template gallery) are appropriate for a v2 roadmap.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.