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.
- package/README.md +1 -1
- package/package.json +2 -1
- package/templates/default/i18n.toml +24 -6
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +4 -2
- package/templates/default/locales/en/.mustflow/skills/bug-claim-evidence-gate/SKILL.md +223 -0
- package/templates/default/locales/en/.mustflow/skills/bug-claim-evidence-gate/references/classification.md +79 -0
- package/templates/default/locales/en/.mustflow/skills/bug-claim-evidence-gate/references/domain-extensions.md +54 -0
- package/templates/default/locales/en/.mustflow/skills/code-review/SKILL.md +6 -2
- package/templates/default/locales/en/.mustflow/skills/completion-evidence-gate/SKILL.md +4 -1
- package/templates/default/locales/en/.mustflow/skills/failure-triage/SKILL.md +5 -1
- package/templates/default/locales/en/.mustflow/skills/hetzner-cloud-change/SKILL.md +316 -0
- package/templates/default/locales/en/.mustflow/skills/repro-first-debug/SKILL.md +7 -2
- package/templates/default/locales/en/.mustflow/skills/router.toml +1 -1
- package/templates/default/locales/en/.mustflow/skills/routes.toml +24 -0
- package/templates/default/locales/en/.mustflow/skills/security-privacy-review/SKILL.md +7 -2
- package/templates/default/locales/en/.mustflow/skills/webview2-code-change/SKILL.md +335 -0
- package/templates/default/manifest.toml +24 -1
|
@@ -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
|
+
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.
|
|
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:
|
|
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.
|
|
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
|