@hobin/developer 0.1.8 → 0.1.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.
Files changed (65) hide show
  1. package/README.md +215 -372
  2. package/REFERENCE_ROUTING.md +243 -0
  3. package/extensions/developer.ts +533 -18
  4. package/extensions/machine.ts +45 -0
  5. package/extensions/references/behavior-preserving-structural-change.md +87 -8
  6. package/extensions/skills.ts +330 -52
  7. package/extensions/state.ts +227 -2
  8. package/package.json +9 -3
  9. package/skills/abstraction-review/SKILL.md +37 -23
  10. package/skills/abstraction-review/reference-policy.json +66 -0
  11. package/skills/abstraction-review/references/field-card.md +113 -168
  12. package/skills/abstraction-review/references/repair-table.md +66 -80
  13. package/skills/abstraction-review/references/worked-examples.md +79 -256
  14. package/skills/model/SKILL.md +31 -13
  15. package/skills/model/reference-policy.json +96 -0
  16. package/skills/model/references/contract-and-replacement-models.md +112 -0
  17. package/skills/model/references/logic-query-semantics.md +89 -0
  18. package/skills/model/references/planning-models.md +75 -0
  19. package/skills/model/references/problem-modeling.md +143 -276
  20. package/skills/model/references/proof-obligations.md +71 -0
  21. package/skills/model/references/relational-constraint-models.md +110 -0
  22. package/skills/model/references/solver-result-boundaries.md +83 -0
  23. package/skills/model/references/temporal-behavior-models.md +106 -0
  24. package/skills/naming-judgment/SKILL.md +17 -4
  25. package/skills/naming-judgment/reference-policy.json +29 -0
  26. package/skills/naming-judgment/references/domain-naming.md +29 -10
  27. package/skills/schedule/SKILL.md +16 -6
  28. package/skills/schedule/reference-policy.json +29 -0
  29. package/skills/schedule/references/structural-change-timing.md +81 -18
  30. package/skills/signal/SKILL.md +17 -6
  31. package/skills/signal/reference-policy.json +29 -0
  32. package/skills/signal/references/structural-movement.md +87 -14
  33. package/skills/sketch/SKILL.md +38 -42
  34. package/skills/sketch/reference-policy.json +212 -0
  35. package/skills/sketch/references/accumulator-invariants.md +125 -0
  36. package/skills/sketch/references/closure-and-conventional-interfaces.md +87 -0
  37. package/skills/sketch/references/composition-by-wishes.md +69 -0
  38. package/skills/sketch/references/data-driven-design.md +99 -22
  39. package/skills/sketch/references/data-shape-template-catalog.md +58 -19
  40. package/skills/sketch/references/design-levels-and-boundaries.md +133 -0
  41. package/skills/sketch/references/earned-abstraction.md +75 -0
  42. package/skills/sketch/references/generative-recursion.md +122 -0
  43. package/skills/sketch/references/generic-dispatch-systems.md +75 -0
  44. package/skills/sketch/references/language-semantics.md +82 -0
  45. package/skills/sketch/references/meaning-preserving-conversions.md +69 -0
  46. package/skills/sketch/references/process-shape-and-resources.md +157 -0
  47. package/skills/sketch/references/representation-barriers.md +73 -0
  48. package/skills/sketch/references/responsibility-and-collaboration.md +108 -0
  49. package/skills/sketch/references/runtime-and-compilation.md +84 -0
  50. package/skills/sketch/references/selection-and-creation.md +76 -0
  51. package/skills/sketch/references/state-history-and-order.md +126 -0
  52. package/skills/sketch/references/type-transitions.md +54 -0
  53. package/skills/sketch/references/variation-roles.md +59 -0
  54. package/skills/verify/SKILL.md +17 -6
  55. package/skills/verify/reference-policy.json +30 -0
  56. package/skills/verify/references/verifier-selection-and-pass-but-wrong.md +152 -192
  57. package/SOURCES.md +0 -104
  58. package/skills/abstraction-review/references/recipe-cards.md +0 -322
  59. package/skills/model/references/worked-models-and-specialized-techniques.md +0 -218
  60. package/skills/sketch/references/abstraction-barriers-and-closure.md +0 -160
  61. package/skills/sketch/references/abstraction-composition-and-state.md +0 -184
  62. package/skills/sketch/references/composition-generative-recursion-and-accumulators.md +0 -196
  63. package/skills/sketch/references/generic-operations-and-languages.md +0 -134
  64. package/skills/sketch/references/processes-state-and-time.md +0 -171
  65. package/skills/sketch/references/responsibility-and-variation.md +0 -245
