Skip to content

Naming Conventions

Accepted

This document is the canonical authority for naming. Every other document in the handbook conforms to it. Changes to canonical names require an ADR.

Principles

  1. Names describe function, not implementation. “Composer” says what it does, not how it does it.
  2. No redundant prefixes. We do not call everything “AlmathalSomething” — the context is implicit.
  3. Qualifiers added only when ambiguity exists. “AI Reviewer” and “Human Reviewer” because both kinds exist; just “Stitcher” because there is no human counterpart.
  4. Capitalization is for canonical terms. When referring to a defined platform concept in documentation, the term is capitalized (the Composer, an Adapter). When using the same word in its ordinary English sense, it is lowercase.
  5. Plurals are ordinary. Adapters, Modules, Archetypes. No invented plural forms.

Layers and Major Components

TermRefers To
Component LibraryThe curated collection of Adapters
Module LibraryThe curated collection of Modules
ComposerThe deterministic orchestrator
StitcherThe LLM layer that fills Seams and generates UI
AI ReviewerThe LLM that performs Output Review
Human ReviewerA platform team member performing curation ratification
Curation PipelineThe agent-and-human process for evolving the Libraries

Pipeline Stages

In order of execution:

  1. Spec Resolution
  2. Compatibility Validation
  3. Build Approval
  4. Seam Validation
  5. Scaffolding
  6. Stitching
  7. Build Verification
  8. Output Review

Each stage has a corresponding doer. Where the doer’s name might be ambiguous, the doer is qualified: Resolver (does Spec Resolution), Compatibility Validator, Build Validator (encompasses lint/compile/test), and so on.

Core Concepts

The vocabulary of composition itself:

TermRefers To
AdapterA single Component Library entry
ModuleA single Module Library entry
ArchetypeA reusable application template
SlotA position in an Archetype that holds an Adapter or Module
CapabilityA declared feature an Adapter or Module provides
ContractThe abstract interface Adapters/Modules with the same role share
SeamAn integration point filled by the Stitcher
ManifestThe JSON descriptor for an Adapter or Module
SpecThe resolved Archetype configuration for one build

Subcomponents Within the Composer

TermRefers To
ResolverPerforms Spec Resolution
Compatibility ValidatorPerforms Compatibility Validation
Seam ValidatorPerforms Seam Validation
Scaffolder RunnerInvokes external Scaffolders
Build ValidatorPerforms Build Verification (compile, lint, test, contract checks)
Briefing GeneratorProduces the human-readable Build Brief for Build Approval

External Tools

TermRefers To
ScaffolderAn external code-generation tool the Composer orchestrates

Examples (always referred to by their existing project names, not Almathal-coined names): JHipster, Spring Initializr, create-t3-app, Yeoman.

What We Do Not Call Things

To prevent drift, the following names are explicitly not used:

  • “Generator” — too generic; we have specific things (Composer, Stitcher, Scaffolders) that do generation.
  • “Engine” — overused in tech; not specific.
  • “AI” as a standalone noun (“the AI did X”) — always specify which LLM-driven role: Stitcher, AI Reviewer.
  • “Plugin” — Adapters are not plugins. They are curated library wrappers.
  • “Service” for layers of the platform — services run at runtime in generated apps. Almathal’s internal pieces are Composer, Stitcher, etc.
  • “Pipeline” for the whole platform — Pipeline refers specifically to the Pipeline Stages a generation moves through, not to the platform itself.
  • “Template” — Templates exist in scaffolders, but Almathal’s reusable application definitions are Archetypes, not “templates.”
  • “Recipe” — sometimes tempting metaphorically; not used canonically.

Casing in Code and Files

  • JSON keys and YAML keys: snake_case (e.g., adapter_slots, interface_contract)
  • Type identifiers in code: PascalCase (e.g., AdapterManifest, ArchetypeSpec)
  • File names: kebab-case (e.g., adapter-manifest-v1.mdx, 0007-central-manifest-registry.mdx)
  • Slugs in IDs: kebab-case within namespace segments (e.g., adapter:java/spring-data-jpa)
  • Capability and Contract IDs: namespace/name/v<N> (e.g., capability:persistence/transactions/v1)

Versioning Style

  • Adapters: semver matching the underlying library version (e.g., spring-data-jpa@3.2.4)
  • Modules: semver managed by the platform (e.g., module:auth/jwt-with-rbac@1.2.0)
  • Archetypes: semver managed by the platform (e.g., archetype:rag-chatbot@0.1.0)
  • Capabilities and Contracts: integer version only (v1, v2) — interfaces evolve in major versions only
  • Manifest schema and Archetype Spec schema: integer version (v1, v2)
  • Platform itself: semver

Cross-Reference

For formal definitions of every term, see the Glossary. For the immutable-vs-mutable identifier model, see the ID Scheme.