@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.
- package/README.md +215 -372
- package/REFERENCE_ROUTING.md +243 -0
- package/extensions/developer.ts +533 -18
- package/extensions/machine.ts +45 -0
- package/extensions/references/behavior-preserving-structural-change.md +87 -8
- package/extensions/skills.ts +330 -52
- package/extensions/state.ts +227 -2
- package/package.json +9 -3
- package/skills/abstraction-review/SKILL.md +37 -23
- package/skills/abstraction-review/reference-policy.json +66 -0
- package/skills/abstraction-review/references/field-card.md +113 -168
- package/skills/abstraction-review/references/repair-table.md +66 -80
- package/skills/abstraction-review/references/worked-examples.md +79 -256
- package/skills/model/SKILL.md +31 -13
- package/skills/model/reference-policy.json +96 -0
- package/skills/model/references/contract-and-replacement-models.md +112 -0
- package/skills/model/references/logic-query-semantics.md +89 -0
- package/skills/model/references/planning-models.md +75 -0
- package/skills/model/references/problem-modeling.md +143 -276
- package/skills/model/references/proof-obligations.md +71 -0
- package/skills/model/references/relational-constraint-models.md +110 -0
- package/skills/model/references/solver-result-boundaries.md +83 -0
- package/skills/model/references/temporal-behavior-models.md +106 -0
- package/skills/naming-judgment/SKILL.md +17 -4
- package/skills/naming-judgment/reference-policy.json +29 -0
- package/skills/naming-judgment/references/domain-naming.md +29 -10
- package/skills/schedule/SKILL.md +16 -6
- package/skills/schedule/reference-policy.json +29 -0
- package/skills/schedule/references/structural-change-timing.md +81 -18
- package/skills/signal/SKILL.md +17 -6
- package/skills/signal/reference-policy.json +29 -0
- package/skills/signal/references/structural-movement.md +87 -14
- package/skills/sketch/SKILL.md +38 -42
- package/skills/sketch/reference-policy.json +212 -0
- package/skills/sketch/references/accumulator-invariants.md +125 -0
- package/skills/sketch/references/closure-and-conventional-interfaces.md +87 -0
- package/skills/sketch/references/composition-by-wishes.md +69 -0
- package/skills/sketch/references/data-driven-design.md +99 -22
- package/skills/sketch/references/data-shape-template-catalog.md +58 -19
- package/skills/sketch/references/design-levels-and-boundaries.md +133 -0
- package/skills/sketch/references/earned-abstraction.md +75 -0
- package/skills/sketch/references/generative-recursion.md +122 -0
- package/skills/sketch/references/generic-dispatch-systems.md +75 -0
- package/skills/sketch/references/language-semantics.md +82 -0
- package/skills/sketch/references/meaning-preserving-conversions.md +69 -0
- package/skills/sketch/references/process-shape-and-resources.md +157 -0
- package/skills/sketch/references/representation-barriers.md +73 -0
- package/skills/sketch/references/responsibility-and-collaboration.md +108 -0
- package/skills/sketch/references/runtime-and-compilation.md +84 -0
- package/skills/sketch/references/selection-and-creation.md +76 -0
- package/skills/sketch/references/state-history-and-order.md +126 -0
- package/skills/sketch/references/type-transitions.md +54 -0
- package/skills/sketch/references/variation-roles.md +59 -0
- package/skills/verify/SKILL.md +17 -6
- package/skills/verify/reference-policy.json +30 -0
- package/skills/verify/references/verifier-selection-and-pass-but-wrong.md +152 -192
- package/SOURCES.md +0 -104
- package/skills/abstraction-review/references/recipe-cards.md +0 -322
- package/skills/model/references/worked-models-and-specialized-techniques.md +0 -218
- package/skills/sketch/references/abstraction-barriers-and-closure.md +0 -160
- package/skills/sketch/references/abstraction-composition-and-state.md +0 -184
- package/skills/sketch/references/composition-generative-recursion-and-accumulators.md +0 -196
- package/skills/sketch/references/generic-operations-and-languages.md +0 -134
- package/skills/sketch/references/processes-state-and-time.md +0 -171
- package/skills/sketch/references/responsibility-and-variation.md +0 -245
|
@@ -1,306 +1,129 @@
|
|
|
1
|
-
# Abstraction Review
|
|
1
|
+
# Abstraction Review Calibration Cases
|
|
2
2
|
|
|
3
|
-
Use
|
|
4
|
-
|
|
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
|
-
|
|
24
|
-
file unless calibration is still unclear.
|
|
25
|
-
|
|
26
|
-
| Candidate shape | Example to read |
|
|
9
|
+
| Candidate pressure | Calibration |
|
|
27
10
|
| --- | --- |
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
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
|
-
##
|
|
17
|
+
## Retry Helper
|
|
37
18
|
|
|
38
19
|
```text
|
|
39
20
|
Candidate:
|
|
40
|
-
|
|
41
|
-
and worked examples
|
|
42
|
-
|
|
21
|
+
withRetry(operation, shouldRetry, delayStrategy, maxAttempts)
|
|
43
22
|
Pressure:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
80
|
-
|
|
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
|
|
84
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
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
|
-
|
|
126
|
-
|
|
47
|
+
registerProvider(kind, { charge, refund })
|
|
127
48
|
Pressure:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
55
|
+
fake provider addition plus explicit duplicate, unsupported, visibility, and
|
|
56
|
+
startup-failure behavior
|
|
158
57
|
Decision:
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
##
|
|
62
|
+
## Schedule Boundary
|
|
164
63
|
|
|
165
64
|
```text
|
|
166
65
|
Candidate:
|
|
167
|
-
|
|
168
|
-
|
|
66
|
+
Schedule.create(input), schedule.isActiveAt(epoch), schedule.summary()
|
|
169
67
|
Pressure:
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
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
|
-
|
|
77
|
+
keep if only supported operations are public; reject field-alias getters that
|
|
78
|
+
hide no consequential choice
|
|
197
79
|
```
|
|
198
80
|
|
|
199
|
-
##
|
|
81
|
+
## Stateful Account
|
|
200
82
|
|
|
201
83
|
```text
|
|
202
84
|
Candidate:
|
|
203
|
-
|
|
204
|
-
|
|
85
|
+
account.withdraw(amount)
|
|
205
86
|
Pressure:
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
226
|
-
|
|
94
|
+
owner, writers, identity, aliases, transition law, and concurrency scope match
|
|
95
|
+
admitted cases
|
|
227
96
|
Decision:
|
|
228
|
-
keep
|
|
97
|
+
keep for bounded local history; revise-model when audit, replay, or concurrent
|
|
98
|
+
histories are product meaning
|
|
229
99
|
```
|
|
230
100
|
|
|
231
|
-
##
|
|
101
|
+
## Query Builder
|
|
232
102
|
|
|
233
103
|
```text
|
|
234
104
|
Candidate:
|
|
235
|
-
|
|
236
|
-
|
|
105
|
+
query.where(...).orderBy(...).limit(...).execute()
|
|
237
106
|
Pressure:
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
260
|
-
|
|
113
|
+
where/order/limit are Query -> Query; execute is an explicit finalizer with
|
|
114
|
+
failure and resource semantics
|
|
261
115
|
Decision:
|
|
262
|
-
keep
|
|
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
|
-
##
|
|
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
|
-
|
|
291
|
-
|
|
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
|
-
|
|
294
|
-
mark where/orderBy/limit as Query -> Query
|
|
295
|
-
mark execute as Query -> Result
|
|
125
|
+
## Source Trace
|
|
296
126
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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.
|
package/skills/model/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: model
|
|
3
|
-
description: "Model
|
|
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.
|
|
65
|
-
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
when
|
|
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
|
+
}
|