@hobin/developer 0.1.7 → 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 (66) hide show
  1. package/README.md +212 -355
  2. package/REFERENCE_ROUTING.md +243 -0
  3. package/extensions/developer.ts +601 -23
  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/extensions/tool-policy.ts +87 -0
  9. package/package.json +9 -3
  10. package/skills/abstraction-review/SKILL.md +37 -23
  11. package/skills/abstraction-review/reference-policy.json +66 -0
  12. package/skills/abstraction-review/references/field-card.md +113 -168
  13. package/skills/abstraction-review/references/repair-table.md +66 -80
  14. package/skills/abstraction-review/references/worked-examples.md +79 -256
  15. package/skills/model/SKILL.md +31 -13
  16. package/skills/model/reference-policy.json +96 -0
  17. package/skills/model/references/contract-and-replacement-models.md +112 -0
  18. package/skills/model/references/logic-query-semantics.md +89 -0
  19. package/skills/model/references/planning-models.md +75 -0
  20. package/skills/model/references/problem-modeling.md +143 -276
  21. package/skills/model/references/proof-obligations.md +71 -0
  22. package/skills/model/references/relational-constraint-models.md +110 -0
  23. package/skills/model/references/solver-result-boundaries.md +83 -0
  24. package/skills/model/references/temporal-behavior-models.md +106 -0
  25. package/skills/naming-judgment/SKILL.md +17 -4
  26. package/skills/naming-judgment/reference-policy.json +29 -0
  27. package/skills/naming-judgment/references/domain-naming.md +29 -10
  28. package/skills/schedule/SKILL.md +16 -6
  29. package/skills/schedule/reference-policy.json +29 -0
  30. package/skills/schedule/references/structural-change-timing.md +81 -18
  31. package/skills/signal/SKILL.md +17 -6
  32. package/skills/signal/reference-policy.json +29 -0
  33. package/skills/signal/references/structural-movement.md +87 -14
  34. package/skills/sketch/SKILL.md +38 -42
  35. package/skills/sketch/reference-policy.json +212 -0
  36. package/skills/sketch/references/accumulator-invariants.md +125 -0
  37. package/skills/sketch/references/closure-and-conventional-interfaces.md +87 -0
  38. package/skills/sketch/references/composition-by-wishes.md +69 -0
  39. package/skills/sketch/references/data-driven-design.md +99 -22
  40. package/skills/sketch/references/data-shape-template-catalog.md +58 -19
  41. package/skills/sketch/references/design-levels-and-boundaries.md +133 -0
  42. package/skills/sketch/references/earned-abstraction.md +75 -0
  43. package/skills/sketch/references/generative-recursion.md +122 -0
  44. package/skills/sketch/references/generic-dispatch-systems.md +75 -0
  45. package/skills/sketch/references/language-semantics.md +82 -0
  46. package/skills/sketch/references/meaning-preserving-conversions.md +69 -0
  47. package/skills/sketch/references/process-shape-and-resources.md +157 -0
  48. package/skills/sketch/references/representation-barriers.md +73 -0
  49. package/skills/sketch/references/responsibility-and-collaboration.md +108 -0
  50. package/skills/sketch/references/runtime-and-compilation.md +84 -0
  51. package/skills/sketch/references/selection-and-creation.md +76 -0
  52. package/skills/sketch/references/state-history-and-order.md +126 -0
  53. package/skills/sketch/references/type-transitions.md +54 -0
  54. package/skills/sketch/references/variation-roles.md +59 -0
  55. package/skills/verify/SKILL.md +17 -6
  56. package/skills/verify/reference-policy.json +30 -0
  57. package/skills/verify/references/verifier-selection-and-pass-but-wrong.md +152 -192
  58. package/SOURCES.md +0 -104
  59. package/skills/abstraction-review/references/recipe-cards.md +0 -322
  60. package/skills/model/references/worked-models-and-specialized-techniques.md +0 -218
  61. package/skills/sketch/references/abstraction-barriers-and-closure.md +0 -160
  62. package/skills/sketch/references/abstraction-composition-and-state.md +0 -184
  63. package/skills/sketch/references/composition-generative-recursion-and-accumulators.md +0 -196
  64. package/skills/sketch/references/generic-operations-and-languages.md +0 -134
  65. package/skills/sketch/references/processes-state-and-time.md +0 -171
  66. package/skills/sketch/references/responsibility-and-variation.md +0 -245