@@ -1,306 +1,129 @@
1
- # Abstraction Review Worked Examples
1
+ # Abstraction Review Calibration Cases
2
2
 
3
- Use these examples to calibrate the review output. Keep user-facing answers
4
- shorter unless the user asks for the full card.
5
-
6
- Examples are abbreviated to show the main decision move. For a serious review,
7
- also include the field-card sections for source and confidence, contract, hidden
8
- detail, evidence and gaps, and open consequences.
9
-
10
- ## Contents
11
-
12
- - Example Selector
13
- - Skill Update Self-Review
14
- - Provider Integration
15
- - Retry Helper From Repeated Movement
16
- - Optional Default Semantics
17
- - Symbolic Expression Rewrite
18
- - Stateful Account
19
- - Chainable Builder
3
+ Use one case only when the candidate field card is complete but the decision is
4
+ still ambiguous. These examples calibrate review; they do not supply a missing
5
+ candidate surface.
20
6
 
21
7
  ## Example Selector
22
8
 
23
- Use the smallest example that matches the candidate shape. Do not read the full
24
- file unless calibration is still unclear.
25
-
26
- | Candidate shape | Example to read |
9
+ | Candidate pressure | Calibration |
27
10
  | --- | --- |
28
- | skill, workflow, recipe, or instruction update | Skill Update Self-Review |
29
- | generic operation, plugin/provider, type/case expansion | Provider Integration |
30
- | repeated helper movement with stable roles | Retry Helper From Repeated Movement |
31
- | optional, nullable, defaulted, or legacy value meaning | Optional Default Semantics |
32
- | expression, formula, DSL, parser, or rewrite rule | Symbolic Expression Rewrite |
33
- | local state, hidden history, audit, replay, or concurrency | Stateful Account |
34
- | fluent API, builder, pipeline, or chainable surface | Chainable Builder |
11
+ | repeated movement exposed a helper | Retry Helper |
12
+ | additive provider or type extension | Provider Registry |
13
+ | representation should be hidden | Schedule Boundary |
14
+ | local state claims to simplify callers | Stateful Account |
15
+ | fluent operations claim closure | Query Builder |
35
16
 
36
- ## Skill Update Self-Review
17
+ ## Retry Helper
37
18
 
38
19
  ```text
39
20
  Candidate:
40
- abstraction-review skill update with field-card, recipe-cards, repair-table,
41
- and worked examples
42
-
21
+ withRetry(operation, shouldRetry, delayStrategy, maxAttempts)
43
22
  Pressure:
44
- The first version only classified candidates by layer. It could still collapse
45
- into polished advice without a concrete artifact or stop check.
46
-
47
- Wish:
48
- A future agent can review an abstraction by producing a contract, hidden
49
- detail, output artifact, observable stop check, and unresolved consequences.
50
-
51
- Layer:
52
- Boundary + Engine + Run
53
-
54
- Recipe:
55
- Data Abstraction Boundary for owned responsibility
56
- Dispatch Registration for reference routing
57
- Procedure -> Process Reality Check for whether agents will actually use it
58
-
59
- Input artifact:
60
- SKILL.md procedure, reference list, and current reference files
61
-
62
- Derivation:
63
- core question -> public contract
64
- references -> conditional reference choices
65
- realistic invocation -> run evidence
66
-
67
- Output artifact:
68
- skill boundary:
69
- owns abstraction promotion judgment
70
- does not create the design surface, choose timing, implement, or perform
71
- final completion review
72
- reference selector:
73
- field-card for substantial review
74
- recipe-cards for construction rules
75
- repair-table for failed stop checks
76
- worked-examples for calibration
77
-
23
+ three request workflows already share attempt -> classify -> wait -> retry
24
+ Caller contract:
25
+ execute one operation under explicit retry classification, delay, and limit
26
+ Hidden detail:
27
+ loop mechanics, attempt bookkeeping, wait scheduling
28
+ Counterexample:
29
+ payment retry requires idempotency and stale-response ownership not represented
30
+ by the generic contract
78
31
  Stop:
79
- Given a proposed API, workflow, or skill update, the agent produces a review
80
- card with output artifact and stop check instead of only saying "looks good."
81
-
32
+ old workflows become simple calls; process trace, total wait, cancellation, and
33
+ failure are explicit; one transfer case fits without a new flag
82
34
  Decision:
83
- keep with calibration gap if no realistic invocation has been run yet
84
- revise-surface if the skill cannot say when to read each reference
85
- revise-model if the review invariant or condition space is unclear
35
+ keep only if variation roles and process observers are genuinely shared;
36
+ otherwise split by product retry semantics
86
37
  ```
