Architecture View for Software

Component responsibilities and interfaces; Software elements identifies each canonical software element by its component directory, source filenames, colocated unit tests and boundary README. Directory names match the lowercase suffix of STV_SWE_* IDs. See STV_ADR_007: Architecture-owned component directories for source organization. The existing nine-component core diagram is retained; the companion export view below documents the added tenth component.

Open linked architecture diagram

Build sequence

The exact hook priorities, failure ownership and incremental-build policy are fixed in Implementation concept and handover. Read the resolved NeedsView at write-started priority 800; extract final rendered HTML with Beautiful Soup at build-finished priority 900. Emit content-addressed details and the final manifest, then patch STV-owned script/root attributes in view pages to the completed identity. Keep the initial serial-build safety flags false. Source and type mappings remain host-owned; no duplicate model registry is introduced.

Browser sequence

Initialize immutable graph data once per page and separate state per root. A command proposes a candidate expansion set or fresh seed/overview state, computes visibility from the selected seed set or project entry page, checks the 200-occurrence cap, and commits only on success. Layout receives the visible graph and model ranks. Rendering and inspection consume its positions without changing graph identities. Zoom and pan affect a per-view transform.

In shared mode, identity is the Need ID. Expansion keys are (Need ID, relation name, direction). Visible edges have canonical (source ID, relation name, target ID) identities; opposite-direction navigation must not duplicate an authored edge. Rooted reachability removes unreachable cycles after collapse. Visiting a cycle is distinct from recursively unfolding it.

Later occurrence mode uses path-specific keys and terminal ancestor references. Its projection/restore logic is isolated in the state component. Navigation in shared mode after merging independently edited copies remains a later-release review question; the MVP does not silently select a policy.

Layout and rendering

Use ELK.js 0.10.0 for ordering suggestions, then STV’s authoritative semantic projection and final edge routing. Use D3 zoom/selection for view-local pan/zoom, Floating UI DOM for overlay placement, and native HTML controls over SVG edges. The complete algorithm and module APIs are specified in Implementation concept and handover. Do not use generic solver layers as semantic ranks or retain its edge paths after moving nodes. See STV_ADR_004: Concrete dependency and delivery stack for the dependency decision.

Fixed node summary: complete ID and title visually clamped to two lines, with full title in details. This is a fixed implementation choice, not an edit to the accepted stakeholder baseline. Details use a focusable, dismissible overlay with constrained height/width and scrolling. Expansion controls must not bubble activation into the new-tab object link. A tooltip-to-overlay pointer transition must not dismiss it. Pan gestures must not activate node links.

Interfaces and verification

See Internal interfaces and model contract, Technology stack and dependency decisions, Implementation concept and handover, Implementation verification plan and STV_ADR_004: Concrete dependency and delivery stack. Unit checks target graph normalization, state transitions and geometry invariants. Host integration fixtures cover build lifecycle, links and full Need content. Browser checks cover file/HTTP behavior, keyboard focus and pointer interactions on Firefox/Windows. Executed results and remaining verification limits are recorded through Project maturity and Release test executions.

Diagram source: architecture/diagrams/software-architecture.drawio. Edit in Draw.io and export SVG; element boxes link to their Need records.

Initialization and project entry

STV_ADR_005: Optional seed sets and paged project entry defines optional seed lists and the synthetic project root. The existing MODEL/GRAPH build path supplies the project name and stakeholder entry index to BUNDLE; STATE selects explicit roots or a project page, and LAYOUT/RENDER handle the root band and paging. Component boundaries and drawn interfaces remain unchanged. No server, dependency or host Need type is added. The authoritative input/state contracts are in Internal interfaces and model contract.

Every view exposes local ID/title matching and exact seed confirmation through the renderer’s seeds.js helper. STATE proposes fresh seed/overview states; the existing capacity/layout commit gate preserves prior exploration on failure. Project initialization opens the first five-entry page. Fresh LAYOUT scenes center parents toward visible child spans; edge-free rows use natural ID order. Group/root navigation instead preserves committed slots under STV_ADR_008: Stable navigation after fresh placement, with final route bounds owned by RENDER. Collision, rank and shared-identity constraints remain. Component connections and dependencies remain unchanged; the prototype decision is STV_ADR_006: Centered layout and interactive overview.

Usability routing and inspection

Layout owns facing ports, clear direct segments and obstacle detours. Rendering owns the 975px viewport; inspection owns delayed hover and cancellation. These refinements preserve existing component boundaries and selected libraries; see Draft usability problem resolution for the change scope.

Classified evidence rows

MODEL validates configurable placement selectors; GRAPH resolves each evidence record against complete published metadata/links before bundling. LAYOUT and RENDER consume the resolved level; fallback records remain labelled and fully navigable. STV_ADR_009: Resolve evidence rows before exploration and Internal interfaces and model contract define the additive contract. Component boundaries and browser request-token transitions are unchanged.

Persistent artifact inspection

INSPECT separates transient hover positioning from a per-view, insertion-ordered persistent collection. Both presentations share cached fragment transport and safe content restoration; they own separate DOM identities and cancellation lifetimes. RENDER owns the responsive dock and keeps it outside graph commits. MODEL and DIRECTIVE validate and publish the author capacity setting, default 10. See STV_ADR_010: Separate persistent details from hover inspection, Internal interfaces and model contract and Behavioral state machines.

View controls, page controls and SVG output

The nine core components remain; Visible-area SVG snapshot a... (STV_SWE_EXPORT) extends the software architecture to ten. The existing diagram shows the retained core topology; this companion view shows the new capture/resource path and its ownership.

Open linked SVG capture architecture

Diagram source: architecture/diagrams/view-export.drawio. RENDER supplies committed geometry and commands; INSPECT supplies visible immutable detail presentation; DETAIL_BUILD/BUNDLE supply safe local resource records; EXPORT composes an inert snapshot and requests the browser download. Page metadata is separately scoped host-document behavior in RENDER. Font configuration crosses MODEL/DIRECTIVE into BUNDLE, then INSPECT. STV_ADR_011: Separate exploration, page metadata and SVG capture and Internal interfaces and model contract define lifecycle, serialization and failure ownership.

Remembered view flow

Store opt-in snapshots inde... (STV_SWR_073) through Restore presentation withou... (STV_SWR_075) extend STATE, RENDER, LAYOUT and INSPECT. Browser storage feeds validated state into startup; the first layout/card restore precedes saved D3 transform application. Committed state, card IDs, geometry and zoom-end events flow back through STATE to storage. STV_ADR_012: Browser-local opt-in view snapshots selects the storage boundary. The coordinated persistence machine is in Behavioral state machines.