story.delivery/1
Deliver a planning-store story: implement it, verify the current implementation revision with its tests and the repository's gate, open a pull request for it, read its continuous integration, and merge it under authority. Accepted once the pull request is merged, or abandoned on an explicit decision. Every claim is about the implementation at its current revision, so a new commit returns all of them to unknown.
- Id:
story.delivery - Revision: 1
- Source:
protocols/story-delivery/1.yaml
Dependency graph
Which actions may produce which evidence, which claims that evidence establishes, and which outcomes and obligations rest on those claims. Hover or focus a node to trace what it rests on.
Protocol · revision 1
story.delivery/1Deliver a planning-store story: implement it, verify the current implementation revision with its tests and the repository's gate, open a pull request for it, read its continuous integration, and merge it under authority. Accepted once the pull request is merged, or abandoned on an explicit decision. Every claim is about the implementation at its current revision, so a new commit returns all of them to unknown.
- Actions10
- Evidence kinds7
- Claims7
- Outcomes2
- Obligations4
- Precondition, traced on hover
- Needs authority
Hover or focus a node to trace what it rests on and what rests on it. Press Enter to pin it, Escape to clear.
Protocol as text
| Name | Description | Rule | Leads to |
|---|---|---|---|
change.handover | hand the change over, changing no file, once it is complete (the story's tests written and the implementation done) and no further edit is needed; takt records the choice, and the pull request is opened for this revision and its continuous integration read once | claim is unknown: change.handed_over effect read | produces handover |
change.read | read whether merging the implementation revision into the base branch's tip would change its tree outside .engineering/; taken once the change is handed over | claim change.handed_over effect read | produces change_record |
ci.read | read the continuous integration result for the pull request's head; needs the pull request open for the implementation revision | claim pr.opened effect read | produces ci_result |
gate.run | run the repository's gate against an implementation revision | effect read | produces gate_result |
implementation.edit | change the implementation in the repository's working revision | effect write | — |
pr.open | push the implementation revision, with the commits that record its approval above it when there are any, and open its pull request through the run's forge; needs the tests and the gate green, the change handed over at the revision, and a merge of it into the base branch's tip that would change the tip outside .engineering/, so nothing is opened at the seed or for content the base already has | all of claim change.handed_over claim change.made claim gate.green claim tests.pass effect write | produces pull_request |
repository.inspect | read the repository | effect read | — |
repository.merge | merge the pull request into the repository's mainline; needs continuous integration green, the pull request open and authority to merge, never only a connection to the repository host | all of claim ci.green claim pr.opened needs repository.merge effect write | produces merge_observation |
tests.run | run the tests against an implementation revision | effect read | produces test_result |
tests.write | change the tests in the repository's working revision | effect write | — |
More columns: swipe horizontally, or focus the table and use the arrow keys.
| Name | Description | Rule | Leads to |
|---|---|---|---|
change_record | whether merging an implementation revision into the base branch's tip would change that tip's tree outside .engineering/; its result is ahead or none | — | establishes change.made (ahead about implementation) |
ci_result | the result of continuous integration on an implementation revision; its result is pass or fail | — | establishes ci.green (pass about implementation) |
gate_result | the result of the repository's gate against an implementation revision; its result is pass or fail | — | establishes gate.green (pass about implementation) |
handover | the harness chose to hand the change over at this implementation revision, with no file changed: takt records the choice from the step, as it records a request for an approval. The record attests a choice, not that the change is correct: the tests, the gate and continuous integration stay validator evidence; it has no result | — | establishes change.handed_over (about implementation) |
merge_observation | the observation that the pull request whose head is an implementation revision, or that revision with only the commits that record its approval above it, was merged; its result is merged | — | establishes pr.merged (merged about implementation) |
pull_request | a pull request whose head is an implementation revision, or that revision with only the commits that record its approval above it; its result is open | — | establishes pr.opened (open about implementation) |
test_result | the result of running tests against an implementation revision; its result is pass or fail | — | establishes tests.pass (pass about implementation) |
More columns: swipe horizontally, or focus the table and use the arrow keys.
| Name | Description | Rule | Leads to |
|---|---|---|---|
change.handed_over | the harness handed the change over at the current implementation revision, saying it is complete; a new commit returns it to unknown | any evidence: handover | gates change.handover (unknown); gates change.read; gates pr.open |
change.made | merging the current implementation revision into the base branch's tip would change its tree outside .engineering/: there is a change to publish | evidence = ahead: change_record | gates pr.open |
ci.green | continuous integration passes for the current implementation revision | evidence = pass: ci_result | requires ci.required; gates repository.merge |
gate.green | the repository's gate is green for the current implementation revision | evidence = pass: gate_result | requires gate.required; gates pr.open |
pr.merged | the pull request for the current implementation revision is merged | evidence = merged: merge_observation | requires accepted; requires merge.required |
pr.opened | a pull request is open for the current implementation revision | evidence = open: pull_request | gates ci.read; gates repository.merge |
tests.pass | the tests pass for the current implementation revision | evidence = pass: test_result | requires tests.required; gates pr.open |
More columns: swipe horizontally, or focus the table and use the arrow keys.
| Name | Description | Rule | Leads to |
|---|---|---|---|
abandoned | the story closed because it was explicitly abandoned | — | — |
accepted | the story closed with its pull request merged | claim pr.merged | — |
More columns: swipe horizontally, or focus the table and use the arrow keys.
| Name | Description | Rule | Leads to |
|---|---|---|---|
ci.required | continuous integration passes for the current implementation revision | claim ci.green | — |
gate.required | the repository's gate is green for the current implementation revision | claim gate.green | — |
merge.required | the pull request for the current implementation revision is merged | claim pr.merged | — |
tests.required | the tests pass for the current implementation revision | claim tests.pass | — |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Source: protocols/story-delivery/1.yaml
Actions
What can be done in a case: what it needs first, which authority it requires, the class of effect it has and the evidence it may produce.
| Action | Description | Precondition | Requires capability | Effect | May produce |
|---|---|---|---|---|---|
change.handover | hand the change over, changing no file, once it is complete (the story's tests written and the implementation done) and no further edit is needed; takt records the choice, and the pull request is opened for this revision and its continuous integration read once | change.handed_over is UNKNOWN | no authority | read | handover |
change.read | read whether merging the implementation revision into the base branch's tip would change its tree outside .engineering/; taken once the change is handed over | change.handed_over is TRUE | no authority | read | change_record |
ci.read | read the continuous integration result for the pull request's head; needs the pull request open for the implementation revision | pr.opened is TRUE | no authority | read | ci_result |
gate.run | run the repository's gate against an implementation revision | none | no authority | read | gate_result |
implementation.edit | change the implementation in the repository's working revision | none | no authority | write | no evidence |
pr.open | push the implementation revision, with the commits that record its approval above it when there are any, and open its pull request through the run's forge; needs the tests and the gate green, the change handed over at the revision, and a merge of it into the base branch's tip that would change the tip outside .engineering/, so nothing is opened at the seed or for content the base already has | all of (change.handed_over is TRUE; change.made is TRUE; gate.green is TRUE; tests.pass is TRUE) | no authority | write | pull_request |
repository.inspect | read the repository | none | no authority | read | no evidence |
repository.merge | merge the pull request into the repository's mainline; needs continuous integration green, the pull request open and authority to merge, never only a connection to the repository host | all of (ci.green is TRUE; pr.opened is TRUE) | repository.merge | write | merge_observation |
tests.run | run the tests against an implementation revision | none | no authority | read | test_result |
tests.write | change the tests in the repository's working revision | none | no authority | write | no evidence |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Evidence kinds
The kinds of evidence this protocol admits.
| Evidence kind | Description | Produced by | Used by claims |
|---|---|---|---|
change_record | whether merging an implementation revision into the base branch's tip would change that tip's tree outside .engineering/; its result is ahead or none | change.read | change.made |
ci_result | the result of continuous integration on an implementation revision; its result is pass or fail | ci.read | ci.green |
gate_result | the result of the repository's gate against an implementation revision; its result is pass or fail | gate.run | gate.green |
handover | the harness chose to hand the change over at this implementation revision, with no file changed: takt records the choice from the step, as it records a request for an approval. The record attests a choice, not that the change is correct: the tests, the gate and continuous integration stay validator evidence; it has no result | change.handover | change.handed_over |
merge_observation | the observation that the pull request whose head is an implementation revision, or that revision with only the commits that record its approval above it, was merged; its result is merged | repository.merge | pr.merged |
pull_request | a pull request whose head is an implementation revision, or that revision with only the commits that record its approval above it; its result is open | pr.open | pr.opened |
test_result | the result of running tests against an implementation revision; its result is pass or fail | tests.run | tests.pass |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Claims
Each claim is TRUE, FALSE or UNKNOWN, established from evidence by its predicate. Missing or stale evidence leaves a claim UNKNOWN, never FALSE.
| Claim | Description | True when |
|---|---|---|
change.handed_over | the harness handed the change over at the current implementation revision, saying it is complete; a new commit returns it to unknown | evidence handover about implementation |
change.made | merging the current implementation revision into the base branch's tip would change its tree outside .engineering/: there is a change to publish | evidence change_record with result ahead about implementation |
ci.green | continuous integration passes for the current implementation revision | evidence ci_result with result pass about implementation |
gate.green | the repository's gate is green for the current implementation revision | evidence gate_result with result pass about implementation |
pr.merged | the pull request for the current implementation revision is merged | evidence merge_observation with result merged about implementation |
pr.opened | a pull request is open for the current implementation revision | evidence pull_request with result open about implementation |
tests.pass | the tests pass for the current implementation revision | evidence test_result with result pass about implementation |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Obligations
What must be done before a case can be complete, and what discharges it. An obligation stays open until its predicate is TRUE; its predicate being UNKNOWN does not discharge it.
| Obligation | Description | Discharged when |
|---|---|---|
ci.required | continuous integration passes for the current implementation revision | ci.green is TRUE |
gate.required | the repository's gate is green for the current implementation revision | gate.green is TRUE |
merge.required | the pull request for the current implementation revision is merged | pr.merged is TRUE |
tests.required | the tests pass for the current implementation revision | tests.pass is TRUE |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Outcomes
The legitimate terminal interpretations of a case, and what each requires.
| Outcome | Description | Requires |
|---|---|---|
abandoned | the story closed because it was explicitly abandoned | decision explicitly_abandoned |
accepted | the story closed with its pull request merged | pr.merged is TRUE |
More columns: swipe horizontally, or focus the table and use the arrow keys.
Artifacts
The things whose revisions evidence is bound to.
| Artifact | Description |
|---|---|
implementation | a revision of the code that realizes the plan |
intent | what the story is meant to achieve |
plan | the intended steps toward the intent |
More columns: swipe horizontally, or focus the table and use the arrow keys.