@arjunkhera/atlas 0.3.7 → 0.3.9
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/agents/verifier.md +29 -0
- package/door/cli.mjs +62 -12
- package/door/kit-releases.json +4 -0
- package/door/lib/design-build.mjs +409 -0
- package/door/lib/design.mjs +199 -118
- package/door/lib/markdown.mjs +160 -0
- package/door/lib/proof.mjs +127 -0
- package/door/lib/tests.mjs +190 -0
- package/package.json +2 -1
- package/skills/lead/SKILL.md +4 -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/skills/tests/SKILL.md +234 -0
- package/tests/contract.mjs +398 -0
- package/tests/drivers/function.mjs +30 -0
- package/tests/drivers/http.mjs +68 -0
- package/tests/drivers/index.mjs +65 -0
- package/tests/drivers/mcp-stdio.mjs +174 -0
- package/tests/environment.mjs +227 -0
- package/tests/errors.mjs +27 -0
- package/tests/evidence.mjs +113 -0
- package/tests/fresh.mjs +42 -0
- package/tests/guards.mjs +159 -0
- package/tests/index.mjs +11 -0
- package/tests/link-check.mjs +576 -0
- package/tests/procs.mjs +43 -0
- package/tests/redact.mjs +58 -0
- package/tests/scenario.mjs +325 -0
- package/tests/stand-in.mjs +74 -0
- package/tests/tests-yaml.mjs +258 -0
- package/tests/wait.mjs +44 -0
- package/tests/yaml.mjs +327 -0
- package/agents/artifact-format/walkthrough.html +0 -706
- package/skills/sdlc-task/templates/design-doc.md +0 -126
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Who and what
|
|
2
|
+
|
|
3
|
+
It holds: The people, agents and systems in the flow.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: optional, Flow: needed, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Name each person, agent and system in the flow.
|
|
10
|
+
2. Say what each one may do, and what it may not do.
|
|
11
|
+
3. Use the same names in the stories.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: actors
|
|
18
|
+
---
|
|
19
|
+
# Who and what
|
|
20
|
+
|
|
21
|
+
| Who | Does |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Owner | Merges. |
|
|
24
|
+
| Lead | Opens the pull request. Never merges. |
|
|
25
|
+
| Gate | Runs the tests. |
|
|
26
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Alternatives
|
|
2
|
+
|
|
3
|
+
It holds: The other options, and why each one lost.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: optional, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List each option we did not pick, and why it lost.
|
|
10
|
+
2. Keep the reason to one or two sentences.
|
|
11
|
+
3. Say what we keep from it, if anything.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: alternatives
|
|
18
|
+
---
|
|
19
|
+
# Alternatives
|
|
20
|
+
|
|
21
|
+
| Option | Why it lost |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Run after the merge | A red test reaches master. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Build list
|
|
2
|
+
|
|
3
|
+
It holds: The pieces to build, in order.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: optional, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List the pieces to build, in order.
|
|
10
|
+
2. Each piece is small enough for one pull request.
|
|
11
|
+
3. Say what each piece waits on.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: build
|
|
18
|
+
---
|
|
19
|
+
# Build list
|
|
20
|
+
|
|
21
|
+
1. The gate workflow. Waits on nothing.
|
|
22
|
+
2. The merge rule. Waits on 1.
|
|
23
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Calls and answers
|
|
2
|
+
|
|
3
|
+
It 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.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Show one real call and its real answer for each route.
|
|
10
|
+
2. Show one call that is refused, and its answer.
|
|
11
|
+
3. Say where the example values come from.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: calls
|
|
18
|
+
---
|
|
19
|
+
# Calls and answers
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
GET /documents/42/view
|
|
23
|
+
200 OK content-type: text/html
|
|
24
|
+
```
|
|
25
|
+
````
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Change and undo
|
|
2
|
+
|
|
3
|
+
It holds: The kind of change, its impact, how to undo it, and each existing test it changes.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: optional.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Name the kind of change: code, schema, config, docs or a rule.
|
|
10
|
+
2. Say what it touches, how to undo it, and mark in bold a change that cannot be undone.
|
|
11
|
+
3. List each existing test the change edits or removes, and why.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: change
|
|
18
|
+
---
|
|
19
|
+
# Change and undo
|
|
20
|
+
|
|
21
|
+
| | What |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Kind | Code: the gate workflow. |
|
|
24
|
+
| Impact | Every pull request waits for the tests. |
|
|
25
|
+
| Undo | Revert the pull request. |
|
|
26
|
+
| Tests it changes | None. |
|
|
27
|
+
````
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Data change
|
|
2
|
+
|
|
3
|
+
It holds: The schema or data change. Write "No change" and why, when there is none, as a library or a CLI often does.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Show the schema or data change as a diff.
|
|
10
|
+
2. Write "No change" and the reason when there is none.
|
|
11
|
+
3. Name each table or file that changes.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: data
|
|
18
|
+
---
|
|
19
|
+
# Data change
|
|
20
|
+
|
|
21
|
+
No change. The viewer reads the existing documents table.
|
|
22
|
+
````
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Done line
|
|
2
|
+
|
|
3
|
+
It holds: Lines someone else can check. The approval lives in the tracker.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Write each line as a check someone else can run: the input, what happens and the output that passes.
|
|
10
|
+
2. Each line names who runs it and the proof it leaves: a test, a command output or a page.
|
|
11
|
+
3. The approval lives in the tracker, not here.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: done
|
|
18
|
+
---
|
|
19
|
+
# Done line
|
|
20
|
+
|
|
21
|
+
1. A pull request with a red test cannot merge. The verifier plants a red test; the merge button stays blocked. Proof: the check run link.
|
|
22
|
+
2. `npm test` passes. The verifier runs it. Proof: the test summary.
|
|
23
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Edge cases
|
|
2
|
+
|
|
3
|
+
It holds: What happens when a step fails or comes in a strange order.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: optional, Flow: needed, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List what happens when a step fails or comes in a strange order.
|
|
10
|
+
2. Say what the user sees in each case.
|
|
11
|
+
3. Cover a missing input, a retry and a timeout.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: edges
|
|
18
|
+
---
|
|
19
|
+
# Edge cases
|
|
20
|
+
|
|
21
|
+
| Case | What happens |
|
|
22
|
+
|---|---|
|
|
23
|
+
| The gate times out | The merge stays blocked. The check says it timed out. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Goals and non-goals
|
|
2
|
+
|
|
3
|
+
It holds: What it is for, what it is not, and how we know it worked.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List each goal and each non-goal in one table.
|
|
10
|
+
2. A non-goal names something a reader may expect, and says it is out.
|
|
11
|
+
3. End with one line: how we know it worked.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: goals
|
|
18
|
+
---
|
|
19
|
+
# Goals and non-goals
|
|
20
|
+
|
|
21
|
+
| | What |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Goal | A red test stops the merge. |
|
|
24
|
+
| Non-goal | Running the tests on every push. |
|
|
25
|
+
|
|
26
|
+
How we know it worked: no merge in a month has a red test after it.
|
|
27
|
+
````
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Key
|
|
2
|
+
|
|
3
|
+
It holds: Every word and code the design uses.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. List every word and code the design uses that a new reader may not know.
|
|
10
|
+
2. One row for each, with its meaning.
|
|
11
|
+
3. The check flags a code with no row here.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: key
|
|
18
|
+
---
|
|
19
|
+
# Key
|
|
20
|
+
|
|
21
|
+
| Word | Meaning |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Gate | The check that runs before a merge. |
|
|
24
|
+
| US-1 | The story "a test goes red". |
|
|
25
|
+
````
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Migration and undo
|
|
2
|
+
|
|
3
|
+
It holds: How old data moves to the new shape, and how the data change is undone.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say how old data moves to the new shape.
|
|
10
|
+
2. Say how to undo the change, step by step.
|
|
11
|
+
3. Mark in bold a change that cannot be undone.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: migration
|
|
18
|
+
---
|
|
19
|
+
# Migration and undo
|
|
20
|
+
|
|
21
|
+
Undo: revert the pull request. No data moves.
|
|
22
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Order and dependencies
|
|
2
|
+
|
|
3
|
+
It holds: Which design comes first, and what each one waits on.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: none, Flow: none, Contract: none, Initiative: needed.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say which design comes first.
|
|
10
|
+
2. Say what each design waits on.
|
|
11
|
+
3. Draw the order when there are more than three designs.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: order
|
|
18
|
+
---
|
|
19
|
+
# Order and dependencies
|
|
20
|
+
|
|
21
|
+
1. The shared queue.
|
|
22
|
+
2. The PDF reader, after 1.
|
|
23
|
+
3. The image reader, after 1.
|
|
24
|
+
````
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Problem today
|
|
2
|
+
|
|
3
|
+
It holds: What happens today, with a real example.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: optional, Contract: optional, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say what happens today, with one real example.
|
|
10
|
+
2. Cite the source: a pull request, an issue or a log line.
|
|
11
|
+
3. Do not propose a fix here.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: problem
|
|
18
|
+
---
|
|
19
|
+
# Problem today
|
|
20
|
+
|
|
21
|
+
Today the tests run after the merge. On 2 October pull request 88 merged, and its tests went red one hour later.
|
|
22
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Test and proof plan
|
|
2
|
+
|
|
3
|
+
It holds: How each piece proves itself.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Say how each piece proves itself.
|
|
10
|
+
2. Prefer a test that fails when the code is wrong.
|
|
11
|
+
3. Name the command that runs it.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: proof
|
|
18
|
+
---
|
|
19
|
+
# Test and proof plan
|
|
20
|
+
|
|
21
|
+
| Piece | Proof |
|
|
22
|
+
|---|---|
|
|
23
|
+
| The gate | A planted red test blocks the merge. |
|
|
24
|
+
````
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Proposal
|
|
2
|
+
|
|
3
|
+
It holds: The option we pick, and how it works.
|
|
4
|
+
|
|
5
|
+
Needs: Decide: needed, Flow: none, Contract: none, Initiative: none.
|
|
6
|
+
|
|
7
|
+
Rules:
|
|
8
|
+
|
|
9
|
+
1. Name the option we pick, and say how it works in steps.
|
|
10
|
+
2. Give a worked example: the input, the process and the output.
|
|
11
|
+
3. Link the figure that shows it.
|
|
12
|
+
|
|
13
|
+
Example, in a file of its own:
|
|
14
|
+
|
|
15
|
+
````markdown
|
|
16
|
+
---
|
|
17
|
+
part: proposal
|
|
18
|
+
---
|
|
19
|
+
# Proposal
|
|
20
|
+
|
|
21
|
+
1. A pull request opens.
|
|
22
|
+
2. The gate runs the tests on its head.
|
|
23
|
+
3. A red test blocks the merge button.
|
|
24
|
+
````
|
|
@@ -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
|
+
````
|