@@ -1,216 +1,161 @@
1
- # Abstraction Review Field Card
1
+ # Abstraction Candidate Review
2
2
 
3
- Use this reference when a review should produce more than a paragraph of advice.
4
- The goal is to turn a wished abstraction into an artifact with a stop check.
3
+ Use this reference when an already-shaped interface, helper, boundary, role,
4
+ workflow rule, or structural unit needs an auditable keep/revise/split/reject/
5
+ defer decision.
5
6
 
6
- ## Contents
7
+ This reference reviews a candidate. It does not create the original design,
8
+ extract movement, settle product rules, or choose timing.
7
9
 
8
- - Operating Loop
9
- - Field Card
10
- - Source Modes
11
- - Good Wish Test
12
- - Recipe-Grade Gate
13
- - Layer Router
14
- - Minimal Output
15
- - Self-Application Check
16
-
17
- ## Operating Loop
10
+ ## Judgment Spine
18
11
 
19
12
  ```text
20
- pressure
21
- -> wish
22
- -> layer
23
- -> recipe card
24
- -> output artifact
25
- -> observable stop
26
- -> repair decision
13
+ concrete candidate and caller shape
14
+ -> pressure it claims to remove
15
+ -> promises callers would rely on
16
+ -> evidence and counterexample
17
+ -> observable stop
18
+ -> keep | revise-surface | revise-model | split | reject | defer
27
19
  ```
28
20
 
29
- The wish opens freedom; the stop check brings the review back to evidence.
30
- Failure is not handled by a better name. Failure exposes a broken layer,
31
- contract, or missing artifact.
32
-
33
- Use [the recipe cards](recipe-cards.md) when the derivation rule is missing,
34
- [the repair table](repair-table.md) when the stop check fails, and
35
- [the worked examples](worked-examples.md) when a completed calibration case is
36
- needed. The field card remains the auditable summary; these files supply focused
37
- construction, repair, and examples.
21
+ A polished name or familiar pattern is not evidence. Missing construction is a
22
+ handoff, not an invitation for this review to absorb another skill.
38
23
 
39
- ## Field Card
40
-
41
- Fill this card for serious reviews.
24
+ ## Candidate Field Card
42
25
 
43
26
  ```text
44
- Candidate:
45
- What wished interface, helper, boundary, condition model, or abstraction is
46
- being judged?
47
-
48
- Source and confidence:
49
- Where did the candidate come from, and how strong is the evidence?
27
+ Candidate and source:
28
+ exact current or wished surface; where it came from
50
29
 
51
30
  Pressure:
52
- What complexity, repetition, variation, history, or representation detail is
53
- this candidate supposed to remove?
54
-
55
- Wish:
56
- In the better world, what would callers be able to say or do?
57
-
58
- Mismatch:
59
- What currently breaks or might break that wish?
31
+ accepted change, repeated movement, invariant, participant, or representation
32
+ issue it is meant to remove
60
33
 
61
- Timing:
62
- pre-implementation / post-implementation
34
+ Caller contract:
35
+ operations, inputs, outputs, failures, effects, and observers
63
36
 
64
- Layer:
65
- Language / Unit / Law / Boundary / Engine / Time / Run
66
-
67
- Recipe:
68
- Which narrow card is being executed?
69
-
70
- Input artifact:
71
- What concrete input must be written before judgment?
37
+ Hidden detail:
38
+ representation, policy, creation, history, ordering, or process callers may
39
+ ignore
72
40
 
73
- Derivation:
74
- How does that input constrain the output?
41
+ Owner and assumptions:
42
+ owner of guarantees; environment facts required for usefulness
75
43
 
76
- Contract:
77
- What can callers or future users rely on?
44
+ Representative cases:
45
+ normal, boundary, forbidden, and transfer case
78
46
 
79
- Hidden detail:
80
- What representation, policy, timing, history, cost, or process detail should
81
- callers not depend on?
47
+ Replacement or variation:
48
+ another implementation/caller/case the candidate claims to support
82
49
 
83
- Output artifact:
84
- What table, graph, contract, invariant, trace, or decision remains?
50
+ Counterexample:
51
+ smallest plausible case that would pass a superficial review while breaking
52
+ the promise
85
53
 
86
- Stop:
87
- What observable check decides pass/fail?
54
+ Stop check:
55
+ observable evidence that decides this review
88
56
 
89
57
  Evidence and gaps:
90
- What evidence supports the decision, and what would change it?
58
+ callers, cases, code, tests, traces, costs, or human-owned policy
91
59
 
92
60
  Decision:
93
61
  keep / revise-surface / revise-model / split / reject / defer
94
62
 
95
- Open consequence:
96
- What remains unresolved after this review?
63
+ Open consequence and handoff:
97
64
  ```
