mustflow 2.116.1 → 2.116.3

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 (58) hide show
  1. package/package.json +1 -1
  2. package/templates/default/i18n.toml +72 -6
  3. package/templates/default/locales/en/.mustflow/skills/INDEX.md +37 -11
  4. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/SKILL.md +477 -0
  5. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-diagnostics-abi-linker-checklist.md +778 -0
  6. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-generators-properties-checklist.md +501 -0
  7. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-test-strategy-differential-checklist.md +498 -0
  8. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/debug-symbol-symbolication-checklist.md +412 -0
  9. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/ir-design-ssa-pass-pipeline-checklist.md +759 -0
  10. package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/miscompile-reduction-ir-checklist.md +434 -0
  11. package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/SKILL.md +55 -36
  12. package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/references/path-containment-handle-checklist.md +251 -0
  13. package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/SKILL.md +133 -32
  14. package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/references/file-upload-parser-ssrf-resource-checklist.md +306 -0
  15. package/templates/default/locales/en/.mustflow/skills/formal-verification-review/SKILL.md +310 -0
  16. package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-concurrency-model-checking-smt-checklist.md +457 -0
  17. package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-contracts-modeling-checklist.md +434 -0
  18. package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-memory-bounds-ci-checklist.md +509 -0
  19. package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/SKILL.md +439 -0
  20. package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-harness-campaign-checklist.md +379 -0
  21. package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-oracle-triage-ci-checklist.md +307 -0
  22. package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md +48 -28
  23. package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/references/operation-ordering-stale-write-checklist.md +259 -0
  24. package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/SKILL.md +329 -0
  25. package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/references/input-boundary-security-checklist.md +319 -0
  26. package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/SKILL.md +306 -0
  27. package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/input-session-state-checklist.md +298 -0
  28. package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/remote-input-transport-interaction-checklist.md +328 -0
  29. package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/SKILL.md +353 -0
  30. package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-diagnostics-recovery-checklist.md +267 -0
  31. package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-execution-closure-performance-checklist.md +428 -0
  32. package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-gc-verification-checklist.md +457 -0
  33. package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-semantics-runtime-checklist.md +391 -0
  34. package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/SKILL.md +294 -0
  35. package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/modal-loop-reentrancy-checklist.md +290 -0
  36. package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/nested-modal-state-lifetime-checklist.md +297 -0
  37. package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/SKILL.md +252 -0
  38. package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/dns-network-resolution-checklist.md +394 -0
  39. package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/language-symbol-resolution-checklist.md +282 -0
  40. package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/module-package-loader-resolution-checklist.md +352 -0
  41. package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/SKILL.md +103 -17
  42. package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/cst-ast-lowering-checklist.md +260 -0
  43. package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/lexer-tokenization-checklist.md +397 -0
  44. package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-serialization-compatibility-checklist.md +164 -0
  45. package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-traversal-rewrite-checklist.md +209 -0
  46. package/templates/default/locales/en/.mustflow/skills/race-condition-review/SKILL.md +68 -11
  47. package/templates/default/locales/en/.mustflow/skills/race-condition-review/references/race-reproduction-memory-model-checklist.md +268 -0
  48. package/templates/default/locales/en/.mustflow/skills/routes.toml +151 -0
  49. package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/SKILL.md +343 -0
  50. package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-auth-stream-resume-checklist.md +413 -0
  51. package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-handoff-protocol-checklist.md +485 -0
  52. package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/SKILL.md +267 -0
  53. package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/admission-decision-recovery-checklist.md +308 -0
  54. package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/two-phase-transition-checklist.md +229 -0
  55. package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/SKILL.md +300 -0
  56. package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-affinity-event-loop-checklist.md +277 -0
  57. package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-dispatch-lifecycle-checklist.md +292 -0
  58. package/templates/default/manifest.toml +115 -1
