@arjunkhera/atlas 0.3.8 → 0.3.10
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/.claude-plugin/plugin.json +1 -1
- package/agents/artifact-renderer.md +22 -22
- package/door/cli.mjs +36 -11
- package/door/lib/design-build.mjs +409 -0
- package/door/lib/design.mjs +199 -118
- package/door/lib/markdown.mjs +160 -0
- package/package.json +1 -1
- package/skills/lead/SKILL.md +1 -1
- package/skills/sdlc-task/SKILL.md +33 -24
- package/skills/sdlc-task/design/README.md +187 -0
- package/skills/sdlc-task/design/parts/actors.md +26 -0
- package/skills/sdlc-task/design/parts/alternatives.md +24 -0
- package/skills/sdlc-task/design/parts/build.md +23 -0
- package/skills/sdlc-task/design/parts/calls.md +25 -0
- package/skills/sdlc-task/design/parts/change.md +27 -0
- package/skills/sdlc-task/design/parts/data.md +22 -0
- package/skills/sdlc-task/design/parts/done.md +23 -0
- package/skills/sdlc-task/design/parts/edges.md +24 -0
- package/skills/sdlc-task/design/parts/goals.md +27 -0
- package/skills/sdlc-task/design/parts/key.md +25 -0
- package/skills/sdlc-task/design/parts/migration.md +22 -0
- package/skills/sdlc-task/design/parts/order.md +24 -0
- package/skills/sdlc-task/design/parts/problem.md +22 -0
- package/skills/sdlc-task/design/parts/proof.md +24 -0
- package/skills/sdlc-task/design/parts/proposal.md +24 -0
- package/skills/sdlc-task/design/parts/records.md +24 -0
- package/skills/sdlc-task/design/parts/repos.md +25 -0
- package/skills/sdlc-task/design/parts/risks.md +24 -0
- package/skills/sdlc-task/design/parts/rollout.md +24 -0
- package/skills/sdlc-task/design/parts/routes.md +24 -0
- package/skills/sdlc-task/design/parts/scorecard.md +25 -0
- package/skills/sdlc-task/design/parts/security.md +22 -0
- package/skills/sdlc-task/design/parts/shared-decisions.md +24 -0
- package/skills/sdlc-task/design/parts/states.md +25 -0
- package/skills/sdlc-task/design/parts/stories.md +26 -0
- package/skills/sdlc-task/design/parts/summary.md +33 -0
- package/skills/sdlc-task/design/parts/why.md +22 -0
- package/skills/sdlc-task/design/parts/words.md +29 -0
- package/skills/sdlc-task/design/parts/yardstick.md +25 -0
- package/skills/sdlc-task/design/parts.yaml +306 -0
- package/skills/sdlc-task/lifecycle.yaml +2 -2
- package/work/lib/verbs.mjs +99 -14
- package/work/mcp.mjs +1 -1
- package/agents/artifact-format/walkthrough.html +0 -706
- package/skills/sdlc-task/templates/design-doc.md +0 -126
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Records
|
|
2
|
+
|
|
3
|
+
It holds: The records each step reads and writes.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: needed, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List each record a step reads or writes.
|
|
10
|
+
2. Say which step writes it, and where it lives.
|
|
11
|
+
3. Name the fields that matter.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: records
|
|
18
|
+
---
|
|
19
|
+
# Records
|
|
20
|
+
|
|
21
|
+
| Record | Written by | Holds |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Check run | The gate | The result and the log link |
|
|
24
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Each kind of repo
|
|
2
|
+
|
|
3
|
+
It holds: What the design means for a service, a library, a schema, a CLI and a plugin.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: shared, Flow: shared, Contract: shared, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say what the design means for a service, a library, a schema, a CLI and a plugin.
|
|
10
|
+
2. Needed when many repos use the design. Optional for a design in one product.
|
|
11
|
+
3. Say what stays the same for every kind.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: repos
|
|
18
|
+
---
|
|
19
|
+
# Each kind of repo
|
|
20
|
+
|
|
21
|
+
| Kind | What changes |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Service | The gate also waits for the deploy check. |
|
|
24
|
+
| Library | The gate runs the unit tests only. |
|
|
25
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Risks
|
|
2
|
+
|
|
3
|
+
It holds: What breaks, and what we do. "Accepted" with a reason is valid.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List what can break, and what we do about it.
|
|
10
|
+
2. "Accepted" with a reason is a valid answer.
|
|
11
|
+
3. Put the worst risk first.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: risks
|
|
18
|
+
---
|
|
19
|
+
# Risks
|
|
20
|
+
|
|
21
|
+
| Risk | What we do |
|
|
22
|
+
|---|---|
|
|
23
|
+
| The gate is slow | Accepted: ten minutes is fine for now. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Rollout
|
|
2
|
+
|
|
3
|
+
It holds: The order of release, and how we watch it.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: optional, Flow: optional, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Give the order of release.
|
|
10
|
+
2. Say how we watch it after the release.
|
|
11
|
+
3. Say what makes us roll back.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: rollout
|
|
18
|
+
---
|
|
19
|
+
# Rollout
|
|
20
|
+
|
|
21
|
+
1. Release behind a flag.
|
|
22
|
+
2. Turn it on for the owner.
|
|
23
|
+
3. Watch the error rate for one day, then turn it on for all.
|
|
24
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Routes and interface
|
|
2
|
+
|
|
3
|
+
It holds: Every route, exported function, command, tool or schema object that is added, changed or removed.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List every route, function, command or tool that is added, changed or removed.
|
|
10
|
+
2. Mark each row as new, changed or removed.
|
|
11
|
+
3. For a library, list exported functions; for a CLI, commands and flags.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: routes
|
|
18
|
+
---
|
|
19
|
+
# Routes and interface
|
|
20
|
+
|
|
21
|
+
| | Route | What it does |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| new | `GET /documents/:id/view` | Returns the viewer page for one document. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Scorecard
|
|
2
|
+
|
|
3
|
+
It holds: Each option against each yardstick test.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: none, Contract: none, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Score each option against each yardstick test.
|
|
10
|
+
2. Use words, not only marks: yes, no or part.
|
|
11
|
+
3. The picked option is the first row.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: scorecard
|
|
18
|
+
---
|
|
19
|
+
# Scorecard
|
|
20
|
+
|
|
21
|
+
| Option | Stops red | Fast |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Gate before merge | yes | yes |
|
|
24
|
+
| Run after merge | no | yes |
|
|
25
|
+
````
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
It holds: Who may call it, what it may reach, and what it never leaks.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: optional, Flow: optional, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say who may call it, and what it may reach.
|
|
10
|
+
2. Say what it never leaks, and how the tests prove it.
|
|
11
|
+
3. Name the repo's own rules first.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: security
|
|
18
|
+
---
|
|
19
|
+
# Security
|
|
20
|
+
|
|
21
|
+
Only the document's owner may open the view. A call from another tenant gets 404, and a test proves it.
|
|
22
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Shared decisions
|
|
2
|
+
|
|
3
|
+
It holds: The decisions every design in the family follows, and why.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: none, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List the decisions every design in the family follows.
|
|
10
|
+
2. Give the reason for each one.
|
|
11
|
+
3. Link the tracker decision when one exists.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: shared-decisions
|
|
18
|
+
---
|
|
19
|
+
# Shared decisions
|
|
20
|
+
|
|
21
|
+
| Decision | Why |
|
|
22
|
+
|---|---|
|
|
23
|
+
| One queue for every reader | One place to watch and retry. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# States
|
|
2
|
+
|
|
3
|
+
It holds: The states a thing moves through, and what moves it.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: optional, Contract: none, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List the states a thing moves through.
|
|
10
|
+
2. Say what moves it from each state to the next.
|
|
11
|
+
3. Draw it as a state figure.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: states
|
|
18
|
+
---
|
|
19
|
+
# States
|
|
20
|
+
|
|
21
|
+
| From | Event | To |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Waiting | The tests start | Running |
|
|
24
|
+
| Running | A test fails | Red |
|
|
25
|
+
````
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Stories
|
|
2
|
+
|
|
3
|
+
It holds: One walkthrough for each story, step by step.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: optional, Flow: needed, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Write one walkthrough for each story, step by step.
|
|
10
|
+
2. Each step has a title and one or two sentences.
|
|
11
|
+
3. Give each story a code, such as `US-1`, and put the code in the Key.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: stories
|
|
18
|
+
---
|
|
19
|
+
# Stories
|
|
20
|
+
|
|
21
|
+
### US-1: a test goes red
|
|
22
|
+
|
|
23
|
+
1. The lead opens a pull request.
|
|
24
|
+
2. The gate runs the tests, and one goes red.
|
|
25
|
+
3. The merge button stays blocked, and the owner sees the failing check.
|
|
26
|
+
````
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Summary
|
|
2
|
+
|
|
3
|
+
It holds: The answer in a few lines, and one picture.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Lead with the answer: what changes, for whom, and why now.
|
|
10
|
+
2. Keep it to two short paragraphs and one picture.
|
|
11
|
+
3. A reader who stops here knows the whole design.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: summary
|
|
18
|
+
---
|
|
19
|
+
# Summary
|
|
20
|
+
|
|
21
|
+
Atlas runs the tests of a pull request before the merge, not after it.
|
|
22
|
+
A red test stops the merge and names the failing check.
|
|
23
|
+
|
|
24
|
+
```figure
|
|
25
|
+
<svg viewBox="0 0 420 60" role="img" aria-label="Pull request, then tests, then merge">
|
|
26
|
+
<g font-family="var(--mono)" font-size="13" fill="var(--ink)">
|
|
27
|
+
<rect x="2" y="14" width="120" height="32" rx="6" fill="var(--card)" stroke="var(--line-strong)"/><text x="20" y="35">Pull request</text>
|
|
28
|
+
<rect x="150" y="14" width="120" height="32" rx="6" fill="var(--accent-bg)" stroke="var(--accent)"/><text x="188" y="35">Tests</text>
|
|
29
|
+
<rect x="298" y="14" width="120" height="32" rx="6" fill="var(--card)" stroke="var(--line-strong)"/><text x="336" y="35">Merge</text>
|
|
30
|
+
</g>
|
|
31
|
+
</svg>
|
|
32
|
+
```
|
|
33
|
+
````
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Why one initiative
|
|
2
|
+
|
|
3
|
+
It holds: Why these designs belong together.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: none, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say why these designs belong together.
|
|
10
|
+
2. Name the one goal they serve.
|
|
11
|
+
3. Say what would go wrong if each went alone.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: why
|
|
18
|
+
---
|
|
19
|
+
# Why one initiative
|
|
20
|
+
|
|
21
|
+
Each file type needs its own reader, but all share one viewer and one queue. Alone, each would build its own queue.
|
|
22
|
+
````
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Your words
|
|
2
|
+
|
|
3
|
+
It holds: The owner's words, word for word. Claude's reading stays apart.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Quote the owner word for word, in a block quote, with the date and the place.
|
|
10
|
+
2. Put your own reading after the quote, as a short list headed "What we take from it".
|
|
11
|
+
3. Never change a word inside the quote.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: words
|
|
18
|
+
---
|
|
19
|
+
# Your words
|
|
20
|
+
|
|
21
|
+
> "I want tests to run before the merge, not after."
|
|
22
|
+
|
|
23
|
+
The owner, 9 October, in the project thread.
|
|
24
|
+
|
|
25
|
+
What we take from it:
|
|
26
|
+
|
|
27
|
+
- A red test stops the merge.
|
|
28
|
+
- The owner sees the failing check, not a log.
|
|
29
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Yardstick
|
|
2
|
+
|
|
3
|
+
It holds: The tests every option must pass, set before the options.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: none, Contract: none, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Set the tests every option must pass before you list the options.
|
|
10
|
+
2. Give each test a short name, so the scorecard can use it.
|
|
11
|
+
3. Keep it to five tests or fewer.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: yardstick
|
|
18
|
+
---
|
|
19
|
+
# Yardstick
|
|
20
|
+
|
|
21
|
+
| Test | What it asks |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Stops red | Does a red test stop the merge? |
|
|
24
|
+
| Fast | Does the check finish in ten minutes? |
|
|
25
|
+
````
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# The parts of an Atlas design, and which kind needs each one.
|
|
2
|
+
#
|
|
3
|
+
# A design is a folder. design.yaml names its kinds. Each part is one
|
|
4
|
+
# markdown file in the folder, with `part: <id>` in its front matter.
|
|
5
|
+
# The design check reads this file to find a missing or empty part.
|
|
6
|
+
# The page builder reads it for the order and the groups of the rail.
|
|
7
|
+
# The guide in design/README.md shows the same table; a test keeps the two equal.
|
|
8
|
+
#
|
|
9
|
+
# Each part says what each kind needs:
|
|
10
|
+
# needed the part must be in the folder and must not be empty
|
|
11
|
+
# optional write it when it applies
|
|
12
|
+
# none the kind does not use it
|
|
13
|
+
# shared needed when design.yaml says `shared: true`, optional when not
|
|
14
|
+
#
|
|
15
|
+
# A design keeps no state. The tracker parts at the end are read from the
|
|
16
|
+
# tracker at build time. No part file may hold them.
|
|
17
|
+
|
|
18
|
+
kinds:
|
|
19
|
+
- id: decide
|
|
20
|
+
name: Decide
|
|
21
|
+
pick: There are several ways, and one must win.
|
|
22
|
+
- id: flow
|
|
23
|
+
name: Flow
|
|
24
|
+
pick: The behaviour is the hard part.
|
|
25
|
+
- id: contract
|
|
26
|
+
name: Contract
|
|
27
|
+
pick: An interface, a schema or a command changes.
|
|
28
|
+
- id: initiative
|
|
29
|
+
name: Initiative
|
|
30
|
+
pick: Many designs serve one goal.
|
|
31
|
+
|
|
32
|
+
groups:
|
|
33
|
+
- id: start
|
|
34
|
+
name: Start here
|
|
35
|
+
- id: decide
|
|
36
|
+
name: Decide
|
|
37
|
+
- id: flow
|
|
38
|
+
name: Flow
|
|
39
|
+
- id: contract
|
|
40
|
+
name: Contract
|
|
41
|
+
- id: initiative
|
|
42
|
+
name: Initiative
|
|
43
|
+
- id: prove
|
|
44
|
+
name: Prove it
|
|
45
|
+
- id: tracker
|
|
46
|
+
name: From the tracker
|
|
47
|
+
|
|
48
|
+
parts:
|
|
49
|
+
- id: summary
|
|
50
|
+
name: Summary
|
|
51
|
+
group: start
|
|
52
|
+
holds: The answer in a few lines, and one picture.
|
|
53
|
+
decide: needed
|
|
54
|
+
flow: needed
|
|
55
|
+
contract: needed
|
|
56
|
+
initiative: needed
|
|
57
|
+
- id: words
|
|
58
|
+
name: Your words
|
|
59
|
+
group: start
|
|
60
|
+
holds: The owner's words, word for word. Claude's reading stays apart.
|
|
61
|
+
decide: needed
|
|
62
|
+
flow: needed
|
|
63
|
+
contract: needed
|
|
64
|
+
initiative: needed
|
|
65
|
+
- id: goals
|
|
66
|
+
name: Goals and non-goals
|
|
67
|
+
group: start
|
|
68
|
+
holds: What it is for, what it is not, and how we know it worked.
|
|
69
|
+
decide: needed
|
|
70
|
+
flow: needed
|
|
71
|
+
contract: needed
|
|
72
|
+
initiative: needed
|
|
73
|
+
|
|
74
|
+
- id: problem
|
|
75
|
+
name: Problem today
|
|
76
|
+
group: decide
|
|
77
|
+
holds: What happens today, with a real example.
|
|
78
|
+
decide: needed
|
|
79
|
+
flow: optional
|
|
80
|
+
contract: optional
|
|
81
|
+
initiative: none
|
|
82
|
+
- id: yardstick
|
|
83
|
+
name: Yardstick
|
|
84
|
+
group: decide
|
|
85
|
+
holds: The tests every option must pass, set before the options.
|
|
86
|
+
decide: needed
|
|
87
|
+
flow: none
|
|
88
|
+
contract: none
|
|
89
|
+
initiative: none
|
|
90
|
+
- id: proposal
|
|
91
|
+
name: Proposal
|
|
92
|
+
group: decide
|
|
93
|
+
holds: The option we pick, and how it works.
|
|
94
|
+
decide: needed
|
|
95
|
+
flow: none
|
|
96
|
+
contract: none
|
|
97
|
+
initiative: none
|
|
98
|
+
- id: alternatives
|
|
99
|
+
name: Alternatives
|
|
100
|
+
group: decide
|
|
101
|
+
holds: The other options, and why each one lost.
|
|
102
|
+
decide: needed
|
|
103
|
+
flow: optional
|
|
104
|
+
contract: optional
|
|
105
|
+
initiative: none
|
|
106
|
+
- id: scorecard
|
|
107
|
+
name: Scorecard
|
|
108
|
+
group: decide
|
|
109
|
+
holds: Each option against each yardstick test.
|
|
110
|
+
decide: needed
|
|
111
|
+
flow: none
|
|
112
|
+
contract: none
|
|
113
|
+
initiative: none
|
|
114
|
+
- id: build
|
|
115
|
+
name: Build list
|
|
116
|
+
group: decide
|
|
117
|
+
holds: The pieces to build, in order.
|
|
118
|
+
decide: needed
|
|
119
|
+
flow: optional
|
|
120
|
+
contract: optional
|
|
121
|
+
initiative: none
|
|
122
|
+
|
|
123
|
+
- id: actors
|
|
124
|
+
name: Who and what
|
|
125
|
+
group: flow
|
|
126
|
+
holds: The people, agents and systems in the flow.
|
|
127
|
+
decide: optional
|
|
128
|
+
flow: needed
|
|
129
|
+
contract: optional
|
|
130
|
+
initiative: none
|
|
131
|
+
- id: stories
|
|
132
|
+
name: Stories
|
|
133
|
+
group: flow
|
|
134
|
+
holds: One walkthrough for each story, step by step.
|
|
135
|
+
decide: optional
|
|
136
|
+
flow: needed
|
|
137
|
+
contract: optional
|
|
138
|
+
initiative: none
|
|
139
|
+
- id: edges
|
|
140
|
+
name: Edge cases
|
|
141
|
+
group: flow
|
|
142
|
+
holds: What happens when a step fails or comes in a strange order.
|
|
143
|
+
decide: optional
|
|
144
|
+
flow: needed
|
|
145
|
+
contract: optional
|
|
146
|
+
initiative: none
|
|
147
|
+
- id: records
|
|
148
|
+
name: Records
|
|
149
|
+
group: flow
|
|
150
|
+
holds: The records each step reads and writes.
|
|
151
|
+
decide: none
|
|
152
|
+
flow: needed
|
|
153
|
+
contract: optional
|
|
154
|
+
initiative: none
|
|
155
|
+
- id: states
|
|
156
|
+
name: States
|
|
157
|
+
group: flow
|
|
158
|
+
holds: The states a thing moves through, and what moves it.
|
|
159
|
+
decide: none
|
|
160
|
+
flow: optional
|
|
161
|
+
contract: none
|
|
162
|
+
initiative: none
|
|
163
|
+
|
|
164
|
+
- id: routes
|
|
165
|
+
name: Routes and interface
|
|
166
|
+
group: contract
|
|
167
|
+
holds: Every route, exported function, command, tool or schema object that is added, changed or removed.
|
|
168
|
+
decide: none
|
|
169
|
+
flow: none
|
|
170
|
+
contract: needed
|
|
171
|
+
initiative: none
|
|
172
|
+
- id: calls
|
|
173
|
+
name: Calls and answers
|
|
174
|
+
group: contract
|
|
175
|
+
holds: A real call and its real answer for each entry of the interface. A schema repo shows a real query; a plugin shows a tool call.
|
|
176
|
+
decide: none
|
|
177
|
+
flow: none
|
|
178
|
+
contract: needed
|
|
179
|
+
initiative: none
|
|
180
|
+
- id: data
|
|
181
|
+
name: Data change
|
|
182
|
+
group: contract
|
|
183
|
+
holds: The schema or data change. Write "No change" and why, when there is none, as a library or a CLI often does.
|
|
184
|
+
decide: none
|
|
185
|
+
flow: none
|
|
186
|
+
contract: needed
|
|
187
|
+
initiative: none
|
|
188
|
+
- id: migration
|
|
189
|
+
name: Migration and undo
|
|
190
|
+
group: contract
|
|
191
|
+
holds: How old data moves to the new shape, and how the data change is undone.
|
|
192
|
+
decide: none
|
|
193
|
+
flow: none
|
|
194
|
+
contract: needed
|
|
195
|
+
initiative: none
|
|
196
|
+
- id: security
|
|
197
|
+
name: Security
|
|
198
|
+
group: contract
|
|
199
|
+
holds: Who may call it, what it may reach, and what it never leaks.
|
|
200
|
+
decide: optional
|
|
201
|
+
flow: optional
|
|
202
|
+
contract: needed
|
|
203
|
+
initiative: none
|
|
204
|
+
- id: rollout
|
|
205
|
+
name: Rollout
|
|
206
|
+
group: contract
|
|
207
|
+
holds: The order of release, and how we watch it.
|
|
208
|
+
decide: optional
|
|
209
|
+
flow: optional
|
|
210
|
+
contract: needed
|
|
211
|
+
initiative: none
|
|
212
|
+
|
|
213
|
+
- id: why
|
|
214
|
+
name: Why one initiative
|
|
215
|
+
group: initiative
|
|
216
|
+
holds: Why these designs belong together.
|
|
217
|
+
decide: none
|
|
218
|
+
flow: none
|
|
219
|
+
contract: none
|
|
220
|
+
initiative: needed
|
|
221
|
+
- id: shared-decisions
|
|
222
|
+
name: Shared decisions
|
|
223
|
+
group: initiative
|
|
224
|
+
holds: The decisions every design in the family follows, and why.
|
|
225
|
+
decide: none
|
|
226
|
+
flow: none
|
|
227
|
+
contract: none
|
|
228
|
+
initiative: needed
|
|
229
|
+
- id: order
|
|
230
|
+
name: Order and dependencies
|
|
231
|
+
group: initiative
|
|
232
|
+
holds: Which design comes first, and what each one waits on.
|
|
233
|
+
decide: none
|
|
234
|
+
flow: none
|
|
235
|
+
contract: none
|
|
236
|
+
initiative: needed
|
|
237
|
+
|
|
238
|
+
- id: risks
|
|
239
|
+
name: Risks
|
|
240
|
+
group: prove
|
|
241
|
+
holds: What breaks, and what we do. "Accepted" with a reason is valid.
|
|
242
|
+
decide: needed
|
|
243
|
+
flow: needed
|
|
244
|
+
contract: needed
|
|
245
|
+
initiative: needed
|
|
246
|
+
- id: proof
|
|
247
|
+
name: Test and proof plan
|
|
248
|
+
group: prove
|
|
249
|
+
holds: How each piece proves itself.
|
|
250
|
+
decide: needed
|
|
251
|
+
flow: needed
|
|
252
|
+
contract: needed
|
|
253
|
+
initiative: none
|
|
254
|
+
- id: repos
|
|
255
|
+
name: Each kind of repo
|
|
256
|
+
group: prove
|
|
257
|
+
holds: What the design means for a service, a library, a schema, a CLI and a plugin.
|
|
258
|
+
decide: shared
|
|
259
|
+
flow: shared
|
|
260
|
+
contract: shared
|
|
261
|
+
initiative: none
|
|
262
|
+
- id: change
|
|
263
|
+
name: Change and undo
|
|
264
|
+
group: prove
|
|
265
|
+
holds: The kind of change, its impact, how to undo it, and each existing test it changes.
|
|
266
|
+
decide: needed
|
|
267
|
+
flow: needed
|
|
268
|
+
contract: needed
|
|
269
|
+
initiative: optional
|
|
270
|
+
- id: done
|
|
271
|
+
name: Done line
|
|
272
|
+
group: prove
|
|
273
|
+
holds: Lines someone else can check. The approval lives in the tracker.
|
|
274
|
+
decide: needed
|
|
275
|
+
flow: needed
|
|
276
|
+
contract: needed
|
|
277
|
+
initiative: needed
|
|
278
|
+
- id: key
|
|
279
|
+
name: Key
|
|
280
|
+
group: prove
|
|
281
|
+
holds: Every word and code the design uses.
|
|
282
|
+
decide: needed
|
|
283
|
+
flow: needed
|
|
284
|
+
contract: needed
|
|
285
|
+
initiative: needed
|
|
286
|
+
|
|
287
|
+
# Read from the tracker at build time. The page shows them read only.
|
|
288
|
+
tracker:
|
|
289
|
+
- id: questions
|
|
290
|
+
name: Questions
|
|
291
|
+
holds: Each question to the owner, open or answered, with the answer.
|
|
292
|
+
- id: decisions
|
|
293
|
+
name: Decisions
|
|
294
|
+
holds: Each decision, in the owner's words, with its date.
|
|
295
|
+
- id: approval
|
|
296
|
+
name: Approval and lock
|
|
297
|
+
holds: The owner's approval and the lock, with the words and the date.
|
|
298
|
+
- id: since
|
|
299
|
+
name: Since approval
|
|
300
|
+
holds: Each change after approval, the part it touched, and the owner's words.
|
|
301
|
+
- id: family
|
|
302
|
+
name: Family
|
|
303
|
+
holds: The designs linked to this one, with their state.
|
|
304
|
+
- id: rollup
|
|
305
|
+
name: Roll-up
|
|
306
|
+
holds: How far the family has come. Initiative designs only.
|
|
@@ -25,7 +25,7 @@ tripwires: [definition_of_done, security, schema_migrations, money_cost]
|
|
|
25
25
|
tiers: [hotfix, standard, initiative]
|
|
26
26
|
tier_escalators: [migrations, auth_rls_surface, new_external_dependency, money_cost]
|
|
27
27
|
|
|
28
|
-
#
|
|
28
|
+
# The design format and the resume anchor travel with the package, beside the kernel.
|
|
29
29
|
templates:
|
|
30
|
-
design_doc:
|
|
30
|
+
design_doc: design/README.md
|
|
31
31
|
resume_anchor: templates/resume-anchor.md
|