Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0003: `prisma-compose deploy` derives the application from the root node

## Status

Accepted

## Decision

The deploy entrypoint is `prisma-compose deploy <entry>`, where `entry` is a module
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0004: Paths resolve relative to the file that writes them

## Status

Accepted

## Decision

Every path a build descriptor carries resolves relative to the module that
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0005: Users build their app; the framework assembles deploy artifacts from built output

## Status

Accepted

## Decision

The framework never initiates or configures a user's build. The contract is:
Expand Down
4 changes: 0 additions & 4 deletions docs/design/90-decisions/ADR-0006-every-node-is-named.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0006: Every node is named; the root's name names the application

## Status

Accepted

## Decision

Every node — module, service, or resource — carries an explicit,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0007: Deploy drives Alchemy through a generated stack file

## Status

Accepted

## Decision

`prisma-compose deploy` materializes its work as a small, human-readable stack
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0008: The boot wrapper inlines everything except runtime built-ins

## Status

Accepted

## Decision

When assembly bundles the service module into the boot wrapper, it inlines
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0009: Deploy state is hosted in the workspace, not in local files

## Status

Accepted

## Decision

Deploy state — the provisioning engine's record of what exists in the cloud —
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0010: Deploys hold a session advisory lock per stack and stage

## Status

Accepted

## Decision

A deploy acquires a Postgres session advisory lock on the hosted state
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0011: Targets supply the deploy state layer

## Status

Accepted

## Decision

`Target.state` is a required field: every target constructs the Alchemy state
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0012: The state store speaks SQL directly; Prisma Next adoption is deferred

## Status

Accepted

## Decision

The hosted state store's data access is hand-written SQL over a plain Postgres
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0013: Resources are provisioned by modules; dependencies are uniform contract-checked slots

## Status

Accepted

## Decision

A service declares **dependencies** — one kind of slot, `DependencyEnd`,
Expand Down
10 changes: 0 additions & 10 deletions docs/design/90-decisions/ADR-0014-one-authoring-primitive.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
# ADR-0014: One authoring primitive — the App is the outermost Module

## Status

Accepted, and largely superseded on names. This ADR originally chose the framework
name, the package family, and the CLI name; those are superseded by
[ADR-0026](ADR-0026-name-the-framework-prisma-compose.md) (the framework is
**Prisma Compose**, with the packages and CLI renamed to match), and the unit noun by
[ADR-0025](ADR-0025-name-the-unit-of-composition-module.md) (**Module**). What stands
is the **single-primitive model**: one authoring construct, no separate `app()`, and
the App is the outermost Module.

## Decision

There is exactly one authoring primitive, and no separate `app()` construct: **the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0015: Dependencies resolve to bindings; clients are constructed app-side

## Status

Accepted

## Decision

`service.load()` returns each dependency's **binding** — the most-derived value
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0016: A module has the same boundary as a service

## Status

Accepted

## Decision

A module declares the same boundary a service does: a `Deps` map of typed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0017: Control-plane code loads through the app's config file

## Status

Accepted

## Decision

An application root carries a `prisma-compose.config.ts`. The config statically
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0018: Config params carry a caller-owned schema, not a framework type enum

## Status

Proposed

## Decision

A config param declares its type as a **schema the caller supplies** — any
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0019: The deploy target owns config serialization

## Status

Proposed

## Decision

Turning a param's value into stored platform configuration — and back into a
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0020: Scheduled work is a driver, not a resource

## Status

Accepted

## Decision

Cron is modelled as a **driver**: a scheduler service that *depends on* the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0021: Params are read through config(), separate from load()'s dependencies

## Status

Proposed

## Decision

A service reads its **dependencies** through `load()` and its **config params**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0022: Data deps carry a Prisma Next contract; deploys migrate to its ref

## Status

Proposed

## Decision

A second data primitive joins bare `postgres()`: a Prisma Next-typed postgres
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0023: A Prisma App is one Project; a Stage is a Branch

