Add taxonomy and glossary for repo concepts

c8b33db3f5b2 · AtlantisPleb · · parent 3801479f18d7

Add taxonomy and glossary for repo concepts

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

Not deployed through the forge lane

No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.

Changed files

  • added docs/taxonomy.md

Diff

1 file changed, +177 -0

docs/taxonomy.md added +177

@@ -0,0 +1,177 @@

1
# OpenAgents taxonomy and glossary
2
3
What each word means here, and which layer it belongs to.
4
5
This exists because the words collide. The forge and GitHub are both "the
6
remote", a push looks like a deployment, and `machines.ex` sits beside a
7
product that says "computers". Each confusion costs time or, worse, sends code
8
to the wrong authority. A term is in this document when getting it wrong has
9
already cost something, or clearly will.
10
11
Read the layer diagram first. Most collisions are two layers using one word.
12
13
## The layers
14
15
```text
16
  browser
17
18
19
  Phoenix app ─────────── one public application: LiveViews, JSON APIs,
20
    │                     git plane, deployment plane
21
22
  domain contexts ─────── accounts, turns, memory, issues/projects,
23
    │                     scv, work, repositories, forge…
24
25
  PostgreSQL ──────────── the sole durable authority
26
```
27
28
Beside that stack, and often confused with it:
29
30
```text
31
  forge ───────── the canonical git remote at openagents.com
32
  github ──────── a read-only mirror, never authority
33
  receipt ─────── append-only durable evidence of something that happened
34
  invariant ───── a contract in INVARIANTS.md with an executable proof
35
```
36
37
## Terms
38
39
### Forge and source control
40
41
**Forge** — the self-hosted Git remote at `openagents.com`, canonical source
42
control. Inside `OpenAgents.Forge` it has two separate planes:
43
44
- **Git plane** — authenticated Git traffic, repositories, push receipts,
45
  mirroring.
