Standards
Standards, projected from standard entities. Edit a standard entity and regenerate.
| Id | Title | Summary |
|---|---|---|
| Applications consume the substrate only through published surfaces | Applications consume the substrate only through published surfaces | - Application code under apps/ and shared libraries under packages/<ecosystem>/ reach SDLC capability only through a published surface — the sdlc CLI, a service’s HTTP/JSON API, or an API library (generated or explicitly authored) in packages/<ecosystem>/ — never by importing the substrate (solutions/ontological/lib/, later src/) directly. The dependency arrow points inward, never outward into a harness, and never down into a domain from a domain-blind component. |
| Capabilities are born in lib; co-locate only skill glue | Capabilities are born in lib; co-locate only skill glue | - A capability — entity CRUD, policy checks, audits, anything general by nature — is born in solutions/ontological/lib regardless of caller count; only skill-specific glue co-locates with its skill, promoted to a shared home when a second real caller appears. |
| Code review rubric | Code review rubric | - A diff to any source file in this repo is judged on eight dimensions — functions, modularity/boundaries, duplication, comments, structure, naming, dead code, tests — each scored with the violation / tension / drift severities sdlc verify changes already emits, never an invented scale. |
| Composition spectrum — one op registry, deterministic-to-LLM placement, path[] surface | Composition spectrum — one op registry, deterministic-to-LLM placement, path[] surface | - Build every capability on a spectrum from pure-deterministic to near-pure-skill: place it at the leftmost point that fits, and favor moving left as it matures ([[P-0001-prefer-deterministic-over-llm]]). The deterministic-tail / LLM-head split is one point on that spectrum, not the only shape. The sdlc CLI is one generated adapter over a single op registry. Deliberate, bounded child-LLM steps are legitimate (with guardrails); only redundant re-interpretation of the same input is discouraged. |
| Deterministic, general extension points | Deterministic, general extension points | - Upstream skills expose stable, general hook points but never know this repo’s SDLC shape; move stable prose into deterministic code and plug local behavior into the same extension system a downstream consumer would use. |
| General skills stay general — no SDLC-project carve-outs in upstream code | General skills stay general — no SDLC-project carve-outs in upstream code | - A change under solutions/ontological/ must help any consuming project, not just this dev repo; SDLC-only carve-outs live under .sdlc/. |
| Markdown formatting for docs and skill prose | Markdown formatting for docs and skill prose | - Markdown in scope follows one settled formatting rule set — ATX headings, - bullets, explicit numbering, wikilinks for entities, language-tagged fences, hand-formatted tables, quoted-schema_version frontmatter, no raw HTML, prose wrapped at 100 — chosen for Obsidian-first authoring in [[D-0008-markdown-standard]]. |
| Moon project ids — derive by default; the crate holds the bare name | Moon project ids — derive by default; the crate holds the bare name | - Moon resolves a project by two names: an id (directory name, or explicit id:) and an alias taken from the manifest — Cargo.toml’s package name for Rust, package.json’s for JS/TS. Both work in moon run. |
| Research third-party products by observation | Research third-party products by observation | - Research a third-party product by running it and recording what it does. Never unpack, decompile or read its shipped source, and never commit reproduced source into this repo. |
| Review response policy | Review response policy | - A responding session buckets every review comment into fix, decline, or verify-first, minimizes churn, and stops once a PR hits orchestrator.review.max_rounds. |
| The baseline task vocabulary — one set of verbs, owned in three layers | The baseline task vocabulary — one set of verbs, owned in three layers | - Ten moon task names, the same in Rust and TypeScript: check, typecheck, lint, lint-fix, fmt, fmt-check, test, build, clean, dev. |
| The shape of a standalone CLI — one io seam, one parser, one exit-code rule | The shape of a standalone CLI — one io seam, one parser, one exit-code rule | - A standalone CLI exports main(argv, ctx) and never exits the process itself; the bin shim owns the exit. |
| UI surfaces consume the Determined design language | UI surfaces consume the Determined design language | - Every live UI surface styles itself through the Determined design language: --d-* tokens, dSemantics intents, and D* components — never raw palette classes, dark: variants, or Nuxt UI color/variant literals. |
| Vite pre-bundling under bun’s isolated linker — one root cause, three failures | Vite pre-bundling under bun’s isolated linker — one root cause, three failures | - Bun’s isolated linker hoists nothing, so a file:-wired host resolves none of a linked package’s dependencies from its own node_modules. Vite resolves optimizeDeps entries from the host, so a layer cannot fix its consumers by asking — the host has to be able to resolve the name itself. |
Emerging / retired:
| Id | Title | Summary | State |
|---|---|---|---|
| Application state lives in three planes, and each category has one home | Application state lives in three planes, and each category has one home | - Every persisted byte belongs to exactly one of three planes — the content plane (the user’s own data, wherever the user put it), the machine-local plane (what an application knows about this machine and about that data), and the ephemeral/runtime plane (what dies with a process) — and a category of state names its plane before it names a path. | open/draft |
| Authoring SKILL.md: direct instruction, equipped for reliability | Authoring SKILL.md: direct instruction, equipped for reliability | - A SKILL.md is the instruction an agent executes, not documentation about the skill — and its reliability comes from how it is phrased and how it is built. Phrase each line as direct, positive instruction with surgical rationale; equip the skill with a triggering description, freedom matched to fragility, decomposed steps with a verification step, progressive disclosure, tested formatting, examples where output matters, and an eval. Every rule carries the evidence tier it rests on. | open/draft |
| Desktop apps are tested web-first in a scratch root | Desktop apps are tested web-first in a scratch root | - A desktop app’s e2e suite runs the web build against the app’s real backend over HTTP, inside a scratch root that FLEET_ROOT sets up, launched by @sksizer/app-harness. | open/draft |
| Every entity ships a complete definition surface | Every entity ships a complete definition surface | - Every entity directory ships a fixed surface — schema.ts (the Zod frontmatter schema AND the markdown-contract body grammar, exported together), body-template.eta, definition.md, plus the optional obsidian-index.yaml — and is discoverable by its type: directory name, registration in the entity schema registry, and a [[D-ORMG-data-model]] entry. | open/draft |
| UI changes ship a human-reviewable screenshot index | UI changes ship a human-reviewable screenshot index | - A UI change ships screenshots of every surface it touches, organized for a human first: grouped by surface or category, captioned, with before and after where a surface changed. | open/proposed |
| UI work reuses components, ships stories and screenshot baselines | UI work reuses components, ships stories and screenshot baselines | - UI work in the determined suite ports an approved mock before it builds anything new, gives every new or changed component Storybook stories and a screenshot baseline, and shows reviewers before/after and mock/built screenshots. | open/proposed |