## Status

Accepted

## Decision

A Prisma App lowers to **one Prisma Cloud Project**. The Modules inside the app
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# ADR-0024: A stage is a deploy-time environment; the CLI resolves its Project and Branch before Alchemy

## Status

Accepted

## Decision

An app is deployed to a named **stage** — an environment. The topology is
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
# ADR-0025: Name the unit of composition "Module", authored with `module()`

## Status

Accepted. Supersedes the unit-noun half of
[ADR-0014](ADR-0014-one-authoring-primitive.md): the unit
of composition is a **Module**, not a System. ADR-0014's single-primitive model
stands — exactly one authoring primitive with no separate `app()` construct; its
framework, package, and CLI names were later superseded by
[ADR-0026](ADR-0026-name-the-framework-prisma-compose.md) (**Prisma Compose**,
`@prisma/compose*`, `prisma-compose`).

## Decision

The unit of composition is a **Module**, authored with a single primitive,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
# ADR-0026: Name the framework "Prisma Compose"; "Prisma App" names the artifact

## Status

Accepted; the package-family enumeration below is consolidated by
[ADR-0027](ADR-0027-two-packages-compose-and-compose-prisma-cloud.md) — two
published packages, with the per-capability names becoming subpaths or internals
and `compose-alchemy` folding into `compose-prisma-cloud`. Supersedes the
framework-name, package-family, and CLI decisions of
[ADR-0014](ADR-0014-one-authoring-primitive.md). With
[ADR-0025](ADR-0025-name-the-unit-of-composition-module.md) having superseded the
unit noun, ADR-0014 remains authoritative only for the single-primitive model — one
authoring construct, no separate `app()`.

## Decision

The framework is **Prisma Compose**. The thing you build and deploy with it is a
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
# ADR-0027: Ship two packages — `@prisma/compose` and `@prisma/compose-prisma-cloud`

## Status

Accepted. Consolidates the package family enumerated in
[ADR-0026](ADR-0026-name-the-framework-prisma-compose.md) (which renamed it) down
to two published packages; supersedes that ADR's per-capability package list,
including `@prisma/compose-alchemy` as a separate package.

## Decision

The framework publishes exactly two **public** packages. The constraint is on the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
# ADR-0028: Organize packages into numbered domains and layers, enforced by dependency-cruiser

## Status

Accepted. Realizes the workspace-restructure consequence of
[ADR-0027](ADR-0027-two-packages-compose-and-compose-prisma-cloud.md) by adopting
Prisma Next's Domains → Layers → Planes organization (its Package-Layering doc and
ADR 140), with one addition of our own: a public domain that makes the published
surface a directory.

## Decision

`packages/` is organized into three numbered **domains**:
Expand Down
14 changes: 10 additions & 4 deletions docs/design/90-decisions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,19 @@ This directory contains append-only decision records.

Write an ADR when we “pick an answer” that future readers will need to understand and reference (even if the decision is provisional).

Keep ADRs short:
Keep ADRs short. The sections (see [the template](../99-process/templates/adr.md)):

- Context
- Decision
- Rationale
- Reasoning
- Consequences
- Alternatives
- Alternatives considered
- Related

**No `Status` section.** A per-ADR "Proposed / Accepted" line goes stale and adds
nothing — the record exists because we made the call. Supersession and
deprecation are recorded where a reader actually looks: the superseding ADR
names what it replaces (in its Decision/Related), and the Index below annotates
the superseded entry. A retired ADR stays in place; the Index says so.

## Index

Expand Down
4 changes: 0 additions & 4 deletions docs/design/99-process/templates/adr.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ for a reader a year from now:
about the decision and the module, not the project that produced them.
-->

## Status

Proposed | Accepted | Deprecated | Superseded by ADR-XXXX

## Decision

What we're doing, in a sentence or two. The first thing the reader should learn.
Expand Down