@cratis/pi 7.37.0 → 7.38.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.
Files changed (76) hide show
  1. package/package/corpus/harnesses/copilot/instructions/ai-distribution.instructions.md +109 -0
  2. package/package/corpus/harnesses/copilot/instructions/application-profile.instructions.md +81 -0
  3. package/package/corpus/harnesses/copilot/instructions/capability-is-not-authority.instructions.md +45 -0
  4. package/package/corpus/harnesses/copilot/instructions/code-quality.csharp.instructions.md +92 -0
  5. package/package/corpus/harnesses/copilot/instructions/code-quality.instructions.md +83 -0
  6. package/package/corpus/harnesses/copilot/instructions/code-quality.typescript.instructions.md +90 -0
  7. package/package/corpus/harnesses/copilot/instructions/components.instructions.md +300 -0
  8. package/package/corpus/harnesses/copilot/instructions/concepts.instructions.md +138 -0
  9. package/package/corpus/harnesses/copilot/instructions/cratis-folder-is-configuration.instructions.md +29 -0
  10. package/package/corpus/harnesses/copilot/instructions/csharp.instructions.md +357 -0
  11. package/package/corpus/harnesses/copilot/instructions/dialogs.instructions.md +278 -0
  12. package/package/corpus/harnesses/copilot/instructions/documentation-structure-and-formatting.instructions.md +162 -0
  13. package/package/corpus/harnesses/copilot/instructions/documentation.instructions.md +90 -0
  14. package/package/corpus/harnesses/copilot/instructions/editing-cratis-docs.instructions.md +74 -0
  15. package/package/corpus/harnesses/copilot/instructions/efcore.instructions.md +84 -0
  16. package/package/corpus/harnesses/copilot/instructions/efcore.specs.instructions.md +45 -0
  17. package/package/corpus/harnesses/copilot/instructions/elixir.instructions.md +50 -0
  18. package/package/corpus/harnesses/copilot/instructions/exit-codes-and-wrappers.instructions.md +34 -0
  19. package/package/corpus/harnesses/copilot/instructions/framework.instructions.md +55 -0
  20. package/package/corpus/harnesses/copilot/instructions/frontend-quality.instructions.md +60 -0
  21. package/package/corpus/harnesses/copilot/instructions/frontend-testing.instructions.md +127 -0
  22. package/package/corpus/harnesses/copilot/instructions/git-commits.instructions.md +139 -0
  23. package/package/corpus/harnesses/copilot/instructions/github-actions.instructions.md +87 -0
  24. package/package/corpus/harnesses/copilot/instructions/glossary.instructions.md +63 -0
  25. package/package/corpus/harnesses/copilot/instructions/go-engineering.instructions.md +61 -0
  26. package/package/corpus/harnesses/copilot/instructions/go.instructions.md +116 -0
  27. package/package/corpus/harnesses/copilot/instructions/guards-and-fuses.instructions.md +61 -0
  28. package/package/corpus/harnesses/copilot/instructions/java.instructions.md +138 -0
  29. package/package/corpus/harnesses/copilot/instructions/kotlin.instructions.md +175 -0
  30. package/package/corpus/harnesses/copilot/instructions/local-work-artifacts.instructions.md +56 -0
  31. package/package/corpus/harnesses/copilot/instructions/new-repository-intake.instructions.md +35 -0
  32. package/package/corpus/harnesses/copilot/instructions/orleans.instructions.md +97 -0
  33. package/package/corpus/harnesses/copilot/instructions/profiles.instructions.md +403 -0
  34. package/package/corpus/harnesses/copilot/instructions/pull-requests.instructions.md +176 -0
  35. package/package/corpus/harnesses/copilot/instructions/react.instructions.md +203 -0
  36. package/package/corpus/harnesses/copilot/instructions/reactors.instructions.md +336 -0
  37. package/package/corpus/harnesses/copilot/instructions/rtk.instructions.md +48 -0
  38. package/package/corpus/harnesses/copilot/instructions/specs.csharp.instructions.md +147 -0
  39. package/package/corpus/harnesses/copilot/instructions/specs.instructions.md +133 -0
  40. package/package/corpus/harnesses/copilot/instructions/specs.scenarios.csharp.instructions.md +281 -0
  41. package/package/corpus/harnesses/copilot/instructions/specs.typescript.instructions.md +141 -0
  42. package/package/corpus/harnesses/copilot/instructions/storybook.instructions.md +85 -0
  43. package/package/corpus/harnesses/copilot/instructions/typescript.instructions.md +151 -0
  44. package/package/corpus/harnesses/copilot/instructions/verification-discipline.instructions.md +27 -0
  45. package/package/corpus/harnesses/copilot/instructions/vertical-slices.instructions.md +414 -0
  46. package/package/corpus/harnesses/copilot/instructions/web-fetching.instructions.md +12 -0
  47. package/package/corpus/harnesses/copilot/instructions/writing-correct-examples.instructions.md +57 -0
  48. package/package/corpus/harnesses/copilot/instructions/writing-cratis-docs.instructions.md +72 -0
  49. package/package/corpus/product-sync.json +2 -2
  50. package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +11 -6
  51. package/package/corpus/skills/cratis-screenplay-discovery/references/facilitation.md +9 -5
  52. package/package/corpus/skills/cratis-screenplay-discovery/references/human-workshop.md +1 -1
  53. package/package/corpus/skills/cratis-screenplay-discovery/references/plotting-and-handoff.md +28 -4
  54. package/package/corpus/skills/cratis-screenplay-discovery/references/storming-loop.md +2 -1
  55. package/package/corpus/skills/cratis-screenplay-discovery/verification.json +5 -0
  56. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +23 -29
  57. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +15 -1
  58. package/package/corpus/skills/cratis-screenplay-model-authoring/references/model-notes.md +208 -0
  59. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +20 -1
  60. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +19 -36
  61. package/package/corpus/skills/cratis-screenplay-model-review/references/report-template.md +26 -0
  62. package/package/corpus/skills/cratis-screenplay-model-review/verification.json +7 -0
  63. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +14 -16
  64. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/core-rules-digest.md +8 -3
  65. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/handoff-template.md +5 -2
  66. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/intake.md +21 -0
  67. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +10 -6
  68. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/stop-or-assume.md +32 -1
  69. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/worked-example.md +5 -2
  70. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/verification.json +5 -0
  71. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +4 -0
  72. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1716 -183
  73. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
  74. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +40 -4
  75. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +6 -0
  76. package/package.json +1 -1
