Version: 0.1.0 Status: Draft
A Strata Blueprints stack describes any subject, at any scale, in three layers. Every layer zooms into one element of the layer before it. The layers are the same everywhere; only the content changes. This is a guide, not a strict template: use what fits the subject and leave out what does not.
Strata Blueprints is a lightweight framework for spec-driven development, for anyone or anything. Models load it as context, so it stays small and high level, carrying context and intent. Use it for RFPs (requests for proposals), software documentation, project steering, standards, policies, ideas and more. As loose suggestions, Layer 1 reads like a product brief, Layer 2 like a high-level design and Layer 3 like a technical design for one part of the subject.
Short stacks. Write every layer the subject needs, and in each only the topics the subject needs, in their order. The required topics are, in Layer 1: Need, Target audience, Value, Focus, Assumptions and Decisions; in Layer 2: Parts, Seams between parts, Assumptions and Decisions; and in each Layer 3 part: Responsibility, Rules, Limits, Assumptions and Decisions. Every other topic is optional and left out when the owner gave nothing; add one when a maker would otherwise have to ask. Assumptions and Decisions are written as None. when empty. Mark each unknown fact Not supplied:. Costs, Risks and Open Concerns are written only when the owner gave something; an idea often has none.
<From> to <To>, the same in Layer 2 and Layer 3. A seam is about responsibility, not about where parts run.Every element has exactly one of these types, and a reader can tell which: stated beside its name, once for a list of one type (a topic such as Parts or Inside does so by its name), or plainly in its sentence. Subject and Part are types too, defined above.
sbp-detail-<part>.md file) or a stack of its own named in Layer 2 Standing; either way the parent never depends on how the part works inside.Every layer rests on the layers above it, Layer 1 highest (the innermost ring in Rule 1). These four rules keep the layers saying one thing.
Not supplied: <what is needed> there. Every element below that rests on it carries the gap, with its own Not supplied: or by citing the gap’s id.node scripts/strata-blueprints-lint.mjs --impact <id> <blueprint or folder> and settle each. A Limit cites its Layer 1 quality by name, so when a quality changes, re-read every Limit that cites it.Reason: and the ids it cites are its basis. When either changes, ask the decision again.assets/ of the skill folder. Optional topics are marked (optional).
strata-blueprints-template.md, the full template. It is authoritative; the three cuts follow it.strata-blueprints-template-layer-1.md or strata-blueprints-template-layer-2.md.strata-blueprints-template-layer-3.md, one entry for each part.# <Subject> title (see “A stack in separate files”).- V1. Given ..., when ..., then .... Ids are optional.Intent, Audience, a Success test written as Given, When, Then, and its Contents in dependency order. Each topic carries three parts: how to write it, what to ask the owner and what to check. Each layer also ends with a check of the whole layer. They are held in one guide file per layer, strata-blueprints-guide-layer-1.md, strata-blueprints-guide-layer-2.md and strata-blueprints-guide-layer-3.md, loaded when that layer’s turn comes.
A stack stands complete as one document. It may instead be written as one file per layer in one folder. Keep one document for an idea, for a stack that stops at Layer 2, and for a few small parts. Split when a part’s Detail is built separately, changes on its own schedule or has its own owner, or when Layer 3 outweighs Layers 1 and 2 together.
The files sit flat in one folder. The lint finds them by name and ignores every other file.
sbp-vision.md holds Layer 1. There is one per stack.sbp-structure.md holds Layer 2, and any views at its end. There is one per stack.sbp-detail-<part>.md holds Layer 3 for one part: the heading ## Layer 3: Detail, its Scope: line and that part’s one ### <Part> (part) entry. <part> is the part’s name in Parts, in lower case, each run of characters other than letters and digits written as one hyphen, with no hyphen at either end.sbp- marks a blueprint file. strata-blueprints- marks the standard’s own files.Each file opens with the stack’s # <Subject> title and holds its layer exactly as the one document would. Only sbp-vision.md carries Version: and Status:. A view is a ## View: <name> section at the end of sbp-structure.md; there is no view file.
Ids name one thing in the whole stack. A file cites an id by the id alone, never by a file name, and only ids of its own layer or the layers inside it. Layer 3 ids count up across the detail files together, in the order of the parts in Parts.
Standing names each detail file, such as Ledger: sbp-detail-ledger.md. The files Standing names and the detail files in the folder are the same set. A part with no Detail has no file and no Standing line. The line described here belongs to a stack written as one document.
A part’s own stack is a subfolder named by the part’s lower-case name, holding that stack’s sbp- files; Standing reads Presence: own stack, presence/. A nested stack has its own ids and is checked by its own run. This guide describes the form; the lint does not descend into it.
Check a folder with node scripts/strata-blueprints-lint.mjs <folder>.
Views are not layers. A view is optional and refers inward. A view that stands on its own is a ## View: <name> section after Layer 3, or at the end of sbp-structure.md in a stack of separate files.
## View: Lifecycle section after Layer 3. It is written once for the subject, and again for any part whose lifecycle differs.
## View: Lifecycle section after Layer 3 with a Scope: line and one scenario (Given, when, then) for each stage that matters: production, service, upkeep, change, retirement.sbp-structure.md in a stack), with a Scope: line?A diagram supplements the text; the text is the source of truth. Use a diagram only where it clarifies; Layer 2 is where it helps most. Choose the simplest form that works:
A → B: what crosses.Every diagram has a title, one scope, and a key if it uses symbols, colours or shapes. Labels state intent, arrows point from the one that initiates, and no meaning rests on colour alone. The community garden example (strata-blueprints-example.md, beside this file) shows each form.
Every layer opens with a title and a one-line scope. A layer that uses symbols, colours or shapes carries a key. Every element has a name, a type, a one-line description and, where it applies, what it is made of. Every relationship has one label that states its intent and points from the one that initiates. Define terms and acronyms where first used. Never carry meaning by colour alone. One scope per view; never mix layers in one view.
Markup
Version: 0.1.0.Scope:, for example Scope: the whole app, divided into parts, with the seams between them and with the outside.### <Part> (part), with its topics as #### N. <Topic> in the layer’s order.- V1. Given …, when …, then …, cited by its path and its rule.## View: <name> section after Layer 3, or at the end of sbp-structure.md in a stack of separate files.Parent: <subject>, part <part> before its ## Layer 1: Vision heading, in its sbp-vision.md when split.Not supplied: <what is needed>.Diagrams (optional)
A diagram supplements the text, which is the source of truth; give it a title and, if it uses symbols, colours or shapes, a key. See Views across the layers, Diagrams, before drawing one.
Not supplied: <what is needed> and ask for it. Never invent it.How to write it entry in its layer file before writing the topic. Stop there for an idea with no numbers, rules or means given, or for a subject made of independent members.Check lines, its Check (whole layer) and its Success test. Aim for yes on every answer; where one is no, fix it or note why.Each Ask the owner entry in a layer file holds the grouped question, then the value and edge follow-up, then the usual Not supplied: case. Read the topic’s entry before asking about it.
Interview the owner. The owner’s intent comes as assertions to confirm or correct, and you derive the specifics from it. Skip the interview when the owner has already specified the subject in full. To fill Not supplied: items in an existing blueprint, make them the agenda.
questions.md beside the blueprint; its format is under The question log) with status open, and mark what the seed already answers.Ask the owner entry in its layer file first.Basis: and If wrong: only after the owner confirms.Not supplied: <what> with status not decided, and the interview moves on. Never ask why for a choice the owner never reasoned about; at most once, ask “did you consider an alternative?”.open when the owner stops become Not supplied:.Not supplied: too.Write a Markdown table beside the blueprint as questions.md, with this header row:
| id | topic | question | status | answer | changed |
status is open, answered or not decided.changed is yes, no or pending.Audit: for each rule, definition, state, trigger, reason, measure, seam, cost and risk you wrote, point to the seed line or answer that gives it. Delete what has no source, or write Not supplied: instead; an inference you keep is an Assumption with Basis: and If wrong:. End your reply with the counts: audited, deleted, marked, made Assumptions.
Not supplied:, and gains Layer 3 for a part when a maker needs it.None.. A figure, a severity or an answer the owner did not give is never invented: write Not supplied:, and Not rated for a severity. A decision, an assumption or a value scenario’s rule answers a risk; cite its id.Three companion examples, beside this guide, fill the layers, each one way to fill them, not a template:
strata-blueprints-example-todo-app/: a software product, all three layers, written as a stack of separate files. Its README.md names the files.strata-blueprints-example.md: a community garden, an idea with Vision and Structure only, written as one document.strata-blueprints-example-rfp.md: a library room booking service, a spec for others to answer: the issuer fixes the need, parts and limits, and the means are left to the bidder.A stack is done when anyone, person or model, can make the subject from it without asking. Light means no more than a maker needs, and no less. Every part has a place in Layer 2, with its Detail where a maker needs it, and every key scenario has a path through the parts.