@@ -0,0 +1,297 @@
1
+ # Nested Modal State and Lifetime Checklist
2
+
3
+ Use this checklist when a modal or secondary event loop can mutate the caller, owner, collection,
4
+ input generation, completion path, or destruction schedule before the blocking API returns.
5
+
6
+ ## Contents
7
+
8
+ 1. [Execution model](#execution-model)
9
+ 2. [Session admission](#session-admission)
10
+ 3. [Invariant snapshot](#invariant-snapshot)
11
+ 4. [Non-user reentry](#non-user-reentry)
12
+ 5. [Object and collection lifetime](#object-and-collection-lifetime)
13
+ 6. [Completion and commit authority](#completion-and-commit-authority)
14
+ 7. [Nested ownership](#nested-ownership)
15
+ 8. [Focus, capture, and input generation](#focus-capture-and-input-generation)
16
+ 9. [Hidden, closed, and reused dialogs](#hidden-closed-and-reused-dialogs)
17
+ 10. [Deferred destruction and shutdown](#deferred-destruction-and-shutdown)
18
+ 11. [Async continuation ordering](#async-continuation-ordering)
19
+ 12. [Fault matrix](#fault-matrix)
20
+ 13. [Invariants](#invariants)
21
+ 14. [Skill handoffs](#skill-handoffs)
22
+
23
+ ## Execution model
24
+
25
+ Keep these facts separate:
26
+
27
+ - a blocking API can delay its caller's return while the same UI thread continues executing;
28
+ - a nested loop is another dispatch frame on the same thread, not a new UI thread;
29
+ - modality usually restricts user input to selected owners, not timers, IPC, automation, tray,
30
+ network, accessibility, callbacks or programmatic commands;
31
+ - posted work can run inside the nested loop before the blocking call returns;
32
+ - synchronous or nonqueued calls can bypass assumptions derived from posted-message FIFO;
33
+ - active modes, contexts, priorities and filters decide which source classes make progress;
34
+ - nested sessions form a depth stack and outer callers normally cannot resume through a live inner
35
+ session;
36
+ - application shutdown and modal-session exit are separate protocols;
37
+ - deferred destruction follows event-loop and framework rules, not lexical scope alone.
38
+
39
+ Thread-affinity checks can all pass while the same logical state machine is active recursively.
40
+
41
+ ## Session admission
42
+
43
+ Create modal session state before the first API that can pump or invoke callbacks:
44
+
45
+ - session ID and generation;
46
+ - parent session and modal depth;
47
+ - owner ID and owner-lifecycle generation;
48
+ - dialog or interaction ID;
49
+ - loop object and session-specific exit token;
50
+ - request state and completion authority;
51
+ - owner-disable lease and capture snapshot;
52
+ - input generation;
53
+ - cancellation source and cleanup owner;
54
+ - commit authority;
55
+ - creation call site and expected result.
56
+
57
+ A guard set after the blocking call returns provides no admission protection.
58
+
59
+ Avoid one global `currentLoop`, `isModal` or `isBusy`. Nested sessions overwrite global identity
60
+ and let an old completion close or mutate the wrong current session.
61
+
62
+ ## Invariant snapshot
63
+
64
+ Before pumping:
65
+
66
+ 1. complete the current multi-field state transition or roll it back;
67
+ 2. publish one coherent snapshot;
68
+ 3. release application locks;
69
+ 4. stop holding mutable iterators and indexes;
70
+ 5. record stable entity IDs and expected revisions;
71
+ 6. mark the command session active;
72
+ 7. define which reentrant commands are coalesced, rejected or queued.
73
+
74
+ Do not expose combinations such as new document state with old selection and undo history.
75
+
76
+ If mutation must remain provisional, isolate it in a private draft that reentrant readers cannot
77
+ mistake for committed state.
78
+
79
+ ## Non-user reentry
80
+
81
+ Disabling the owner window does not block:
82
+
83
+ - timers and idle callbacks;
84
+ - queued signals and dispatcher work;
85
+ - tray or menu callbacks;
86
+ - automation and accessibility commands;
87
+ - message-only or service windows;
88
+ - IPC, COM, D-Bus or plugin callbacks;
89
+ - background completion;
90
+ - auto-save and synchronization;
91
+ - programmatic command dispatch.
92
+
93
+ Protect the domain command or request state, not only its button. Repeated save, delete, close,
94
+ apply or submit intent must join, reject or idempotently observe the existing session.
95
+
96
+ ## Object and collection lifetime
97
+
98
+ After nested dispatch, revalidate:
99
+
100
+ - owner and dialog still exist;
101
+ - weak reference resolves to the same lifecycle generation;
102
+ - native peer or handle was not recreated;
103
+ - parent, scene or visual-tree attachment is current;
104
+ - entity still exists at the expected revision;
105
+ - collection generation is unchanged;
106
+ - iterator or index remains valid;
107
+ - cancellation and terminal state still permit continuation.
108
+
109
+ Prefer immutable collection snapshots or defer mutations until the outer frame is gone. A single
110
+ thread prevents data races, not iterator invalidation or logical reentrancy.
111
+
112
+ A blocking call's return is not proof that `this`, its parent, or captured raw pointers survived.
113
+
114
+ ## Completion and commit authority
115
+
116
+ Route all terminal contenders through one operation:
117
+
118
+ `TryComplete(sessionId, expectedGeneration, result)`
119
+
120
+ Contenders can include:
121
+
122
+ - user accept or cancel;
123
+ - window close;
124
+ - cancellation callback;
125
+ - worker success or failure;
126
+ - timeout;
127
+ - owner disposal;
128
+ - application shutdown;
129
+ - provider or portal response.
130
+
131
+ Only one wins. Losers are observable idempotent no-ops.
132
+
133
+ Choose one model commit owner:
134
+
135
+ - completion callback or signal commits; the synchronous return path only observes terminal state;
136
+ or
137
+ - the synchronous return path commits; completion callbacks only stop the loop and store result.
138
+
139
+ Never commit in both a finished callback and code after the blocking return.
140
+
141
+ Cleanup belongs to one owner and is idempotent. Inner close callbacks and outer `finally` must not
142
+ double-release native handles, registrations, subscriptions, owner-disable leases or cancellation
143
+ resources.
144
+
145
+ ## Nested ownership
146
+
147
+ Model owner disable, capture and session depth as owned resources.
148
+
149
+ For each owner record which session actually disabled it. A session re-enables only the owner state
150
+ it acquired. Nested dialogs must not wake a window still blocked by an outer session.
151
+
152
+ A Boolean cannot represent multiple modal owners. Use framework ownership or explicit session leases
153
+ or counts with identity.
154
+
155
+ Bind loop exit to the exact session. A completion for outer A cannot terminate inner B merely because
156
+ B is now the globally visible loop object.
157
+
158
+ ## Focus, capture, and input generation
159
+
160
+ Modal creation can trigger capture cancellation, owner disable, activation, focus loss, validation,
161
+ auto-save and close callbacks before construction or presentation finishes.
162
+
163
+ Treat those callbacks as reentrant state transitions. Guard initialization and define which
164
+ validation or save work can run during presentation.
165
+
166
+ When modal entry or exit changes focus, capture, enabled windows or visual targets:
167
+
168
+ - increment or transfer input generation;
169
+ - cancel active gestures when required;
170
+ - reject deferred input from the prior generation;
171
+ - separate activation click from command activation;
172
+ - process dialog navigation keys exactly once;
173
+ - do not replay input deferred by filters into an unrelated post-modal target.
174
+
175
+ Input disappearing during the modal and stale input applying after it closes are two sides of the
176
+ same ownership error.
177
+
178
+ ## Hidden, closed, and reused dialogs
179
+
180
+ Define lifecycle states explicitly:
181
+
182
+ - constructed;
183
+ - presenting;
184
+ - visible;
185
+ - hidden with reusable state;
186
+ - closing;
187
+ - closed or disposed;
188
+ - destroyed.
189
+
190
+ A framework may hide a modal instance rather than destroy it. Reuse requires:
191
+
192
+ - new display-session generation;
193
+ - reset result and request state;
194
+ - fresh cancellation ownership;
195
+ - cleared or deliberately retained fields;
196
+ - subscription dedupe;
197
+ - no old worker or progress producer;
198
+ - new input and owner generation;
199
+ - stale callback rejection.
200
+
201
+ Object equality does not distinguish two presentations of the same instance.
202
+
203
+ ## Deferred destruction and shutdown
204
+
205
+ Do not infer exact destruction time from a deferred-delete API name. Record:
206
+
207
+ - which loop or context accepted the delete;
208
+ - current nested depth;
209
+ - when control returns to the owning loop;
210
+ - whether deeper loops can trigger earlier processing;
211
+ - weak-reference invalidation;
212
+ - cleanup and completion ordering.
213
+
214
+ Shutdown must preserve both protocols:
215
+
216
+ - session-specific loops receive their own exit or cancellation;
217
+ - outer application quit remains visible to the owning main loop;
218
+ - dialogs and owners are not destroyed before local requests terminate;
219
+ - manual loops do not swallow global shutdown;
220
+ - callbacks arriving during shutdown observe terminal generations.
221
+
222
+ A general quit signal is not a substitute for dialog result completion.
223
+
224
+ ## Async continuation ordering
225
+
226
+ Task, future, promise or queued completion does not imply another thread. The continuation may run
227
+ inside the nested loop before code after the blocking call.
228
+
229
+ Do not use blocking source order as an async fence:
230
+
231
+ `post work -> show modal -> code after modal`
232
+
233
+ The posted work may execute during the modal. Record causal request and session state explicitly.
234
+
235
+ Avoid sync-over-async waits. Spinning a secondary loop until a task completes trades deadlock for
236
+ full UI reentrancy.
237
+
238
+ For progress streams:
239
+
240
+ - keep only latest current-session value;
241
+ - cap update rate and queue age;
242
+ - invalidate progress at terminal completion;
243
+ - preserve boundary states;
244
+ - reject old-session updates after reuse;
245
+ - ensure the final result cannot be followed by stale progress.
246
+
247
+ ## Fault matrix
248
+
249
+ Cover applicable schedules:
250
+
251
+ | Schedule or fault | Required result |
252
+ | --- | --- |
253
+ | same command reenters before guard assignment | admission occurs before pumping |
254
+ | inner callback reads half-updated model | only coherent state is visible |
255
+ | timer or IPC repeats disabled-button command | domain request rejects or joins |
256
+ | owner deletes itself during nested loop | post-return continuation rejects weak generation |
257
+ | collection mutates during outer iteration | snapshot or generation guard prevents invalid access |
258
+ | signal and return path both observe accept | model commits once |
259
+ | cancel and success race | one TryComplete winner |
260
+ | nested B closes while A remains | owner stays disabled for A |
261
+ | old completion exits current loop | session token rejects it |
262
+ | focus callback fires during dialog construction | initialization invariant holds |
263
+ | modal hides rather than destroys | next presentation receives new generation |
264
+ | inner cleanup and outer finally both run | cleanup remains idempotent |
265
+ | deferred delete runs at surprising depth | weak lifetime guard prevents access |
266
+ | global shutdown occurs inside modal | inner and outer protocols both terminate correctly |
267
+ | queued click survives filtered modal input | old input generation cannot affect new target |
268
+ | continuation runs before modal return | explicit state permits it |
269
+ | progress floods the nested loop | input, render and terminal state retain bounded progress |
270
+
271
+ ## Invariants
272
+
273
+ Choose applicable executable invariants:
274
+
275
+ - session admission precedes every pumping API;
276
+ - no partial application invariant or lock crosses nested dispatch;
277
+ - one logical command has one active session or explicit duplicate policy;
278
+ - every loop exit token closes only its session;
279
+ - every modal result commits at most once;
280
+ - every owned disable, capture and cleanup resource releases exactly once by its owner;
281
+ - caller, owner and collection generations are validated after nested return;
282
+ - hidden dialog reuse cannot accept old-session callbacks;
283
+ - deferred destruction cannot leave a usable strong pointer in resumed outer code;
284
+ - old input generation cannot execute against the post-modal target;
285
+ - progress cannot follow terminal state;
286
+ - shutdown cannot lose either inner session exit or outer application quit.
287
+
288
+ ## Skill handoffs
289
+
290
+ - Use `ui-dispatch-lifecycle-review` for stale queued callbacks, view epochs, close state and progress
291
+ when no nested loop is primary.
292
+ - Use `input-event-synchronization-review` for capture, gesture and input-generation semantics.
293
+ - Use `idempotency-integrity-review` when repeated modal commands have durable side effects.
294
+ - Use `race-condition-review` for parallel interleavings beyond single-thread reentrancy.
295
+ - Use `state-machine-pattern` to implement modal session and completion transitions.
296
+ - Use `memory-lifetime-review` when raw pointers, native handles or use-after-free dominate.
297
+
@@ -0,0 +1,252 @@
1
+ ---
2
+ mustflow_doc: skill.name-resolution-integrity-review
3
+ locale: en
4
+ canonical: true
5
+ revision: 2
6
+ lifecycle: mustflow-owned
7
+ authority: procedure
8
+ name: name-resolution-integrity-review
9
+ description: Apply this skill when the same name, hostname, variable, function, type, module, package, class, repository label, dependency coordinate, or import resolves differently by process, execution space, resolver API, scope, namespace, lookup phase, search path, route, condition, variant, loader, proxy, cache, or platform; including NSS status actions, split DNS, recursive versus authoritative DNS, delegation or glue, DoH, search suffixes, proxy-side DNS, negative caching, address selection, connection reuse, language shadowing or delayed lookup, macro hygiene, conditional exports, duplicate module instances, class-loader identity, peer contexts, package-manager resolution, build-system variants, and stale resolver caches.
10
+ metadata:
11
+ mustflow_schema: "1"
12
+ mustflow_kind: procedure
13
+ pack_id: mustflow.core
14
+ skill_id: mustflow.core.name-resolution-integrity-review
15
+ command_intents:
16
+ - changes_status
17
+ - changes_diff_summary
18
+ - lint
19
+ - build
20
+ - test_related
21
+ - test
22
+ - test_audit
23
+ - docs_validate_fast
24
+ - test_release
25
+ - mustflow_check
26
+ ---
27
+
28
+ # Name Resolution Integrity Review
29
+
30
+ <!-- mustflow-section: purpose -->
31
+ ## Purpose
32
+
33
+ Diagnose name-resolution defects as disagreements about the resolver, context, candidate graph,
34
+ precedence, cache, and resulting identity rather than as spelling mistakes.
35
+
36
+ For every disputed name, trace:
37
+
38
+ `requester -> execution space -> input form -> candidate expansion -> search or routing graph ->
39
+ filters and precedence -> cache layer -> selected result -> loaded or contacted identity`
40
+
41
+ Keep successful lookup, selected identity, reachability, compatibility, authorization, and usable
42
+ behavior as separate claims. A name can resolve successfully to the wrong object, or resolve to the
43
+ right object and fail at the next boundary.
44
+
45
+ <!-- mustflow-section: use-when -->
46
+ ## Use When
47
+
48
+ - A hostname works in one application, shell, container, VPN, proxy mode, browser, network namespace,
49
+ or resolver but fails or selects another address in a different one.
50
+ - Resolver APIs, NSS status actions, split DNS, route-only domains, search suffixes, absolute names,
51
+ mDNS or LLMNR, hosts files, recursive or authoritative DNS, delegation, glue, DoH, DNSSEC, DNS64,
52
+ CDN selection, negative caching, address racing, connection pools, stale answers, or proxy-side
53
+ resolution is involved.
54
+ - A variable, function, type, macro, label, extension method, overload, import, or module changes
55
+ meaning because of scope, namespace, shadowing, hygiene, lookup phase, or candidate precedence.
56
+ - A module or package name maps to a different physical file, export condition, peer context,
57
+ feature set, variant, class loader, workspace replacement, repository mapping, or cache entry.
58
+ - A lockfile, dependency coordinate, source spelling, or direct DNS query appears correct but does
59
+ not prove the identity used by the failing process.
60
+ - A resolver, loader, package manager, build system, compiler, interpreter, proxy, browser, or runtime
61
+ needs evidence that explains both the selected result and rejected candidates.
62
+
63
+ <!-- mustflow-section: do-not-use-when -->
64
+ ## Do Not Use When
65
+
66
+ - The incident boundary is still unknown and name resolution is only one of many hypotheses; use
67
+ `incident-triage-review` first and this skill after resolver evidence appears.
68
+ - The task changes parser grammar, tokens, CST, or syntax recovery without binding or lookup changes;
69
+ use `parser-engineering-review`.
70
+ - The task changes compiler or interpreter semantics beyond binding, lookup, scope, module identity,
71
+ or resolver caching; use `compiler-engineering-review` or `interpreter-engineering-review` as owner.
72
+ - The task adds, upgrades, removes, audits, or approves a dependency rather than diagnosing how an
73
+ existing coordinate resolves; use `dependency-reality-check` or `dependency-upgrade-review`.
74
+ - The task changes architecture import direction or public package boundaries without a disputed
75
+ resolver result; use `module-boundary-review`.
76
+ - The task concerns linker symbol selection, mangling, relocation, or loader-visible binary symbols;
77
+ use `compiler-engineering-review`.
78
+ - The task concerns path containment, symlink traversal, file identity, SSRF rebinding, or remote-file
79
+ authorization as the primary security boundary; use the matching filesystem, SSRF, or upload skill.
80
+
81
+ <!-- mustflow-section: required-inputs -->
82
+ ## Required Inputs
83
+
84
+ - Exact original spelling, normalized spelling, absolute or qualified form, namespace or record kind,
85
+ and every generated candidate actually considered.
86
+ - Requester identity: process, executable, runtime, source location, module, class loader, thread or
87
+ task context, user, container, pod, network namespace, working directory, and environment.
88
+ - Resolver identity and mode: application or runtime API, implementation, build mode, platform,
89
+ configuration source, name-service modules and status actions, lookup phase, active conditions,
90
+ search roots, routing domains, server-selection state, precedence, fallback, and policy overlays.
91
+ - Resolution trace: candidate order, candidate origin, acceptance tests, rejection reasons, selected
92
+ result, stop condition, fallback, and error taxonomy.
93
+ - Identity evidence after resolution: canonical path or realpath, package and version, export target,
94
+ peer or feature context, loader identity, module cache key, address family, DNS answer source,
95
+ selected and actually contacted endpoint, connection generation or reuse state, or other
96
+ domain-specific object identity.
97
+ - Cache ledger: layer owner, key, positive or negative value, freshness or TTL, invalidation event,
98
+ stale-serving policy, process lifetime, and whether the failing request hit or bypassed it.
99
+ - Comparison evidence from the failing execution space and a controlled working space, captured before
100
+ configuration changes, cache flushes, restarts, reinstalls, or clean builds erase the difference.
101
+ - Expected resolution contract, supported platform or language semantics, compatibility window,
102
+ deterministic oracle, and exact failure class.
103
+ - Configured command intents for the selected repository.
104
+
105
+ Read [DNS and Network Resolution Checklist](references/dns-network-resolution-checklist.md) when
106
+ hostnames, split DNS, VPNs, proxies, containers, DNSSEC, transport, CDN answers, or resolver caches are
107
+ in scope.
108
+
109
+ Read [Language and Symbol Resolution Checklist](references/language-symbol-resolution-checklist.md)
110
+ when lexical binding, shadowing, overload lookup, namespaces, macros, extension methods, generated
111
+ code, or language lookup phases are in scope.
112
+
113
+ Read [Module, Package, and Loader Resolution Checklist](references/module-package-loader-resolution-checklist.md)
114
+ when imports, package exports, module instances, class loaders, package-manager graphs, build variants,
115
+ workspace mappings, feature unification, or build-system search caches are in scope.
116
+
117
+ <!-- mustflow-section: preconditions -->
118
+ ## Preconditions
119
+
120
+ - The task matches the Use When conditions and does not match the exclusions.
121
+ - The failing requester and execution space are identified, or the result is explicitly limited to a
122
+ hypothesis about another environment.
123
+ - Repository instructions and configured command intents have been checked.
124
+ - External command recipes are treated as manual evidence ideas, not command authority.
125
+
126
+ <!-- mustflow-section: allowed-edits -->
127
+ ## Allowed Edits
128
+
129
+ - Add bounded resolver tracing, structured resolution diagnostics, provenance fields, cache-key
130
+ visibility, candidate and rejection evidence, and directly related tests or runbook guidance.
131
+ - Fix lookup configuration, explicit qualification, import aliases, resolver conditions, loader
132
+ ownership, cache invalidation, package declarations, or generated-code names when current evidence
133
+ proves that surface owns the mismatch.
134
+ - Add positive and negative fixtures that vary one resolver dimension at a time.
135
+ - Do not flush caches, reinstall dependencies, delete build directories, restart services, disable
136
+ validation, rewrite network policy, or change global resolver settings before preserving evidence.
137
+ - Do not add raw diagnostic commands to the skill or claim this procedure authorizes live systems,
138
+ production packet capture, tracing, namespace entry, dependency installation, or cache deletion.
139
+
140
+ <!-- mustflow-section: procedure -->
141
+ ## Procedure
142
+
143
+ 1. State the resolution claim precisely. Name the requester, original input, expected object, actual
144
+ object or error, execution space, and observation time. Separate not found, ambiguous, forbidden,
145
+ invalid, stale, incompatible, unreachable, and wrong-identity outcomes.
146
+ 2. Reproduce from the failing boundary before changing it. Preserve resolver configuration, search
147
+ roots, environment, route state, active conditions, loader identity, caches visible without
148
+ mutation, and actual selected object. A host-shell success is not container or application proof.
149
+ 3. Build a resolution ledger. For each stage, record input, actor, namespace, phase, candidate set,
150
+ ordering rule, filter, cache, output, and stop reason. Do not jump from source spelling directly to
151
+ final behavior.
152
+ 4. Distinguish four identities:
153
+ - textual identity: the spelling or coordinate supplied;
154
+ - resolved identity: the selected path, symbol, address, variant, or definition;
155
+ - loaded identity: the module instance, class loader, process object, or runtime endpoint used;
156
+ - behavioral identity: the API, state, route, or service behavior actually observed.
157
+ 5. Enumerate candidates before choosing a fix. Include expanded search-suffix names, lexical scopes,
158
+ associated namespaces, import roots, conditional exports, peer contexts, variants, repositories,
159
+ aliases, mappings, and fallbacks. Record rejected candidates and reasons, not only the winner.
160
+ 6. Make precedence executable or observable. Test one controlled perturbation at a time: qualification,
161
+ search-root order, route specificity, import mode, loader, active condition, feature, variant,
162
+ working directory, or cache bypass. Preserve all other dimensions.
163
+ 7. Treat cache as part of semantics. Locate positive, negative, failure, compiled-code, module,
164
+ package, build, resolver, proxy, and browser caches. Capture key, owner, value, age, and provenance
165
+ before considering invalidation. A restart that fixes the symptom without naming the stale layer
166
+ has not localized the defect.
167
+ 8. Compare like with like. The control and failing probes must use the same requester class, execution
168
+ space, name form, query or namespace kind, resolver path, active options, credentials, and time
169
+ window unless one of those is the isolated variable.
170
+ 9. Prove the selected result independently. For files and modules, record canonical origin and loader
171
+ or cache identity. For language symbols, record declaration and lookup phase. For DNS, record the
172
+ actual resolver API, QNAME, record kind, response source, recursive and authoritative boundary,
173
+ flags, TTL, route, candidate address set, and address selected by the client.
174
+ 10. Continue one boundary beyond resolution. Verify the endpoint actually contacted, whether a prior
175
+ connection or pool entry bypassed fresh lookup, route, TLS or protocol authority identity,
176
+ authorization, initialization state, and type or API compatibility as applicable. Do not relabel
177
+ a post-resolution or connection-reuse failure as lookup failure.
178
+ 11. Add structured observability at the narrowest stable boundary. Prefer low-cardinality reason codes,
179
+ resolver mode, selected origin, candidate count, cache status, and stable identity fingerprints.
180
+ Redact private names, paths, addresses, search domains, and user-controlled text.
181
+ 12. Convert the defect into a differential fixture. Vary the proven trigger while keeping the expected
182
+ selected identity and rejection reasons explicit. Include the wrong-but-successful resolution case,
183
+ not only lookup failure.
184
+ 13. Hand off ownership after localization:
185
+ - DNS or network resolver implementation and runbooks to the relevant operations or incident skill;
186
+ - language binding semantics to compiler or interpreter engineering;
187
+ - package declarations and supported dependency contracts to `dependency-reality-check`;
188
+ - architecture import direction to `module-boundary-review`;
189
+ - cache behavior to `cache-integrity-review`;
190
+ - security-sensitive rebinding or traversal to the matching security skill.
191
+
192
+ <!-- mustflow-section: postconditions -->
193
+ ## Postconditions
194
+
195
+ - The failing requester, execution space, resolver API and path, input form, namespace, phase,
196
+ candidate order, cache layer, selected result, actual connection identity, and final loaded or
197
+ contacted identity are explicit.
198
+ - Success, wrong identity, ambiguity, policy rejection, stale result, incompatibility, reachability,
199
+ and downstream behavior remain distinct outcomes.
200
+ - The first divergent resolver stage is identified or the missing trace boundary is reported.
201
+ - Evidence was preserved before destructive cache, dependency, build, or network resets.
202
+ - Any fix is tied to the stage that owns the wrong candidate, precedence, identity, or stale cache.
203
+
204
+ <!-- mustflow-section: verification -->
205
+ ## Verification
206
+
207
+ Use configured oneshot command intents when available:
208
+
209
+ - `changes_status`
210
+ - `changes_diff_summary`
211
+ - `lint`
212
+ - `build`
213
+ - `test_related`
214
+ - `test`
215
+ - `test_audit`
216
+ - `docs_validate_fast`
217
+ - `test_release`
218
+ - `mustflow_check`
219
+
220
+ Prefer narrow configured resolver, module, package, compiler, interpreter, container, DNS, network,
221
+ cache, or runbook checks. Do not infer raw lookup, tracing, packet-capture, namespace, package-manager,
222
+ build-system, browser, or cache-flush commands.
223
+
224
+ <!-- mustflow-section: failure-handling -->
225
+ ## Failure Handling
226
+
227
+ - If only a direct resolver probe succeeds, report that boundary; do not claim the application path.
228
+ - If the failing process cannot be inspected, preserve the environmental delta and mark resolver,
229
+ cache, and loaded identity as unverified.
230
+ - If a cache flush or restart already erased the state, reproduce under a controlled fixture or report
231
+ the missing pre-reset evidence instead of declaring the cache guilty.
232
+ - If multiple dimensions differ, reduce them one at a time; do not select a cause from a bundle of
233
+ changed environment, resolver, path, loader, and cache state.
234
+ - If the name resolves correctly but the object is unreachable, incompatible, unauthorized, or
235
+ misconfigured, hand off at that next boundary and retain the successful resolution evidence.
236
+ - If required live diagnostics are manual-only or unconfigured, stop at a repository-owned evidence
237
+ plan and report the missing execution proof.
238
+
239
+ <!-- mustflow-section: output-format -->
240
+ ## Output Format
241
+
242
+ - Resolution claim and exact failure class
243
+ - Requester and execution-space capsule
244
+ - Original, normalized, expanded, qualified, and selected names
245
+ - Resolver API, stages, namespaces, phases, candidate order, filters, and rejection reasons
246
+ - Cache layers, keys, freshness, negative or stale state, and invalidation evidence
247
+ - Resolved, selected-address, connection-reuse, loaded, and behavioral identity evidence
248
+ - First divergent stage and owning skill or subsystem
249
+ - Files changed
250
+ - Configured command intents run
251
+ - Skipped or manual-only resolver checks
252
+ - Remaining identity, cache, environment, or downstream-boundary risk