@@ -5,6 +5,7 @@
5
5
  - Finding fields
6
6
  - Root causes
7
7
  - Defect or business question?
8
+ - Question notes
8
9
  - Verdict rules
9
10
  - Findings across a re-review
10
11
  - Wording
@@ -143,6 +144,31 @@ constraint or projection).
143
144
  - An open question is genuinely unanswered. A refusal the business already decided is a
144
145
  `then error` or `then denied` specification, not a question (E9).
145
146
 
147
+ ## Question notes
148
+
149
+ On Screenplay 4.144.0, inspect `list-model-notes` with scope and `state: "all"`,
150
+ including `view: "findings"`. `model-note.open-question` is an info MCP/CLI-only
151
+ finding, no PLAY code and no V1 failure. List orphaned questions explicitly;
152
+ review `orphanedNotes` on source proposals, and treat null/unreadable as unknown.
153
+ A read-only reviewer never writes notes: return a `question` note request for the
154
+ owning session, anchored to the element with consequence and assumption. Existing
155
+ questions should be cited by note ID; new questions must not live only in chat,
156
+ session state or `description` text. Never put secrets or personal data in note
157
+ text, authors, references or resolutions.
158
+
159
+ Read model-authoring [model notes](../../cratis-screenplay-model-authoring/references/model-notes.md)
160
+ when preparing that request or judging resolution evidence. Cite the project's
161
+ own decisions with `refs: [{ "id": "D123" }]`; the owner resolves with
162
+ `by: "external-decision"` and required `ref: { "id": "D123" }` when D123 answers
163
+ it. Verify the answer became a specification, a description or a project-owned
164
+ decision record; a resolved note is not behavioral proof. Ask the owner to reanchor
165
+ or resolve affected notes before source apply; resolution alone leaves an orphan.
166
+
167
+ The optional `--open-questions fail` gate is in standalone Screenplay 4.144.0,
168
+ not Cratis CLI 3.53.1. Report it separately from V1–V5. Evidence: Screenplay
169
+ `v4.144.0:Documentation/screenplay/model-notes.md:12-77,93-121`,
170
+ `Documentation/screenplay/mcp/reference.md:457-520`; source lines in the linked guide.
171
+
146
172
  ## Verdict rules
