abc-ai/model.md
Tiara Rodney 41481636d8
init
2026-02-05 01:51:29 +01:00

5.3 KiB
Raw Blame History

Abstract Model

Hierarchy Model

The ABC Pattern defines a strict threelayer hierarchy of constructs (ABCC0):

  • Application Stack (ABCC1) — the root deployment boundary.
  • Logical Units (ABCC2) — firstlevel domains within the application.
  • Resource Groups (ABCC3) — finegrained functional clusters inside each Logical Unit.

This hierarchy is strictly vertical.

Every construct belongs to exactly one parent, and no construct may exist outside this tree.

The hierarchy expresses encapsulation:

  • ABCC1 encapsulates the entire application.
  • ABCC2 encapsulates domainlevel concerns.
  • ABCC3 encapsulates resourcelevel concerns.

Each layer exposes its behavior exclusively through its Instantiation Interface (ABCC6) and its Input/Output Contracts (ABCC4, ABCC5).

Relationship Semantics

The ABC Pattern enforces a parentchildonly relationship model.

Allowed relationships

A parent construct MAY instantiate children using the childs Instantiation Interface (ABCC6).

A child MAY expose outputs upward via its Output Contract (ABCC5).

A parent MAY route outputs from one child to another via Capturing Down (ABCC7).

Forbidden relationships

  • No lateral references:
    • Resource Groups (ABCC3) may not reference each other directly.
    • Logical Units (ABCC2) may not reference each other directly.
  • No implicit dependencies:
    • A construct may not read global state, shared variables, or parent internals.
  • No hidden communication channels:
    • All data must flow through Input/Output Contracts.

These constraints ensure loose coupling, testability, and predictable composition.

Interface Semantics

Every construct (ABCC0) defines two explicit interfaces:

Input Contract (ABCC4)

The complete set of parameters required for instantiation. A construct MUST NOT depend on any value not present in its Input Contract.

Output Contract (ABCC5)

The complete set of values the construct exposes upward. A construct MUST NOT leak internal state except through this contract.

Interface Binding

When a parent instantiates a child:

  1. The parent supplies the childs Input Contract.
  2. The child returns its Output Contract.
  3. The parent may:
  • consume the outputs,
  • aggregate them,
  • or pass them down to other children.

This creates a closed, explicit dependency graph with no hidden edges.

Instantiation Semantics

The Instantiation Interface (ABCC6) is the single mechanism through which a construct is created.

It has three properties:

  • Stability - The interface remains stable even if internal implementation changes.
  • Minimality - Only the Input Contract is accepted; no additional parameters.
  • Purity - Instantiation has no side effects beyond constructing the child.

Instantiation is always topdown:

  • ABCC1 instantiates ABCC2 constructs.
  • ABCC2 instantiates ABCC3 constructs.
  • No construct may instantiate its parent or siblings.

This ensures deterministic composition and predictable dependency flow.

Data Flow Semantics

Data flows vertically through two complementary mechanisms:

ABCF1 — Capturing Down (maps to ABCC7)

A parent passes scoped inputs to its children.

This mechanism ensures:

  • Children receive only what they need.
  • No child can access parent state implicitly.
  • Parents mediate all crossdomain dependencies.

ABCF2 — Bubbling Up (maps to ABCC8)

A child exposes outputs upward to its parent.

This mechanism ensures:

  • All produced values are explicit.
  • Parents can aggregate or route outputs.
  • No child communicates directly with siblings.

Routing Semantics

Parents MAY:

  • Consume outputs (e.g., store them).
  • Transform outputs (e.g., wrap them in a composite object).
  • Reexpose outputs upward.
  • Pass outputs downward to other children.

Children MAY not route data themselves.

Conceptual Diagram

Application Stack (ABCC1)
│
├── Logical Unit: Data (ABCC2)
│     ├── Resource Group: Storage (ABCC3)
│     └── Resource Group: Database (ABCC3)
│
├── Logical Unit: Logic (ABCC2)
│     ├── Resource Group: Compute (ABCC3)
│     └── Resource Group: Messaging (ABCC3)
│
└── Logical Unit: Presentation (ABCC2)
      ├── Resource Group: CDN (ABCC3)
      └── Resource Group: WebApp (ABCC3)

Downward arrows represent Capturing Down (ABCF1).

Upward arrows represent Bubbling Up (ABCF2).

No horizontal arrows exist.

Rationale & Design Intent

The ABC Pattern enforces a strict, explicit, and testable structure for cloud infrastructure code.

  • Encapsulation ensures each construct hides its internal details.
  • Explicit interfaces eliminate hidden dependencies.
  • Loose coupling prevents crossdomain entanglement.
  • Reusability emerges from stable Instantiation Interfaces.
  • Testability is guaranteed because each construct can be instantiated with mock inputs.
  • Scalability follows naturally from the ability to evolve constructs independently.

This model is intentionally toolagnostic so it can be mapped cleanly to CDK, Terraform, Pulumi, or any imperative, as well as declarative IaC framework.