87
38
 
88
- ## Provider Integration
89
-
90
- ```text
91
- Candidate:
92
- charge(provider, amount) as a generic operation
93
-
94
- Pressure:
95
- Each new provider edits old switch statements and leaks provider fields.
96
-
97
- Layer:
98
- Engine + Boundary
99
-
100
- Recipe:
101
- Dispatch Registration, then Data Abstraction Boundary
39
+ The helper is reviewable because its caller shape and three concrete sources
40
+ already exist. If only duplication exists and the interface must still be
41
+ invented, return to `signal` and `sketch`.
102
42
 
103
- Input artifact:
104
- providers x operations table
105
-
106
- Derivation:
107
- each current branch -> one (provider, operation) method cell
108
-
109
- Output artifact:
110
- registerProvider(provider, { charge, refund })
111
- charge(provider, amount)
112
- unsupported refund policy
113
-
114
- Stop:
115
- add fake provider without changing caller code
116
-
117
- Decision:
118
- keep if unsupported cases are explicit; otherwise revise-surface
119
- ```
120
-
121
- ## Retry Helper From Repeated Movement
43
+ ## Provider Registry
122
44
 
123
45
  ```text
124
46
  Candidate:
125
- withRetry(operation, shouldRetry, delayStrategy, maxAttempts)
126
-
47
+ registerProvider(kind, { charge, refund })
127
48
  Pressure:
128
- Several request functions repeat the same movement: run operation, inspect
129
- failure, wait, retry, eventually fail.
130
-
131
- Layer:
132
- Language + Unit
133
-
134
- Recipe:
135
- Movement Pattern Extraction, then Procedure -> Process Reality Check
136
-
137
- Input artifact:
138
- cases:
139
- fetchProfile, submitPayment, syncInventory
140
- common movement:
141
- attempt -> classify failure -> delay -> retry or give up
142
- variation roles:
143
- operation, shouldRetry, delayStrategy, maxAttempts
144
-
145
- Derivation:
146
- common movement becomes the helper body
147
- variation roles become parameters or strategy callbacks
148
-
149
- Output artifact:
150
- withRetry signature
151
- role table for existing cases
152
- process note for total attempts and delay behavior
153
-
49
+ accepted providers repeatedly edit central dispatch
50
+ Promise:
51
+ a provider can be added without changing old callers or provider modules
52
+ Counterexample:
53
+ duplicate registration silently overwrites a provider based on load order
154
54
  Stop:
155
- old cases are simple calls and a new retrying operation needs no new branch in
156
- withRetry
157
-
55
+ fake provider addition plus explicit duplicate, unsupported, visibility, and
56
+ startup-failure behavior
158
57
  Decision:
159
- keep if variation roles are stable; reject if each case has different
160
- responsibility or product semantics
58
+ revise-surface until precedence and failure ownership are public; reject when a
59
+ local exhaustive conditional remains the cheaper truthful owner
161
60
  ```
162
61
 
163
- ## Optional Default Semantics
62
+ ## Schedule Boundary
164
63
 
165
64
  ```text
166
65
  Candidate:
167
- readConfig("timeout") returns configured timeout or fallback
168
-
66
+ Schedule.create(input), schedule.isActiveAt(epoch), schedule.summary()
169
67
  Pressure:
170
- Missing values are handled differently by producers and consumers.
171
-
172
- Layer:
173
- Law + Boundary
174
-
175
- Recipe:
176
- Data Abstraction Boundary, then Meaning-Preserving Path
177
-
178
- Input artifact:
179
- states: missing / null / empty / configured / legacy
180
- owner: producer / constructor / consumer fallback
181
-
182
- Derivation:
183
- decide which states preserve the same meaning and which are unsupported
184
-
185
- Output artifact:
186
- absence/default policy:
187
- missing means <x>
188
- null means <y>
189
- fallback owner is <layer>
190
- consumer fallback is defensive unless explicitly owned
191
-
68
+ callers currently depend on tuple positions
69
+ Promise:
70
+ callers rely on interval behavior, not representation fields
71
+ Counterexample:
72
+ summary or membership is reimplemented outside the owner using raw fields
192
73
  Stop:
193
- each state has one meaning, one enforcement layer, and one test target
194
-
74
+ object-slot and private-tuple implementations satisfy the same caller contract;
75
+ leak search finds no indexes, destructuring, or raw construction
195
76
  Decision:
196
- revise-model if missing/null/legacy meanings are not decided yet
77
+ keep if only supported operations are public; reject field-alias getters that
78
+ hide no consequential choice
197
79
  ```
