mustflow 2.115.13 → 2.115.15

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.
@@ -0,0 +1,316 @@
1
+ ---
2
+ mustflow_doc: skill.hetzner-cloud-change
3
+ locale: en
4
+ canonical: true
5
+ revision: 2
6
+ lifecycle: mustflow-owned
7
+ authority: procedure
8
+ name: hetzner-cloud-change
9
+ description: Apply this skill when Hetzner Cloud or Dedicated infrastructure, hcloud or API integrations, Terraform provider resources, servers, networks, load balancers, firewalls, IPs, placement groups, volumes, backups, Object Storage, Storage Box, cloud-init, Docker or Coolify hosting, Kubernetes CCM or CSI integration, monitoring, recovery, capacity, cost, or Hetzner-related deployment tests are created, changed, reviewed, debugged, migrated, or upgraded.
10
+ metadata:
11
+ mustflow_schema: "1"
12
+ mustflow_kind: procedure
13
+ pack_id: mustflow.core
14
+ skill_id: mustflow.core.hetzner-cloud-change
15
+ command_intents:
16
+ - changes_status
17
+ - changes_diff_summary
18
+ - lint
19
+ - build
20
+ - test_related
21
+ - test
22
+ - docs_validate_fast
23
+ - test_release
24
+ - mustflow_check
25
+ ---
26
+
27
+ # Hetzner Cloud Change
28
+
29
+ <!-- mustflow-section: purpose -->
30
+ ## Purpose
31
+
32
+ Change or review Hetzner infrastructure without confusing one resilience mechanism with a complete
33
+ availability, backup, recovery, security, performance, or cost design.
34
+
35
+ Treat Hetzner as a provider with distinct compute, network, storage, control-plane, account, and
36
+ location failure domains. Prove the current provider contract from official documentation instead
37
+ of carrying old prices, limits, product availability, or console behavior into a durable design.
38
+
39
+ <!-- mustflow-section: use-when -->
40
+ ## Use When
41
+
42
+ - A task changes Hetzner Cloud, Dedicated, Robot, hcloud, API, Terraform, Pulumi, Ansible, cloud-init,
43
+ image, server, server type, architecture, location, network zone, private Network, Load Balancer,
44
+ Firewall, Primary IP, Floating IP, Placement Group, Volume, Backup, Snapshot, Object Storage,
45
+ Storage Box, DNS failover, monitoring, capacity, restore, or disaster-recovery behavior.
46
+ - A review claims that a Hetzner design is highly available, private, encrypted, backed up,
47
+ recoverable, scalable, cost-effective, or production-ready.
48
+ - A Hetzner incident or performance investigation may lead to infrastructure, application,
49
+ runbook, test, monitoring, or capacity changes.
50
+ - Docker, Coolify, Kubernetes, a cloud-controller manager, CSI driver, CNI, ingress, egress gateway,
51
+ container registry, or orchestration platform depends on Hetzner networking, storage, metadata,
52
+ load-balancer, image, architecture, or API behavior.
53
+
54
+ <!-- mustflow-section: do-not-use-when -->
55
+ ## Do Not Use When
56
+
57
+ - The task is provider-neutral cost review only; use `cloud-cost-guardrail-review`.
58
+ - The task is provider-neutral rollout, canary, drain, probe, or rollback review only; use
59
+ `deployment-rollout-safety-review`.
60
+ - The task only changes Docker build or runtime behavior without a Hetzner boundary; use
61
+ `docker-code-change` or `docker-runtime-triage`.
62
+ - The task only diagnoses application code, database queries, Linux performance, or networking
63
+ after evidence has excluded Hetzner resources and provider behavior.
64
+ - The user asks for a live production mutation, deletion, failover, restore, rescale, or provider
65
+ purchase that no configured command intent authorizes.
66
+
67
+ <!-- mustflow-section: required-inputs -->
68
+ ## Required Inputs
69
+
70
+ - Target repository, environment, Hetzner project or account boundary, infrastructure source of
71
+ truth, state owner, changed files, and configured command intents.
72
+ - Resource ledger: Cloud or Dedicated servers, architecture and server types, images, locations,
73
+ network zones, Placement Groups, Networks, routes, Load Balancers, Firewalls, Primary and Floating
74
+ IPs, Volumes, Backups, Snapshots, buckets, Storage Boxes, DNS, certificates, metadata endpoints,
75
+ guest network-config owners, container data paths, orchestration drivers, monitoring, and tokens.
76
+ - Failure-domain and recovery model: host, rack or unknown facility boundary, location, network zone,
77
+ provider control plane, DNS, account, credential, operator error, data corruption, and dependency
78
+ failure; required RPO, RTO, restore evidence, and traffic or data failover path.
79
+ - Runtime and traffic model: ingress, egress, east-west traffic, health checks, TLS termination,
80
+ connection draining, long-lived connections, retries, idempotency, queue leases, replication,
81
+ storage consistency, and peak connection or throughput demand.
82
+ - Capacity and cost model: actual workload measurements, architecture compatibility, quota, current
83
+ SKU and location availability, current provider prices, retention, egress, IP, storage, backup,
84
+ and idle-resource costs.
85
+ - Current official Hetzner documentation for every date-sensitive price, limit, availability,
86
+ billing, networking, backup, restore, or product-capability claim used in the decision.
87
+
88
+ <!-- mustflow-section: preconditions -->
89
+ ## Preconditions
90
+
91
+ - Read the actual IaC, config, code, tests, runbooks, state boundaries, and current official Hetzner
92
+ documentation before recommending or changing provider behavior.
93
+ - Separate declared configuration, provider-accepted configuration, and observed runtime state.
94
+ One layer does not prove the next.
95
+ - Treat attached reports, old docs, console screenshots, blogs, and AI summaries as leads to verify,
96
+ not as current provider authority.
97
+ - Keep provider credentials, state files, private addresses, customer data, and recovery secrets out
98
+ of repository output and test fixtures.
99
+ - Provider CLI, API, console, apply, import, state mutation, purchase, deletion, failover, and restore
100
+ actions remain manual-only unless a configured oneshot command intent explicitly permits them.
101
+
102
+ <!-- mustflow-section: allowed-edits -->
103
+ ## Allowed Edits
104
+
105
+ - Update Hetzner IaC, provider integrations, bootstrap configuration, images, application resilience
106
+ code, health checks, monitoring, tests, fixtures, runbooks, architecture docs, cost guardrails, and
107
+ directly synchronized templates within the user-requested scope.
108
+ - Add validation for immutable-image or reproducible bootstrap paths, multi-architecture artifacts,
109
+ resource labels, deletion protection, bounded scaling, restore evidence, and declared-versus-applied
110
+ state when the repository owns those surfaces.
111
+ - Do not add live credentials, broad provider command wrappers, autonomous cleanup, production
112
+ failover, unbounded autoscaling, or destructive recovery automation outside the command contract.
113
+ - Do not rewrite provider-neutral deployment, cost, database, security, or performance policy inside
114
+ this skill when the matching adjunct skill already owns it.
115
+
116
+ <!-- mustflow-section: procedure -->
117
+ ## Procedure
118
+
119
+ 1. Classify the provider boundary.
120
+ Record Cloud versus Dedicated, project or account, environment, location, network zone,
121
+ architecture, OS, image, ownership, IaC state, and whether the task changes desired state,
122
+ provider state, guest state, application behavior, or only documentation.
123
+
124
+ 2. Build the resource and credential ledger.
125
+ Map each server, IP, Network, route, Load Balancer, target, Firewall, Placement Group, Volume,
126
+ Backup, Snapshot, bucket, Storage Box, DNS record, certificate, token, monitoring path, and state
127
+ store to its owner, lifecycle, protection, cost, and dependent resources. Use projects and token
128
+ scope as blast-radius boundaries; keep read-only monitoring credentials separate from mutation
129
+ credentials and keep break-glass material outside the affected provider boundary.
130
+
131
+ 3. Model failures by mechanism instead of by product label.
132
+ For host, location, network-zone, provider-control-plane, DNS, account, credential, operator,
133
+ corruption, and dependency failures, record detection, surviving components, fencing, traffic or
134
+ data transition, and recovery evidence. A spread Placement Group reduces same-host concentration;
135
+ it does not prove location isolation. A Load Balancer, replicated Volume, server Backup, Snapshot,
136
+ and off-provider backup each cover different failures.
137
+
138
+ 4. Verify current provider facts.
139
+ Refresh exact prices, quotas, server types, architectures, locations, limits, billing rules,
140
+ supported protocols, IP behavior, MTU, firewall scope, backup contents, restore compatibility,
141
+ Object Lock behavior, metadata endpoints, guest auto-configuration ownership, CCM and CSI
142
+ compatibility, and product availability from official Hetzner sources and maintained provider
143
+ repositories. Record the access date, component version, or digest. Keep time-sensitive values in
144
+ config or evidence, not as timeless prose; never treat a mutable `latest` tag as compatibility proof.
145
+
146
+ 5. Review network and recovery reachability together.
147
+ Map ingress, egress, east-west traffic, DNS, TLS, routes, MTU and overlay overhead, allowlists,
148
+ private-address behavior, Firewall coverage, bastion or console access, package and API egress,
149
+ and rescue or rebuild paths. Private does not prove encrypted or filtered. Before removing a
150
+ public path, prove a tested replacement for administration, egress, recovery, and credential
151
+ rotation under the same failure being handled. Treat Cloud Firewall, host firewall, container
152
+ firewall, service identity, and application authorization as separate layers. Verify these
153
+ provider-Firewall semantics from current docs and applied state:
154
+ - assigned allowlists combine; attaching another Firewall does not override an existing broad allow;
155
+ - no outbound rules means allow-all, while adding outbound rules creates an implicit-deny remainder;
156
+ - rule changes do not terminate connections that were already established;
157
+ - label selection is desired scope, not proof that every intended resource was actually attached;
158
+ - private Network traffic and Load Balancer interfaces require their own controls when provider
159
+ Firewall coverage is absent.
160
+ Model the Network as routed L3, not a VLAN or security zone. Verify source-address and route
161
+ constraints for VPN, NAT, custom-router, alias-IP, and failover designs. Give each private NIC one
162
+ configuration owner: provider image automation or explicit guest config, not competing DHCP
163
+ clients. Validate routes, DNS, MTU, large transfers, and recovery after a cold boot.
164
+
165
+ 6. Review Load Balancer and IP transitions.
166
+ Separate liveness from readiness; keep readiness bounded to dependencies required to accept new
167
+ work. Verify TLS termination, target protocol, Proxy Protocol compatibility, health-check timing,
168
+ connection and bandwidth budget, drain order, long-lived connection recovery, and independent
169
+ DNS entry points when location-level failover is required. Treat Floating IP movement as an
170
+ explicit fenced transition: isolate the old writer before reassignment and prove the guest-side
171
+ address and routing state. Do not call it automatic failover. Inspect actual public IPv4, public
172
+ IPv6, and private interface state rather than inferring exposure from DNS. Keep DDoS filtering,
173
+ WAF behavior, application abuse control, and origin authentication distinct; hiding a DNS record
174
+ does not prove that an old or direct origin address is unreachable.
175
+
176
+ 7. Select compute from workload evidence.
177
+ Compare Cloud and Dedicated ownership burden, shared and dedicated CPU behavior, x86 and Arm
178
+ compatibility, memory duplication, local-disk dependence, replacement speed, and tail latency.
179
+ Correlate application throughput, error rate, queue age, p95 or p99 latency, run queue, CPU PSI,
180
+ steal, `MemAvailable`, swap I/O, memory PSI, storage latency, queue depth, I/O PSI, and fsync
181
+ latency. Do not promote an arbitrary utilization or PSI percentage to a universal threshold.
182
+ Reproduce candidates with identical workload, location, image, and application version when safe.
183
+
184
+ 8. Preserve replacement and scaling options.
185
+ Check architecture and image compatibility, root-disk resize irreversibility, local-state loss,
186
+ SKU and location scarcity, quotas, drain behavior, maximum scale, and fallback types before
187
+ rescale or autoscaling changes. Keep state out of disposable compute where practical. Define
188
+ bounded fallback behavior when a preferred type or location cannot be allocated.
189
+
190
+ 9. Classify storage by durability and access pattern.
191
+ Distinguish replaceable local storage, block Volume state, object storage, backup archives, and
192
+ Storage Box data. Verify current performance and durability claims rather than copying fixed IOPS
193
+ or throughput values. Replication is availability, not history. Test storage with disposable files
194
+ and realistic I/O shapes; never benchmark a production raw block device destructively.
195
+ Trace the actual byte path from application or container to filesystem, mount, block device, or
196
+ object key. A Docker named volume is not a Hetzner Volume. For required block storage, make mount
197
+ identity and readiness a startup precondition, order consumers after the mount, and fail closed on
198
+ a missing or wrong mount so an empty local directory cannot become a second database. Treat Volume
199
+ attachment, location, growth, and filesystem expansion as explicit operations, not automatic HA.
200
+ Treat Object Storage as an object API, not POSIX, shared block storage, or a database filesystem;
201
+ review overwrite, rename, locking, append, small-object, request, connection, bucket, and source-IP
202
+ limits, including NAT aggregation. For Kubernetes, verify the pinned CCM and CSI versions or
203
+ digests, topology, access modes, attachment behavior, immutable provider fields, and current
204
+ snapshot or migration support before accepting a StatefulSet or LoadBalancer design.
205
+
206
+ 10. Build the backup and restore chain.
207
+ Start from application-consistent backup and point-in-time requirements. Record whether root disk,
208
+ attached Volumes, databases, objects, secrets, DNS, certificates, queues, cron, and external state
209
+ are included. Keep an encrypted independently administered copy outside the failure and account
210
+ boundary being protected. Decide Object Lock at bucket creation when required, separate write from
211
+ retention or deletion authority, and test restoration into an isolated target including login,
212
+ reads, writes, workers, schedules, policies, and cutover. Measure achieved data-loss window and
213
+ service restoration time; do not infer RPO or RTO from backup-job success. Design versioning,
214
+ retention lock, lifecycle deletion, encryption, and credential scope as separate controls; prove
215
+ that lifecycle rules cannot delete an application backup chain earlier than the restore contract.
216
+
217
+ 11. Keep monitoring and recovery control independent.
218
+ Use guest, application, database, storage, network, backup-age, and synthetic-user signals in
219
+ addition to provider graphs. Place at least one detection and coordination path outside the
220
+ provider failure domain when that failure is in scope. Preserve timestamps, request or job IDs,
221
+ path evidence, provider inventory drift, access and audit events, and bidirectional network
222
+ evidence before replacement or restart hides the fault. Send security-relevant logs to a sink
223
+ whose ingestion identity cannot rewrite or delete retained evidence.
224
+
225
+ 12. Prepare rebuild-first incident recovery.
226
+ Separate prevention from containment: a provider Firewall change can block new connections while
227
+ old sessions, application tokens, database sessions, and compromised processes remain active.
228
+ Define clean administrator access, account and token containment, exposure removal, session
229
+ termination, evidence preservation, isolated analysis, clean-image rebuild, validated data
230
+ restoration, and rotation of every secret the compromised workload could read. Do not return a
231
+ patched compromised server or attached forensic disk to the production trust boundary.
232
+
233
+ 13. Treat bootstrap as reproducible initialization.
234
+ Keep cloud-init or user data small, versioned, secret-safe, observable, and limited to bootstrap.
235
+ Move substantial configuration into an idempotent, rerunnable, pinned, and testable mechanism.
236
+ Prove failure reporting and rebuild from a clean server; do not rely on a one-shot script whose
237
+ partial completion cannot be distinguished from success. Verify the current metadata API contract,
238
+ deprecated paths, image-specific network auto-configuration owner, and first-boot identity reset.
239
+
240
+ 14. Build a live cost and lifecycle ledger.
241
+ Refresh billing rules and prices, then account for active and powered-off compute, IPs, Load
242
+ Balancers, Volumes, Backups, Snapshots, buckets, retained versions, Storage Boxes, egress, and
243
+ Dedicated commitments. Label owner, environment, purpose, protection, and expiry. Cleanup must
244
+ inventory dependencies and protections first and use a configured intent; never turn a cost
245
+ observation into an automatic delete.
246
+
247
+ 15. Verify the complete change matrix.
248
+ Cover declared config, parser or schema, plan or diff, focused tests, architecture compatibility,
249
+ bootstrap, health checks, failover fencing, restore, monitoring, cost, docs, and rollback or
250
+ replacement. Run only configured intents. Report provider-side checks that remain manual rather
251
+ than claiming production state from local validation.
252
+
253
+ <!-- mustflow-section: postconditions -->
254
+ ## Postconditions
255
+
256
+ - Hetzner resources, owners, failure domains, credentials, network paths, storage classes, recovery
257
+ chain, current provider assumptions, capacity evidence, and cost lifecycle are explicit.
258
+ - Availability, replication, backup, restore, and off-provider recovery claims are kept distinct.
259
+ - Declared, provider-applied, guest-observed, and externally observed states are not conflated.
260
+ - Every changed operational claim has named evidence or is reported as an unverified manual check.
261
+
262
+ <!-- mustflow-section: verification -->
263
+ ## Verification
264
+
265
+ Use configured oneshot command intents when available:
266
+
267
+ - `changes_status`
268
+ - `changes_diff_summary`
269
+ - `lint`
270
+ - `build`
271
+ - `test_related`
272
+ - `test`
273
+ - `docs_validate_fast`
274
+ - `test_release`
275
+ - `mustflow_check`
276
+
277
+ Prefer narrower configured IaC validation, provider-mock, network, architecture, bootstrap, restore,
278
+ performance, cost, and runbook checks. Local success does not prove live Hetzner state.
279
+
280
+ <!-- mustflow-section: failure-handling -->
281
+ ## Failure Handling
282
+
283
+ - If current official documentation disagrees with an attachment, old runbook, test fixture, or
284
+ remembered provider behavior, use the current contract and report the compatibility impact.
285
+ - If provider state cannot be inspected safely, stop at declared-state verification and name the
286
+ missing provider and runtime checks.
287
+ - If a change removes public reachability, enlarges a root disk, crosses architecture, moves a
288
+ Floating IP, deletes a resource, changes retention, or alters backup custody without a proven
289
+ recovery path, do not proceed with the mutation.
290
+ - If failover lacks fencing, idempotency, bounded retry, quorum, or independent coordination, report
291
+ the split-brain or duplicate-work risk before adding automation.
292
+ - If an isolation change relies only on a new Cloud Firewall while old sessions remain active,
293
+ require a separate connection, process, credential, and evidence-containment plan.
294
+ - If required state storage is missing, mounted at the wrong path, attached in the wrong location, or
295
+ replaced by an empty local directory, fail startup instead of creating fresh state.
296
+ - If an application requires POSIX locks, atomic rename, append, mmap, or low-latency random I/O,
297
+ reject Object Storage as a transparent mounted filesystem.
298
+ - If a provider integration relies on a mutable image tag, removed API field, undocumented metadata
299
+ path, or unverified CSI or CCM feature, pin a compatible version or stop with the compatibility gap.
300
+ - If a cost optimization removes recovery, observability, capacity, architecture compatibility, or
301
+ failure isolation, reject the optimization or add the missing guardrail first.
302
+ - If the needed provider command intent is absent, report it instead of embedding a raw hcloud,
303
+ Terraform, API, SSH, benchmark, delete, rescale, restore, or failover command.
304
+
305
+ <!-- mustflow-section: output-format -->
306
+ ## Output Format
307
+
308
+ - Hetzner boundary and resource ledger
309
+ - Current official provider facts refreshed and access date
310
+ - Failure-domain, network, credential, storage, backup, restore, and control-plane decisions
311
+ - Compute, architecture, performance, capacity, cost, and lifecycle evidence
312
+ - Declared, provider, guest, and external state verified
313
+ - Files changed
314
+ - Command intents run
315
+ - Manual or skipped provider checks and reasons
316
+ - Remaining Hetzner availability, recovery, security, performance, and cost risk
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.repro-first-debug
3
3
  locale: en
