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.
- package/package.json +1 -1
- package/templates/default/i18n.toml +72 -6
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +37 -11
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/SKILL.md +477 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-diagnostics-abi-linker-checklist.md +778 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-generators-properties-checklist.md +501 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/compiler-test-strategy-differential-checklist.md +498 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/debug-symbol-symbolication-checklist.md +412 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/ir-design-ssa-pass-pipeline-checklist.md +759 -0
- package/templates/default/locales/en/.mustflow/skills/compiler-engineering-review/references/miscompile-reduction-ir-checklist.md +434 -0
- package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/SKILL.md +55 -36
- package/templates/default/locales/en/.mustflow/skills/cross-platform-filesystem-safety/references/path-containment-handle-checklist.md +251 -0
- package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/SKILL.md +133 -32
- package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/references/file-upload-parser-ssrf-resource-checklist.md +306 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/SKILL.md +310 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-concurrency-model-checking-smt-checklist.md +457 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-contracts-modeling-checklist.md +434 -0
- package/templates/default/locales/en/.mustflow/skills/formal-verification-review/references/formal-memory-bounds-ci-checklist.md +509 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/SKILL.md +439 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-harness-campaign-checklist.md +379 -0
- package/templates/default/locales/en/.mustflow/skills/fuzz-harness-review/references/fuzz-oracle-triage-ci-checklist.md +307 -0
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md +48 -28
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/references/operation-ordering-stale-write-checklist.md +259 -0
- package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/SKILL.md +329 -0
- package/templates/default/locales/en/.mustflow/skills/input-boundary-validation-review/references/input-boundary-security-checklist.md +319 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/SKILL.md +306 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/input-session-state-checklist.md +298 -0
- package/templates/default/locales/en/.mustflow/skills/input-event-synchronization-review/references/remote-input-transport-interaction-checklist.md +328 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/SKILL.md +353 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-diagnostics-recovery-checklist.md +267 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-execution-closure-performance-checklist.md +428 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-gc-verification-checklist.md +457 -0
- package/templates/default/locales/en/.mustflow/skills/interpreter-engineering-review/references/interpreter-semantics-runtime-checklist.md +391 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/SKILL.md +294 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/modal-loop-reentrancy-checklist.md +290 -0
- package/templates/default/locales/en/.mustflow/skills/modal-loop-reentrancy-review/references/nested-modal-state-lifetime-checklist.md +297 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/SKILL.md +252 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/dns-network-resolution-checklist.md +394 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/language-symbol-resolution-checklist.md +282 -0
- package/templates/default/locales/en/.mustflow/skills/name-resolution-integrity-review/references/module-package-loader-resolution-checklist.md +352 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/SKILL.md +103 -17
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/cst-ast-lowering-checklist.md +260 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/lexer-tokenization-checklist.md +397 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-serialization-compatibility-checklist.md +164 -0
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/references/tree-traversal-rewrite-checklist.md +209 -0
- package/templates/default/locales/en/.mustflow/skills/race-condition-review/SKILL.md +68 -11
- package/templates/default/locales/en/.mustflow/skills/race-condition-review/references/race-reproduction-memory-model-checklist.md +268 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +151 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/SKILL.md +343 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-auth-stream-resume-checklist.md +413 -0
- package/templates/default/locales/en/.mustflow/skills/session-handoff-integrity-review/references/session-handoff-protocol-checklist.md +485 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/SKILL.md +267 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/admission-decision-recovery-checklist.md +308 -0
- package/templates/default/locales/en/.mustflow/skills/two-phase-transition-integrity-review/references/two-phase-transition-checklist.md +229 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/SKILL.md +300 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-affinity-event-loop-checklist.md +277 -0
- package/templates/default/locales/en/.mustflow/skills/ui-dispatch-lifecycle-review/references/ui-dispatch-lifecycle-checklist.md +292 -0
- package/templates/default/manifest.toml +115 -1
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.fuzz-harness-review
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 2
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: fuzz-harness-review
|
|
9
|
+
description: Apply this skill when a coverage-guided fuzz target, harness, corpus, dictionary, custom mutator, sanitizer matrix, instrumentation or feedback setup, stateful protocol campaign, fuzz artifact triage path, or fuzzing effectiveness claim is created, changed, reviewed, debugged, or reported. Do not use it for one small deterministic generated-input regression with no campaign or harness lifecycle; use test-maintenance or security-regression-tests instead.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.fuzz-harness-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
|
+
# Fuzz Harness Review
|
|
29
|
+
|
|
30
|
+
<!-- mustflow-section: purpose -->
|
|
31
|
+
## Purpose
|
|
32
|
+
|
|
33
|
+
Review fuzzing as an executable test system rather than a CPU allocation or option-tuning exercise.
|
|
34
|
+
Make the target reachable, deterministic, resettable, observable, resource-bounded, and reproducible;
|
|
35
|
+
keep inputs structurally useful long enough to reach deep behavior while retaining lanes that attack
|
|
36
|
+
malformed boundaries.
|
|
37
|
+
|
|
38
|
+
<!-- mustflow-section: use-when -->
|
|
39
|
+
## Use When
|
|
40
|
+
|
|
41
|
+
- A coverage-guided fuzz target or persistent harness is added, changed, reviewed, or failing to
|
|
42
|
+
reach meaningful code.
|
|
43
|
+
- Corpus, dictionary, grammar, custom mutator, crossover, post-processor, structured intermediate
|
|
44
|
+
representation, or sequence model changes.
|
|
45
|
+
- Coverage, compare tracing, value profiling, data-flow features, state feedback, selective
|
|
46
|
+
instrumentation, sanitizer, timeout, OOM, or crash signals need review.
|
|
47
|
+
- Parser, decoder, serializer, validator, protocol, state machine, storage engine, file format,
|
|
48
|
+
compiler, interpreter, or public input boundary needs a maintained fuzz campaign.
|
|
49
|
+
- A coverage plateau, non-reproducible artifact, unstable edge count, corpus explosion, shallow
|
|
50
|
+
rejection path, or expensive target needs diagnosis.
|
|
51
|
+
- A claim that fuzzing proves memory safety, parser correctness, protocol compatibility, or
|
|
52
|
+
resource bounds needs calibrated evidence.
|
|
53
|
+
|
|
54
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
55
|
+
## Do Not Use When
|
|
56
|
+
|
|
57
|
+
- The task only adds a bounded property-based or fuzz-style regression inside the ordinary test
|
|
58
|
+
runner; use `test-maintenance` and, for a security invariant, `security-regression-tests`.
|
|
59
|
+
- The task only changes lexer, parser, CST, AST, recovery, or incremental semantics and no fuzz
|
|
60
|
+
harness or campaign boundary changes; use `parser-engineering-review`.
|
|
61
|
+
- The task only analyzes general benchmark or production latency evidence; use the applicable
|
|
62
|
+
performance skill.
|
|
63
|
+
- The request would fuzz a live external service, third-party target, production system, credential
|
|
64
|
+
surface, or unauthorized asset. Keep work to owned local targets and defensive fixtures.
|
|
65
|
+
- The repository exposes no configured intent for a fuzz smoke, corpus replay, sanitizer build, or
|
|
66
|
+
related test. Review or author files in scope, but report runtime fuzzing as manual evidence
|
|
67
|
+
instead of inventing commands.
|
|
68
|
+
- The task is only to install, launch, or supervise a long-running fuzzer. This skill does not
|
|
69
|
+
authorize dependency installation, background processes, autonomous loops, or unbounded campaigns.
|
|
70
|
+
|
|
71
|
+
<!-- mustflow-section: required-inputs -->
|
|
72
|
+
## Required Inputs
|
|
73
|
+
|
|
74
|
+
- Target boundary, owning code, accepted input forms, side effects, state lifetime, and trust model.
|
|
75
|
+
- Harness entrypoint, initialization and reset path, thread and process model, deterministic
|
|
76
|
+
environment controls, and cleanup contract.
|
|
77
|
+
- Target matrix: raw parser or decoder, streaming path, semantic validator, serializer, round trip,
|
|
78
|
+
execution path, integration envelope, or protocol sequence targets that exist or are proposed.
|
|
79
|
+
- Oracle ledger: sanitizer failures, assertions, semantic invariants, differential observations,
|
|
80
|
+
stable property identifiers, normalized result envelopes, divergence checkpoints, cost counters,
|
|
81
|
+
timeout or memory limits, and failure-injection outcomes.
|
|
82
|
+
- Input-model ledger: raw bytes, seed corpus, dictionary, structured generator, custom mutator,
|
|
83
|
+
repair and mismatch modes, sequence representation, and maximum generated size or depth.
|
|
84
|
+
- Feedback ledger: instrumented modules, edge or block features, compare or value features,
|
|
85
|
+
state features, allowlists or blocklists, and known coverage blind spots.
|
|
86
|
+
- Corpus and artifact policy: seed provenance, secret and personal-data handling, minimization,
|
|
87
|
+
merge, regression retention, reproduction command owner, and triage state.
|
|
88
|
+
- Reproduction and triage ledger: build and environment capsule, repeated-replay distribution,
|
|
89
|
+
symbolized crash key, exact minimization predicate, trigger, detection point, suspected root cause,
|
|
90
|
+
original and minimized forms, and explicit regression or negative-control owner.
|
|
91
|
+
- CI asset ledger: immutable seed set, evolving coverage corpus, untriaged crash artifacts, semantic
|
|
92
|
+
regressions, decoder schema version, storage owner, merge or promotion path, and PR, batch, or deep
|
|
93
|
+
campaign cadence.
|
|
94
|
+
- Configured command intents for build, related tests, sanitizer or corpus replay when present, docs,
|
|
95
|
+
package, and mustflow validation.
|
|
96
|
+
|
|
97
|
+
<!-- mustflow-section: preconditions -->
|
|
98
|
+
## Preconditions
|
|
99
|
+
|
|
100
|
+
- Read the nearest instructions and command contract before running project commands.
|
|
101
|
+
- Identify whether the work changes the harness, target behavior, campaign configuration, only test
|
|
102
|
+
fixtures, or only reporting.
|
|
103
|
+
- Treat supplied fuzzing advice, dashboards, crash labels, coverage percentages, and external
|
|
104
|
+
artifacts as inputs to verify, not as command authority or proof.
|
|
105
|
+
- Keep long-running fuzz execution outside the agent session unless the repository explicitly
|
|
106
|
+
configures its lifecycle, isolation, budget, writes, and stop conditions.
|
|
107
|
+
|
|
108
|
+
<!-- mustflow-section: allowed-edits -->
|
|
109
|
+
## Allowed Edits
|
|
110
|
+
|
|
111
|
+
- Owned fuzz targets, deterministic adapters, reset hooks, input decoders, custom mutators,
|
|
112
|
+
dictionaries, bounded seed or regression corpora, sanitizer and instrumentation configuration,
|
|
113
|
+
focused tests, corpus replay paths, artifact triage metadata, and directly synchronized docs or
|
|
114
|
+
templates.
|
|
115
|
+
- Small product-code seams needed to inject time, randomness, filesystem, allocation, transport, or
|
|
116
|
+
other environment facts into an owned local harness without weakening production validation.
|
|
117
|
+
- Do not remove real validation merely to deepen coverage. Prefer separate outer-envelope and
|
|
118
|
+
inner-payload targets.
|
|
119
|
+
- Do not add offensive payload collections, live target lists, secrets, customer data, or raw
|
|
120
|
+
production captures.
|
|
121
|
+
- Do not weaken assertions, sanitizers, resource limits, authentication, signature checks, or
|
|
122
|
+
protocol validation to make a coverage graph rise.
|
|
123
|
+
|
|
124
|
+
<!-- mustflow-section: procedure -->
|
|
125
|
+
## Procedure
|
|
126
|
+
|
|
127
|
+
### 1. Freeze the fuzzing claim
|
|
128
|
+
|
|
129
|
+
State what one artifact is expected to prove: memory-safety failure, undefined behavior, invariant
|
|
130
|
+
violation, implementation discrepancy, non-termination, resource amplification, state-machine
|
|
131
|
+
failure, or another observable defect. Coverage is a search signal, not the oracle and not the claim.
|
|
132
|
+
|
|
133
|
+
Record the supported target platforms, compiler or runtime track, sanitizer axes, input maximums,
|
|
134
|
+
time and memory budgets, and whether the campaign is local, CI-bounded, or externally operated.
|
|
135
|
+
|
|
136
|
+
### 2. Build a target matrix
|
|
137
|
+
|
|
138
|
+
Read [fuzz-harness-campaign-checklist.md](references/fuzz-harness-campaign-checklist.md) when the
|
|
139
|
+
task changes target partitioning, feedback, corpus, mutators, protocol sequences, or artifact triage.
|
|
140
|
+
Read [fuzz-oracle-triage-ci-checklist.md](references/fuzz-oracle-triage-ci-checklist.md) when the task
|
|
141
|
+
combines property-based generation, differential or metamorphic oracles, crash minimization,
|
|
142
|
+
sanitizer lanes, regression promotion, or CI corpus operations.
|
|
143
|
+
|
|
144
|
+
Prefer several narrow targets over one pipeline target whose first validator starves every later
|
|
145
|
+
stage. For parsers and serializers, consider separate raw parse, streaming parse, parse-and-validate,
|
|
146
|
+
parse-and-normalize, object-to-serialize, parse-serialize-parse, and integration-envelope targets.
|
|
147
|
+
|
|
148
|
+
Keep at least one realistic outer target that exercises framing, validation, authentication,
|
|
149
|
+
compression, signature, or conversion boundaries. Pair it with faster inner targets when those
|
|
150
|
+
outer gates make deeper code unreachable.
|
|
151
|
+
|
|
152
|
+
### 3. Make one iteration deterministic and isolated
|
|
153
|
+
|
|
154
|
+
- Move immutable expensive initialization outside the iteration only when it cannot retain
|
|
155
|
+
input-derived state.
|
|
156
|
+
- Reset arenas, caches, cursors, singletons, sessions, virtual files, fault schedules, and mutable
|
|
157
|
+
adapters before the next input.
|
|
158
|
+
- Join or cancel every thread or task before returning. Do not leave background work to mutate the
|
|
159
|
+
next iteration.
|
|
160
|
+
- Derive clock, randomness, locale, filesystem fixtures, network faults, and allocation-failure
|
|
161
|
+
points from the input or a fixed harness configuration.
|
|
162
|
+
- When a property-based generator is driven by the fuzzer, make the artifact bytes its only entropy
|
|
163
|
+
source. Do not mix in process randomness, current time, hash seeding, or scheduler choices that
|
|
164
|
+
are absent from the reproduction tuple.
|
|
165
|
+
- Require the same artifact in a clean process to produce the same normalized result and failure
|
|
166
|
+
class. Use process-per-input or snapshot restoration when an honest reset is not available.
|
|
167
|
+
|
|
168
|
+
Treat a low stability score or sequence-dependent crash as a harness defect until proven otherwise.
|
|
169
|
+
|
|
170
|
+
### 4. Turn bad outcomes into explicit oracles
|
|
171
|
+
|
|
172
|
+
Check applicable invariants inside the target:
|
|
173
|
+
|
|
174
|
+
- consumed length stays within input and successful repeated parsing makes progress;
|
|
175
|
+
- failure does not commit an output object, cursor, transaction, or side effect outside contract;
|
|
176
|
+
- encoded-size prediction matches actual writes and bounded buffers fail safely;
|
|
177
|
+
- normalization and canonical serialization become idempotent;
|
|
178
|
+
- round trips preserve declared semantic meaning, unknown fields, and duplicate-field policy;
|
|
179
|
+
- multiple implementations, versions, modes, or optimization tracks agree after normalization where
|
|
180
|
+
the specification requires agreement;
|
|
181
|
+
- work units, transitions, byte revisits, allocations, output size, nesting, and retained memory
|
|
182
|
+
remain within input-relative and absolute limits; and
|
|
183
|
+
- the same initial state plus the same input produces the same normalized outcome.
|
|
184
|
+
|
|
185
|
+
Keep sanitizer, assertion, semantic, differential, timeout, OOM, leak, race, and cost failures as
|
|
186
|
+
separate evidence classes. Do not let a wall-clock timeout be the only complexity oracle.
|
|
187
|
+
|
|
188
|
+
Define a stable semantic result envelope for differential work: accepted, rejected, or failure
|
|
189
|
+
class; normalized value; consumed length; durable state change; and externally visible effects.
|
|
190
|
+
Preserve raw results separately and normalize only explicitly permitted differences such as paths,
|
|
191
|
+
addresses, timestamps, ordering, locale text, or NaN rendering.
|
|
192
|
+
|
|
193
|
+
Give every property and state invariant a stable identifier. Record the earliest normalized
|
|
194
|
+
divergence checkpoint so deduplication and minimization preserve the same failure rather than merely
|
|
195
|
+
any non-zero exit. A disagreement between two implementations is a candidate; use the specification,
|
|
196
|
+
an independent reference model, a third implementation, or a metamorphic relation before assigning
|
|
197
|
+
fault.
|
|
198
|
+
|
|
199
|
+
### 5. Design complementary input lanes
|
|
200
|
+
|
|
201
|
+
Maintain deliberate lanes instead of one mutator policy:
|
|
202
|
+
|
|
203
|
+
- raw-byte mutation for malformed parser, decoder, framing, and error-recovery behavior;
|
|
204
|
+
- structure-preserving mutation for deeper semantic and execution paths;
|
|
205
|
+
- repair mode that recomputes dependent length, offset, checksum, compression, or test signature;
|
|
206
|
+
- mismatch mode that corrupts one dependency while preserving the rest;
|
|
207
|
+
- overflow and boundary mode around zero, one, maximum minus one, maximum, maximum plus one,
|
|
208
|
+
alignment, varint, Unicode, depth, and count boundaries;
|
|
209
|
+
- outer-envelope and decoded-payload targets for compressed, encrypted, or signed formats; and
|
|
210
|
+
- sequence mutation for stateful APIs and protocols.
|
|
211
|
+
|
|
212
|
+
Keep input decoding total, deterministic, progress-making, and bounded. A structured decoder is
|
|
213
|
+
part of the harness attack surface.
|
|
214
|
+
|
|
215
|
+
Generate one abstract object or command sequence, then derive every compared representation or
|
|
216
|
+
metamorphic follow-up from that origin. Preserve an origin identifier through triage. Design the
|
|
217
|
+
decoder and semantic shrinker so lengths, branches, object references, parent-child relations, and
|
|
218
|
+
generated handles remain valid while simplifying toward zero, one, and named boundaries.
|
|
219
|
+
|
|
220
|
+
### 6. Verify instrumentation and feedback reach the target
|
|
221
|
+
|
|
222
|
+
Confirm that the code whose behavior matters is actually instrumented, including relevant static or
|
|
223
|
+
shared libraries, subprocesses, plugins, or generated modules. Exclude noisy runtimes and helpers
|
|
224
|
+
only when doing so does not hide owned target behavior.
|
|
225
|
+
|
|
226
|
+
Use edge or block coverage as the baseline signal. Add compare tracing, value profiles, data-flow
|
|
227
|
+
features, context, n-gram, AST shape, protocol state, or semantic features only for a named barrier.
|
|
228
|
+
Measure feature growth, collision or cardinality risk, execution cost, and corpus growth.
|
|
229
|
+
|
|
230
|
+
Do not conclude that a target is healthy from total coverage alone. Track the fraction reaching each
|
|
231
|
+
pipeline stage and the last meaningful frontier.
|
|
232
|
+
|
|
233
|
+
### 7. Maintain corpus and dictionary as source artifacts
|
|
234
|
+
|
|
235
|
+
- Keep a minimal seed basis that opens distinct syntax, semantic, state, and error features.
|
|
236
|
+
- Prefer small seeds that preserve the same useful features and execute faster.
|
|
237
|
+
- Sanitize production-derived inputs and retain provenance without storing secrets or personal data.
|
|
238
|
+
- Keep prior bug, timeout, OOM, and discrepancy reproducers as regression seeds after repair.
|
|
239
|
+
- Build dictionaries from actual grammar terminals, magic values, field names, escape forms,
|
|
240
|
+
versions, extensions, and observed comparison constants that are expressible in the input.
|
|
241
|
+
- Merge and minimize without dropping semantic or protocol-state distinctions that plain edge
|
|
242
|
+
coverage cannot see.
|
|
243
|
+
|
|
244
|
+
A large corpus is not evidence of a good campaign; record feature yield, execution cost, and
|
|
245
|
+
redundancy.
|
|
246
|
+
|
|
247
|
+
### 8. Fuzz state, failures, and environment
|
|
248
|
+
|
|
249
|
+
For streaming inputs, make chunk sizes, empty reads, short reads, EOF placement, and retryable errors
|
|
250
|
+
part of the artifact. For serializers and stores, make output capacity, partial writes, and the
|
|
251
|
+
N-th allocation or I/O failure input-controlled.
|
|
252
|
+
|
|
253
|
+
Represent a stateful target as an operation or message sequence. Mutate operations and payloads
|
|
254
|
+
separately with insert, delete, duplicate, reorder, replay, reconnect, and fault-schedule changes.
|
|
255
|
+
Seed legitimate paths that reach authenticated or transaction states without embedding real
|
|
256
|
+
credentials.
|
|
257
|
+
|
|
258
|
+
Prefer explicit stable state identifiers. If state feedback is inferred from memory or responses,
|
|
259
|
+
normalize addresses, timestamps, padding, transient buffers, and other high-cardinality noise.
|
|
260
|
+
|
|
261
|
+
### 9. Split sanitizer and assertion lanes by purpose
|
|
262
|
+
|
|
263
|
+
Keep a fast coverage lane separate from address and leak, undefined and integer, uninitialized-read,
|
|
264
|
+
race, and assertion-heavy lanes when tool compatibility or cost differs. Use fail-fast behavior after
|
|
265
|
+
undefined behavior so later symptoms from corrupted state are not treated as independent defects.
|
|
266
|
+
|
|
267
|
+
Do not claim that a generic undefined-behavior bundle covers implicit truncation, sign changes, or
|
|
268
|
+
every intentional-looking unsigned overflow. Scope integer checks explicitly and suppress only
|
|
269
|
+
proven intentional operations. Use expensive origin tracking or race exploration on minimized or
|
|
270
|
+
high-value stateful inputs when full-campaign cost would destroy useful execution volume.
|
|
271
|
+
|
|
272
|
+
Assertions should monitor internal preconditions, postconditions, ownership, lock state, progress,
|
|
273
|
+
and state integrity after external input has been validated. Malformed input should follow its
|
|
274
|
+
specified rejection path rather than becoming an assertion crash.
|
|
275
|
+
|
|
276
|
+
Replay artifacts against a production-equivalent build when fuzz-friendly compilation bypasses or
|
|
277
|
+
fixes checksums, compression, randomness, signatures, or other reachability barriers.
|
|
278
|
+
|
|
279
|
+
### 10. Diversify campaigns by hypothesis
|
|
280
|
+
|
|
281
|
+
Do not duplicate one configuration across every worker. Assign bounded roles such as raw bytes,
|
|
282
|
+
structure-aware mutation, compare barriers, rare paths, state sequences, sanitizer replay, or
|
|
283
|
+
directed frontier work. Merge useful corpus artifacts through an owned process.
|
|
284
|
+
|
|
285
|
+
Treat specific fuzzer flags, power schedules, mutators, and instrumentation modes as versioned
|
|
286
|
+
tool configuration, not timeless skill rules. Refresh them from the pinned tool's official source.
|
|
287
|
+
|
|
288
|
+
### 11. Diagnose a coverage plateau
|
|
289
|
+
|
|
290
|
+
Find the last reached meaningful stage and classify the next barrier:
|
|
291
|
+
|
|
292
|
+
- validation or magic barrier;
|
|
293
|
+
- comparison barrier;
|
|
294
|
+
- structural dependency barrier;
|
|
295
|
+
- compression, encryption, or signature barrier;
|
|
296
|
+
- state-sequence barrier;
|
|
297
|
+
- environment or fault barrier;
|
|
298
|
+
- uninstrumented code or feature collision;
|
|
299
|
+
- per-iteration overhead or resource barrier;
|
|
300
|
+
- queue-energy starvation; or
|
|
301
|
+
- genuinely unreachable or dead code.
|
|
302
|
+
|
|
303
|
+
Choose the smallest matching correction: seed, dictionary, compare feedback, custom mutator,
|
|
304
|
+
repair lane, inner target, sequence model, injectable adapter, instrumentation repair, or dead-code
|
|
305
|
+
decision. More CPU is not a diagnosis.
|
|
306
|
+
|
|
307
|
+
### 12. Make artifacts independently reproducible
|
|
308
|
+
|
|
309
|
+
Record target identity, binary and symbol hashes, compiler and linker, flags, sanitizer and fuzzer
|
|
310
|
+
options, seed, limits, libraries, platform and architecture, input bytes, structured decoding
|
|
311
|
+
version, environment and fault schedule, expected failure class, and minimization state. Reproduce
|
|
312
|
+
from a clean process before claiming a product defect.
|
|
313
|
+
|
|
314
|
+
Replay repeatedly before minimization and classify the event as deterministic, probabilistic, or
|
|
315
|
+
multimodal. Symbolize before deduplication. Build a stable crash key from failure class, sanitizer
|
|
316
|
+
kind and access type, property identifier, earliest divergence checkpoint, and a small set of stable
|
|
317
|
+
application frames after removing runtime noise.
|
|
318
|
+
|
|
319
|
+
Do not invent replay counts, failure-rate thresholds, or statistical acceptance rules. Use a
|
|
320
|
+
repository-owned versioned flaky policy when one exists; otherwise preserve the observed
|
|
321
|
+
distribution as triage evidence and keep the artifact out of deterministic merge gates.
|
|
322
|
+
|
|
323
|
+
Separate trigger, detection point, and root cause. A sanitizer's top frame is evidence of detection,
|
|
324
|
+
not proof of the earliest contract violation.
|
|
325
|
+
|
|
326
|
+
Minimize input, operation sequence, chunk schedule, options, and environmental facts while
|
|
327
|
+
preserving the exact normalized failure predicate. Alternate byte reduction with semantic shrinking
|
|
328
|
+
when either alone loses structure or byte-level noise. For flaky failures, shrink the full failure
|
|
329
|
+
tuple including thread count, schedule or fault seed, yield points, response ordering, and repetition
|
|
330
|
+
count. Separate non-reproducible artifacts, harness failures, target defects, specification
|
|
331
|
+
discrepancies, duplicates, unsupported inputs, and timeout, OOM, stack, leak, or complexity events.
|
|
332
|
+
|
|
333
|
+
Prove a root-cause fix with the original artifact, minimized artifact, nearby variants, applicable
|
|
334
|
+
sanitizer lanes, and related properties. Use a bounded negative control or mutation when practical:
|
|
335
|
+
reintroducing the repaired invariant violation should make the regression fail.
|
|
336
|
+
|
|
337
|
+
Enable detailed traces only in replay or triage mode; avoid high-volume logs in the hot loop.
|
|
338
|
+
|
|
339
|
+
### 13. Keep campaigns and CI assets from rotting
|
|
340
|
+
|
|
341
|
+
Build targets with ordinary project checks when configured. Replay seed and regression corpora in a
|
|
342
|
+
bounded deterministic test path with applicable sanitizers or assertions. Keep dictionaries,
|
|
343
|
+
schemas, custom mutators, and artifact decoders versioned beside their targets.
|
|
344
|
+
|
|
345
|
+
Run CI in evidence order: explicit semantic regressions, bounded seed or regression corpus replay,
|
|
346
|
+
then new mutation if budget remains. Use PR campaigns for changed code and fast replay, periodic
|
|
347
|
+
batch campaigns to grow the coverage corpus, and slower sanitizer, stateful, or cross-platform lanes
|
|
348
|
+
on a deeper cadence.
|
|
349
|
+
|
|
350
|
+
Keep four asset classes physically and logically separate:
|
|
351
|
+
|
|
352
|
+
- a small reviewed seed set;
|
|
353
|
+
- an evolving instrumentation-dependent coverage corpus;
|
|
354
|
+
- original untriaged crash, timeout, OOM, or discrepancy artifacts; and
|
|
355
|
+
- minimized, explained semantic regressions with stable property identifiers.
|
|
356
|
+
|
|
357
|
+
Version the harness decoder and corpus schema. Stage and validate corpus merges before atomic
|
|
358
|
+
promotion; retain the previous snapshot for rollback. Do not let different engines write one shared
|
|
359
|
+
directory concurrently, and do not let coverage minimization delete semantic regressions it cannot
|
|
360
|
+
observe. Isolate flaky artifacts in a measured reproduction lane rather than deleting them or making
|
|
361
|
+
the main gate noisy.
|
|
362
|
+
|
|
363
|
+
Do not equate a short corpus replay with a completed fuzz campaign. Report bounded smoke, historical
|
|
364
|
+
regression replay, current coverage evidence, and long-running campaign state separately.
|
|
365
|
+
|
|
366
|
+
### 14. Verify and report within command authority
|
|
367
|
+
|
|
368
|
+
Use only configured oneshot intents. Do not launch a watcher, server, background fuzzer, distributed
|
|
369
|
+
worker, or unbounded loop merely because the harness exists. When a sanitizer build, fuzz smoke,
|
|
370
|
+
corpus replay, coverage report, or artifact reproducer is missing from the command contract, report
|
|
371
|
+
the manual evidence gap and keep other validation honest.
|
|
372
|
+
|
|
373
|
+
<!-- mustflow-section: postconditions -->
|
|
374
|
+
## Postconditions
|
|
375
|
+
|
|
376
|
+
- Each target owns a narrow stage and at least one oracle beyond coverage.
|
|
377
|
+
- Iterations are deterministic or their remaining nondeterminism is measured and reported.
|
|
378
|
+
- Reset, cleanup, state, environment, and fault injection have explicit ownership.
|
|
379
|
+
- Raw and structure-preserving lanes cover both malformed boundaries and deep behavior.
|
|
380
|
+
- Instrumentation and feedback include the actual target code and have bounded cardinality.
|
|
381
|
+
- Corpus, dictionary, regression seeds, and artifacts have provenance, minimization, and privacy
|
|
382
|
+
policies.
|
|
383
|
+
- Property-based entropy, semantic result envelopes, property identifiers, divergence checkpoints,
|
|
384
|
+
crash keys, and exact minimization predicates are deterministic and versioned where applicable.
|
|
385
|
+
- Seed, coverage, crash, and semantic-regression assets are separated, and CI cadence distinguishes
|
|
386
|
+
replay, short mutation, batch growth, and deeper sanitizer or stateful campaigns.
|
|
387
|
+
- Stateful or streaming artifacts contain the sequence, chunk, environment, and fault facts needed
|
|
388
|
+
for independent reproduction.
|
|
389
|
+
- Runtime evidence distinguishes bounded replay, active campaign, coverage, sanitizer, semantic,
|
|
390
|
+
differential, and resource-oracle results.
|
|
391
|
+
|
|
392
|
+
<!-- mustflow-section: verification -->
|
|
393
|
+
## Verification
|
|
394
|
+
|
|
395
|
+
- Inspect changed files with `changes_status` and `changes_diff_summary` when configured.
|
|
396
|
+
- Use `lint` and `build` for harness source, instrumentation, sanitizer, or generated input code.
|
|
397
|
+
- Prefer `test_related`; use `test` for shared target infrastructure and `test_audit` when test
|
|
398
|
+
selection or coverage claims need evidence.
|
|
399
|
+
- Use `docs_validate_fast` for changed guidance, `test_release` for packaged harness or template
|
|
400
|
+
surfaces, and `mustflow_check` for Mustflow documents or contracts.
|
|
401
|
+
- Record missing fuzz smoke, sanitizer, corpus replay, coverage, artifact replay, or long-running
|
|
402
|
+
campaign intents instead of inventing raw commands.
|
|
403
|
+
|
|
404
|
+
<!-- mustflow-section: failure-handling -->
|
|
405
|
+
## Failure Handling
|
|
406
|
+
|
|
407
|
+
- If an artifact does not reproduce in a clean process, inspect reset, global state, threads,
|
|
408
|
+
environment, build identity, and prior-input dependency before changing target code.
|
|
409
|
+
- If most inputs die at one validation gate, keep the outer target and add the narrowest seed,
|
|
410
|
+
dictionary, repair lane, or inner target needed to test the next stage.
|
|
411
|
+
- If coverage grows only in harness or dependency code, repair instrumentation ownership before
|
|
412
|
+
tuning schedules.
|
|
413
|
+
- If a structured mutator starves malformed handling, retain or restore a raw-byte lane.
|
|
414
|
+
- If raw mutation cannot preserve framing long enough to reach semantics, add a bounded structured or
|
|
415
|
+
repair lane without disabling outer validation.
|
|
416
|
+
- If corpus minimization drops semantic or protocol-state diversity, include the missing stable
|
|
417
|
+
feature in the minimization contract.
|
|
418
|
+
- If fuzz execution is unconfigured, long-running, networked, destructive, credentialed, or targets
|
|
419
|
+
an unowned system, stop at code review, bounded fixtures, and a manual campaign plan.
|
|
420
|
+
- If a discrepancy lies in unspecified behavior, retain it as a discrepancy candidate and require a
|
|
421
|
+
specification or product decision before calling it a defect.
|
|
422
|
+
|
|
423
|
+
<!-- mustflow-section: output-format -->
|
|
424
|
+
## Output Format
|
|
425
|
+
|
|
426
|
+
- Fuzzing claim and target matrix
|
|
427
|
+
- Harness determinism, reset, environment, and cleanup decisions
|
|
428
|
+
- Oracle classes and resource budgets
|
|
429
|
+
- Input lanes, corpus, dictionary, and mutator decisions
|
|
430
|
+
- Instrumentation and feedback boundary
|
|
431
|
+
- Stateful, streaming, fault-injection, and campaign-diversity decisions
|
|
432
|
+
- Artifact reproduction and triage result
|
|
433
|
+
- Differential or metamorphic outcome envelope, property identifier, exact failure predicate, and
|
|
434
|
+
trigger, detection-point, and root-cause decision
|
|
435
|
+
- Sanitizer-lane and CI asset-lifecycle decisions
|
|
436
|
+
- Files changed
|
|
437
|
+
- Configured command intents run
|
|
438
|
+
- Missing or skipped fuzz, sanitizer, coverage, replay, and long-running evidence
|
|
439
|
+
- Remaining harness, target, corpus, privacy, nondeterminism, and campaign risk
|