mustflow 2.115.16 → 2.116.0
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/dist/cli/lib/run-plan.js +5 -1
- package/dist/core/approval-actions.js +28 -0
- package/dist/core/command-contract-validation.js +0 -41
- package/dist/core/skill-route-resolution.js +34 -3
- package/package.json +1 -1
- package/templates/default/i18n.toml +49 -13
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +25 -1
- package/templates/default/locales/en/.mustflow/skills/adapter-boundary/SKILL.md +9 -8
- package/templates/default/locales/en/.mustflow/skills/agent-execution-control-review/SKILL.md +13 -1
- package/templates/default/locales/en/.mustflow/skills/api-contract-change/SKILL.md +2 -1
- package/templates/default/locales/en/.mustflow/skills/command-pattern/SKILL.md +11 -7
- package/templates/default/locales/en/.mustflow/skills/concurrency-invariant-review/SKILL.md +3 -1
- package/templates/default/locales/en/.mustflow/skills/credit-ledger-integrity-review/SKILL.md +4 -1
- package/templates/default/locales/en/.mustflow/skills/dual-write-consistency/SKILL.md +170 -0
- package/templates/default/locales/en/.mustflow/skills/durable-workflow-orchestration/SKILL.md +167 -0
- package/templates/default/locales/en/.mustflow/skills/execution-ledger-integrity-review/SKILL.md +161 -0
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md +5 -3
- package/templates/default/locales/en/.mustflow/skills/llm-token-cost-control-review/SKILL.md +5 -1
- package/templates/default/locales/en/.mustflow/skills/migration-safety-check/SKILL.md +4 -1
- package/templates/default/locales/en/.mustflow/skills/parser-engineering-review/SKILL.md +332 -0
- package/templates/default/locales/en/.mustflow/skills/policy-decision-integrity-review/SKILL.md +170 -0
- package/templates/default/locales/en/.mustflow/skills/public-json-contract-change/SKILL.md +2 -1
- package/templates/default/locales/en/.mustflow/skills/queue-processing-integrity-review/SKILL.md +6 -2
- package/templates/default/locales/en/.mustflow/skills/routes.toml +108 -0
- package/templates/default/locales/en/.mustflow/skills/state-machine-pattern/SKILL.md +5 -3
- package/templates/default/locales/en/.mustflow/skills/structured-concurrency-supervision-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/transaction-boundary-integrity-review/SKILL.md +5 -2
- package/templates/default/manifest.toml +47 -1
|
@@ -89,6 +89,12 @@ route_type = "primary"
|
|
|
89
89
|
priority = 80
|
|
90
90
|
applies_to_reasons = ["code_change", "behavior_change"]
|
|
91
91
|
|
|
92
|
+
[routes."command-pattern".dependencies]
|
|
93
|
+
unlocks_on = [
|
|
94
|
+
{ signal = "budget_reservation", skill = "credit-ledger-integrity-review" },
|
|
95
|
+
{ signal = "reservation_settlement", skill = "transaction-boundary-integrity-review" },
|
|
96
|
+
]
|
|
97
|
+
|
|
92
98
|
[routes."command-pattern".contexts]
|
|
93
99
|
file_types = ["ts", "tsx", "js", "jsx", "py", "go", "rs"]
|
|
94
100
|
layers = ["application", "service", "workflow", "queue", "mutation"]
|
|
@@ -204,6 +210,76 @@ pattern_categories = ["state_transition", "lifecycle_model", "allowed_action"]
|
|
|
204
210
|
positive_terms = ["allowed", "history", "irreversible", "lifecycle", "phase", "state", "status", "transition", "workflow"]
|
|
205
211
|
negative_terms = ["algorithm", "pricing", "provider", "strategy", "variant", "wrapper"]
|
|
206
212
|
|
|
213
|
+
[routes."durable-workflow-orchestration"]
|
|
214
|
+
category = "general_code"
|
|
215
|
+
route_type = "primary"
|
|
216
|
+
priority = 85
|
|
217
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "performance_change", "security_change", "privacy_change", "data_change", "migration_change", "docs_change", "package_metadata_change", "release_risk"]
|
|
218
|
+
|
|
219
|
+
[routes."durable-workflow-orchestration".dependencies]
|
|
220
|
+
requires_skills = ["execution-ledger-integrity-review"]
|
|
221
|
+
suggests_adjuncts = ["idempotency-integrity-review", "retry-policy-integrity-review"]
|
|
222
|
+
unlocks_on = [
|
|
223
|
+
{ signal = "commit_publish_split", skill = "dual-write-consistency" },
|
|
224
|
+
{ signal = "child_join_cancel", skill = "structured-concurrency-supervision-review" },
|
|
225
|
+
]
|
|
226
|
+
|
|
227
|
+
[routes."durable-workflow-orchestration".contexts]
|
|
228
|
+
positive_terms = ["activity", "checkpoint", "compensate", "compensation", "durable", "orchestration", "resume", "saga", "workflow"]
|
|
229
|
+
negative_terms = ["agentic", "llm", "prompt", "tool-call"]
|
|
230
|
+
|
|
231
|
+
[routes."dual-write-consistency"]
|
|
232
|
+
category = "general_code"
|
|
233
|
+
route_type = "adjunct"
|
|
234
|
+
priority = 82
|
|
235
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "performance_change", "security_change", "privacy_change", "data_change", "migration_change", "docs_change", "package_metadata_change", "release_risk"]
|
|
236
|
+
|
|
237
|
+
[routes."dual-write-consistency".dependencies]
|
|
238
|
+
suggests_adjuncts = ["transaction-boundary-integrity-review", "queue-processing-integrity-review"]
|
|
239
|
+
|
|
240
|
+
[routes."dual-write-consistency".contexts]
|
|
241
|
+
positive_terms = ["after-commit", "commit-publish", "dual-write", "outbox", "publish", "reconcile", "reconciliation", "transactional-outbox"]
|
|
242
|
+
negative_terms = ["approval", "budget", "child", "credit", "ledger", "llm", "policy", "supervisor", "tool"]
|
|
243
|
+
|
|
244
|
+
[routes."structured-concurrency-supervision-review"]
|
|
245
|
+
category = "general_code"
|
|
246
|
+
route_type = "adjunct"
|
|
247
|
+
priority = 81
|
|
248
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "performance_change", "security_change", "privacy_change", "data_change"]
|
|
249
|
+
|
|
250
|
+
[routes."structured-concurrency-supervision-review".dependencies]
|
|
251
|
+
suggests_adjuncts = ["concurrency-invariant-review", "async-timing-boundary-review"]
|
|
252
|
+
|
|
253
|
+
[routes."structured-concurrency-supervision-review".contexts]
|
|
254
|
+
positive_terms = ["cancel", "cancellation", "child", "join", "nursery", "parent", "sibling", "supervisor", "taskgroup"]
|
|
255
|
+
negative_terms = ["distributed", "fencing", "lease", "leased", "outbox", "worker"]
|
|
256
|
+
|
|
257
|
+
[routes."execution-ledger-integrity-review"]
|
|
258
|
+
category = "general_code"
|
|
259
|
+
route_type = "adjunct"
|
|
260
|
+
priority = 82
|
|
261
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "performance_change", "security_change", "privacy_change", "data_change", "migration_change", "docs_change", "package_metadata_change", "release_risk"]
|
|
262
|
+
|
|
263
|
+
[routes."execution-ledger-integrity-review".dependencies]
|
|
264
|
+
suggests_adjuncts = ["idempotency-integrity-review", "transaction-boundary-integrity-review"]
|
|
265
|
+
|
|
266
|
+
[routes."execution-ledger-integrity-review".contexts]
|
|
267
|
+
positive_terms = ["attempt", "checkpoint", "effect", "execution", "ledger", "receipt", "replay", "sequence"]
|
|
268
|
+
negative_terms = ["accounting", "balance", "billing", "credit", "points", "settlement", "wallet"]
|
|
269
|
+
|
|
270
|
+
[routes."policy-decision-integrity-review"]
|
|
271
|
+
category = "security_privacy"
|
|
272
|
+
route_type = "adjunct"
|
|
273
|
+
priority = 82
|
|
274
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "security_change", "privacy_change", "data_change", "migration_change", "docs_change", "package_metadata_change", "release_risk"]
|
|
275
|
+
|
|
276
|
+
[routes."policy-decision-integrity-review".dependencies]
|
|
277
|
+
suggests_adjuncts = ["business-rule-leakage-review", "api-access-control-review"]
|
|
278
|
+
|
|
279
|
+
[routes."policy-decision-integrity-review".contexts]
|
|
280
|
+
positive_terms = ["allow", "approval", "capability", "decision", "deny", "explain", "obligation", "policy", "reason", "scope", "version"]
|
|
281
|
+
negative_terms = ["discount", "pricing", "provider-selection", "strategy"]
|
|
282
|
+
|
|
207
283
|
[routes."result-option"]
|
|
208
284
|
category = "architecture_patterns"
|
|
209
285
|
route_type = "primary"
|
|
@@ -420,6 +496,12 @@ route_type = "adjunct"
|
|
|
420
496
|
priority = 71
|
|
421
497
|
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "performance_change", "ui_change", "data_change"]
|
|
422
498
|
|
|
499
|
+
[routes."parser-engineering-review"]
|
|
500
|
+
category = "general_code"
|
|
501
|
+
route_type = "adjunct"
|
|
502
|
+
priority = 79
|
|
503
|
+
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "public_api_change", "performance_change", "security_change", "data_change"]
|
|
504
|
+
|
|
423
505
|
[routes."type-state-modeling-review"]
|
|
424
506
|
category = "general_code"
|
|
425
507
|
route_type = "adjunct"
|
|
@@ -612,12 +694,23 @@ route_type = "primary"
|
|
|
612
694
|
priority = 82
|
|
613
695
|
applies_to_reasons = ["code_change", "behavior_change", "public_api_change", "docs_change", "test_change", "data_change", "migration_change", "performance_change", "security_change", "privacy_change"]
|
|
614
696
|
|
|
697
|
+
[routes."api-contract-change".dependencies]
|
|
698
|
+
unlocks_on = [
|
|
699
|
+
{ signal = "contract_version_migration", skill = "migration-safety-check" },
|
|
700
|
+
{ signal = "contract_version_migration", skill = "contract-sync-check" },
|
|
701
|
+
]
|
|
702
|
+
|
|
615
703
|
[routes."backend-reliability-change"]
|
|
616
704
|
category = "general_code"
|
|
617
705
|
route_type = "primary"
|
|
618
706
|
priority = 84
|
|
619
707
|
applies_to_reasons = ["code_change", "behavior_change", "public_api_change", "data_change", "migration_change", "performance_change", "security_change", "privacy_change", "docs_change", "test_change", "package_metadata_change", "release_risk"]
|
|
620
708
|
|
|
709
|
+
[routes."backend-reliability-change".dependencies]
|
|
710
|
+
unlocks_on = [
|
|
711
|
+
{ signal = "commit_publish_split", skill = "dual-write-consistency" },
|
|
712
|
+
]
|
|
713
|
+
|
|
621
714
|
[routes."http-delivery-streaming"]
|
|
622
715
|
category = "general_code"
|
|
623
716
|
route_type = "primary"
|
|
@@ -774,6 +867,16 @@ route_type = "primary"
|
|
|
774
867
|
priority = 70
|
|
775
868
|
applies_to_reasons = ["unknown_change", "code_change", "behavior_change", "test_change", "docs_change", "public_api_change", "data_change", "performance_change", "security_change", "privacy_change", "package_metadata_change", "release_risk"]
|
|
776
869
|
|
|
870
|
+
[routes."agent-execution-control-review".dependencies]
|
|
871
|
+
unlocks_on = [
|
|
872
|
+
{ signal = "capability_scoped_tool", skill = "policy-decision-integrity-review" },
|
|
873
|
+
{ signal = "capability_scoped_tool", skill = "security-flow-review" },
|
|
874
|
+
]
|
|
875
|
+
|
|
876
|
+
[routes."agent-execution-control-review".contexts]
|
|
877
|
+
positive_terms = ["autonomy", "capability", "executor", "guardrail", "handoff", "interrupt", "planner", "resume", "tool-call"]
|
|
878
|
+
negative_terms = ["benchmark", "eval", "grader", "judge", "score", "trajectory"]
|
|
879
|
+
|
|
777
880
|
[routes."browser-automation-reliability-review"]
|
|
778
881
|
category = "general_code"
|
|
779
882
|
route_type = "primary"
|
|
@@ -1026,6 +1129,11 @@ route_type = "primary"
|
|
|
1026
1129
|
priority = 85
|
|
1027
1130
|
applies_to_reasons = ["code_change", "security_change", "privacy_change", "public_api_change"]
|
|
1028
1131
|
|
|
1132
|
+
[routes."auth-permission-change".dependencies]
|
|
1133
|
+
unlocks_on = [
|
|
1134
|
+
{ signal = "allow_deny_approval", skill = "policy-decision-integrity-review" },
|
|
1135
|
+
]
|
|
1136
|
+
|
|
1029
1137
|
[routes."api-access-control-review"]
|
|
1030
1138
|
category = "security_privacy"
|
|
1031
1139
|
route_type = "adjunct"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.state-machine-pattern
|
|
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: state-machine-pattern
|
|
@@ -29,7 +29,7 @@ metadata:
|
|
|
29
29
|
<!-- mustflow-section: purpose -->
|
|
30
30
|
## Purpose
|
|
31
31
|
|
|
32
|
-
Keep lifecycle state changes in one explicit rule system.
|
|
32
|
+
Keep one entity's lifecycle state changes in one explicit rule system.
|
|
33
33
|
|
|
34
34
|
The state machine pattern applies when an entity moves through meaningful lifecycle states and the allowed actions, errors, follow-up work, or audit expectations depend on the current state. The core artifact is not a class hierarchy. The core artifact is the transition table: current state, event, guard, next state, and effects as data.
|
|
35
35
|
|
|
@@ -59,6 +59,7 @@ Use this skill to prevent scattered `if`, `switch`, direct assignment, silent no
|
|
|
59
59
|
- State does not affect allowed actions.
|
|
60
60
|
- The code is a pure calculation, formatter, mapper, parser, or local UI-only state update.
|
|
61
61
|
- A simple create, read, update, delete flow only distinguishes active and deleted and has no meaningful transition rules, recovery behavior, retention behavior, or audit need.
|
|
62
|
+
- The lifecycle coordinates multiple independently persisted entities, services, process-loss recovery, callbacks, or compensation; use `durable-workflow-orchestration`. Keep this skill for each entity's local transition rules.
|
|
62
63
|
|
|
63
64
|
Two states can still require this skill when the lifecycle is meaningful, such as active to suspended to deleted, deleted being irreversible, or suspension requiring audit and authorization.
|
|
64
65
|
|
|
@@ -165,7 +166,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
165
166
|
15. Split state machines when one state string explodes.
|
|
166
167
|
- If payment, fulfillment, refund, moderation, or account status change independently, use separate state machines.
|
|
167
168
|
- State-machine splits require explicit cross-machine invariants, such as fulfillment not shipping before payment succeeds.
|
|
168
|
-
|
|
169
|
+
- Put same-commit cross-machine coordination in a domain service, command handler, or pure policy. Route independently persisted multi-entity coordination, process-loss recovery, callbacks, and compensation to `durable-workflow-orchestration`.
|
|
169
170
|
16. Document only the useful lifecycle contract.
|
|
170
171
|
- For important domains, document state list, event list, transition table, terminal states, guards, effects, concurrency method, duplicate-event handling, and any cross-machine invariants.
|
|
171
172
|
- Diagrams are secondary. The code transition table is the source of truth.
|
|
@@ -183,6 +184,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
183
184
|
|
|
184
185
|
- State cannot be changed outside the transition function or dispatch path.
|
|
185
186
|
- Every allowed transition is visible in one transition table.
|
|
187
|
+
- The transition table governs one entity lifecycle; it does not claim durable orchestration across independently persisted entities or services.
|
|
186
188
|
- Impossible transitions return explicit errors instead of being ignored.
|
|
187
189
|
- Guards are pure and external facts are passed through context.
|
|
188
190
|
- External work is represented through pending, success, and failure events, with effects executed after persistence.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.structured-concurrency-supervision-review
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 1
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: structured-concurrency-supervision-review
|
|
9
|
+
description: Apply this skill when one runtime parent starts concurrent child tasks, workers, coroutines, threads, goroutines, or agent-runtime children and correctness depends on bounded fan-out, ownership, deadline and cancellation propagation, joining, sibling failure policy, cleanup, and rejection of late results.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.structured-concurrency-supervision-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
|
+
# Structured Concurrency Supervision Review
|
|
29
|
+
|
|
30
|
+
<!-- mustflow-section: purpose -->
|
|
31
|
+
## Purpose
|
|
32
|
+
|
|
33
|
+
Keep concurrent children inside an explicit lifetime tree. Make the parent own admission, inherited
|
|
34
|
+
authority, bounded fan-out, failure propagation, cancellation, join, result admission, and cleanup
|
|
35
|
+
so terminal parent state cannot leave invisible work mutating the world.
|
|
36
|
+
|
|
37
|
+
<!-- mustflow-section: use-when -->
|
|
38
|
+
## Use When
|
|
39
|
+
|
|
40
|
+
- One request, run, task, worker invocation, or runtime agent dynamically starts child tasks.
|
|
41
|
+
- Code uses task groups, nurseries, supervisors, join sets, futures, goroutines, coroutines, threads,
|
|
42
|
+
abort controllers, cancellation tokens, or parallel sub-operations.
|
|
43
|
+
- Parent completion can race with orphaned children, late results, sibling failure, cancellation,
|
|
44
|
+
cleanup, retry, or unbounded fan-out.
|
|
45
|
+
|
|
46
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
47
|
+
## Do Not Use When
|
|
48
|
+
|
|
49
|
+
- Several coding agents coordinate files, worktrees, commands, and merges; use
|
|
50
|
+
`multi-agent-work-coordination`.
|
|
51
|
+
- The main problem is a shared variable, lock, CAS, database row, or transaction invariant with no
|
|
52
|
+
parent-child task tree; use `race-condition-review` or `concurrency-invariant-review`.
|
|
53
|
+
- The main problem is durable broker redelivery or worker crash recovery; use
|
|
54
|
+
`queue-processing-integrity-review`.
|
|
55
|
+
- The flow must survive process loss and resume from persisted steps; use
|
|
56
|
+
`durable-workflow-orchestration`.
|
|
57
|
+
- An independent daemon or service has its own declared lifecycle. It is not a structured child just
|
|
58
|
+
because another process started it once.
|
|
59
|
+
|
|
60
|
+
<!-- mustflow-section: required-inputs -->
|
|
61
|
+
## Required Inputs
|
|
62
|
+
|
|
63
|
+
- Task-tree ledger: parent, children, spawn site, join owner, and terminal owner.
|
|
64
|
+
- Inherited-boundary ledger: deadline, cancellation, tenant, capability, budget, trace, and source
|
|
65
|
+
version passed to each child.
|
|
66
|
+
- Fan-out ledger: admission rule, concurrency limit, pending limit, queueing, and backpressure.
|
|
67
|
+
- Completion-policy ledger: fail-fast, collect-all, quorum, partial success, ordering, and error shape.
|
|
68
|
+
- Cancellation, cleanup, retry, and non-cancellable finalization ledger.
|
|
69
|
+
- Result-admission ledger: generation or run version, stale-result rule, and aggregation owner.
|
|
70
|
+
|
|
71
|
+
<!-- mustflow-section: preconditions -->
|
|
72
|
+
## Preconditions
|
|
73
|
+
|
|
74
|
+
- Read the nearest instructions, command contract, spawn and join sites, task runtime, resource
|
|
75
|
+
ownership, retry wrappers, cancellation paths, and current concurrency tests.
|
|
76
|
+
- Name the live parent whose lifetime bounds the work. If no parent exists, report detached work
|
|
77
|
+
explicitly instead of calling it structured concurrency.
|
|
78
|
+
- Treat framework cancellation and task-group semantics as version-sensitive evidence.
|
|
79
|
+
|
|
80
|
+
<!-- mustflow-section: allowed-edits -->
|
|
81
|
+
## Allowed Edits
|
|
82
|
+
|
|
83
|
+
- Add or tighten task groups, supervisors, bounded queues, semaphores, cancellation propagation,
|
|
84
|
+
deadline inheritance, join and aggregation logic, stale-result guards, cleanup, focused tests,
|
|
85
|
+
metrics, docs, and directly synchronized templates.
|
|
86
|
+
- Move intentionally durable detached work behind a queue or workflow handoff with a named external
|
|
87
|
+
owner.
|
|
88
|
+
- Do not hide orphaning with fire-and-forget wrappers, background promises, swallowed join errors,
|
|
89
|
+
unbounded parallel maps, or process-exit cleanup assumptions.
|
|
90
|
+
|
|
91
|
+
<!-- mustflow-section: procedure -->
|
|
92
|
+
## Procedure
|
|
93
|
+
|
|
94
|
+
1. Place every spawn site in a task tree and name the parent, child purpose, join owner, and terminal
|
|
95
|
+
owner. Classify any detached task as an explicit external handoff or a defect.
|
|
96
|
+
2. Propagate the parent deadline and cancellation signal to every child. Clamp child deadlines so a
|
|
97
|
+
child cannot outlive the parent unless ownership is durably transferred.
|
|
98
|
+
3. Propagate tenant, capability, budget, trace, and source-version context without widening it. A
|
|
99
|
+
child may receive less authority, never more by accident.
|
|
100
|
+
4. Bound active fan-out and queued work separately. Define rejection, backpressure, batching, or
|
|
101
|
+
degradation when either limit is reached.
|
|
102
|
+
5. Choose one completion policy: fail-fast, collect-all, quorum, ordered aggregation, or explicit
|
|
103
|
+
partial success. Define which sibling failures cancel other work and which results remain usable.
|
|
104
|
+
6. Join or durably hand off every child before the parent reports terminal success, failure, or
|
|
105
|
+
cancellation. A returned promise that only schedules work is not completion evidence.
|
|
106
|
+
7. Make cancellation cooperative and cleanup-safe. Bound grace periods and keep non-cancellable
|
|
107
|
+
finalization limited to restoring local invariants or releasing owned resources.
|
|
108
|
+
8. Prevent retry multiplication between child code, supervisor restart, parent retry, and outer
|
|
109
|
+
request retry. Give the whole tree one bounded attempt and elapsed-time story.
|
|
110
|
+
9. Tag child results with parent run or generation identity. Reject completions from a cancelled,
|
|
111
|
+
superseded, or closed parent before aggregation or side effects.
|
|
112
|
+
10. Release permits, buffers, files, connections, locks, temporary state, and child-owned processes
|
|
113
|
+
on success, error, cancellation, and partial spawn failure.
|
|
114
|
+
11. Test parent cancellation, child hang, sibling failure, spawn storm, partial spawn, late result,
|
|
115
|
+
cleanup failure, retry amplification, and terminal reporting before all joins complete.
|
|
116
|
+
|
|
117
|
+
<!-- mustflow-section: postconditions -->
|
|
118
|
+
## Postconditions
|
|
119
|
+
|
|
120
|
+
- Every child has one live parent or a named durable external owner.
|
|
121
|
+
- Parent terminal reporting cannot leave an unauthorized child effect running.
|
|
122
|
+
- Active work, queued work, retries, cancellation waits, joins, and cleanup are bounded.
|
|
123
|
+
- Late or superseded results cannot enter a new parent generation or mutate closed state.
|
|
124
|
+
|
|
125
|
+
<!-- mustflow-section: verification -->
|
|
126
|
+
## Verification
|
|
127
|
+
|
|
128
|
+
- Use configured `changes_status` and `changes_diff_summary` for scope evidence.
|
|
129
|
+
- Use `lint`, `build`, and `test_related` for runtime changes and controlled interleavings; use `test`
|
|
130
|
+
or `test_audit` for shared supervisors or broad test claims.
|
|
131
|
+
- Use `docs_validate_fast`, `test_release`, and `mustflow_check` for docs, package, template, or
|
|
132
|
+
Mustflow changes.
|
|
133
|
+
- Report unavailable scheduler fuzzing, runtime tracing, load, or live cancellation evidence rather
|
|
134
|
+
than inventing commands.
|
|
135
|
+
|
|
136
|
+
<!-- mustflow-section: failure-handling -->
|
|
137
|
+
## Failure Handling
|
|
138
|
+
|
|
139
|
+
- If no parent or join owner can be named, stop the structured-concurrency claim and report detached
|
|
140
|
+
lifetime risk.
|
|
141
|
+
- If cancellation cannot reach a child, transfer ownership durably or keep the parent non-terminal
|
|
142
|
+
until the child stops; do not pretend cancellation succeeded.
|
|
143
|
+
- If cleanup or join can wait forever, add a bounded escalation or report the unresolved resource.
|
|
144
|
+
- If verification fails, preserve the task-tree interleaving and use `failure-triage` before changing
|
|
145
|
+
unrelated concurrency code.
|
|
146
|
+
|
|
147
|
+
<!-- mustflow-section: output-format -->
|
|
148
|
+
## Output Format
|
|
149
|
+
|
|
150
|
+
- Parent-child task tree and ownership decisions
|
|
151
|
+
- Deadline, cancellation, capability, budget, trace, and generation inheritance
|
|
152
|
+
- Fan-out, completion, join, retry, cleanup, and late-result policies
|
|
153
|
+
- Controlled interleaving and failure evidence
|
|
154
|
+
- Files changed and compatibility impact
|
|
155
|
+
- Command intents run, skipped checks, and remaining supervision risk
|
package/templates/default/locales/en/.mustflow/skills/transaction-boundary-integrity-review/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.transaction-boundary-integrity-review
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 2
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: transaction-boundary-integrity-review
|
|
@@ -50,6 +50,8 @@ The review question is not "is there a transaction?" It is "does the read -> dec
|
|
|
50
50
|
- The task is primarily retries, queue reliability, provider deadlines, health checks, outbox processing, or operational failure handling; use `backend-reliability-change`.
|
|
51
51
|
- The task is payment, credit, wallet, or ledger specific and the transaction issue is only one part of money-event integrity; use `payment-integrity-review` or `credit-ledger-integrity-review` first.
|
|
52
52
|
- The transaction is a tiny single-row write with no prior decision, no concurrency-sensitive invariant, no external side effect, no retry, and no framework propagation risk.
|
|
53
|
+
- The main problem is convergence after a database, broker, provider, or second database commits independently; use `dual-write-consistency`. This skill owns each local transaction boundary only.
|
|
54
|
+
- The main problem is compensation order or resumable recovery across those commits; use `durable-workflow-orchestration`.
|
|
53
55
|
|
|
54
56
|
<!-- mustflow-section: required-inputs -->
|
|
55
57
|
## Required Inputs
|
|
@@ -127,13 +129,14 @@ The review question is not "is there a transaction?" It is "does the read -> dec
|
|
|
127
129
|
- Email, cache eviction, queue publish, HTTP API calls, payment provider calls, object storage writes, file uploads, and search indexing do not roll back with the database.
|
|
128
130
|
- Prefer after-commit hooks for non-critical callbacks and outbox records for durable side effects that must eventually happen.
|
|
129
131
|
- Remember that an after-commit callback failure does not roll back an already committed database transaction.
|
|
132
|
+
- When the database and external system can commit independently, route convergence to `dual-write-consistency`; keep this review limited to the local transaction's reads, decisions, writes, commit, and after-commit handoff.
|
|
130
133
|
11. Review transaction width and resource pressure.
|
|
131
134
|
- Do not hold locks or connections across HTTP API calls, file uploads, sleeps, large loops, slow calculations, logging sinks, JSON serialization, queue waits, or user-controlled waits.
|
|
132
135
|
- Timeouts do not undo already-sent external effects.
|
|
133
136
|
- `REQUIRES_NEW`, nested service calls, and transaction-per-item loops can exhaust connection pools.
|
|
134
137
|
12. Review multi-database and transaction-manager scope.
|
|
135
138
|
- A transaction annotation or helper may cover only one data source, ORM session, connection, or transaction manager.
|
|
136
|
-
- Cross-database
|
|
139
|
+
- Cross-database, broker, and provider convergence belongs to `dual-write-consistency`; ordered compensation and resumable recovery belong to `durable-workflow-orchestration`. Do not pretend one local transaction owns either protocol.
|
|
137
140
|
13. Review advisory and distributed locks.
|
|
138
141
|
- PostgreSQL session-level advisory locks can survive rollback and require release or session end.
|
|
139
142
|
- Transaction-level advisory locks release at transaction end and are usually safer for short critical sections.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id = "default"
|
|
2
2
|
name = "default"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.116.0"
|
|
4
4
|
description = "Minimal workflow for LLM agents to read, edit, and verify their work in a repository."
|
|
5
5
|
common_root = "common"
|
|
6
6
|
locales_root = "locales"
|
|
@@ -36,6 +36,11 @@ creates = [
|
|
|
36
36
|
".mustflow/skills/business-rule-leakage-review/SKILL.md",
|
|
37
37
|
".mustflow/skills/payment-integrity-review/SKILL.md",
|
|
38
38
|
".mustflow/skills/credit-ledger-integrity-review/SKILL.md",
|
|
39
|
+
".mustflow/skills/dual-write-consistency/SKILL.md",
|
|
40
|
+
".mustflow/skills/durable-workflow-orchestration/SKILL.md",
|
|
41
|
+
".mustflow/skills/execution-ledger-integrity-review/SKILL.md",
|
|
42
|
+
".mustflow/skills/policy-decision-integrity-review/SKILL.md",
|
|
43
|
+
".mustflow/skills/structured-concurrency-supervision-review/SKILL.md",
|
|
39
44
|
".mustflow/skills/notification-delivery-integrity-review/SKILL.md",
|
|
40
45
|
".mustflow/skills/admin-control-plane-safety-review/SKILL.md",
|
|
41
46
|
".mustflow/skills/small-service-platform-architecture-review/SKILL.md",
|
|
@@ -72,6 +77,7 @@ creates = [
|
|
|
72
77
|
".mustflow/skills/website-task-friction-review/SKILL.md",
|
|
73
78
|
".mustflow/skills/cache-integrity-review/SKILL.md",
|
|
74
79
|
".mustflow/skills/quadratic-scan-review/SKILL.md",
|
|
80
|
+
".mustflow/skills/parser-engineering-review/SKILL.md",
|
|
75
81
|
".mustflow/skills/type-state-modeling-review/SKILL.md",
|
|
76
82
|
".mustflow/skills/race-condition-review/SKILL.md",
|
|
77
83
|
".mustflow/skills/async-timing-boundary-review/SKILL.md",
|
|
@@ -283,6 +289,11 @@ minimal = [
|
|
|
283
289
|
"business-rule-leakage-review",
|
|
284
290
|
"payment-integrity-review",
|
|
285
291
|
"credit-ledger-integrity-review",
|
|
292
|
+
"dual-write-consistency",
|
|
293
|
+
"durable-workflow-orchestration",
|
|
294
|
+
"execution-ledger-integrity-review",
|
|
295
|
+
"policy-decision-integrity-review",
|
|
296
|
+
"structured-concurrency-supervision-review",
|
|
286
297
|
"notification-delivery-integrity-review",
|
|
287
298
|
"admin-control-plane-safety-review",
|
|
288
299
|
"small-service-platform-architecture-review",
|
|
@@ -319,6 +330,7 @@ minimal = [
|
|
|
319
330
|
"website-task-friction-review",
|
|
320
331
|
"cache-integrity-review",
|
|
321
332
|
"quadratic-scan-review",
|
|
333
|
+
"parser-engineering-review",
|
|
322
334
|
"type-state-modeling-review",
|
|
323
335
|
"race-condition-review",
|
|
324
336
|
"async-timing-boundary-review",
|
|
@@ -421,6 +433,7 @@ minimal = [
|
|
|
421
433
|
"file-path-cross-platform-change",
|
|
422
434
|
"idea-triage",
|
|
423
435
|
"instruction-conflict-scope-check",
|
|
436
|
+
"migration-safety-check",
|
|
424
437
|
"pattern-scout",
|
|
425
438
|
"provenance-license-gate",
|
|
426
439
|
"proactive-risk-surfacing",
|
|
@@ -463,6 +476,11 @@ patterns = [
|
|
|
463
476
|
"business-rule-leakage-review",
|
|
464
477
|
"payment-integrity-review",
|
|
465
478
|
"credit-ledger-integrity-review",
|
|
479
|
+
"dual-write-consistency",
|
|
480
|
+
"durable-workflow-orchestration",
|
|
481
|
+
"execution-ledger-integrity-review",
|
|
482
|
+
"policy-decision-integrity-review",
|
|
483
|
+
"structured-concurrency-supervision-review",
|
|
466
484
|
"notification-delivery-integrity-review",
|
|
467
485
|
"admin-control-plane-safety-review",
|
|
468
486
|
"small-service-platform-architecture-review",
|
|
@@ -499,6 +517,7 @@ patterns = [
|
|
|
499
517
|
"website-task-friction-review",
|
|
500
518
|
"cache-integrity-review",
|
|
501
519
|
"quadratic-scan-review",
|
|
520
|
+
"parser-engineering-review",
|
|
502
521
|
"type-state-modeling-review",
|
|
503
522
|
"race-condition-review",
|
|
504
523
|
"async-timing-boundary-review",
|
|
@@ -605,6 +624,7 @@ patterns = [
|
|
|
605
624
|
"file-path-cross-platform-change",
|
|
606
625
|
"idea-triage",
|
|
607
626
|
"instruction-conflict-scope-check",
|
|
627
|
+
"migration-safety-check",
|
|
608
628
|
"null-object-pattern",
|
|
609
629
|
"pattern-scout",
|
|
610
630
|
"pure-core-imperative-shell",
|
|
@@ -654,6 +674,11 @@ oss = [
|
|
|
654
674
|
"business-rule-leakage-review",
|
|
655
675
|
"payment-integrity-review",
|
|
656
676
|
"credit-ledger-integrity-review",
|
|
677
|
+
"dual-write-consistency",
|
|
678
|
+
"durable-workflow-orchestration",
|
|
679
|
+
"execution-ledger-integrity-review",
|
|
680
|
+
"policy-decision-integrity-review",
|
|
681
|
+
"structured-concurrency-supervision-review",
|
|
657
682
|
"notification-delivery-integrity-review",
|
|
658
683
|
"admin-control-plane-safety-review",
|
|
659
684
|
"small-service-platform-architecture-review",
|
|
@@ -690,6 +715,7 @@ oss = [
|
|
|
690
715
|
"website-task-friction-review",
|
|
691
716
|
"cache-integrity-review",
|
|
692
717
|
"quadratic-scan-review",
|
|
718
|
+
"parser-engineering-review",
|
|
693
719
|
"type-state-modeling-review",
|
|
694
720
|
"race-condition-review",
|
|
695
721
|
"async-timing-boundary-review",
|
|
@@ -864,6 +890,11 @@ team = [
|
|
|
864
890
|
"business-rule-leakage-review",
|
|
865
891
|
"payment-integrity-review",
|
|
866
892
|
"credit-ledger-integrity-review",
|
|
893
|
+
"dual-write-consistency",
|
|
894
|
+
"durable-workflow-orchestration",
|
|
895
|
+
"execution-ledger-integrity-review",
|
|
896
|
+
"policy-decision-integrity-review",
|
|
897
|
+
"structured-concurrency-supervision-review",
|
|
867
898
|
"notification-delivery-integrity-review",
|
|
868
899
|
"admin-control-plane-safety-review",
|
|
869
900
|
"small-service-platform-architecture-review",
|
|
@@ -900,6 +931,7 @@ team = [
|
|
|
900
931
|
"website-task-friction-review",
|
|
901
932
|
"cache-integrity-review",
|
|
902
933
|
"quadratic-scan-review",
|
|
934
|
+
"parser-engineering-review",
|
|
903
935
|
"type-state-modeling-review",
|
|
904
936
|
"race-condition-review",
|
|
905
937
|
"async-timing-boundary-review",
|
|
@@ -1009,6 +1041,7 @@ team = [
|
|
|
1009
1041
|
"idea-triage",
|
|
1010
1042
|
"complex-decision-analysis",
|
|
1011
1043
|
"instruction-conflict-scope-check",
|
|
1044
|
+
"migration-safety-check",
|
|
1012
1045
|
"multi-agent-work-coordination",
|
|
1013
1046
|
"null-object-pattern",
|
|
1014
1047
|
"pattern-scout",
|
|
@@ -1058,6 +1091,11 @@ product = [
|
|
|
1058
1091
|
"business-rule-leakage-review",
|
|
1059
1092
|
"payment-integrity-review",
|
|
1060
1093
|
"credit-ledger-integrity-review",
|
|
1094
|
+
"dual-write-consistency",
|
|
1095
|
+
"durable-workflow-orchestration",
|
|
1096
|
+
"execution-ledger-integrity-review",
|
|
1097
|
+
"policy-decision-integrity-review",
|
|
1098
|
+
"structured-concurrency-supervision-review",
|
|
1061
1099
|
"notification-delivery-integrity-review",
|
|
1062
1100
|
"admin-control-plane-safety-review",
|
|
1063
1101
|
"small-service-platform-architecture-review",
|
|
@@ -1094,6 +1132,7 @@ product = [
|
|
|
1094
1132
|
"website-task-friction-review",
|
|
1095
1133
|
"cache-integrity-review",
|
|
1096
1134
|
"quadratic-scan-review",
|
|
1135
|
+
"parser-engineering-review",
|
|
1097
1136
|
"type-state-modeling-review",
|
|
1098
1137
|
"race-condition-review",
|
|
1099
1138
|
"async-timing-boundary-review",
|
|
@@ -1203,6 +1242,7 @@ product = [
|
|
|
1203
1242
|
"idea-triage",
|
|
1204
1243
|
"complex-decision-analysis",
|
|
1205
1244
|
"instruction-conflict-scope-check",
|
|
1245
|
+
"migration-safety-check",
|
|
1206
1246
|
"llm-service-ux-review",
|
|
1207
1247
|
"null-object-pattern",
|
|
1208
1248
|
"pattern-scout",
|
|
@@ -1258,6 +1298,11 @@ library = [
|
|
|
1258
1298
|
"business-rule-leakage-review",
|
|
1259
1299
|
"payment-integrity-review",
|
|
1260
1300
|
"credit-ledger-integrity-review",
|
|
1301
|
+
"dual-write-consistency",
|
|
1302
|
+
"durable-workflow-orchestration",
|
|
1303
|
+
"execution-ledger-integrity-review",
|
|
1304
|
+
"policy-decision-integrity-review",
|
|
1305
|
+
"structured-concurrency-supervision-review",
|
|
1261
1306
|
"notification-delivery-integrity-review",
|
|
1262
1307
|
"admin-control-plane-safety-review",
|
|
1263
1308
|
"small-service-platform-architecture-review",
|
|
@@ -1294,6 +1339,7 @@ library = [
|
|
|
1294
1339
|
"website-task-friction-review",
|
|
1295
1340
|
"cache-integrity-review",
|
|
1296
1341
|
"quadratic-scan-review",
|
|
1342
|
+
"parser-engineering-review",
|
|
1297
1343
|
"type-state-modeling-review",
|
|
1298
1344
|
"race-condition-review",
|
|
1299
1345
|
"async-timing-boundary-review",
|