Skip to content

refactor: rename the authored hierarchy to Project, Application and Process - #100

Merged
ExtraToast merged 1 commit into
mainfrom
refactor/project-application-process
Sep 14, 2026
Merged

ExtraToast merged 1 commit into
mainfrom
refactor/project-application-process

Conversation

@ExtraToast

Copy link
Copy Markdown
Contributor

Part of #35. Lands before the Task 0 proposal update, which will use these words.

What this branch does

The authored hierarchy is renamed: Domain, Service and Workload become Project, Application and Process, and the layer-1 document Service Intent becomes Project Intent. No decision changes. ADR 0116 records why, and every ADR that used the old words carries an amendment note.

Each old word already meant something else. "Service" had five meanings across deployment tools: a network endpoint (Kubernetes), an independently released unit (Compose, ECS, Railway, Cloud Run), a microservice (Dapr), an add-on (Heroku) and a port section (Score). The rendered output also contains Kubernetes Service objects, so one chapter used one word for two things. "Domain" reads as a DNS name in a model that authors hostnames. "Workload" means one runnable part in Kubernetes and the whole bundle in Score. The replacements are the common names for the same concepts: an application is the unit several processes are released in (Heroku, Fly.io, Cloud Foundry, OAM, Radius), a process is one runnable part (Heroku, Cloud Foundry, Fly.io), and a project is one file holding several apps (Compose, Railway).

The rename reaches authored syntax, because nothing parses it yet:

  • YAML keys domain, services, workloads and the edge and route keys become project, applications, processes, application and process, and *.domain.yml becomes *.project.yml.
  • E_DUPLICATE_DOMAIN, E_DUPLICATE_SERVICE_ID, E_DUPLICATE_WORKLOAD_NAME, E_UNRESOLVED_SERVICE and E_WORKLOAD_RBAC_GRANT become their Project, Application and Process forms.
  • Chapter 10 is 10-project-intent.md. Nine model ADR files, the chapter 10 diagram, the negative fixture directories and the publish workflow example are renamed; ADR numbers are unchanged, so a citation by number still resolves.
  • Diagram labels in the .drawio.svg files say Project, Application and Process.

The decisions later tickets inherit

Layer 3 keeps the target's spellings. A rendered workload.yaml, a Kubernetes Service, ServiceAccount and ServiceMonitor are untouched, as 0097 already requires. No rendered manifest byte changed.

Three words keep a second meaning, recorded in CONTEXT.md. Service, Workload and Domain are listed as retired model words. "Domain" stays for DNS names, ADR decision domains and the compiler hexagon's core ring (src/domain, ADRs 0065 and 0066). "Application" and "process" are also ordinary English, and the hexagon has an application/ ring; the capitalised word is the model level.

Historical evidence is not rewritten. Citations of files from the previous schema (knowledge.service.yml:110, the service-repo v2 shape, spec.workloads) keep the names those files had. review/ and docs/mde/ are untouched.

Tickets. 25 open issues were rewritten with the new words on GitHub, including the titles of #38 and #84. Their links to renamed ADR files resolve once this merges.

Verification

  • npm run verify exit 0: ADR lint: 93 files clean, link lint: 171 files clean, requirements lint: 14 rows clean, rules lint: 60 rules clean, 19 pending, docs lint: 31 claim(s) clean, 305 tests passed, coverage unchanged.
  • node scripts/lint-adrs.ts emf reports 9 files clean.
  • Every remaining Service, Workload and domain in the specification was listed and checked by hand: what is left is the Kubernetes object, a rendered file name, a cluster DNS domain, a decision domain, or a historical citation.

@ExtraToast ExtraToast added type: refactor Code structure change without intended behavior change. area: deploy homelab-deploy, deploy-v2, manifests, and rollout flow. component: docs Runbook, README, API docs, or documentation tooling. labels Sep 14, 2026
@ExtraToast ExtraToast self-assigned this Sep 14, 2026
@ExtraToast
ExtraToast merged commit 7855d44 into main Sep 14, 2026
16 checks passed
@ExtraToast
ExtraToast deleted the refactor/project-application-process branch September 14, 2026 12:28
ExtraToast added a commit that referenced this pull request Sep 15, 2026
…er 10 (#119)

* docs: fix the platform example README's leftover Traefik Application and missing hardening row

The tiers table cell still read "Application" where #100's rename should
have left the Kubernetes Service alone; #107 restored other external
spellings but missed this one. Also add the row for platform.intent.yml's
hardening block, which the table never carried: one posture for every
container, no per-control exception surface, decided by 0016.

* docs: stop the data example's rendered README from writing alertClass: none

Chapter 10 is explicit that Alert Class has no none member: an omitted
observability block already says "no monitoring", and a member that means
"I wrote the field to say I did not want the field" is ceremony. valkey's
row said the Application "declares alertClass: none", which is not a value
this schema accepts; it declares no observability block at all.

* docs: make the negative fixtures' missing .project.yml suffix a stated convention

spec/v1/examples/negative/*/intent*/ fixtures stand in for Intent Fragments
already handed to composition, not files in a repository's platform/ tree,
and renaming them to .project.yml would pull them into three tests that
discover project files by that suffix, at least one of them
(duplicate-process-name) failing where those tests expect every file to
parse clean. Renaming is left for its own change; this commit instead
states the convention in chapter 10 so the suffix difference reads as a
rule rather than an oversight, and none of the three tests' selections
move: 14 .project.yml files for the diagram test, 4 cases for the Project
Intent test, and (by inspection of its source, without running Maven) 4
files for the EMF worked-examples test, which walks the same suffix
excluding refusals/.

* docs: finish the hierarchy rename in chapter 10's selector sentence

The label-set section's hypothetical alternate labelling reads "would make
every Process of a multi-Process Service selector-ambiguous". Before #100
this said "multi-Workload Service"; the rename converted Workload to
Process but left this one "Service" unconverted, where it names what the
estate now calls an Application (compare "a two-Process Application" in
chapter 30) rather than a Kubernetes Service, which the surrounding
paragraph never mentions: it is about a Deployment's pod selector. It now
reads "multi-Process Application".

Re-grepped spec/v1/*.md for Service used as the retired hierarchy word: the
three remaining occurrences (10-project-intent.md's IngressRoute paragraph,
30-deliverables.md's adapter table, 16-dependencies.md's diagram node) are
all the Kubernetes object and are left alone.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: deploy homelab-deploy, deploy-v2, manifests, and rollout flow. component: docs Runbook, README, API docs, or documentation tooling. type: refactor Code structure change without intended behavior change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant