Application Architecture: Canonical Domain Analysis (12 Primitives)
Status: Canonical reference. Full 12-step analysis of the complete application architecture surface — both internal data management and external interaction.
Supersedes: analysis-application-architecture.md (9-primitive version focused on data management only)
Derived from: Fresh analysis across diverse application types, abstract surface role mapping, 3/3b iteration testing internal/external separation.
Step 1 — Information Gathering
1.1 What we're analyzing
The full structural space of what software applications DO — all of it. Not just data management, not just backend architecture, but the complete surface of software capability. This includes internal data operations, external interaction with users and environment, computation, and system architecture.
1.2 Why 12 and not 9
The original 9-primitive analysis captured data management concerns but missed the external-facing dimension. Testing against real applications (social media, games, creative tools, streaming, embedded systems) revealed the gap: the abstract surface roles Perception and Action were unfilled.
The 3/3b iteration confirmed Perception and Access are genuinely separate (different sources, timing, reliability), and Presentation and Mutation are genuinely separate (different targets, timing, fidelity). The digital medium gives access to structural concerns that other substrates keep implicit — every data management decision is an explicit design choice in software.
Step 2 — Landscape Analysis
2.1 What recurs across ALL software
Every application, regardless of type or platform:
Internal data concerns:
- Operates on some form of content (data, state, entities)
- Content has structure (types, schemas, formats)
- Content must be findable internally (query, lookup, indexing)
- Content changes (write, update, append, transform)
- Changes may spread internally (events, notifications, reactive updates)
- Concurrent changes must not corrupt (transactions, ordering, merges)
- Changes may need to be tracked (history, undo, audit) — not always
- New values may be derived from existing data (computed views, formulas, rules) — not always
External interaction concerns: 9. The system receives external input (user actions, sensor data, incoming messages) 10. The system produces external output (display, audio, API responses, actuation)
System architecture concerns: 11. Components are separated and communicate across boundaries 12. Access is controlled (permissions, capabilities, isolation)
Step 3/3b — Primitives and Partial Levels
3.1 The twelve primitives
Internal (Content-rooted):
| # | Primitive | What it does |
|---|---|---|
| 1 | Data (D) | What the application operates on — data, entities, documents, messages, state |
| 2 | Shape (Sh) | How content is structured — types, schemas, formats, constraints, validation |
| 3 | Access (Ac) | Finding internal content — query, lookup, navigation, search, indexing |
| 4 | Mutation (Mt) | Changing internal state — write, update, delete, append, transform |
| 5 | Propagation (Pg) | How internal changes spread — events, subscriptions, reactive updates |
| 6 | Coherence (Ch) | Maintaining consistency under concurrency — transactions, merges, ordering |
| 7 | History (Hs) | Tracking changes over time — versioning, undo, audit, provenance [conditional] |
| 8 | Evaluation (Ev) | Deriving values from existing data — computed views, formulas, reactive expressions [conditional] |
External:
| # | Primitive | What it does |
|---|---|---|
| 9 | Perception (Pc) | Receiving external input — user actions, sensor data, incoming API calls, external events |
| 10 | Presentation (Pn) | Producing external output — display, audio, API responses, actuation, notifications |
System:
| # | Primitive | What it does |
|---|---|---|
| 11 | Boundary (Bn) | Separating and connecting components — service boundaries, modules, protocols |
| 12 | Authority (Au) | Controlling access — permissions, capabilities, roles, isolation |
3.2 Abstract surface role mapping
| Abstract surface role | App arch primitive | How it maps |
|---|---|---|
| Structure (St) | Data (D) | Content IS persistent structure |
| Organization (Or) | Shape (Sh) | Shape organizes content |
| Regulation (Rg) | Coherence (Ch) | Coherence self-regulates under concurrent pressure |
| Perception (Pr) | Perception (Pc) | Direct mapping — detecting external state |
| Action (Ac) | Presentation (Pn) | Presentation IS directed output |
| Protection (Pt) | Authority (Au) | Authority protects boundaries |
| Exchange (Ex) | Boundary (Bn) | Boundary mediates inter-system exchange |
| [Resource (Rs)] | — (ambient) | Computation is ambient — infrastructure provides it |
| [Generation (Gn)] | — (absent) | Apps don't self-reproduce |
All 7 universal abstract roles filled. Plus 5 domain-specific: Ac, Mt, Pg, Hs, Ev — internal data management concerns that the digital medium makes explicit.
3.3 Stability under 3/3b iteration
Tested and confirmed separate:
- Access ≠ Perception (internal vs external source, different timing/reliability)
- Mutation ≠ Presentation (internal vs external target, different fidelity concerns)
Potential collapses investigated and rejected:
- Propagation into Mutation — independently variable (mutation without propagation in batch; propagation without new mutation in replay)
- History into Mutation — independently variable (many systems mutate without history)
- Evaluation into Mutation — independently variable (pure computation without state change)
- Perception into Access — independently variable (external input without internal query; internal query without external trigger)
Conditional primitives:
- History (Hs) — genuinely absent in embedded systems, stateless services, ephemeral processors
- Evaluation (Ev) — present wherever derived values exist (spreadsheets, computed views, reactive expressions). Likely universal at low levels but explicit only when the substrate exposes open evaluation.
3.4 Partial levels
Data (D):
| Level | Description | Instance |
|---|---|---|
| D0 | No content | Stateless proxy, pure router |
| D1 | Opaque blobs | Raw bytes, untyped files |
| D2 | Typed records | Structured data with type/schema |
| D3 | Rich content | Complex nested structures, embedded media |
| D4 | Self-describing content | Content carries its own structural description |
| Full D | Composable content | Content references and composes other content |
Phase transition: D1→D2 (Typing). Data gains type — validation, interop, structural operations become possible. (Levels renamed Ct→D for consistency with the primitive id; "Ct" was stale naming inherited from the superseded 9-primitive "Content" version.)
Shape (Sh):
| Level | Description | Instance |
|---|---|---|
| Sh0 | No shape | Content unconstrained |
| Sh1 | Implicit shape | Conventions enforce structure, not declared |
| Sh2 | Declared schema | Explicit type definitions |
| Sh3 | Validated shape | Schema enforced on write |
| Sh4 | Relational shape | Types reference each other |
| Full Sh | Evolutionary shape | Schema evolves with migration, compatibility |
Phase transition: Sh2→Sh3 (Enforcement). Shape is ENFORCED — data integrity becomes a system property.
Access (Ac):
| Level | Description | Instance |
|---|---|---|
| Ac0 | No access | Content exists but can't be located |
| Ac1 | Direct address | Access by key, path, memory address |
| Ac2 | Indexed access | Secondary indexes, access by properties |
| Ac3 | Query language | Declarative queries — SQL, GraphQL |
| Ac4 | Full-text and semantic | Search, fuzzy matching, semantic similarity |
| Full Ac | Adaptive access | System optimizes access patterns automatically |
Phase transition: Ac1→Ac2 (Indexing). Find content by WHAT IT IS, not just where it is.
Mutation (Mt):
| Level | Description | Instance |
|---|---|---|
| Mt0 | No mutation | Immutable — append-only at most |
| Mt1 | Overwrite | Destructive replacement |
| Mt2 | Structured mutation | Typed operations — insert, update, delete |
| Mt3 | Transactional mutation | Atomic multi-step changes |
| Mt4 | Validated mutation | Mutations checked against shape constraints |
| Full Mt | Composable mutation | Mutations compose, merge, resolve — CRDTs, OT |
Phase transition: Mt2→Mt3 (Transactions). Changes become atomic — all-or-nothing.
Propagation (Pg):
| Level | Description | Instance |
|---|---|---|
| Pg0 | No propagation | Changes invisible until polled |
| Pg1 | Polling | Consumers check periodically |
| Pg2 | Push notification | System notifies on change |
| Pg3 | Subscription | Consumers declare interest, system delivers |
| Pg4 | Reactive cascade | Changes trigger computations trigger further changes |
| Full Pg | Distributed propagation | Changes propagate across boundaries with guarantees |
Phase transition: Pg1→Pg2 (Push). Real-time behavior begins.
Coherence (Ch):
| Level | Description | Instance |
|---|---|---|
| Ch0 | No coherence | Single-writer or accept corruption |
| Ch1 | Locking | Exclusive access — pessimistic |
| Ch2 | Optimistic concurrency | Detect conflicts after the fact |
| Ch3 | Conflict resolution | Automatic merge strategies |
| Ch4 | Convergent state | Distributed replicas guaranteed to converge |
| Full Ch | Multi-level coherence | Different consistency guarantees for different data |
Phase transition: Ch2→Ch3 (Automatic resolution). Conflicts resolve without human intervention.
History (Hs) [conditional]:
| Level | Description | Instance |
|---|---|---|
| Hs0 | No history | Changes permanent and untraceable |
| Hs1 | Undo buffer | Recent changes reversible |
| Hs2 | Audit log | Changes recorded, append-only |
| Hs3 | Version control | Full snapshots, branching, diffing |
| Hs4 | Provenance | Causal chain tracked |
| Full Hs | Temporal queries | Any historical state reconstructible |
Phase transition: Hs2→Hs3 (Version control). Any previous state reconstructible.
Evaluation (Ev) [conditional]:
| Level | Description | Instance |
|---|---|---|
| Ev0 | No evaluation | No derived values |
| Ev1 | Simple formulas | Computed fields, basic derivations |
| Ev2 | Reactive derivation | Values recompute when dependencies change |
| Ev3 | Query-based derivation | Materialized views, aggregations |
| Ev4 | Rule-based evaluation | Business rules, constraint propagation |
| Full Ev | Turing-complete evaluation | Arbitrary computation within the content domain |
Phase transition: Ev1→Ev2 (Reactivity). Derived values update automatically when inputs change.
Perception (Pc):
| Level | Description | Instance |
|---|---|---|
| Pc0 | No perception | No external input (closed system) |
| Pc1 | Batch input | External data loaded in bulk on schedule |
| Pc2 | Event input | External events received and queued |
| Pc3 | Interactive input | Real-time user actions processed (click, type, gesture) |
| Pc4 | Continuous input | Streaming sensor data, audio/video input, real-time feeds |
| Full Pc | Adaptive perception | System adjusts what it perceives based on context (focus, filtering, attention) |
Phase transition: Pc2→Pc3 (Interactive). The system responds to individual human actions in real time.
Presentation (Pn):
| Level | Description | Instance |
|---|---|---|
| Pn0 | No presentation | No external output to users (internal only) |
| Pn1 | Batch output | Reports, exports, generated files |
| Pn2 | Static display | Rendered pages, fixed UI, read-only views |
| Pn3 | Interactive display | UI that responds to user actions, dynamic updates |
| Pn4 | Continuous output | Real-time rendering (games, video), audio streams |
| Full Pn | Adaptive presentation | System adjusts presentation based on context (responsive, accessible, personalized) |
Phase transition: Pn2→Pn3 (Interactive display). The display responds to user actions — the reactive UI.
Boundary (Bn):
| Level | Description | Instance |
|---|---|---|
| Bn0 | No boundary | Monolith, single address space |
| Bn1 | Logical boundary | Modules, packages, namespaces |
| Bn2 | Process boundary | Separate processes, IPC |
| Bn3 | Network boundary | Separate machines, network protocols |
| Bn4 | Trust boundary | Different trust levels, security domains |
| Full Bn | Dynamic boundary | Boundaries form and dissolve — P2P, mesh, federation |
Phase transition: Bn2→Bn3 (Network). Distributed systems concerns become relevant.
Authority (Au):
| Level | Description | Instance |
|---|---|---|
| Au0 | No authority | Everything accessible to everyone |
| Au1 | Identity | Components have identity |
| Au2 | Role-based | Access by roles — admin, user, guest |
| Au3 | Capability-based | Unforgeable tokens, delegatable |
| Au4 | Attribute-based | Policy engines, computed access |
| Full Au | Self-sovereign | Decentralized identity and authority |
Phase transition: Au2→Au3 (Capabilities). Authority becomes delegatable without central coordination.
Step 4 — Dependencies
D → (nothing; root 1 — internal hub)
Sh → D (shape constrains content)
Ac → D (access finds content)
Mt → D (mutation changes content)
Pg → Mt (propagation triggered by mutation)
Ch → Mt (coherence coordinates mutation)
Hs → Mt (history tracks mutations)
Ev → D (evaluation derives from content)
Pc → (nothing; root 2 — external input, independent)
Pn → D (presentation requires content to present)
Bn → D (boundary scopes content)
Au → Bn (authority operates at boundaries)
Two independent roots:
- D (Content) — internal hub. Everything about data management depends on having content.
- Pc (Perception) — external input. Arrives independently of internal state.
This mirrors the SSA's two-root structure: En (encoding) and Cx (context).
DAG:
D (root 1) Pc (root 2)
├── Sh (independent — external input)
├── Ac
├── Mt → Pg
│ ├── Ch
│ └── Hs
├── Ev
├── Pn
└── Bn → Au
Depth: Maximum chain: D → Mt → Pg (depth 2) or D → Bn → Au (depth 2). Shallow — consistent with surface domains.
Step 5-6 — Pairs and Load Classification
C(12,2) = 66 pairs. Classifying the most structurally significant:
Heavy pairs
| # | Pair | Content | Why heavy |
|---|---|---|---|
| 1 | D-Sh | Typed content | Foundational — every app needs structured data |
| 2 | D-Ac | Accessible content | Content you can find internally |
| 3 | D-Mt | Mutable content | Content that changes |
| 4 | Mt-Pg | Reactive mutation | Changes trigger propagation |
| 5 | Mt-Ch | Coherent mutation | Concurrent changes coordinated |
| 6 | Mt-Hs | Tracked mutation | Changes recorded |
| 7 | Sh-Mt | Validated mutation | Changes checked against shape |
| 8 | Sh-Ac | Typed access | Shape-informed queries |
| 9 | Bn-Au | Authorized boundary | Access control at system edges |
| 10 | Pc-Mt | Input-driven mutation | External input causes state change |
| 11 | D-Pn | Presented content | Content shown to users |
| 12 | Pc-Pn | Interactive loop | Perception + presentation = the interaction cycle |
| 13 | Pn-Pg | Live updates | Propagation drives display updates |
| 14 | Bn-Pg | Distributed propagation | Changes propagate across boundaries |
| 15 | Bn-Ch | Distributed coherence | Consistency across boundaries |
15 heavy of 66 (23%). Moderate — consistent with a surface domain with both tightly coupled internal pairs and loosely coupled external ones.
Medium pairs
| Pair | Why medium |
|---|---|
| D-Bn | Content scoped by boundary — real but mediated through Ac and Au |
| D-Au | Content protected — mediated through Bn |
| D-Ev | Content evaluated to derive new values — real for computed views |
| D-Hs | Content has history — mediated through Mt |
| D-Pc | Content drives what input is expected — forms, prompts |
| Ac-Pg | Live queries — access re-evaluated on change |
| Ac-Bn | Remote access across boundaries |
| Ac-Ev | Access to computed/derived values |
| Sh-Ch | Shape informs merge strategies — structural merge vs text merge |
| Sh-Pn | Shape informs presentation — types determine display format |
| Sh-Ev | Shape constrains evaluation — typed expressions |
| Sh-Bn | Schema compatibility across boundaries — API contracts |
| Mt-Pn | Mutation drives display update — the reactive UI pattern |
| Mt-Ev | Mutation triggers re-evaluation of derived values |
| Mt-Bn | Remote writes — mutations across boundaries |
| Pg-Ch | Propagation ordering and coherence — event ordering guarantees |
| Pg-Ev | Propagation triggers re-evaluation |
| Pc-Ac | Input drives data retrieval — search, navigation |
| Pc-Ev | Input triggers computation — interactive evaluation |
| Pc-Bn | Input arrives across boundaries — remote events |
Light pairs
| Pair | Why light |
|---|---|
| D-Pg | Content and propagation — indirect through Mt |
| D-Ch | Content and coherence — indirect through Mt |
| Ac-Mt | Find-then-modify — sequential use, not pair interaction |
| Ac-Pn | Access result displayed — but mediated through D |
| Ac-Hs | Temporal queries — specialized |
| Ac-Au | Authorized queries — mediated through Bn |
| Ac-Pc | Already listed as medium |
| Sh-Hs | Schema evolution — related but loose |
| Sh-Au | Shape and authority — orthogonal |
| Sh-Pc | Shape constrains input — form validation. Real but mediated. |
| Mt-Au | Authorized writes — mediated through Bn |
| Mt-Pc | Already listed as heavy (Pc-Mt) |
| Pg-Pn | Already listed as heavy |
| Pg-Au | Authorized subscriptions — specialized |
| Pg-Hs | Event replay — specialized |
| Pg-Pc | Input triggers propagation — but through Mt |
| Pg-Bn | Already listed as heavy |
| Ch-Pn | Consistent display — mediated through Pg |
| Ch-Ev | Coherent evaluation — computed values consistent |
| Ch-Au | Authority-aware conflict resolution — rare |
| Ch-Hs | Version-based merge — specialized |
| Ch-Pc | Input during conflict — mediated |
| Ch-Bn | Already listed as heavy |
| Hs-Ev | Evaluate historical state — specialized |
| Hs-Pn | Display history — specialized |
| Hs-Pc | Input on history — undo commands. Specialized. |
| Hs-Bn | Distributed version sync — specialized |
| Hs-Au | Audit trail access control — specialized |
| Ev-Pn | Computed values displayed — real but through D |
| Ev-Bn | Distributed evaluation — remote compute |
| Ev-Au | Authorized computation — resource limits |
| Ev-Pc | Interactive computation — already medium |
| Pn-Au | Authorized display — content gating |
| Pn-Bn | Presentation across boundaries — CDN, SSR |
| Pn-Hs | Display version history — specialized |
| Bn-Hs | Distributed version sync — specialized |
| Au-Hs | Audit of access — specialized |
| Au-Ev | Authorized evaluation — specialized |
| Au-Pc | Authentication of input — real but mediated through Bn |
| Au-Pn | Authorized display — content gating. Mediated. |
20 medium, 31 light of 66. Distribution: 15 heavy (23%), 20 medium (30%), 31 light (47%).
The Pc-Pn pair
Pc-Pn (perception-presentation) is the INTERACTION LOOP — the external cycle where the app perceives input and presents output. This is the pair that makes software INTERACTIVE. At Pc0+Pn0: no interaction (batch/background). At Pc3+Pn3: full interactive application.
This pair is the app architecture equivalent of organism architecture's Sn-Rs (sensing-response) — the environmental interaction pair.
Anchor pairs
D-Mt (content-mutation) is the internal anchor — most internal compositions cluster around it. Pc-Pn (perception-presentation) is the external anchor — all interaction compositions include it.
Step 7 — Coherent Sub-lattice
Dependencies
D and Pc are independent roots. Given D:
- Sh, Ac, Mt, Ev, Pn, Bn each need only D
- Pg, Ch, Hs need Mt (which needs D)
- Au needs Bn (which needs D)
Given Pc: no dependents (Pc is a leaf in the dependency sense — things may be TRIGGERED by Pc but don't structurally DEPEND on it).
Enumeration
Valid subsets of {Sh, Ac, Mt, Pg, Ch, Hs, Ev, Pc, Pn, Bn, Au} given D always present:
Constraints: Pg→Mt, Ch→Mt, Hs→Mt, Au→Bn. Pc independent. Others need only D.
Let me partition: {Pc} is fully independent. For the remaining 10 {Sh, Ac, Mt, Pg, Ch, Hs, Ev, Pn, Bn, Au}:
Constraints on remaining 10: Pg→Mt, Ch→Mt, Hs→Mt, Au→Bn.
Mt absent: Pg, Ch, Hs all absent. Remaining free: {Sh, Ac, Ev, Pn, Bn, Au} with Au→Bn. Valid combos: 2^6 = 64 minus (Au without Bn = 2^4 = 16) = 48.
Mt present: Pg, Ch, Hs each free. Remaining: {Sh, Ac, Pg, Ch, Hs, Ev, Pn, Bn, Au} with Au→Bn. Valid combos: 2^9 = 512 minus (Au without Bn = 2^7 = 128) = 384.
Total for {Sh,Ac,Mt,Pg,Ch,Hs,Ev,Pn,Bn,Au}: 48 + 384 = 432.
Each can independently include or exclude Pc: 432 × 2 = 864.
Including {} and {D alone}: already counted in the 432 (empty subset of the 10 = just D).
Total coherent subsets of 2^12 = 4096:
- {}: 1
- D + valid combos of 11 (including Pc-independent): 864
- {Pc} alone (Pc is an independent root — coherent with D absent): 1
- Total: 866
Filter: 866/4096 = 21.1%.
Cross-domain consistency correction (task #7): an earlier draft recorded 865, excluding the {Pc}-alone subset on the semantic ground that "perception with no content is meaningless" (logged as judgment call #14, deferred to this consistency pass). Resolution: filter_stringency is the full dependency-coherent presence-lattice BFS, counting independent-root-alone singletons uniformly — physical-hardware already counts {Pw}-alone, and every other one of the 34 corpus files has stored == full BFS. {Pc} is an independent root (no presence dependency), so {Pc}-alone is coherent and counted: 866. The semantic nuance (a perceiving-but-contentless application is a degenerate corner) is noted here but does not change the structural count.
Moderate — similar to the 9-primitive version (21.3%). The added primitives (Pc, Pn, Ev) don't create much additional filtering because Pc is independent and Pn/Ev depend only on D.
Step 8 — Build-up Sequence
Primary path (data-first, then interaction)
Step 0→1: {} → {D}
Content exists. Something to operate on.
Step 1→2: {D} → {D, Sh}
Content has shape. Structure is explicit.
Step 2→3: {D, Sh} → {D, Sh, Ac}
Content is findable internally.
Step 3→4: {D, Sh, Ac} → {D, Sh, Ac, Mt}
Content is mutable. State changes.
Step 4→5: → add Pc, Pn (perception + presentation)
External interaction begins. The app perceives input and presents output.
This is where the app becomes INTERACTIVE.
Step 5→6: → add Pg (propagation)
Changes spread. Reactive behavior.
Step 6→7: → add Ch (coherence)
Concurrent changes coordinated.
Step 7→8: → add Bn, Au (boundary + authority)
System architecture — components separated, access controlled.
Step 8→9: → add Hs, Ev (history + evaluation)
Conditional capabilities — tracking and derived values.
Alternative: interaction-first path
{D} → {D, Pc} → {D, Pc, Pn} → {D, Sh, Pc, Pn} → add Mt → add Pg → ...
Start with content and external interaction before internal data management. This is the PROTOTYPING approach — build the interface first, then the backend. Common in UI-driven development.
Alternative: distribution-first path
{D} → {D, Bn} → {D, Bn, Au} → {D, Sh, Bn, Au} → add Mt → add Ch → ...
Start with system architecture — boundaries and authority before data management. Common in enterprise and microservices-first architecture.
Step 9 — Load-bearing Compositions
Core triad
{D, Sh, Ac} — Content, Shape, Access.
"What is a data system?" → CONTENT with SHAPE that you can ACCESS. The minimal structured data system. Present in every application.
All three pairs heavy: D-Sh ✓, D-Ac ✓, Sh-Ac ✓.
Secondary triads
{Mt, Pg, Ch} — Mutation, Propagation, Coherence.
"What is a reactive consistent system?" → Changes (Mt) that PROPAGATE (Pg) while maintaining COHERENCE (Ch). The operational core.
{Pc, Pn, Mt} — Perception, Presentation, Mutation.
"What is an interactive application?" → The app PERCEIVES input (Pc), MUTATES state (Mt), and PRESENTS output (Pn). The interaction triangle. This is the external-facing equivalent of the data management core.
{Bn, Au} — Boundary, Authority.
"What is a secure distributed system?" → Components separated (Bn) with controlled access (Au).
Named compositions
| Composition | Name | What it captures |
|---|---|---|
| {D, Sh, Ac} | Data system | Structured accessible content |
| {Pc, Pn, Mt} | Interactive application | Input → state change → output |
| {Mt, Pg, Ch} | Reactive consistent system | Changes propagate coherently |
| {D, Mt, Hs} | Versioned data | Content with tracked changes |
| {D, Ev, Ac} | Computed data | Content with derived values and queries |
| {D, Sh, Ac, Mt} | CRUD system | The classic — create, read, update, delete |
| {Pc, Pn, Mt, Pg} | Real-time interactive | Live interactive application with reactive updates |
| {Mt, Pg, Ch, Bn} | Distributed reactive | Changes propagating coherently across boundaries |
Quad
{D, Sh, Ac, Mt} — The CRUD system. Content with shape, accessible and mutable. Minimum viable application.
{Pc, Mt, Pn, Pg} — The real-time interactive. Input drives mutation drives presentation drives updates. The live application.
Higher / full set
{D, Sh, Ac, Mt, Pg, Ch, Hs, Ev, Pc, Pn, Bn, Au} — the complete application platform: all twelve surface primitives active. Peaks at the most-complete applications (Instagram, Kubernetes). Carried as an explicit higher composition for full-set coverage, consistent with the entity-system complete-substrate composition.
Step 10 — Emergent Properties
| Composition | Regime | Emergent Property |
|---|---|---|
| {D, Sh} | Sh ≥ Sh3 | Data integrity — content validated against shape |
| {D, Sh, Ac} | Ac ≥ Ac3 | Queryable structured data |
| {Mt, Pg} | Pg ≥ Pg2 | Real-time system — changes visible immediately |
| {Mt, Ch} | Ch ≥ Ch3 | Convergent system — concurrent changes resolve automatically |
| {Pc, Pn} | Both ≥ Pc3, Pn3 | Interactive application — human interaction loop active |
| {Pc, Mt, Pn} | All ≥ 3 | Direct manipulation — user actions directly modify visible state |
| {Mt, Pg, Ch, Bn} | Bn ≥ Bn3 | Distributed reactive system — cloud-native architecture |
| {D, Ev} | Ev ≥ Ev2 | Reactive computation — derived values update automatically |
| {D, Mt, Hs} | Hs ≥ Hs3 | Version-controlled content — any state reconstructible |
| Full set | All high | Complete application platform |
Step 11 — Cross-Domain Patterns
11.1 Comparison to other surfaces
| Property | App arch v2 | Organism arch | Cognitive arch | Abstract surface |
|---|---|---|---|---|
| Primitives | 12 (10 + 2 conditional) | 9 | 9 | 7 + 2 conditional |
| Filter | 21.1% | ~15% | ~37.7% | 38.3% |
| Internal primitives | 8 | ~4 | ~4 | ~3 |
| External primitives | 4 | ~5 | ~5 | ~4 |
| Roots | 2 (D, Pc) | 1 | 1 | 1 |
| Hub | D (Content) | Mo (Morphology) | Kw (Knowledge) | St (Structure) |
App architecture has MORE INTERNAL primitives (8 vs ~4) because the digital medium makes every data management concern an explicit design choice. Other surfaces keep these concerns implicit.
The two-root structure (D + Pc) mirrors the SSA's two-root structure (En + Cx). External input is structurally independent of internal content.
11.2 The substrate expansion
Entity system 6 → App architecture 12. Expansion factor: 2×.
How the expansion works:
- E + I (encoding) → D (data). Core encoding becomes ambient content.
- T (tree) → Sh (shape) + part of Ac (path-based access). One primitive separates into two concerns.
- M (emit) → Mt (mutation) + Pg (propagation) + Hs (history). One primitive separates into THREE concerns.
- X (execution) → Ev (evaluation, partially) + AMBIENT computation. Open evaluator creates explicit surface concern.
- P (peer) → Bn (boundary) + Au (authority). One primitive separates into two concerns.
- External → Pc (perception) + Pn (presentation). NEW at the surface — not directly from any substrate primitive. These emerge from the substrate being USED by external entities.
The larger expansion (2× vs ~1.5× in biology) comes from two sources:
- More internal separation (M→3, T→2, P→2) because digital makes concerns explicit
- External primitives (Pc, Pn) that emerge from the human-software interaction
Step 12 — Manifestation Landscape
Positioned systems
| System | D | Sh | Ac | Mt | Pg | Ch | Pc | Pn | Bn | Au | Hs | Ev |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Postgres | Full | Full | Full | Full | 2 | Full | 1 | 0 | 2 | 3 | 2 | 3 |
| Full | 4 | Full | 3 | Full | 3 | Full | Full | Full | 3 | 1 | 3 | |
| Minecraft | Full | Full | 3 | Full | Full | 4 | Full | Full | 3 | 2 | 2 | 2 |
| Photoshop | Full | Full | 3 | Full | 3 | 1 | Full | Full | 2 | 1 | Full | 3 |
| Kafka | 3 | 3 | 2 | 1 | Full | 3 | 2 | 0 | 3 | 2 | 3 | 1 |
| REST API | 2 | 2 | 2 | 2 | 0 | 0 | 2 | 2 | 3 | 2 | 0 | 0 |
| React+Redux | 3 | 2 | 2 | 3 | Full | 2 | Full | Full | 1 | 0 | 2 | 2 |
| Kubernetes | 3 | Full | 3 | 3 | 3 | 3 | 2 | 2 | 3 | 3 | 2 | 2 |
| Thermostat | 1 | 1 | 1 | 2 | 2 | 0 | 3 | 2 | 2 | 1 | 0 | 1 |
| Git | Full | 2 | 2 | 2 | 0 | 2 | 1 | 1 | 1 | 1 | Full | 0 |
What the landscape reveals
Interactive consumer apps (Instagram, Minecraft, Photoshop) cluster at HIGH Pc + HIGH Pn — full interactive loop. They differ on internal concerns (Photoshop: History-Full; Instagram: Propagation-Full).
Backend services (Postgres, Kafka, Kubernetes) cluster at LOW Pc + LOW Pn — minimal direct interaction. They're strong on internal concerns and Boundary.
Hybrid systems (React+Redux, REST API) are moderate on both — they serve as the CONNECTION between backend and interactive.
The Pc-Pn diagonal divides the landscape: high on both = interactive application; low on both = backend service; mixed = middleware/framework.
Attractor positions
| Attractor | Position (characteristic) | What makes it sticky |
|---|---|---|
| CRUD web app | D3,Sh3,Ac3,Mt3,Pg2,Ch2,Pc3,Pn3,Bn3,Au2 | Covers most needs. Rails/Django default. |
| Event stream | D3,Sh3,Mt1,Pg-Full,Ch3,Pc2,Pn0,Bn3 | High propagation, low interaction. Kafka pattern. |
| Content store | D-Full,Sh2,Ac2,Mt1,Pc1,Pn1,Bn1,Hs-Full | Perfect history, minimal interaction. Git pattern. |
| Interactive rich client | D3,Sh3,Mt3,Pg-Full,Pc-Full,Pn-Full,Ch2 | Full interaction + reactivity. Game/creative tool pattern. |
| API gateway | D2,Sh2,Ac2,Mt2,Pc2,Pn2,Bn-Full,Au3 | Strong boundary and authority, thin on everything else. |
Summary
| Property | Value |
|---|---|
| Domain name | Application Architecture (Complete Functional Surface) |
| Primitives | 12: {D, Sh, Ac, Mt, Pg, Ch, Hs, Ev, Pc, Pn, Bn, Au} |
| Roots | 2: D (content — internal hub) and Pc (perception — external input) |
| Core triad | {D, Sh, Ac} — structured accessible content |
| Interaction triad | {Pc, Mt, Pn} — perceive, mutate, present |
| Operational triad | {Mt, Pg, Ch} — mutate, propagate, cohere |
| Filter | 866/4096 = 21.1% |
| Heavy pairs | 15/66 = 23% |
| Conditional | Hs (history), Ev (evaluation) |
| Expansion from substrate | Entity system 6 → App arch 12 (2×). M→3, T→2, P→2, plus Pc+Pn emerge. |
| Two-root structure | Mirrors SSA's En + Cx. Internal content + independent external input. |
| Abstract surface roles | All 7 universal roles filled + 5 domain-specific internal primitives |
Referenced by the model
Cited as a source by 1 model record (browse the model census):
- application-architecture —
domainentity/sc1