198
80
 
199
- ## Symbolic Expression Rewrite
81
+ ## Stateful Account
200
82
 
201
83
  ```text
202
84
  Candidate:
203
- simplify(expression)
204
-
85
+ account.withdraw(amount)
205
86
  Pressure:
206
- Rewrite rules are tied to list indexes or string positions.
207
-
208
- Layer:
209
- Language + Boundary
210
-
211
- Recipe:
212
- Notation As Data, then Data Abstraction Boundary
213
-
214
- Input artifact:
215
- expression cases: number, variable, sum, product
216
-
217
- Derivation:
218
- cases -> predicates; parts -> selectors; new expressions -> constructors
219
-
220
- Output artifact:
221
- isSum, addend, augend, makeSum
222
- isProduct, multiplier, multiplicand, makeProduct
223
-
87
+ caller should not thread balance manually
88
+ Promise:
89
+ local state is a sufficient summary of accepted transaction history
90
+ Counterexample:
91
+ audit/replay or concurrent withdrawal is required but no event/order contract
92
+ exists
224
93
  Stop:
225
- rewrite rules use selectors/constructors, not raw layout
226
-
94
+ owner, writers, identity, aliases, transition law, and concurrency scope match
95
+ admitted cases
227
96
  Decision:
228
- keep after constructors own simplification policy; otherwise split policy
97
+ keep for bounded local history; revise-model when audit, replay, or concurrent
98
+ histories are product meaning
229
99
  ```
230
100
 
231
- ## Stateful Account
101
+ ## Query Builder
232
102
 
233
103
  ```text
234
104
  Candidate:
235
- makeAccount(initialBalance).withdraw(amount)
236
-
105
+ query.where(...).orderBy(...).limit(...).execute()
237
106
  Pressure:
238
- Same method call can produce different results after previous calls.
239
-
240
- Layer:
241
- Time
242
-
243
- Recipe:
244
- History Placement
245
-
246
- Input artifact:
247
- required history: transaction sequence
248
- sufficient summary: current balance
249
- interaction model: single actor or concurrent actors
250
-
251
- Derivation:
252
- decide whether balance can be hidden local state or must be explicit stream/log
253
-
254
- Output artifact:
255
- balance is hidden summary of accepted transactions
256
- transaction log is required if audit/replay/collaboration matters
257
-
107
+ query transformations should compose
108
+ Promise:
109
+ builder operations remain in the Query world
110
+ Counterexample:
111
+ execute is treated as another Query while performing I/O and returning rows
258
112
  Stop:
259
- caller contract states whether history is hidden or explicit
260
-
113
+ where/order/limit are Query -> Query; execute is an explicit finalizer with
114
+ failure and resource semantics
261
115
  Decision:
262
- keep for single-actor local state; revise-model if concurrency/audit matters
263
- ```
264
-
265
- If concurrent withdrawals appear, run Event Order Protection:
266
-
267
- ```text
268
- order law:
269
- read balance, decide sufficient funds, write new balance is one protected unit
270
-
271
- stop:
272
- forbidden interleaving cannot violate balance invariant
116
+ keep after the finalizer boundary is visible
273
117
  ```
274
118
 