98
65
 
99
- ## Source Modes
100
-
101
- Use the candidate source to choose evidence and timing.
66
+ ## Review Promises
102
67
 
103
- | Source | Review pressure | Evidence to require |
104
- | --- | --- | --- |
105
- | design draft wished interface | Is the wish implementable and bounded? | caller contract, representative cases, hidden detail, planned stop |
106
- | structural observation | Is the movement real abstraction or local churn? | before/after diff, repeated movement, condition relation |
107
- | user-proposed API/helper | Is it domain language or implementation-shaped naming? | wished use, caller obligations, failure modes |
108
- | existing implementation | Does code still match the abstraction promise? | tests, trace, cost, call sites, hidden coupling |
109
- | skill/workflow update | Will future agents behave differently? | trigger wording, reference routing, realistic invocation |
68
+ Select only promises the candidate actually makes.
110
69
 
111
- ## Good Wish Test
70
+ | Promise | Evidence required | Pass-but-wrong shape | Handoff when the surface is missing |
71
+ | --- | --- | --- | --- |
72
+ | caller language hides representation | two representations or a leak search | new type name with raw fields still required | `sketch` barrier design |
73
+ | one responsibility owns a change | owner/message map and representative change | moved-method bag or generic service | `sketch` responsibility design |
74
+ | several implementations share a role | pre/post/failure compatibility | subtype needs stronger preconditions or different effects | `model` contract/replacement |
75
+ | composition remains in one value world | closed-operation and finalizer table | side effect disguised as chainable result | `sketch` closure design |
76
+ | additive extension is supported | row/column and fake-variant evidence | registry hides precedence or load-order policy | `sketch` generic operations |
77
+ | process remains truthful | trace, waits, cost, resource, failure ownership | same result with unbounded buffer or changed order | `sketch` process design |
78
+ | state/history has one owner | transition and order evidence | enum without stale/duplicate policy | `model` or `sketch` state work |
79
+ | name exposes stable sense | caller/audience/evolution evidence | rich word over unstable responsibility | `naming-judgment` |
112
80
 
113
- A wish is strong enough to review when it exposes a small language, not merely a
114
- preferred name.
81
+ A candidate can make several promises, but each must be evaluated against the
82
+ same caller contract. If the promises require independent surfaces or owners,
83
+ that is split evidence.
115
84
 
116
- ```text
117
- primitive words:
118
- What operations can be trusted without re-opening implementation detail?
119
-
120
- means of combination:
121
- How do smaller units produce larger valid units?
85
+ ## Stability Tests
122
86
 
123
- means of abstraction:
124
- How is a repeated composition or method given a reusable handle?
125
- ```
87
+ A candidate is stable enough to keep only when:
126
88
 
127
- Reject or revise a wish when:
89
+ - its pressure is current and observable;
90
+ - callers can use its vocabulary without reopening hidden details;
91
+ - the contract includes relevant effects, failures, order, and resources;
92
+ - a realistic transfer case fits without flags that expose internals;
93
+ - lost abilities are acceptable for current and credible callers;
94
+ - the owner can enforce the promised invariant;
95
+ - the stop check can fail the candidate rather than merely exercise it.
128
96
 
