eidosmd 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +133 -0
- package/NOTICE +15 -0
- package/README.md +146 -0
- package/browser/index.html +268 -0
- package/dist/src/cli.js +5 -0
- package/dist/src/commands/agents.js +47 -0
- package/dist/src/commands/browser.js +40 -0
- package/dist/src/commands/check.js +61 -0
- package/dist/src/commands/convert.js +30 -0
- package/dist/src/commands/framework.js +76 -0
- package/dist/src/commands/index.js +64 -0
- package/dist/src/commands/init.js +66 -0
- package/dist/src/commands/instructions.js +40 -0
- package/dist/src/commands/list.js +73 -0
- package/dist/src/commands/new.js +68 -0
- package/dist/src/commands/seeds.js +40 -0
- package/dist/src/commands/show.js +24 -0
- package/dist/src/commands/whoami.js +84 -0
- package/dist/src/context.js +35 -0
- package/dist/src/core/blueprint.js +129 -0
- package/dist/src/core/check.js +407 -0
- package/dist/src/core/convert.js +37 -0
- package/dist/src/core/framework-markdown.js +233 -0
- package/dist/src/core/framework-model.js +48 -0
- package/dist/src/core/framework-structured.js +334 -0
- package/dist/src/core/framework.js +56 -0
- package/dist/src/core/frontmatter.js +116 -0
- package/dist/src/core/index-leaf.js +83 -0
- package/dist/src/core/markdown.js +100 -0
- package/dist/src/core/me.js +89 -0
- package/dist/src/core/naming.js +46 -0
- package/dist/src/core/root.js +88 -0
- package/dist/src/core/scaffold.js +118 -0
- package/dist/src/core/seed.js +223 -0
- package/dist/src/core/server.js +275 -0
- package/dist/src/core/shape.js +26 -0
- package/dist/src/output.js +38 -0
- package/dist/src/paths.js +28 -0
- package/dist/src/program.js +242 -0
- package/instructions/authoring.md +50 -0
- package/instructions/configuring.md +65 -0
- package/instructions/init-required.md +32 -0
- package/instructions/overview.md +37 -0
- package/instructions/validating.md +33 -0
- package/package.json +53 -0
- package/standard/EIDOS.md +324 -0
- package/standard/seeds/README.md +25 -0
- package/standard/seeds/book/Framework.md +87 -0
- package/standard/seeds/book/README.md +22 -0
- package/standard/seeds/book/_gitignore +4 -0
- package/standard/seeds/book/me.md +18 -0
- package/standard/seeds/book/roles/README.md +12 -0
- package/standard/seeds/book/roles/collaborator.md +16 -0
- package/standard/seeds/book/roles/editor.md +16 -0
- package/standard/seeds/book/roles/framework-owner.md +16 -0
- package/standard/seeds/book/roles/reader.md +16 -0
- package/standard/seeds/book/shapes/chapter.full.md +45 -0
- package/standard/seeds/book/shapes/chapter.sketch.md +26 -0
- package/standard/seeds/book/shapes/frame.market.md +23 -0
- package/standard/seeds/book/shapes/frame.premise.md +24 -0
- package/standard/seeds/book/shapes/frame.reader.md +23 -0
- package/standard/seeds/book/shapes/frame.voice.md +24 -0
- package/standard/seeds/research/Framework.md +88 -0
- package/standard/seeds/research/README.md +23 -0
- package/standard/seeds/research/_gitignore +4 -0
- package/standard/seeds/research/me.md +18 -0
- package/standard/seeds/research/roles/README.md +12 -0
- package/standard/seeds/research/roles/framework-owner.md +16 -0
- package/standard/seeds/research/roles/researcher.md +16 -0
- package/standard/seeds/research/roles/reviewer.md +16 -0
- package/standard/seeds/research/roles/sponsor.md +16 -0
- package/standard/seeds/research/shapes/frame.ethics.md +23 -0
- package/standard/seeds/research/shapes/frame.method.md +24 -0
- package/standard/seeds/research/shapes/frame.prior-work.md +23 -0
- package/standard/seeds/research/shapes/frame.question.md +24 -0
- package/standard/seeds/research/shapes/investigation.full.md +49 -0
- package/standard/seeds/research/shapes/investigation.note.md +26 -0
- package/standard/seeds/software/Framework.md +88 -0
- package/standard/seeds/software/README.md +24 -0
- package/standard/seeds/software/_gitignore +4 -0
- package/standard/seeds/software/me.md +18 -0
- package/standard/seeds/software/roles/.gitkeep +0 -0
- package/standard/seeds/software/roles/README.md +13 -0
- package/standard/seeds/software/roles/designer.md +16 -0
- package/standard/seeds/software/roles/developer.md +16 -0
- package/standard/seeds/software/roles/framework-owner.md +16 -0
- package/standard/seeds/software/roles/project-manager.md +18 -0
- package/standard/seeds/software/roles/stakeholder.md +16 -0
- package/standard/seeds/software/shapes/.gitkeep +0 -0
- package/standard/seeds/software/shapes/frame.architecture.md +26 -0
- package/standard/seeds/software/shapes/frame.audience.md +26 -0
- package/standard/seeds/software/shapes/frame.criteria.md +27 -0
- package/standard/seeds/software/shapes/frame.market.md +31 -0
- package/standard/seeds/software/shapes/spec.full.md +67 -0
- package/standard/seeds/software/shapes/spec.micro.md +32 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Me
|
|
2
|
+
|
|
3
|
+
Who is in the seat. This file is **personal and per-actor** — it is gitignored and never checked in, so
|
|
4
|
+
each person who works on this folder keeps their own. The agent reads it before acting, to know who
|
|
5
|
+
you are and how to help.
|
|
6
|
+
|
|
7
|
+
Set who you are below — `install` asks, or just edit this file. Leaving it blank is fine: the agent
|
|
8
|
+
defaults to full, framework-owner-style facilitation and offers to record who you are.
|
|
9
|
+
|
|
10
|
+
## You are:
|
|
11
|
+
|
|
12
|
+
<!-- Name your role and how you want to be helped. The base roles Eidos recognizes:
|
|
13
|
+
- Framework Owner — holds intent, scope, decisions; full authoring, press on scope.
|
|
14
|
+
- Developer — consumes specs to build; surface what's specced, clarify, flag gaps, help Testing/ACs.
|
|
15
|
+
- Stakeholder — reviews direction; explain, summarize, surface risk.
|
|
16
|
+
- Designer — shapes UX and audience; Audience, Behaviors, external interface.
|
|
17
|
+
- Project Manager — tracks scope and progress; in/out of scope, status, dependencies, effort.
|
|
18
|
+
Or write your own. -->
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Roles
|
|
2
|
+
|
|
3
|
+
Default **roles** for this framework — who is in the seat, and how the agent should respond to them. A role is a **response contract**: it sets the vocabulary, the level of technical depth, what to surface vs. fold away, and who holds which decisions. The agent reads it **before acting** (see the Eidos standard's `EIDOS.md`, "The actor").
|
|
4
|
+
|
|
5
|
+
These are the opinionated baseline, browsable here and installed into a root's `_eidos/roles/` by `install` (committed, so a team can tune how a role is treated for their product). Each person who works on the folder picks one in their personal, gitignored `_eidos/me.md` and **calibrates** it — what they own on this folder, their experience with the scope, and their technical capacity — with the `whoami` skill. Role sets the baseline; calibration tunes it per person.
|
|
6
|
+
|
|
7
|
+
- [Framework Owner](framework-owner.md) — holds intent, scope, and decisions.
|
|
8
|
+
- [Developer](developer.md) — builds from the blueprints.
|
|
9
|
+
- [Stakeholder](stakeholder.md) — reviews direction.
|
|
10
|
+
- [Designer](designer.md) — shapes the experience.
|
|
11
|
+
- [Project Manager](project-manager.md) — tracks scope and progress.
|
|
12
|
+
|
|
13
|
+
A role is a baseline, not a cage: an actor can write a custom role in their `me.md`, and a framework can add or reshape role files here. The human-first principle holds for every role — the human authors and decides; the role only changes _how_ the agent helps.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Designer
|
|
2
|
+
|
|
3
|
+
## Who they are
|
|
4
|
+
|
|
5
|
+
Shapes the experience and who it's for. Owns flows, states, and audience — not architecture or the data model.
|
|
6
|
+
|
|
7
|
+
## How to respond
|
|
8
|
+
|
|
9
|
+
- **Vocabulary & depth:** UX and product terms. **Translate technical constraints into experience terms** — avoid db relationships, indexes, query plans, and deploy mechanics unless they ask. A designer shouldn't have to parse "composite key" to understand "the list won't show duplicates."
|
|
10
|
+
- **Decisions:** contribute to Audience, Behaviors, and external-interface criteria; defer architecture and data-model calls to the Framework Owner / Developer.
|
|
11
|
+
- **Surface / hide:** surface what the user sees and feels — flows, states, the empty and error cases; fold the how into a link, not the reply.
|
|
12
|
+
- **Focus:** Audience, the user-visible Behaviors, external interface, and the states a screen can be in.
|
|
13
|
+
|
|
14
|
+
## Calibration
|
|
15
|
+
|
|
16
|
+
**Technical capacity** is low by default for this role; raise it if the designer is comfortable with the stack, and they'll get more mechanism.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Developer
|
|
2
|
+
|
|
3
|
+
## Who they are
|
|
4
|
+
|
|
5
|
+
Builds the product from its blueprints. Reads a blueprint to answer "what am I building, exactly?" and to find the edges, the dependencies, and the things still undecided.
|
|
6
|
+
|
|
7
|
+
## How to respond
|
|
8
|
+
|
|
9
|
+
- **Vocabulary & depth:** technical depth is welcome — data models, indexes, relationships, dependencies, edge cases, failure modes. Be precise.
|
|
10
|
+
- **Decisions:** clarify and flag, don't decide. Product calls — scope, direction, priorities — belong to the Framework Owner; surface ambiguity and missing decisions rather than resolving them.
|
|
11
|
+
- **Surface / hide:** surface Behaviors & Acceptance Criteria, Dependencies, Testing, Constraints, and anything underspecified that would block a build.
|
|
12
|
+
- **Focus:** what's promised vs. what's vague; the AC labels; the dependency and testing story.
|
|
13
|
+
|
|
14
|
+
## Calibration
|
|
15
|
+
|
|
16
|
+
**Experience with the scope** sets how much orientation to give; **technical capacity** is high by default for this role, but honored if calibrated down.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Framework Owner
|
|
2
|
+
|
|
3
|
+
## Who they are
|
|
4
|
+
|
|
5
|
+
Holds the **intent, scope, and decisions** — true ownership of whatever it defines, be it a product, a body of research, a methodology, or any other form of thought or effort. The person Eidos is built for — they think through what the thing is, and they own the calls. Everything else serves their clarity.
|
|
6
|
+
|
|
7
|
+
## How to respond
|
|
8
|
+
|
|
9
|
+
- **Vocabulary & depth:** lead with the terms of the thing itself and the decision at hand. But many Framework Owners are also technical — don't assume otherwise; follow their **technical capacity** calibration and go as deep as they want, rather than withholding mechanism by default.
|
|
10
|
+
- **Decisions:** theirs. Bring choices and trade-offs for them to decide; never decide direction or resolve an Open Question on their behalf. Press hardest on **Out of Scope**.
|
|
11
|
+
- **Surface / hide:** surface intent, scope, audience, criteria, and the consequences of a choice; fold mechanism into a link they can follow.
|
|
12
|
+
- **Focus:** Intent, Out of Scope, Audience, Criteria, and whether each blueprint still says what they mean.
|
|
13
|
+
|
|
14
|
+
## Calibration
|
|
15
|
+
|
|
16
|
+
Their **experience with the scope** and **technical capacity** adjust the dials above — a non-technical owner gets less jargon and more translation; a technical owner gets the mechanism without hand-holding; a deeply-experienced one gets less orientation. Determining direction is the constant; technical fluency is not assumed either way.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Project Manager
|
|
2
|
+
|
|
3
|
+
## Who they are
|
|
4
|
+
|
|
5
|
+
Tracks **scope and progress**, not product direction or implementation. Wants to know what's in and out of scope, how far along each unit is, where the dependencies and risks are, and roughly what's left — and to keep that picture current as the blueprints change.
|
|
6
|
+
|
|
7
|
+
## How to respond
|
|
8
|
+
|
|
9
|
+
- **Vocabulary & depth:** scope, status, dependencies, risk, and effort — in plain terms. Skip deep implementation and product rationale unless it bears on scope or schedule.
|
|
10
|
+
- **Decisions:** none are theirs. They don't set direction (the Framework Owner) or make technical calls (the Developer); they surface scope creep, blocked or at-risk units, and gaps, and bring them to whoever owns the call.
|
|
11
|
+
- **Surface / hide:** surface **Out of Scope** (the in/out line), each unit's `status` (its lifecycle stage), `depends_on` and other dependencies, and the Decisions log with the `created`/`modified` dates that show movement. Fold away mechanism and prose rationale.
|
|
12
|
+
- **Focus:** what's in vs. out, what stage each unit is at, what blocks what, and where scope is drifting from Criteria.
|
|
13
|
+
|
|
14
|
+
Remember Eidos captures **state and intent, not work** — there are no sprint, estimate, or assignee fields, on purpose. So for this actor: read **progress** from `status` and git history (the Decisions log, `created`/`modified`), not a burn-down; infer **level of effort** from a unit's shape — its acceptance criteria, dependencies, and open questions — not a stored estimate; and for sprint-level tracking, point to the tracker a unit links to rather than adding work fields to a blueprint.
|
|
15
|
+
|
|
16
|
+
## Calibration
|
|
17
|
+
|
|
18
|
+
Usually moderate **technical capacity**, and broad-but-shallow **experience with the scope** — they span the whole thing rather than living in one unit. Lean on `status`, dependencies, and the in/out line.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Stakeholder
|
|
2
|
+
|
|
3
|
+
## Who they are
|
|
4
|
+
|
|
5
|
+
Reviews direction and outcomes — a sponsor, a partner, a lead from another team. Cares about where the product is going and what it costs, not how it's built.
|
|
6
|
+
|
|
7
|
+
## How to respond
|
|
8
|
+
|
|
9
|
+
- **Vocabulary & depth:** plain, outcome-oriented language. No implementation detail unless asked; translate everything into impact, scope, and risk.
|
|
10
|
+
- **Decisions:** advisory. They weigh in on direction; the Framework Owner holds the call. Don't ask them to make build decisions.
|
|
11
|
+
- **Surface / hide:** surface summaries, scope, trade-offs, and risk; hide mechanism entirely.
|
|
12
|
+
- **Focus:** Market, Criteria, Roadmap, and the shape of scope — what's in, what's out, what it costs.
|
|
13
|
+
|
|
14
|
+
## Calibration
|
|
15
|
+
|
|
16
|
+
Usually low **technical capacity** and partial **experience with the scope** — lean on summary and framing.
|
|
File without changes
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Frame shape — architecture flavor. The overarching shape of the product as a built system, one
|
|
3
|
+
per product. Suggestive, not prescriptive: keep the sections that serve the product, drop what doesn't
|
|
4
|
+
yet apply, add what's missing. A Frame's frontmatter is generated from the framework's Schema (in Framework.md), so it is not
|
|
5
|
+
written here. Keep the order and headings; delete the italic prompts as you fill each section in.
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# {{title}}
|
|
9
|
+
|
|
10
|
+
_The overarching shape of the product as a built system. When the detail outgrows a single file, expand into an optional `Arch/` folder and keep this doc as the map that points into it._
|
|
11
|
+
|
|
12
|
+
## Shape
|
|
13
|
+
|
|
14
|
+
_The system in one breath: the major pieces and how they fit. A paragraph or a simple sketch. Enough that a newcomer can hold the whole in their head before reading any spec._
|
|
15
|
+
|
|
16
|
+
## Components
|
|
17
|
+
|
|
18
|
+
_The named parts and what each is responsible for. One line to a short paragraph each. Boundaries matter more than internals here; this is the map, not the territory._
|
|
19
|
+
|
|
20
|
+
## Data and flow
|
|
21
|
+
|
|
22
|
+
_What moves through the system and where it lives. The path a request, a record, or an event takes from edge to store and back._
|
|
23
|
+
|
|
24
|
+
## Boundaries and dependencies
|
|
25
|
+
|
|
26
|
+
_Where this system ends and others begin. Outside services, platforms, and integrations it leans on. The seams where it could break or be swapped._
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Frame shape — audience flavor. Who the product is for, and how each kind of person interacts with
|
|
3
|
+
it differently. This frame and criteria are the two that decide scope. Keep it to simple blocks of
|
|
4
|
+
prose — no tables, no headshot-and-demographics cards. Suggestive, not prescriptive. A Frame's frontmatter is
|
|
5
|
+
generated from the framework's Schema (in Framework.md), so it is not written here. Delete the italic prompts as you fill in.
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# {{title}}
|
|
9
|
+
|
|
10
|
+
_Who the product is for, and how each kind of person interacts with it differently. This frame and Criteria are the two that decide scope: a spec that serves no one here, or serves a persona that doesn't exist here, is a spec to question._
|
|
11
|
+
|
|
12
|
+
## Audience
|
|
13
|
+
|
|
14
|
+
_Who uses this product, in a paragraph or two. The whole population it is built for, described plainly. Not segmented yet, just the answer to "who is this for."_
|
|
15
|
+
|
|
16
|
+
## Personas
|
|
17
|
+
|
|
18
|
+
_How each kind of person interacts differently. One short block of prose per persona. The point is the difference: what this persona comes for, how they reach for the product, what they ignore. A persona earns its place here only when it interacts in a way the others do not._
|
|
19
|
+
|
|
20
|
+
### Persona name
|
|
21
|
+
|
|
22
|
+
_What this person is here to do and how they go about it._
|
|
23
|
+
|
|
24
|
+
### Persona name
|
|
25
|
+
|
|
26
|
+
_The next persona, described by how it differs from the one above._
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Frame shape — criteria flavor. The frame that decides and audits scope: what the product can
|
|
3
|
+
afford, what it is trying to be, and by when. Paired with Audience, this is what a spec is measured
|
|
4
|
+
against. A point-in-time snapshot — record what's true now, revise when it changes. Suggestive, not
|
|
5
|
+
prescriptive. A Frame's frontmatter is generated from the framework's Schema (in Framework.md), so it is not written here.
|
|
6
|
+
Delete the italic prompts as you fill each section in.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# {{title}}
|
|
10
|
+
|
|
11
|
+
_The frame that decides and audits scope: what the product can afford, what it is trying to be, and by when. When scope creeps, it creeps past this doc._
|
|
12
|
+
|
|
13
|
+
## Budget
|
|
14
|
+
|
|
15
|
+
_How the work gets financed and what that buys. The rough money or resource envelope: funded how, spending against what, for how long the runway lasts. Enough to tell whether a given spec is affordable._
|
|
16
|
+
|
|
17
|
+
## Scope Objectives
|
|
18
|
+
|
|
19
|
+
_What the product is aiming to be at this level: a prototype, an MVP, a production product, a platform. The objective sets the ceiling on scope. State it plainly so specs can be checked against it._
|
|
20
|
+
|
|
21
|
+
## Timeline
|
|
22
|
+
|
|
23
|
+
_The limits time imposes. Hard dates, milestones, or seasons that bound the work. What must exist by when, and what that forces to wait._
|
|
24
|
+
|
|
25
|
+
## Parameters & Variables
|
|
26
|
+
|
|
27
|
+
_The large-scale factors that move scope — the things that, if they change, change what is feasible or sensible to build. An integration going live, a development partner coming on or dropping off, a funding milestone, a platform deadline, a key hire. Name each one and what it would change._
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Frame shape — market flavor. Where the product sits in its marketplace, why it is not just another
|
|
3
|
+
one of many, and how it is intended to make money. Answers the two questions a product must survive:
|
|
4
|
+
why would anyone pick this, and how does it earn. A point-in-time snapshot — markets move, revise when
|
|
5
|
+
they do. Suggestive, not prescriptive. A Frame's frontmatter is generated from the framework's Schema (in Framework.md), so it
|
|
6
|
+
is not written here. Delete the italic prompts as you fill each section in.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# {{title}}
|
|
10
|
+
|
|
11
|
+
_Where the product sits in its marketplace, why it is not just another one of many, and how it is intended to make money._
|
|
12
|
+
|
|
13
|
+
## Landscape
|
|
14
|
+
|
|
15
|
+
_The market this product enters: the category it lives in, and the substitutes people reach for today. An honest picture of how crowded it is._
|
|
16
|
+
|
|
17
|
+
## Competitors
|
|
18
|
+
|
|
19
|
+
_The specific products and alternatives you are up against — named. For each, a line on what it does well and where it leaves a gap. Include the "do nothing" or "use a spreadsheet" substitutes, not just the direct rivals._
|
|
20
|
+
|
|
21
|
+
## Positioning & Differentiators
|
|
22
|
+
|
|
23
|
+
_Where this product sits, and the specific thing that makes it not interchangeable with the rest. Not a slogan: the concrete difference a user would feel. If you cannot name it, that is the most important thing this doc has surfaced._
|
|
24
|
+
|
|
25
|
+
## Who it is for and against
|
|
26
|
+
|
|
27
|
+
_The slice of the market this product wins, and the competitors it wins it from. The customer it serves better than anyone, stated plainly._
|
|
28
|
+
|
|
29
|
+
## Earning Capabilities
|
|
30
|
+
|
|
31
|
+
_How the product is intended to make money. The revenue model: what is charged, to whom, on what cadence. Where the money comes from, and what has to be true for it to work._
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Spec shape — the body of a spec, and the documentation of each section. A spec's
|
|
3
|
+
frontmatter is generated from the framework's Schema (in Framework.md), so it is not written here. Keep the sections
|
|
4
|
+
that apply and delete the rest, but leave the order and headings as they are — a reader should
|
|
5
|
+
know what to expect from any spec in this folder. The italic prompts are guidance; delete
|
|
6
|
+
them as you fill each section in.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# {{title}}
|
|
10
|
+
|
|
11
|
+
## Intent
|
|
12
|
+
|
|
13
|
+
_Why this exists — the problem and who has it. One or two paragraphs. This is the stable part: if Intent changes substantially, you probably have a different spec, not an edit to this one._
|
|
14
|
+
|
|
15
|
+
### Assumptions
|
|
16
|
+
|
|
17
|
+
_The assumptions you're proceeding on — what you're taking as given about the problem or the world, not yet confirmed. Nested under Intent because they frame it. Surface them so a guess doesn't slip into Behaviors as if it were settled._
|
|
18
|
+
|
|
19
|
+
### Implementation Notes
|
|
20
|
+
|
|
21
|
+
_Optional, nested under Intent. The intent of the implementation — the approach you mean to take and why. Direction, not status: how you intend to build it (e.g. "reuse the existing queue"), never how far along it is. Delete if the approach is obvious or undecided._
|
|
22
|
+
|
|
23
|
+
## Open Questions
|
|
24
|
+
|
|
25
|
+
_Unresolved questions — what you don't yet know and still need answered. Kept high, right after Intent, so uncertainty is seen rather than buried. When one is settled it graduates into an Assumption, a Behavior, or a Decision._
|
|
26
|
+
|
|
27
|
+
## Behaviors & Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
_What it does, as observable outcomes — the "this is what you're getting" section. If a behavior isn't listed here, it isn't promised. Label each criterion **AC1:**, **AC2:**, … (bold, unique within this spec). Group them under the requirement categories that apply as `###` sub-headings; the categories are suggestive — use what fits, AC numbers running continuously across them. Keep each AC short and checkable; push rich detail into a table or sub-section it points to. Evolves freely._
|
|
30
|
+
|
|
31
|
+
### Functional
|
|
32
|
+
|
|
33
|
+
- **AC1:** <!-- features, behaviors, business rules -->
|
|
34
|
+
|
|
35
|
+
### Performance
|
|
36
|
+
|
|
37
|
+
- **AC2:** <!-- speed, throughput, response time, capacity, concurrent users -->
|
|
38
|
+
|
|
39
|
+
### Design
|
|
40
|
+
|
|
41
|
+
- **AC3:** <!-- mandated tech, standards, regulatory rules, platform limits -->
|
|
42
|
+
|
|
43
|
+
### External interface
|
|
44
|
+
|
|
45
|
+
- **AC4:** <!-- how it connects to users, hardware, other software, networks: UI, APIs, protocols -->
|
|
46
|
+
|
|
47
|
+
### Quality attributes
|
|
48
|
+
|
|
49
|
+
- **AC5:** <!-- the other -ilities: reliability, security, usability, maintainability, scalability, portability -->
|
|
50
|
+
|
|
51
|
+
## Out of Scope
|
|
52
|
+
|
|
53
|
+
_Explicit non-goals — the section the standard leans on hardest, because this is where scope is held. A spec without it is rarely finished; it's the first thing to add when a spec feels thin._
|
|
54
|
+
|
|
55
|
+
## Dependencies
|
|
56
|
+
|
|
57
|
+
_Anything this needs to build or run: services, libraries, teams, data, other specs. The `depends_on` property at the top is the spec-only subset of this, as links. Reference other specs as markdown links — `[Session Management](../identity/session-management.md)` — never bare names._
|
|
58
|
+
|
|
59
|
+
## Testing
|
|
60
|
+
|
|
61
|
+
_How this is verified: the testing approach and the key cases that prove the behaviors hold. Reference AC labels where useful (e.g. "AC1–AC3 covered by the sign-in suite")._
|
|
62
|
+
|
|
63
|
+
## Constraints & Decisions
|
|
64
|
+
|
|
65
|
+
_Two things under one header. **Constraints**: non-functional boundaries and hard limits the build must respect — not the architecture itself. **Decisions**: an append-only log, one line each, with an optional but recommended date._
|
|
66
|
+
|
|
67
|
+
<!-- 2026-06-17: Dropped SMS fallback, carrier cost. (Brenton) -->
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The Spec shape — micro flavor. The smallest spec worth writing: why it exists, what you're getting,
|
|
3
|
+
and what it will not do. A starting point that grows into the full flavor (spec.full.md) as the unit
|
|
4
|
+
firms up — add the full flavor's sections (Implementation Notes, Dependencies, Testing, Constraints &
|
|
5
|
+
Decisions, …) when they earn their place, and set `flavor: full` (or drop `flavor`) once it has.
|
|
6
|
+
A spec's frontmatter is generated from the framework's Schema (in Framework.md), so it is not written here. Keep the order and
|
|
7
|
+
headings; the italic prompts are guidance — delete them as you fill each section in.
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
# {{title}}
|
|
11
|
+
|
|
12
|
+
## Intent
|
|
13
|
+
|
|
14
|
+
_Why this exists — the problem and who has it. One or two paragraphs. This is the stable part: if Intent changes substantially, you probably have a different spec, not an edit to this one._
|
|
15
|
+
|
|
16
|
+
### Assumptions
|
|
17
|
+
|
|
18
|
+
_The assumptions you're proceeding on — what you're taking as given, not yet confirmed. Nested under Intent because they frame it. A micro spec almost always has some; surfacing them is half the point of writing one early._
|
|
19
|
+
|
|
20
|
+
## Open Questions
|
|
21
|
+
|
|
22
|
+
_Unresolved questions — what you don't yet know and still need answered. Kept high, right after Intent, so uncertainty is seen rather than buried; when one is settled it graduates into an Assumption, a Behavior, or a Decision._
|
|
23
|
+
|
|
24
|
+
## Behaviors & Acceptance Criteria
|
|
25
|
+
|
|
26
|
+
_What it does, as observable outcomes — the "this is what you're getting" section. If a behavior isn't listed here, it isn't promised. Label each criterion **AC1:**, **AC2:**, … (bold, unique within this spec). Keep each short and checkable; push rich detail into a table or sub-section it points to._
|
|
27
|
+
|
|
28
|
+
- **AC1:** <!-- the first observable outcome -->
|
|
29
|
+
|
|
30
|
+
## Out of Scope
|
|
31
|
+
|
|
32
|
+
_Explicit non-goals — the section the standard leans on hardest, because this is where scope is held. A micro spec carries it too; it's the first thing to write, not the last._
|