46
- **Deployment plane** — promote an exact SHA, build, deploy, record receipts.
47
48
The planes are deliberately separate. **A push never promotes itself.**
49
50
**WAL (durable push record)** — every accepted push is recorded durably in
51
PostgreSQL, and the site is served from that record. A push is a receipt, not
52
a deployment.
53
54
**MirrorWatch** — the component that exports accepted `main` commits from the
55
forge to GitHub. GitHub is a mirror only; nothing on GitHub can affect what
56
the forge serves.
57
58
**Push to the forge, never to GitHub:**
59
60
```sh
61
git push openagents HEAD:main
62
```
63
64
The `origin` remote is the GitHub mirror. Pushing there directly leaves the
65
forge behind a mirror it does not know about.
66
`ops/ci/push-remote-check.sh` refuses a non-forge push.
67
68
### GitHub-shaped API
69
70
**`/api/v3`** — a bounded, GitHub-shaped REST subset served by this
71
application: issues, comments, labels, assignees, milestones, and Projects V2
72
(`projectsV2`). It mimics GitHub REST shapes as a compatibility aid and
73
implements only a subset of the real API. Authorization here comes from API
74
tokens with scopes such as `forge:write`; path similarity to GitHub proves
75
nothing about authorization.
76
77
**GitHub contexts (`OpenAgents.GitHub`, `github_oauth`)** — code that talks
78
*to* GitHub: OAuth identity, delegated repository access. Tokens are
79
encrypted server-side and never reach the browser. Do not confuse these with
80
the issue and project controllers, which serve the local forge.
81
82
### Receipts
83
84
**Receipt** — append-only durable evidence that something happened. The word
85
spans several families, each tied to its own invariants: turn receipts,
86
push receipts, build and deployment receipts, consent receipts, outcome
87
receipts. Always say which one when it matters.
88
89
### Turns and conversation
90
91
**Turn** — one user-to-assistant exchange: paired durable messages, tool
92
steps, provider steps, and an immutable provenance receipt
93
(`INVARIANTS.md`, TURN-001..005).
94
95
**Sarah** — a persona and behavior package inside OpenAgents, not a separate
96
service. Persona artifacts are pinned by SHA under `priv/sarah/persona/`.
97
Architecture forbids treating Sarah as a service boundary.
98
99
**Blueprint** — an immutable revisioned snapshot of typed platform facts that
100
inform Sarah's expression. It informs; it never grants capability or
101
authority.
102
103
**Memory planes** — account-scoped, consent-gated projections: conversation
104
recall (hybrid lexical + semantic), profile memory, learned preferences,
105
experience memory, graph memory. All disposable except the authoritative
106
messages and tool steps underneath them.
107
108
### Execution
109
110
**SCV** — the durable coding-execution and supervision contract: a driver
111
(OpenCode or a native Elixir loop), an environment, and a runner. The SCV owns
112
policy, lifecycle, budgets, and receipts. It is not a container and not a
113
model.
114
115
**Work job (`work_jobs`)** — a durable, budgeted delegated job row started by
116
`deep_work.v1`. Delegation, not execution.
117
118
**Computers** — paired machine credentials used for agent jobs. This is the
119
current product vocabulary. `/machines` is a permanent legacy redirect, and
120
the `machines.ex` context still carries the old name in code. Say
121
"computer" in product copy; expect `machine` in module names.
122
123
### Issues and projects
124
125
**Issues work system** — first-party issues, labels, milestones, assignees,
126
and projects shaped like GitHub's Projects V2, backed by `OpenAgents.Issues`
127
and sibling contexts, served at `/api/v3`. Tests are the contract; the
128
assessment document `docs/github-api-issues-projects-assessment.md` is the
129
source of truth for paths and JSON shape.
130
131
**Effect CLI** — the TypeScript CLI (`@openagentsinc/cli`) that calls this
132
surface via `openagents api`.
133
134
### Programs and modules
135
136
**Program artifact** — a model program stored as immutable digest-pinned data,
137
promoted offline with human approval. Shadow runs have no live effect.
138
139
**Module artifact** — an admitted, digest-pinned capability module
140
(`openagents.module_artifact.v1`). Not an Elixir module. Both words appear in
141
the codebase; say which one you mean.
142
143
### Invariants and decisions
144
145
**Invariant** — a contract recorded in `INVARIANTS.md` with an ID (for
146
example `DATA-001`) and a named executable proof, verified by
147
`ops/ci/docs-check.exs`. Unlike omega's deltas, these are not forks from
148
upstream; they are first-party contracts. An invariant without a passing
149
proof is a wish.
150
151
**ADR** — a decision record in `docs/decisions/` (`0001` through `0007`).
152
153
### UI system
154
155
**Basecoat** — vendored component CSS in `assets/vendor/basecoat/components/`.
156
Import components individually; never import a bundle.
157
158
**OpenAgents style pack** — `assets/css/openagents.css`: identity tokens,
159
motion, radius, color. Must be the last import so its declarations win.
160
161
**`OpenAgentsWeb.UI`** — the ~22 HEEx primitives (`button/1`, `card/1`, …).
162
Variants are data attributes (`data-variant="primary"`), not classes. There
163
is exactly one component system; adding a second is forbidden.
164
165
## Naming rules
166
167
1. **Say which remote.** Forge = authority, GitHub = mirror. Never bare "the
168
   repo" where both could apply.
169
2. **A push is not a deploy.** Promotion requires an operator-authorized
170
   target; no Git event promotes anything.
171
3. **GitHub-shaped is not GitHub.** Say "the `/api/v3` surface" or "GitHub"
172
   depending on which server answers.
173
4. **Computer, not machine**, in product copy — even though the code still
174
   says `machine`.
175
5. **Name the receipt.** Turn, push, build, deployment, consent, outcome.
176
6. **Module means two things.** Elixir module or module artifact — say which.
177
7. **An invariant is not true until its proof runs green.**

This page updates live while a promote is in flight · changelog