4
4
  canonical: true
5
- revision: 5
5
+ revision: 6
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: repro-first-debug
@@ -114,7 +114,12 @@ This skill keeps debugging anchored to symptom evidence, deterministic reproduct
114
114
  15. Re-run the original reproduction path after the fix. If that path is unavailable or too broad, run the closest configured intent and report the limitation.
115
115
  16. For unreproducible fixes, define the "fixed" metric before claiming success: failure rate, invariant violation count, duplicate handling count, retry exhaustion count, DLQ growth, timeout rate, latency tail, or another symptom-specific measure.
116
116
  17. Add or keep a regression guard only when it is tied to the reproduced symptom, the instrumented invariant, or a directly observed boundary condition.
117
- 18. Report the symptom, reproduction, hypotheses considered, observations, evidence packet, fix, original reproduction rerun, checks, and remaining risk.
117
+ 18. Before calling the symptom a bug or regression, pass the evidence packet to
118
+ `bug-claim-evidence-gate`. Keep trigger, allowed and actual results, applicable obligation,
119
+ reachability, target responsibility, counterevidence, and open gaps explicit. A reproduction
120
+ proves observed behavior, not by itself the authority of the expected result or the named cause.
121
+ 19. Report the symptom, reproduction, hypotheses considered, observations, adjudication, evidence
122
+ packet, fix, original reproduction rerun, checks, and remaining risk.
118
123
 