129
- - it only renames current representation shape;
130
- - it has no caller contract or failure mode;
131
- - its result cannot be composed or intentionally finalized;
132
- - no preserved meaning, invariant, or policy owner is visible;
133
- - it hides cost, history, order, or mutation that callers must understand.
97
+ Bias toward `defer` when pressure is plausible but examples or participant
98
+ independence are too weak. Choose `revise-model` when the candidate cannot be
99
+ judged because admitted meaning is unsettled. Choose `revise-surface` when the
100
+ meaning is accepted but the caller contract leaks or lies.
134
101
 
135
- ## Recipe-Grade Gate
102
+ ## Separation Router
136
103
 
137
- A review is recipe-grade only when this sentence can be filled:
104
+ Do not construct missing evidence inside this leaf:
138
105
 
139
106
  ```text
140
- Given <input artifact>,
141
- derive <output artifact>
142
- by <rule>,
143
- then check <observable stop>.
144
- If it fails, repair <layer, contract, or artifact>.
107
+ no concrete caller-facing surface -> sketch
108
+ unresolved product cases/rules -> model
109
+ only repeated movement is visible -> signal
110
+ surface is stable but timing is disputed -> schedule
111
+ word/sense is the issue -> naming-judgment
112
+ implementation claim needs evidence -> verify
145
113
  ```
146
114
 
147
- If the sentence cannot be filled:
148
-
149
- | What it is | Missing | Review consequence |
150
- | --- | --- | --- |
151
- | Advice | trigger, artifact, stop check | keep as explanation; do not promote |
152
- | Heuristic | derivation from input to output | read `repair-table.md` or expose the missing model |
153
- | Candidate recipe | derivation is still loose | run one worked case |
154
- | Recipe-grade | trigger, input, rule, output, stop, repair all exist | use in the review |
155
-
156
- ## Layer Router
157
-
158
- | Symptom | Layer | First card |
159
- | --- | --- | --- |
160
- | The problem vocabulary is missing or misleading | Language | Notation As Data |
161
- | Similar functions, workflows, or tests move together | Language/Unit | Movement Pattern Extraction |
162
- | Data, methods, messages, or change reasons suggest a misplaced owner | Unit/Boundary | Responsibility Boundary |
163
- | Operation results do not remain composable | Unit | Closure Composition Unit |
164
- | A loop, state transition, or contract has no preserved meaning | Law | Invariant Iteration |
165
- | Callers must know raw representation or hidden policy | Boundary | Data Abstraction Boundary |
166
- | New variants keep changing old conditionals | Engine | Dispatch Registration |
167
- | Conversion works but meaning loss is hidden | Engine/Law | Meaning-Preserving Path |
168
- | Same call depends on past interaction | Time | History Placement |
169
- | Event order changes correctness | Time/Run | Event Order Protection |
170
- | Result is right but process, cost, sharing, or stack shape is wrong | Run | Procedure -> Process Reality Check |
171
-
172
- When the symptom is clearer than the layer, open `repair-table.md`.
115
+ A reference route inside this skill may deepen review, failure localization, or
116
+ calibration. It must not reproduce the construction methods owned by those
117
+ leaves.
173
118
 
174
119
  ## Minimal Output
175
120
 
176
- For a compact user-facing review, show:
177
-
178
121
  ```text
179
122
  Candidate:
180
- Source and confidence:
181
- Layer:
182
- Recipe:
183
- Input artifact:
184
- Derivation rule:
185
- Contract:
186
- Hidden detail:
187
- Output artifact:
188
- Stop check:
189
- Evidence and gaps:
123
+ Pressure:
124
+ Caller contract and hidden detail:
125
+ Promises under review:
126
+ Counterexample:
127
+ Stop check and evidence:
190
128
  Decision:
191
- Open consequence:
129
+ Handoff or open consequence:
192
130
  ```
193
131
 