147
173
  - **FAIL**: any critical finding, or a verdict line the mode requires fails.
148
174
  - **PASS WITH WARNINGS**: no critical; one or more major or minor findings, or open business
@@ -5,6 +5,13 @@
5
5
  "assertions": [
6
6
  { "kind": "skill-contains", "value": "all *known* producers", "file": "references/public-keys-and-routes.md" },
7
7
  { "kind": "play-compiles" },
8
+ { "kind": "skill-contains", "value": "A read-only reviewer returns `question` note requests" },
9
+ { "kind": "skill-contains", "value": "`state: \"all\"`", "file": "references/report-template.md" },
10
+ { "kind": "skill-contains", "value": "`model-note.open-question`", "file": "references/report-template.md" },
11
+ { "kind": "skill-contains", "value": "`orphanedNotes`", "file": "references/report-template.md" },
12
+ { "kind": "skill-contains", "value": "`by: \"external-decision\"`", "file": "references/report-template.md" },
13
+ { "kind": "skill-contains", "value": "Verify the answer became a specification", "file": "references/report-template.md" },
14
+ { "kind": "skill-contains", "value": "Never put secrets or personal data", "file": "references/report-template.md" },
8
15
  { "kind": "skill-contains", "value": "PASS WITH WARNINGS" },
9
16
  { "kind": "skill-contains", "value": "Every finding is pinned to one declaration" },
10
17
  { "kind": "skill-contains", "value": "edit request" },
@@ -64,10 +64,15 @@ STATE.md); a real trade-off is flagged to the user, never resolved by cutting th
64
64
  (`references/completeness-self-check.md`).
65
65
 
66
66
  Three unresolved things, never conflated: an **open question** (business meaning nobody decided:
67
- record it against a declaration address with the assumption in use; it closes when answered, never
68
- by deletion), a **decided rejection** (a known refusal: a specification, `then denied` or
67
+ record it as a `question` note anchored to the element, with the assumption in use;
68
+ not just chat, STATE.md or `description` text; it closes when answered, never by deletion),
69
+ a **decided rejection** (a known refusal: a specification, `then denied` or
69
70
  `then error`, never a note) and a **contradiction** (model, specs and an agreed fact disagree:
70
71
  stop that scope and report). Finding tiers: `references/principles.md`.