275
- ## Chainable Builder
276
-
277
- ```text
278
- Candidate:
279
- query.where(...).orderBy(...).limit(...).execute()
280
-
281
- Pressure:
282
- Most operations compose, but execute leaves the query world.
283
-
284
- Layer:
285
- Unit + Boundary
286
-
287
- Recipe:
288
- Closure Composition Unit
119
+ ## Calibration Boundary
289
120
 
290
- Input artifact:
291
- query unit, closed operations, finalizers
121
+ Do not select the example whose surface looks most similar. Select the one whose
122
+ **promise and falsifier** match. If no case matches, use the field card directly
123
+ or hand off; do not expand this file into another design catalog.
292
124
 
293
- Derivation:
294
- mark where/orderBy/limit as Query -> Query
295
- mark execute as Query -> Result
125
+ ## Source Trace
296
126
 
297
- Output artifact:
298
- closed query builder vocabulary
299
- explicit finalizer boundary
300
-
301
- Stop:
302
- all builder operations return Query; execute is intentionally outside
303
-
304
- Decision:
305
- keep if finalizer is not hidden as another closed operation
306
- ```
127
+ These are source-independent Developer calibration cases. Their review promises
128
+ and counterexamples are derived from the sources traced in
129
+ Abstraction Candidate Review. No example is a copied source API.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: model
3
- description: "Model the condition space behind a requirement, invariant, bug, policy, workflow, or code behavior using cases, predicates, rules, forbidden states, transitions, objectives, guarantee placement, and verification targets. Use when correctness depends on combinations, absence or default semantics, contracts, replacement, state, time, or policy interaction."
3
+ description: "Model unresolved condition space behind a requirement, invariant, bug, policy, workflow, or code behavior using cases, predicates, rules, forbidden states, transitions, objectives, guarantee placement, and verification targets. Use when correctness depends on combinations, absence or default semantics, contracts, replacement, state, time, or policy interaction that must be settled before design. Supplied laws or invariants that only need an interface shape belong directly to sketch."
4
4
  ---
5
5
 
6
6
  # Model
@@ -11,6 +11,20 @@ Expose the condition space a valid implementation must satisfy.
11
11
 
12
12
  Which cases, rules, states, or transitions make the claim precise?
13
13
 
14
+ ## Judgment Spine
15
+
16
+ ```text
17
+ unresolved uncertainty
18
+ -> admitted domain and consequential distinctions
19
+ -> rules, forbidden cases, and assumptions
20
+ -> counterexamples and guarantee owners
21
+ -> model artifact that constrains later design
22
+ ```
23
+
24
+ Choose representation from the uncertainty, not from a favorite formal tool.
25
+ Specialized references extend one modeling obligation; they do not turn the leaf
26
+ into a catalog of solvers or languages.
27
+
14
28
  ## Inputs
15
29
 
16
30
  - Requirement, invariant, policy, workflow, or code behavior
@@ -61,10 +75,12 @@ states, transitions, or policy decisions invalidate the model.
61
75
  3. Separate facts, decisions, assumptions, properties, and helper predicates.
62
76
  4. Make missing, undefined, null, empty, legacy, and configured states explicit
63
77
  when absence matters. Name the policy owner and misplaced-default cases.
64
- 5. Model transitions separately from current-state validity when order matters.
65
- 6. Place each guarantee at the appropriate type, boundary, validation, test,
78
+ 5. Select one specialized model only when contract, relation, time, exhaustive
79
+ evidence, or search has an independent artifact and stop condition.
80
+ 6. State the ability lost and guarantee gained by the chosen representation.
81
+ 7. Place each guarantee at the appropriate type, boundary, validation, test,
66
82
  property, proof, model check, or human decision.
67
- 7. Derive verification targets and the counterexample each target should catch.
83
+ 8. Derive counterexamples and verification targets without designing the API.
68
84
 
69
85
  ## Missing Evidence
70
86
 
@@ -76,15 +92,17 @@ Keep provisional rules visibly provisional.
76
92
  ## Boundary
77
93
 
78
94
  Do not decide product scope, design the implementation surface, schedule
79
- structural work, mutate artifacts, or make the final evidence judgment.
95
+ structural work, mutate artifacts, or make the final evidence judgment. Words
96
+ such as “law,” “invariant,” or “replacement” do not require a model route when
97
+ the requirement already fixes their meaning and asks only for public operations,
98
+ ownership, collaborators, or caller shape; route that original surface to
99
+ `sketch`.
80
100
 
81
101
  ## Reference Routing
82
102
 