194
- When this review is part of a larger task, return the decision and its open
195
- consequence. The caller or orchestrator decides what happens next. Otherwise,
196
- stop at the review result. The card must be complete enough that a later person
197
- or agent can use it without reconstructing the reasoning.
198
-
199
- ## Self-Application Check
200
-
201
- When the candidate is a skill, workflow, recipe, or reference update, review the
202
- update with the same card.
203
-
204
- Map the layers this way:
205
-
206
- | Skill update surface | Review layer |
207
- | --- | --- |
208
- | trigger wording, user-facing command language | Language |
209
- | skill responsibility and core question | Boundary |
210
- | recipe-grade invariant or stop condition | Law |
211
- | progressive disclosure and reference routing | Engine |
212
- | whether future agents actually read enough context | Run |
213
-
214
- The stop check should be a realistic invocation, self-review card, or
215
- forward-test prompt. If the review cannot name what future behavior changes, the
216
- update is probably documentation, not a stable workflow abstraction.
132
+ ## Source Trace
133
+
134
+ This review spine is Developer synthesis over these bounded capabilities:
135
+
136
+ - Sandi Metz, Katrina Owen, and TJ Stankus, *99 Bottles of OOP*, Second
137
+ Edition, v2.2.2:
138
+ Chapters 3-9, pp. 51-268, for pressure, movement, responsibility, roles,
139
+ factories, and responsibility-level evidence.
140
+ - Harold Abelson and Gerald Jay Sussman with Julie Sussman, *Structure and
141
+ Interpretation of Computer Programs*, Second Edition:
142
+ Section 1.1,
143
+ Section 1.3,
144
+ Section 2.1,
145
+ Section 2.2,
146
+ Section 2.4,
147
+ Section 3.1, and
148
+ Section 3.4
149
+ for black-box promises, barriers, closure, dispatch, history, and order.
150
+ - Matthias Felleisen et al., *How to Design Programs*, living build 9.2.0.3:
151
+ Chapter 14,
152
+ Chapter 15,
153
+ Chapter 16,
154
+ Chapter 19,
155
+ and Chapter 20
156
+ for completed examples, migrated clients, and model stability.
157
+ - Hillel Wayne, *Logic for Programmers*, v0.14.0:
158
+ Chapter 5, pp. 47-60, for contract and observer-relative replacement.
159
+ - Zachary Tellman, *Elements of Clojure*, Leanpub 2019-02-11:
160
+ Indirection, public-manuscript pp. 70-95, for participant pressure and
161
+ interface calcification. Source-specific and universalized claims are excluded.
@@ -1,103 +1,89 @@
1
- # Abstraction Review Repair Table
1
+ # Abstraction Review Failure Localization
2
2
 
3
- Use this table when a wished abstraction failed, or when the observed symptom is
4
- clearer than the broken layer.
5
-
6
- The named repairs refer to [the recipe cards](recipe-cards.md). Record the result
7
- on [the field card](field-card.md); use [worked examples](worked-examples.md) only
8
- when the selected card still lacks a concrete calibration case.
3
+ Use this reference only after the candidate review's observable stop has failed.
4
+ Its job is to locate the broken promise and choose a handoff. It does not repair
5
+ the design inside `abstraction-review`.
9
6
 
10
7
  ## Diagnostic Loop
11
8
 
12
9
  ```text
13
- observed mismatch
14
- -> evidence
15
- -> broken layer hypothesis
16
- -> recipe card
17
- -> repair output
18
- -> re-run same symptom
10
+ failed stop
11
+ -> exact observation
12
+ -> candidate promise contradicted
13
+ -> broken layer or missing owner
14
+ -> smallest revision class
15
+ -> owning skill handoff
16
+ -> re-run the same stop after later work
19
17
  ```
20
18
 
21
- Do not jump from mismatch to a better name. Names can be repair outputs, but the
22
- repair must change a layer, contract, or artifact.
19
+ A better name is not a repair unless the failed promise was stable sense.
23
20
 
24
- ## Repair Log
21
+ ## Failure Log
25
22
 
26
23
  ```text
27
- Observed symptom:
28
- Evidence:
29
- Broken layer hypothesis:
30
- Selected recipe:
31
- Repair output:
32
- Re-run result:
33
- Open consequence:
24
+ Candidate:
25
+ Failed stop:
26
+ Observation:
27
+ Promise contradicted:
28
+ Likely broken layer:
29
+ Revision class:
30
+ Owning handoff:
31
+ Evidence needed before re-review:
34
32
  ```
35
33
 