72
+ Read [question notes](references/stop-or-assume.md#durable-question-notes) when
73
+ recording or answering an open question: cite decisions in `refs`, resolve with
74
+ `by: "external-decision"`, then realize the answer. Never put secrets or personal
75
+ data in note text.
71
76
 
72
77
  ## Modes (state the mode in the first output line)
73
78
  | Mode | Use | Done when |
@@ -108,18 +113,9 @@ After each phase write a phase summary (done, carry-forward, open questions) to
108
113
  the next skill loads (`references/phases.md`). Legacy: `cratis-screenplay-legacy-extraction`.
109
114
 
110
115
  ## Interview phase (P0)
111
- **Skip if** the request already states the domain, the source, the goal and the constraints.
112
- Otherwise ask only what is missing:
113
- 1. **Domain**: what business process, in two or three sentences?
114
- 2. **Source**: requirements, ideas, an existing system (legacy entry), a `.play` (change entry)?
115
- 3. **Goal**: learning, documentation, validation, executable behavior, generated code (the mode)?
116
- 4. **Constraints**: outside systems, data sensitivity, who can answer, target stack.
117
- 5. **Starting point**: from scratch, or which phase outputs exist?
118
-
119
- Confirm in one sentence only when something was inferred: "So we model <domain>, goal <goal>,
120
- mode <mode>, starting at <phase>. Right?" Unattended: assume visibly and record asked versus
121
- assumed in STATE.md (`references/stop-or-assume.md`). Mid-workflow entry: ask which phases are
122
- done; never rerun a completed one, start at the first incomplete.
116
+ Skip if domain, source, goal and constraints are stated. Otherwise read
117
+ [intake](references/intake.md) when entering P0: ask only for missing context,
118
+ assume visibly unattended and never rerun completed phases.
123
119
 
124
120
  ## Run protocol: stop or assume
125
121
  1. **Start**: read STATE.md; check the source identity; load the phase skill before authoring
@@ -214,7 +210,7 @@ labelled as such. The user decides whether it is enough
214
210
 
215
211
  Construct mechanics stay in the `cratis-screenplay-*` construct skills; term clashes:
216
212
  `references/vocabulary-map.md`; worked example: `references/worked-example.md`; done checklist: `references/phases.md`.
217
- Read `references/worked-example.md` when needing an example of reasoning documentation, constraints, and decided rejections.
213
+ Read `references/worked-example.md` when needing reasoning, constraint and rejection examples.
218
214
  Read `references/core-rules-digest.md` when you need the one-page card of element names, causality, open-question-versus-decided-failure and the anti-patterns to reject early.
219
215
 
220
216
  ## Gate
@@ -223,7 +219,9 @@ address and assumption; every decided rejection is a specification; no protectio
223
219
  the packet opens with `Outcome:`; STATE.md is current.
224
220
 
225
221
  ## Verified product sources
226
- Full pin table: `cratis-screenplay-toolchain/references/versions.md`. Read `cratis-screenplay-toolchain/references/versions.md` when selecting or reverifying tool versions. Current pins (Stage 4.73.1, cratis CLI 3.53.1 and the rest) are in that file. Older source reads used here: Screenplay
222
+ Model notes: Screenplay `v4.144.0:Documentation/screenplay/model-notes.md:12-77`,
223
+ `decisions/0045-model-notes-sidecar.md:40-79`; exact tool sources in model-authoring
224
+ `references/model-notes.md`. Full pin table: `cratis-screenplay-toolchain/references/versions.md`. Read `cratis-screenplay-toolchain/references/versions.md` when selecting or reverifying tool versions. Current pins (Stage 4.73.1, cratis CLI 3.53.1 and the rest) are in that file. Older source reads used here: Screenplay
227
225
  `v4.66.0` (`c89198b`): `Source/DotNET/Tool/Program.cs` (`--warnaserror`, folder mode),
228
226
  `Source/DotNET/Screenplay/Semantics/SemanticModelBinder.cs:209-216` (personas are report-only),
229
227
  `Documentation/screenplay/{constraints,specifications}.md`, `mcp/reference.md` (`modelRevision`);
@@ -77,8 +77,13 @@ matters, a destination. A field with no origin is a gap to resolve, not a detail
77
77
  See `cratis-screenplay-slice-design` `references/field-lineage.md`.
78
78
 
79
79
  ## Open question versus decided failure
80
- - **Open question.** Genuinely undecided. It goes in session state (`STATE.md`) or the review
81
- report and stays open until someone answers it. Resolving means answering.
80
+ - **Open question.** Genuinely undecided. Record an anchored `question` note in
81
+ committed `.screenplay/notes.json`; STATE.md/reports carry its note ID and
82
+ assumption. Not only chat or `description` text. Resolving means answering:
83
+ cite project decisions in `refs` and resolve by `external-decision` when they
84
+ supply the answer, then realize it as a specification, description or decision
85
+ record. Read `stop-or-assume.md` "Durable question notes" when doing this.
86
+ Never put secrets or personal data in notes.
82
87
  - **Decided failure.** A rejection or error whose behavior is already decided ("payment fails,
83
88
  refuse, no event"). Model it as a `specification` with `then error` or `then denied`. It is
84
89
  permanent specified behavior, not a note waiting on an answer.
@@ -125,7 +130,7 @@ for modelers. The full signal, consequence and fix per shape is in
125
130
  - [ ] Every process starts at a screen or form action, a reaction, a clock or application trigger, or a capture.
126
131
  - [ ] No two state changes are chained without a trigger between them.
127
132
  - [ ] Every persona has a Cannot line backed by a gate and a denial specification, or a recorded gap.
128
- - [ ] Every decided failure is a specification; every open question is in session state.
133
+ - [ ] Every decided failure is a specification; every open question is an anchored note with its ID in session state.
129
134
 
130
135
  This is the fast pass; the full audit is `cratis-screenplay-model-review`
131
136
  `references/checklist.md`, and the closing quality checklist is in `references/phases.md`.
@@ -48,7 +48,7 @@ V5 delivery: ...
48
48
  - <phase>: <skip condition met>
49
49
 
50
50
  ## Open questions (business)
51
- - Q3 <address>: <question> - matters because <...> - assumption in use: <...> | blocked scope
51
+ - Q3 [<note_id>] <address>: <question> - matters because <...> - assumption in use: <...> | blocked scope
52
52
 
53
53
  ## Capability and tool-version gaps
54
54
  - <construct> blocked in <mode> (<code>) - kept in model; route: <fallback or issue>
@@ -123,7 +123,10 @@ Expected impact: diagnostics <...>; identity <preserved via rename or pin>; spec
123
123
  ## 4. Cold-readable questions
124
124
  A question sent to a person is anchored to an address and understandable without opening the
125
125
  model: `Qn <address>: <gap> - matters because <consequence> - <assumption in use>`. Put one
126
- question per line; group by address.
126
+ question per line; group by address. These packet rows point to committed `question`
127
+ notes, not a competing question register. Include the returned note ID; if note
128
+ tools are unavailable, explicitly return a note request to the owning session.
129
+ Read `stop-or-assume.md` "Durable question notes" when recording or resolving one.
127
130
 
128
131
  ## 5. Who records the model used
129
132
  Each agent writes the model it ran on into the packet when the harness exposes it, else
@@ -0,0 +1,21 @@
1
+ <!-- Copyright (c) Cratis. All rights reserved. -->
2
+ <!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
3
+
4
+ # Interview phase (P0)
5
+
6
+ **Skip if** the request already states the domain, the source, the goal and the constraints.
7
+ Otherwise ask only what is missing:
8
+ 1. **Domain**: what business process, in two or three sentences?
9
+ 2. **Source**: requirements, ideas, an existing system (legacy entry), a `.play` (change entry)?
10
+ 3. **Goal**: learning, documentation, validation, executable behavior, generated code (the mode)?
11
+ 4. **Constraints**: outside systems, data sensitivity, who can answer, target stack.
12
+ 5. **Starting point**: from scratch, or which phase outputs exist?
13
+
14
+ Confirm in one sentence only when something was inferred: "So we model <domain>, goal <goal>,
15
+ mode <mode>, starting at <phase>. Right?" Unattended: assume visibly and record asked versus
16
+ assumed in STATE.md (`stop-or-assume.md`). Mid-workflow entry: ask which phases are
17
+ done; never rerun a completed one, start at the first incomplete.
18
+
19
+ Open business questions become anchored `question` notes, with their note IDs in
20
+ STATE.md. Read [durable questions](stop-or-assume.md#durable-question-notes) when
21
+ recording an assumption or awaiting an answer.
@@ -19,7 +19,8 @@ comments (Stage#178 closed): model the rule first, never treat prose as enforcem
19
19
 
20
20
  Cover, briefly and only where real:
21
21
  1. Scope: the business process and the identities its streams are keyed by.
22
- 2. Assumptions beyond the brief, and why (each also listed in STATE.md).
22
+ 2. Working assumptions beyond the brief and why, linked to an anchored `question`
23
+ note when unsettled; STATE.md carries the note ID.
23
24
  3. Rules kept as constraints or specifications rather than events, so a missing event is not read
24
25
  as an oversight; state-dependent rules marked NOT enforced in the model today, with the named
25
26
  target enforcement.
@@ -28,17 +29,20 @@ Cover, briefly and only where real:
28
29
  deliberate omission ("this view drops cancelled bookings").
29
30
  6. Integration and capability gaps, each substantive one (outside facts, cross-feature or
30
31
  cross-module dependencies, mode gaps) as: the finding, the viable resolutions, and the
31
- open question or decision that records the choice (`Qn <address>`, or the decision in
32
- STATE.md), so the documentation and the question agree.
32
+ anchored question note ID or project-owned decision that records the choice,
33
+ so documentation and the question agree. Use `refs` for decision identifiers;
34
+ the question itself is not tracked in prose.
33
35
  7. A closing line for a feature with real decisions: what is covered (declaration kinds and
34
36
  the specification matrix in words, not a counter that goes stale). Review results and
35
37
  verdicts are never written into documentation (it is authored before review and would change
36
38
  the reviewed source identity); they live in STATE.md and the packet.
37
39
 
38
40
  Write for the next person or session who opens the model cold, not for whoever just built it.
39
- Add a note **at any phase**, at the element it applies to, when an assumption fills a gap the
40
- brief left open, an alternative was rejected, or a constraint is not obvious; never as routine
41
- narration of what a step did. Complete the feature's reasoning at the end of P3.
41
+ At any phase, record unresolved assumptions as `question` model notes; use
42
+ `documentation` for settled alternatives or non-obvious constraints, never routine
43
+ step narration. Read `stop-or-assume.md` "Durable question notes" when using refs,
44
+ resolving by external decisions or realizing an answer. Never put secrets or
45
+ personal data in note text. Complete the feature's reasoning at the end of P3.
42
46
  If a feature's story is genuinely simple, say so briefly rather than padding; where real
43
47
  decisions sit behind it, documentation preserves why they were made.
44
48
 
@@ -28,6 +28,35 @@ user can accept, and approvals not yet given always stop.
28
28
  - One closed outcome per run. A run that neither progressed nor closed is a failure to report:
29
29
  say what blocked it and which question would unblock it.
30
30
 
31
+ ## Durable question notes
32
+
33
+ Record each open modeling choice as a `question` note on its element in committed
34
+ `.screenplay/notes.json`, not only chat/STATE.md or `description` text. Include the
35
+ question, consequence and assumption in use (or blocked scope). Keep its returned
36
+ note ID and address in STATE.md/packets; before an element exists, anchor to the
37
+ application or nearest identified container and name the intended element in text.
38
+ Never put secrets or personal data in note text, authors, refs or resolutions.
39
+
40
+ Read model-authoring [model notes](../../cratis-screenplay-model-authoring/references/model-notes.md)
41
+ when recording or answering questions: discover tools, list with pinned notes
42
+ revision, `propose-model-notes`, review `read-proposal view=notes`, then authorized
43
+ `apply`. If the installed bundle lacks notes, report the capability gap and carry
44
+ an explicit note request to the owner; do not pretend a chat/description is a note.
45
+
46
+ Cite the project's own decisions with `refs: [{ "id": "D123" }]`. When D123 is
47
+ the answer, resolve with `by: "external-decision"` and required
48
+ `ref: { "id": "D123" }`, explanatory text and a team-role author. The URL is
49
+ optional and never fetched. Realize a resolved question as a specification for
50
+ behavior, a description for meaning, or a project-owned decision record for
51
+ consequential policy. Resolving is not implementation; a known refusal still
52
+ needs `then error` or `then denied`. Reopen when the evidence ceases to answer it.
53
+
54
+ Question gating is separate from V1: standalone Screenplay 4.144.0 has
55
+ `--open-questions fail`; Cratis CLI 3.53.1 does not. Read toolchain
56
+ `references/versions.md` "Model notes gate" when a phase requires no open questions.
57
+ Product evidence: Screenplay `v4.144.0:Documentation/screenplay/model-notes.md:12-77,93-121`,
58
+ `decisions/0045-model-notes-sidecar.md:40-79` and the model-authoring source table.
59
+
31
60
  ## Question format (STATE.md, packets, edit requests)
32
61
  `Qn <declaration address>: <what is missing or contradictory, one sentence> - matters because
33
62
  <consequence> - <assumption in use | blocked scope>`. Write it so a reader who has not opened
@@ -58,5 +87,7 @@ given for a named target. Approval is not repeated for the same scope.
58
87
 
59
88
  ## Unblocking
60
89
  A scope leaves `blocked` only when its question is answered; record the answer as a decision in
61
- STATE.md and, when durable, in the model's fenced `documentation`. Re-blocking a blocked scope is a no-op.
90
+ STATE.md with its note ID, resolve the question note by evidence, and realize the
91
+ answer in the model or decision record. Settled rationale may also go in fenced
92
+ `documentation`. Re-blocking a blocked scope is a no-op.
62
93
  Blocked delivery scopes are reported in the packet; the main session creates any issue.
@@ -84,8 +84,11 @@ module Berths
84
84
  specification can state the exact rejection. No `BerthReassigned` event was added to carry it.
85
85
  - The `Cannot` line in the persona resolves to the `HarbourOffice` policy and a `then denied`
86
86
  specification whose caller fixture carries a non-matching role.
87
- - Assumption Q1 lives in the feature documentation and in STATE.md (Open questions) with its address,
88
- `Berths.Allocation`.
87
+ - On Screenplay 4.144.0, record Q1 as a `question` note on `Berths.Allocation`:
88
+ "Is allocation always manual? Assuming manual allocation; an automatic route
89
+ would need an automation." The documentation carries the working assumption;
90
+ STATE.md carries the returned note ID. Read `stop-or-assume.md` "Durable
91
+ question notes" when recording or resolving it.
89
92
  - The documentation is rationale only: the rules themselves are enforced by the constraint, the policy
90
93
  and the specifications, not by the prose.
91
94
  - The constraint does not say a berth holds one boat at a time: a berth source may replace its
@@ -4,6 +4,11 @@
4
4
  "fixtures": [],
5
5
  "assertions": [
6
6
  { "kind": "play-compiles" },
7
+ { "kind": "skill-contains", "value": "record it as a `question` note anchored to the element" },
8
+ { "kind": "skill-contains", "value": "`refs: [{ \"id\": \"D123\" }]`", "file": "references/stop-or-assume.md" },
9
+ { "kind": "skill-contains", "value": "`by: \"external-decision\"`", "file": "references/stop-or-assume.md" },
10
+ { "kind": "skill-contains", "value": "Realize a resolved question as a specification", "file": "references/stop-or-assume.md" },
11
+ { "kind": "skill-contains", "value": "Never put secrets or personal data", "file": "references/stop-or-assume.md" },
7
12
  { "kind": "skill-contains", "value": "Model first" },
8
13
  { "kind": "skill-contains", "value": "`Outcome:`" },
9
14
  { "kind": "skill-contains", "value": "V3 binding-ready" },
@@ -206,6 +206,10 @@ reason; blocked verdicts list codes and keep the protection they blocked on.
206
206
  - [ ] Any new example fence compiles with the standalone tool; unmarked fences also pass
207
207
  `cratis screenplay validate --warnings-as-errors`.
208
208
 
209
+ Read [model notes gate](references/versions.md#model-notes-gate) when checking
210
+ unresolved questions: standalone 4.144.0 has `--open-questions fail`; Cratis CLI
211
+ 3.53.1 does not. It is separate from compilation and `--warnaserror`.
212
+
209
213
  ## Route near misses
210
214
 
211
215
  - What to model, phases, gates: `cratis-screenplay-modeling-lifecycle`.