83
- Read [the problem-modeling reference](references/problem-modeling.md) for
84
- policy-heavy, stateful, optimization, safety-critical, or otherwise complex
85
- condition spaces.
86
-
87
- Read [the worked models and specialized techniques](references/worked-models-and-specialized-techniques.md)
88
- when a boolean policy, relational constraint, replacement, temporal rule, proof
89
- obligation, solver encoding, logic program, or plan needs a complete calibration
90
- example rather than the compact procedure alone.
103
+ The machine-readable [reference policy](reference-policy.json) is the routing
104
+ authority. Each route answers one modeling question, refines one judgment step,
105
+ and declares its artifact, stop, and separation boundary. Prefer a specialized
106
+ route over the broad condition-space fallback when it owns the unresolved
107
+ obligation; combine routes only for independent model questions. Use the
108
+ exemption only when no route trigger applies and cite its evidence.
@@ -0,0 +1,96 @@
1
+ {
2
+ "version": 2,
3
+ "routes": [
4
+ {
5
+ "id": "condition-space",
6
+ "question": "Which distinctions, rules, forbidden cases, assumptions, and guarantee owners define this condition space?",
7
+ "trigger": "Prose or isolated examples hide consequential combinations, quantifiers, absence/default meaning, ability-guarantee tradeoffs, or model/environment assumptions, and no specialized route below is primary.",
8
+ "method_step": "lower accepted language into the smallest sufficient domain, distinctions, predicates, forbidden cases, assumptions, owners, and counterexamples",
9
+ "references": ["references/problem-modeling.md"],
10
+ "artifacts": ["a bounded domain and distinction map", "explicit rules, forbidden cases, assumptions, and human-owned policy", "a guarantee-owner and counterexample map"],
11
+ "stop": "Every consequential distinction changes a rule, forbidden case, owner, or check, and no unsupported implementation surface has been invented.",
12
+ "separate_when": "A contract/replacement, relational, temporal, proof, solver, logic-query, or planning question has an independent artifact and stop; select that route."
13
+ },
14
+ {
15
+ "id": "contract-replacement",
16
+ "question": "Can the new contract replace the old one for the declared callers and observers?",
17
+ "trigger": "Caller/callee obligations, API or schema compatibility, old/new preconditions and postconditions, or observer-relative refinement are consequential.",
18
+ "method_step": "after defining the admitted domain, compare requires, ensures, failures, observers, and refinement mapping",
19
+ "read_order": "listed",
20
+ "references": ["references/problem-modeling.md", "references/contract-and-replacement-models.md"],
21
+ "artifacts": ["old and new contract relations", "precondition and postcondition implication results", "an observer set, refinement mapping, and excluded compatibility cases"],
22
+ "stop": "Every replacement obligation is supported, contradicted, or left as an explicit compatibility question for a named observer.",
23
+ "separate_when": "Adapters or migration surfaces must be designed, timing chosen, or compatibility evidence executed; hand off to sketch, schedule, or verify."
24
+ },
25
+ {
26
+ "id": "relational-constraints",
27
+ "question": "Which entity relationships and quantified constraints distinguish valid from invalid instances?",
28
+ "trigger": "Correctness depends on entities, intervals, cross-record integrity, quantified relations, bidirectional constraints, SQL translation, or set-versus-bag semantics.",
29
+ "method_step": "after defining domains, state decisions, properties, assumptions, quantified constraints, identity, multiplicity, and runtime translation obligations",
30
+ "read_order": "listed",
31
+ "references": ["references/problem-modeling.md", "references/relational-constraint-models.md"],
32
+ "artifacts": ["a relational domain and quantified constraint set", "known valid and invalid instances", "endpoint, null, multiplicity, mutation, and contradiction policy"],
33
+ "stop": "Known valid and invalid instances differ for the modeled reason and runtime translation obligations are explicit.",
34
+ "separate_when": "Histories rather than instances carry meaning, solver status is the claim, or an enforcement API must be designed."
35
+ },
36
+ {
37
+ "id": "temporal-behavior",
38
+ "question": "Which histories are allowed, forbidden, or required to make progress?",
39
+ "trigger": "Snapshots are insufficient because retry, stale or duplicate events, lifecycle, concurrency, safety, progress, stuttering, fairness, or temporal refinement matters.",
40
+ "method_step": "derive states, actions, guards, effects, frame conditions, representative traces, safety, progress, fairness, and observer mapping",
41
+ "read_order": "listed",
42
+ "references": ["references/problem-modeling.md", "references/temporal-behavior-models.md"],
43
+ "artifacts": ["a state/action relation with frame conditions", "valid, stale, duplicate, retry, reorder, and concurrent traces", "safety, progress, stuttering, fairness, and refinement obligations"],
44
+ "stop": "Every consequential history is classified and each safety or progress claim has assumptions and a counterexample trace.",
45
+ "separate_when": "State ownership or event APIs must be designed, traces executed, or the task is finding one goal-directed plan."
46
+ },
47
+ {
48
+ "id": "proof-obligation",
49
+ "question": "What exact implementation claim follows from this specification, invariant, and proof argument?",
50
+ "trigger": "A deductive implementation-conformance claim needs preconditions, postconditions, invariant initialization/preservation/conclusion, termination, or arithmetic/tool assumptions.",
51
+ "method_step": "bind the claim to its specification, invariant, proof steps, termination argument, runtime model, trusted boundary, and omitted observers",
52
+ "read_order": "listed",
53
+ "references": ["references/problem-modeling.md", "references/proof-obligations.md"],
54
+ "artifacts": ["a specification and proof-obligation set", "initialization, preservation, conclusion, and termination evidence", "a narrowed claim and omitted-observer list"],
55
+ "stop": "The proof supports exactly the stated specification under explicit assumptions and every omitted observer is visible.",
56
+ "separate_when": "The evidence is bounded search or optimization status, or proof execution/relevance must be verified."
57
+ },
58
+ {
59
+ "id": "solver-result-boundary",
60
+ "question": "What exact claim follows from this bounded model or solver status?",
61
+ "trigger": "Bounded counterexample search, satisfiability, feasibility, optimization, scope/configuration, or solver result-state interpretation is consequential.",
62
+ "method_step": "bind status to variables, domains, constraints, objective, equivalence, bound, encoding assumptions, satisfiable witness, and unmodeled observers",
63
+ "read_order": "listed",
64
+ "references": ["references/problem-modeling.md", "references/solver-result-boundaries.md"],
65
+ "artifacts": ["a solver encoding and scope", "a satisfiable witness and exact result status", "a narrowed bounded/feasible/optimal claim and residual"],
66
+ "stop": "The reported claim is no broader than the encoding, bound, witness, and exact result state.",
67
+ "separate_when": "The task is deductive proof, query-answer semantics, action planning, or tool execution relevance."
68
+ },
69
+ {
70
+ "id": "logic-query-semantics",
71
+ "question": "What do answers, empty results, duplicates, negation, and search completion mean for this query?",
72
+ "trigger": "Facts/rules, zero-one-many answers, proof multiplicity, duplicates, negation-as-failure, binding order, search fairness, cycles, or divergence are consequential.",
73
+ "method_step": "define answer/proof identity, duplicate and aggregation policy, negation, bindings, search order, outcomes, fairness, cycles, and termination",
74
+ "read_order": "listed",
75
+ "references": ["references/problem-modeling.md", "references/logic-query-semantics.md"],
76
+ "artifacts": ["a facts/rules/query model", "answer, proof, duplicate, negation, binding, and search semantics", "answer, no-answer, cycle, divergence, and completion cases"],
77
+ "stop": "Every observed empty/non-empty result has one interpretation relative to search completion, duplicates, negation, and termination.",
78
+ "separate_when": "The task is action planning, conclusive solver status, or design of the query language runtime."
79
+ },
80
+ {
81
+ "id": "planning-model",
82
+ "question": "Which legal action sequence reaches the goal while preserving the invariant, and what makes one plan preferred?",
83
+ "trigger": "Initial state, goal, legal actions, intermediate-state invariants, action costs, equivalent plans, or no-plan meaning is consequential.",
84
+ "method_step": "derive action guards/transitions, intermediate-state invariant, representative valid/invalid plan, objective, equivalence, and search-completeness boundary",
85
+ "read_order": "listed",
86
+ "references": ["references/problem-modeling.md", "references/planning-models.md"],
87
+ "artifacts": ["an initial/goal/action model", "a plan with every intermediate invariant check", "objective/equivalence and complete-versus-unknown no-plan semantics"],
88
+ "stop": "One valid and one invalid sequence are distinguishable and preferred/no-plan claims are relative to objective and search completeness.",
89
+ "separate_when": "The question is all allowed histories, relational query answers, solver optimality status, or planner runtime design."
90
+ }
91
+ ],
92
+ "exemption": {
93
+ "when": "The condition space is finite and direct enough for the SKILL.md judgment spine to expose every consequential distinction, rule, forbidden case, assumption, owner, and counterexample without a specialized model extension.",
94
+ "evidence": ["the bounded dimensions and admitted values", "the complete rule and forbidden-case surface", "the guarantee owners and counterexamples", "why no specialized model question has an independent artifact"]
95
+ }
96
+ }