36
- If the repair output is empty, the review only explained the problem.
37
-
38
- ## Repair Matrix
39
-
40
- | Symptom | Suspect layer | First repair | Output to create | Stop check |
41
- | --- | --- | --- | --- | --- |
42
- | Helpers have nice names but the domain rule is invisible | Language | Restate desired vocabulary | primitive/combination/abstraction vocabulary | new case can be spoken without representation detail |
43
- | Similar functions differ only by predicate, term, next step, or strategy | Language/Unit | Movement Pattern Extraction | common movement plus variation role table | old cases become simple calls |
44
- | Similar-looking code has different responsibilities | Unit/Boundary | Reject or split the abstraction | responsibility split note | no shared unit is promoted |
45
- | Extracted unit still needs unrelated context from its old host | Unit/Boundary | Responsibility Boundary | owner/message map | representative change is local to one coherent owner |
46
- | Caller reads object fields, list indexes, tags, or provider-specific shape | Boundary | Data Abstraction Boundary | constructor/selector/predicate/operation list | caller no longer touches representation primitive |
47
- | Operation result cannot be fed into later operations | Unit | Closure Composition Unit | closed operation table | closed operations build larger units |
48
- | Chainable API forces final side effects into the chain | Unit/Boundary | Split closed operations from finalizers | observer/finalizer boundary | closed operations and boundary effects are distinct |
49
- | State variables have no meaning | Law | Invariant Iteration | invariant statement | initial/step/final checks pass |
50
- | Loop is fast but correctness cannot be explained | Law/Run | Invariant + process trace | invariant and process trace | correctness follows from preserved meaning |
51
- | Recursive version is clear but stack or deferred work grows | Run | Procedure -> Process, then Invariant | shape note and accumulator option | shape change is explicit |
52
- | Constructor, validator, and normalizer are scattered | Boundary/Engine | Creation policy boundary | creation policy note | value enters the world through one gate |
53
- | Constructor is too expensive | Engine/Run | Cost placement decision | create/read/update cost note | cost owner is explicit |
54
- | New representation changes old code | Engine | Dispatch Registration | variant x operation table | new row/package is enough |
55
- | New operation changes every variant | Engine | Re-evaluate row/column axis | axis decision | frequently growing axis is explicit |
56
- | Mixed types explode into direct cases | Engine/Law | Meaning-Preserving Path | conversion graph | legal, loss, and unsupported paths are visible |
57
- | Conversion loses precision, identity, order, or capability | Law | Narrow preserved meaning | loss note | loss appears in contract |
58
- | Expression rewrite uses strings or indexes | Language/Boundary | Notation As Data | expression selectors/constructors | rules ignore raw layout |
59
- | AST exists but transforms are representation-specific | Boundary | Data Abstraction Boundary | representation-independent rules | representation can change |
60
- | Same call returns different results after prior interactions | Time | History Placement | state/history contract | history location is explicit |
61
- | Caller keeps passing previous state everywhere | Time/Boundary | History Placement | local state decision | burden is intentionally hidden or kept explicit |
62
- | Local state makes testing/reasoning hard | Time/Run | History Placement + process trace | hidden history note | loss of referential transparency is accepted |
63
- | Undo, replay, audit, or collaboration needs past events | Time | History as stream/log | stream/log decision | history is manipulable data |
64
- | Stream merge changes meaning | Time/Run | Event Order Protection | merge/order policy | forbidden interleaving is explainable |
65
- | Concurrent read-compute-write breaks invariant | Time/Run | Event Order Protection | protected region | invariant-breaking interleaving is blocked |
66
- | Lock/serializer blocks too much | Time/Engine | Narrow the order law | smaller protected relation | only meaningful order is protected |
67
- | Generic abstraction is clean but slow | Run/Engine | Procedure -> Process | cost surface | dispatch/lookup/coercion cost is visible |
68
- | Everything feels abstract and nothing is actionable | Run | Field Card + Recipe Cards | selected recipe card | trigger/input/output/stop are filled |
34
+ ## Localization Matrix
35
+
36
+ | Failure observation | Candidate defect | Review decision | Handoff |
37
+ | --- | --- | --- | --- |
38
+ | caller still reads fields, indexes, tags, or provider shape | barrier is below the caller need or only renames layout | `revise-surface` | `sketch` representation boundary |
39
+ | representative change still touches several unrelated owners | responsibility is incoherent | `split` or `reject` | `sketch` responsibility/collaboration |
40
+ | shared role requires stronger preconditions or different effects for one implementation | substitution promise is false | `split` or `revise-model` | `model` replacement contract |
41
+ | similar cases share syntax but not reason to change | candidate came from incidental similarity | `reject` | `signal` if further comparison is useful |
42
+ | closed operation returns a different value world or hides effects | closure promise is false | `revise-surface` | `sketch` closure/finalizer boundary |
43
+ | new variant still edits old packages | extension axis or ownership is wrong | `revise-surface` | `sketch` generic operation system |
44
+ | registration accepts overlap without visible precedence | openness moved policy into load order | `revise-model` or `split` | `model` policy, then `sketch` dispatch |
45
+ | conversion path loses precision, identity, order, or capability silently | preserved meaning is too broad | `revise-model` | `model` relation/contract |
46
+ | result is right but stack, wait, order, resource, or failure behavior changes | contract omitted a process observer | `revise-surface` | `sketch` process shape |
47
+ | same call changes after history but candidate has no history owner | state promise is incomplete | `revise-model` | `model` temporal, then `sketch` state |
48
+ | public interface has one participant and one purpose with no independent cycle | boundary lacks durable pressure | `defer` or `reject` | none until participant pressure appears |
49
+ | verifier executes but cannot fail the promise | stop is irrelevant | `needs-evidence` | `verify` |
50
+ | only the proposed name changes while contract stays unclear | sense is downstream of missing design | `defer` | `sketch` or `naming-judgment` after ownership |
69
51
 