119
124
  <!-- mustflow-section: postconditions -->
120
125
  ## Postconditions
@@ -32,7 +32,7 @@ steps = [
32
32
 
33
33
  [categories.bug_failure]
34
34
  label = "Bug and Failure"
35
- signals = ["command_failure", "failing_test", "repro", "regression", "crash", "error_log"]
35
+ signals = ["command_failure", "failing_test", "repro", "regression", "candidate_defect", "repeated_review", "crash", "error_log"]
36
36
 
37
37
  [categories.general_code]
38
38
  label = "General Code"
@@ -30,6 +30,18 @@ route_type = "primary"
30
30
  priority = 50
31
31
  applies_to_reasons = ["code_change", "behavior_change"]
32
32
 
33
+ [routes."code-review".dependencies]
34
+ suggests_adjuncts = ["bug-claim-evidence-gate"]
35
+ unlocks_on = [
36
+ { signal = "candidate_defect", skill = "bug-claim-evidence-gate" },
37
+ ]
38
+
39
+ [routes."bug-claim-evidence-gate"]
40
+ category = "bug_failure"
41
+ route_type = "adjunct"
42
+ priority = 80
43
+ applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "security_change", "privacy_change", "data_change", "performance_change", "release_risk"]
44
+
33
45
  [routes."behavior-preserving-refactor"]
