Status: Draft v1 (language-agnostic)
Purpose: {One sentence — what this service does.}
{Service Name} is a long-running automation service that {core verb phrase describing the main loop}.
The service solves {N} operational problems:
- {Problem 1: what manual/broken process it replaces.}
- {Problem 2: what isolation or safety property it provides.}
- {Problem 3: what versioning or configuration benefit it adds.}
Important boundary:
- {Service Name} is a {role description — what it IS}.
- {What it is NOT — what adjacent concerns live elsewhere.}
- A successful run may end at {handoff condition}, not necessarily {naive completion state}.
- {Verb-led phrase. Specific enough to test.}
- {Each goal is one bullet.}
- {Noun/gerund phrase. Clarifies scope boundary.}
- {Parenthetical context when useful: "(That logic lives in {X}.)" }
-
{Component Name}- {Verb-led sentence: what it does.}
- {Second sentence if needed for scope.}
-
{Component Name}- {Description.}
{Service Name} is easiest to port when kept in these layers:
-
Policy Layer(repo-defined)- {What the team owns and versions.}
-
Configuration Layer(typed getters)- {What the config system provides.}
-
Coordination Layer(orchestrator)- {Core scheduling and state management.}
-
Execution Layer({execution unit})- {Filesystem, subprocess, or external call lifecycle.}
-
Integration Layer({adapter name})- {External API interaction and normalization.}
-
Observability Layer(logs + optional surfaces)- {Operator visibility.}
- {External API or service.}
- {Filesystem or storage.}
- {Tooling or executables.}
- {Authentication requirements.}
{One sentence: what this entity represents and where it is used.}
Fields:
field_name(type)- {Semantic description.}
field_name(type, constraints)- {Description.}
- Default:
value