70
52
  ## Collision Rules
71
53
 
72
- | Collision | Prefer first when evidence says... | Then check... |
73
- | --- | --- | --- |
74
- | Language vs Boundary | caller has no useful words except representation details | whether a boundary is still needed after vocabulary exists |
75
- | Movement vs Duplication | cases share behavior roles, not just text | whether old cases become simpler and responsibility stays coherent |
76
- | Unit vs Boundary | results leave the composable world | observer/finalizer separation |
77
- | Law vs Run | result is right but why is unclear | invariant first, then process shape |
78
- | Boundary vs Engine | caller knows internal details | boundary first, then registry/table placement |
79
- | Engine vs Law | dispatch/conversion works but meaning loss hides | preserved meaning, then path graph |
80
- | Time vs Boundary | same call changes with history | whether history is public contract or hidden state |
81
- | Time vs Run | delayed execution or event order changes correctness | order law or process trace |
82
- | Run vs Engine | abstraction is semantically right but costs too much | cost trace, then dispatch/coercion placement |
54
+ When several failures appear, localize the earliest broken promise:
83
55
 
84
- ## Exit Checks
56
+ 1. disputed meaning before surface;
57
+ 2. missing caller surface before candidate review;
58
+ 3. responsibility or boundary before naming;
59
+ 4. semantic contract before process optimization;
60
+ 5. process/history observer before timing;
61
+ 6. relevant evidence before approval.
85
62
 
86
- Before leaving the table, check:
63
+ Do not combine all repairs into one redesign. The same failed stop should be
64
+ re-run after the owning leaf produces a new candidate.
87
65
 
88
- ```text
89
- Symptom:
90
- Did the review name the actual mismatch?
66
+ ## Exit Check
67
+
68
+ Leave with exactly one of:
91
69
 
92
- Evidence:
93
- Was the mismatch observed in caller code, trace, test, cost, history, or order?
70
+ ```text
71
+ re-review now:
72
+ existing evidence already supports a revised decision
94
73
 
95
- Layer:
96
- Is the layer a likely cause, not merely a consequence?
74
+ handoff:
75
+ another leaf owns a missing artifact
97
76
 
98
- Recipe:
99
- Does the selected card require an output artifact?
77
+ defer:
78
+ accessible evidence is insufficient but no current blocker exists
100
79
 
101
- Re-run:
102
- Did the same symptom disappear, remain, or become a new symptom?
80
+ reject:
81
+ the candidate promise is contradicted and no smaller truthful surface remains
103
82
  ```
83
+
84
+ ## Source Trace
85
+
86
+ This diagnostic table is Developer synthesis. Its promise boundaries are
87
+ calibrated by the exact sources listed in
88
+ Abstraction Candidate Review; it introduces no additional
89
+ source claim or construction method.