34
46
  category = "architecture_patterns"
35
47
  route_type = "primary"
@@ -918,6 +930,18 @@ route_type = "primary"
918
930
  priority = 90
919
931
  applies_to_reasons = ["code_change", "behavior_change", "ui_change", "security_change", "privacy_change", "data_change", "public_api_change", "package_metadata_change", "release_risk"]
920
932
 
933
+ [routes."webview2-code-change"]
934
+ category = "data_external"
935
+ route_type = "primary"
936
+ priority = 90
937
+ applies_to_reasons = ["code_change", "behavior_change", "ui_change", "security_change", "privacy_change", "data_change", "public_api_change", "package_metadata_change", "performance_change", "release_risk"]
938
+
939
+ [routes."hetzner-cloud-change"]
940
+ category = "data_external"
941
+ route_type = "primary"
942
+ priority = 90
943
+ applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "security_change", "privacy_change", "data_change", "migration_change", "docs_change", "workflow_change", "package_metadata_change", "performance_change", "release_risk"]
944
+
921
945
  [routes."process-execution-safety"]
922
946
  category = "data_external"
923
947
  route_type = "primary"
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.security-privacy-review
3
3
  locale: en
4
4
  canonical: true
5
- revision: 25
5
+ revision: 26
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: security-privacy-review
@@ -223,7 +223,12 @@ Catch security, privacy, and disclosure risks introduced by ordinary code, docum
223
223
  45. Verify that examples, fixtures, screenshots, command outputs, and final reports do not expose real-looking secrets or unnecessary personal data.
224
224
  46. Prefer omission or minimal metadata over masking when the sensitive value is not needed for the user to understand the result.
225
225
  47. If the change affects an authorization, SSRF, CSRF, rate-limit, upload, download, token, business-logic, injection, logging, telemetry, cache authority, cache disclosure, admin operation, agent permission, cryptography, transport, scanner, policy-engine, rule-catalog, or abuse boundary, activate `security-regression-tests` for test selection instead of folding test generation into this review.
226
- 48. Run the narrowest configured verification that covers the changed docs, templates, package, or mustflow contract.
226
+ 48. Send each candidate defect or vulnerability to `bug-claim-evidence-gate` with the applicable
227
+ security policy, attacker capability, supported reachability, attacker influence, relevant
228
+ defenses, unauthorized outcome, current witness or exact gap, and bounded impact claim.
229
+ Distinguish a confirmed security-policy defect from current deployment exploitability; absence
230
+ of a dangerous exploit does not erase a complete safe static or mechanical witness.
231
+ 49. Run the narrowest configured verification that covers the changed docs, templates, package, or mustflow contract.
227
232
 
228
233
  <!-- mustflow-section: postconditions -->
229
234
  ## Postconditions