@exaudeus/workrail 3.17.0 → 3.18.1
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 +13 -0
- package/dist/application/services/validation-engine.js +7 -11
- package/dist/application/services/workflow-compiler.js +9 -11
- package/dist/console/assets/index-DMaX2-CW.js +28 -0
- package/dist/console/assets/index-ibLhWBmX.css +1 -0
- package/dist/console/index.html +2 -2
- package/dist/infrastructure/storage/workflow-resolution.js +6 -6
- package/dist/manifest.json +55 -55
- package/dist/mcp/handlers/v2-advance-core/assessment-consequences.d.ts +1 -1
- package/dist/mcp/handlers/v2-advance-core/assessment-consequences.js +14 -11
- package/dist/mcp/handlers/v2-advance-core/assessment-validation.d.ts +5 -3
- package/dist/mcp/handlers/v2-advance-core/assessment-validation.js +109 -87
- package/dist/mcp/handlers/v2-advance-core/input-validation.d.ts +0 -4
- package/dist/mcp/handlers/v2-advance-core/input-validation.js +1 -3
- package/dist/mcp/handlers/v2-advance-core/outcome-blocked.js +8 -3
- package/dist/mcp/handlers/v2-advance-core/outcome-success.js +8 -3
- package/dist/mcp/handlers/v2-execution/replay.js +4 -4
- package/dist/mcp/output-schemas.d.ts +12 -12
- package/dist/mcp/output-schemas.js +10 -11
- package/dist/mcp-server.js +0 -0
- package/dist/types/workflow-source.js +1 -1
- package/dist/v2/durable-core/domain/observation-builder.d.ts +0 -3
- package/dist/v2/durable-core/domain/observation-builder.js +1 -3
- package/dist/v2/durable-core/domain/prompt-renderer.js +9 -1
- package/dist/v2/infra/local/session-summary-provider/index.js +1 -2
- package/dist/v2/projections/resume-ranking.d.ts +0 -1
- package/dist/v2/usecases/console-routes.js +65 -17
- package/dist/v2/usecases/console-service.js +4 -14
- package/dist/v2/usecases/console-types.d.ts +15 -1
- package/dist/v2/usecases/worktree-service.d.ts +1 -0
- package/dist/v2/usecases/worktree-service.js +143 -15
- package/package.json +3 -2
- package/spec/authoring-spec.json +3 -3
- package/spec/workflow.schema.json +1 -2
- package/workflows/coding-task-workflow-agentic.lean.v2.json +132 -1
- package/workflows/mr-review-workflow.agentic.v2.json +24 -10
- package/workflows/workflow-for-workflows.json +558 -448
- package/dist/console/assets/index-BZNM03t1.css +0 -1
- package/dist/console/assets/index-BwJelCXK.js +0 -28
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "coding-task-workflow-agentic",
|
|
3
3
|
"name": "Agentic Task Dev Workflow (Lean • Notes-First • WorkRail Executor)",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"description": "Use this to implement a software feature or task. Follows a plan-then-execute approach with architecture decisions, invariant tracking, and final verification.",
|
|
6
6
|
"about": "## Agentic Coding Task Workflow\n\nThis workflow structures the full lifecycle of a software implementation task: from understanding and classifying the work, through architecture decisions and incremental implementation, to final verification and handoff.\n\n### What it does\n\nThe workflow guides an AI agent through a disciplined plan-then-execute process. It begins by analyzing the task to determine complexity, risk, and the right level of rigor (QUICK, STANDARD, or THOROUGH). For non-trivial tasks, it then gathers codebase context, surfaces invariants and non-goals, generates competing design candidates, and selects an approach before writing a single line of code. Implementation proceeds slice by slice, with built-in verification gates after each slice. A final integration verification pass confirms acceptance criteria are met before handoff.\n\n### When to use it\n\nUse this workflow whenever you are implementing a feature, fixing a non-trivial bug, or making an architectural change in a real codebase. It is especially valuable when:\n- The task touches multiple files or systems\n- There is meaningful risk of regressions or invariant violations\n- You want the agent to surface trade-offs and commit to a reasoned design decision rather than guessing\n- You need a resumable, auditable record of what was decided and why\n\nFor quick one-liner fixes or very small changes, the workflow includes a fast path that skips heavyweight planning.\n\n### What it produces\n\n- An `implementation_plan.md` artifact covering the selected approach, vertical slices, test design, and philosophy alignment\n- A `spec.md` for large or high-risk tasks, capturing observable behavior and acceptance criteria\n- Step-level notes in WorkRail that serve as a durable execution log\n- A PR-ready handoff summary with acceptance criteria status, invariant proofs, and follow-up tickets\n\n### How to get good results\n\n- Provide a clear task description and at least partial acceptance criteria before starting\n- If you have coding philosophy or project conventions configured in session rules or Memory MCP, the workflow will apply them automatically as a design lens\n- Let the workflow classify complexity and rigor itself; override only if the classification is clearly wrong\n- For large or high-risk tasks, review the architecture decision step before implementation begins",
|
|
7
7
|
"examples": [
|
|
@@ -14,6 +14,96 @@
|
|
|
14
14
|
"recommendedAutonomy": "guided",
|
|
15
15
|
"recommendedRiskPolicy": "conservative"
|
|
16
16
|
},
|
|
17
|
+
"assessments": [
|
|
18
|
+
{
|
|
19
|
+
"id": "design-soundness-gate",
|
|
20
|
+
"purpose": "The selected design approach is committed with rationale. No unresolved ambiguity remains about what to build.",
|
|
21
|
+
"dimensions": [
|
|
22
|
+
{
|
|
23
|
+
"id": "design_soundness",
|
|
24
|
+
"purpose": "Design decision is made, tradeoffs are recorded, and there is no remaining ambiguity about the chosen approach.",
|
|
25
|
+
"levels": ["low", "high"]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "design-gaps-gate",
|
|
31
|
+
"purpose": "A deliberate scan for unconsidered alternatives, unhandled edge cases, or untracked risks has been completed.",
|
|
32
|
+
"dimensions": [
|
|
33
|
+
{
|
|
34
|
+
"id": "design_gaps",
|
|
35
|
+
"purpose": "Active scan completed: either no material gaps were found, or any found were addressed or explicitly filed.",
|
|
36
|
+
"levels": ["low", "high"]
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "plan-completeness-gate",
|
|
42
|
+
"purpose": "Every slice has a defined scope and verifiable acceptance criterion. No slice is vague or open-ended.",
|
|
43
|
+
"dimensions": [
|
|
44
|
+
{
|
|
45
|
+
"id": "plan_completeness",
|
|
46
|
+
"purpose": "Slices have clear boundaries and acceptance criteria. The agent knows what done looks like for each.",
|
|
47
|
+
"levels": ["low", "high"]
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "invariant-clarity-gate",
|
|
53
|
+
"purpose": "Invariants and non-goals are explicit enough to verify against during and after implementation.",
|
|
54
|
+
"dimensions": [
|
|
55
|
+
{
|
|
56
|
+
"id": "invariant_clarity",
|
|
57
|
+
"purpose": "Named invariants are checkable in the implementation. Non-goals are stated and will prevent scope creep.",
|
|
58
|
+
"levels": ["low", "high"]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "plan-gaps-gate",
|
|
64
|
+
"purpose": "A deliberate scan for missing slices, untracked risks, or acceptance criteria mismatches has been completed.",
|
|
65
|
+
"dimensions": [
|
|
66
|
+
{
|
|
67
|
+
"id": "plan_gaps",
|
|
68
|
+
"purpose": "Active scan completed: either no material gaps were found, or any found were addressed or explicitly filed.",
|
|
69
|
+
"levels": ["low", "high"]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "build-correctness-gate",
|
|
75
|
+
"purpose": "The implementation compiles and passes all relevant tests.",
|
|
76
|
+
"dimensions": [
|
|
77
|
+
{
|
|
78
|
+
"id": "build_correctness",
|
|
79
|
+
"purpose": "Build succeeds and tests pass. No compilation errors or failing assertions.",
|
|
80
|
+
"levels": ["low", "high"]
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "invariant-preservation-gate",
|
|
86
|
+
"purpose": "Invariants identified during planning still hold in the implemented code.",
|
|
87
|
+
"dimensions": [
|
|
88
|
+
{
|
|
89
|
+
"id": "invariant_preservation",
|
|
90
|
+
"purpose": "Each named invariant from the plan has been verified in the implementation.",
|
|
91
|
+
"levels": ["low", "high"]
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "implementation-gaps-gate",
|
|
97
|
+
"purpose": "A deliberate scan for gaps, issues, or improvements surfaced during implementation has been completed.",
|
|
98
|
+
"dimensions": [
|
|
99
|
+
{
|
|
100
|
+
"id": "implementation_gaps",
|
|
101
|
+
"purpose": "Active scan completed: gaps found are either fixed inline, filed as follow-up tickets, or explicitly deferred with rationale.",
|
|
102
|
+
"levels": ["low", "high"]
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
],
|
|
17
107
|
"preconditions": [
|
|
18
108
|
"User provides a task description or equivalent objective.",
|
|
19
109
|
"Agent has codebase read access and can run the tools needed for analysis and validation.",
|
|
@@ -164,6 +254,19 @@
|
|
|
164
254
|
"text": "Also run `routine-execution-simulation` on the three most likely failure paths before you decide."
|
|
165
255
|
}
|
|
166
256
|
],
|
|
257
|
+
"assessmentRefs": [
|
|
258
|
+
"design-soundness-gate",
|
|
259
|
+
"design-gaps-gate"
|
|
260
|
+
],
|
|
261
|
+
"assessmentConsequences": [
|
|
262
|
+
{
|
|
263
|
+
"when": { "anyEqualsLevel": "low" },
|
|
264
|
+
"effect": {
|
|
265
|
+
"kind": "require_followup",
|
|
266
|
+
"guidance": "Address whichever gate scored low: design_soundness low -- the design decision is still ambiguous; commit to an approach and record the rationale before proceeding. design_gaps low -- the gap scan was not completed or found unaddressed gaps; either resolve them or explicitly file them before proceeding."
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
],
|
|
167
270
|
"requireConfirmation": {
|
|
168
271
|
"or": [
|
|
169
272
|
{
|
|
@@ -251,6 +354,20 @@
|
|
|
251
354
|
"not_equals": "Small"
|
|
252
355
|
},
|
|
253
356
|
"prompt": "Turn the decision into a plan someone else could execute without guessing.\n\nUpdate `implementation_plan.md`.\n\nIt should cover:\n1. Problem statement\n2. Acceptance criteria (mirror `spec.md` if it exists; `spec.md` owns observable behavior)\n3. Non-goals\n4. Philosophy-driven constraints\n5. Invariants\n6. Selected approach + rationale + runner-up\n7. Vertical slices\n8. Work packages only if they actually help\n9. Test design\n10. Risk register\n11. PR packaging strategy\n12. Philosophy alignment per slice:\n - [principle] -> [satisfied / tension / violated + 1-line why]\n\nCapture:\n- `implementationPlan`\n- `slices`\n- `testDesign`\n- `estimatedPRCount`\n- `followUpTickets` (initialize if needed)\n- `unresolvedUnknownCount` — count of open issues that would materially affect implementation quality\n- `planConfidenceBand` — Low / Medium / High\n\nThe plan is the deliverable for this step. Do not implement anything -- not a \"quick win\", not a file read that bleeds into edits, nothing. Execution begins in Phase 6, one slice at a time. If you find yourself writing code or editing source files right now, stop immediately.",
|
|
357
|
+
"assessmentRefs": [
|
|
358
|
+
"plan-completeness-gate",
|
|
359
|
+
"invariant-clarity-gate",
|
|
360
|
+
"plan-gaps-gate"
|
|
361
|
+
],
|
|
362
|
+
"assessmentConsequences": [
|
|
363
|
+
{
|
|
364
|
+
"when": { "anyEqualsLevel": "low" },
|
|
365
|
+
"effect": {
|
|
366
|
+
"kind": "require_followup",
|
|
367
|
+
"guidance": "Address whichever gate scored low: plan_completeness low -- one or more slices lack clear boundaries or verifiable acceptance criteria; sharpen them before implementation begins. invariant_clarity low -- invariants or non-goals are too vague to verify against; make them concrete. plan_gaps low -- the gap scan was not completed or found unaddressed gaps; resolve or file them before proceeding."
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
],
|
|
254
371
|
"requireConfirmation": false
|
|
255
372
|
},
|
|
256
373
|
{
|
|
@@ -470,6 +587,20 @@
|
|
|
470
587
|
"id": "phase-7b-fix-and-summarize",
|
|
471
588
|
"title": "Synthesize Findings, Fix, and Re-Verify",
|
|
472
589
|
"prompt": "Read `final-verification-findings.md` and decide what actually needs fixing.\n\nDon't rubber-stamp it. The verifier is evidence, not the decision.\n\nIf `spec.md` exists, use it as the verification anchor and make sure every acceptance criterion is actually met.\n\nThis loop is verify, fix, then re-verify. If you fix anything here, the next pass exists to prove the fixes worked.\n\nSynthesize the verification output explicitly:\n- what the verifier found\n- what you agree with\n- what you reject and why\n- what changed because of the fixes\n\nFor any finding that changes final acceptance, classify it as:\n- `Confirmed`: you checked it against primary evidence (code, spec, tests/build, or direct workflow context)\n- `Plausible`: interesting, but not verified enough to accept or block final signoff yet\n- `Rejected`: contradicted by fuller context or direct evidence\n\nSubagent agreement alone is not enough for `Confirmed`.\n\nFix what has to be fixed now, rerun the affected verification, and update:\n- `implementation_plan.md` if the execution shape changed\n- `spec.md` if acceptance criteria, observable behavior, or external contracts changed\n\nCapture:\n- `integrationFindings`\n- `integrationPassed`\n- `regressionDetected`",
|
|
590
|
+
"assessmentRefs": [
|
|
591
|
+
"build-correctness-gate",
|
|
592
|
+
"invariant-preservation-gate",
|
|
593
|
+
"implementation-gaps-gate"
|
|
594
|
+
],
|
|
595
|
+
"assessmentConsequences": [
|
|
596
|
+
{
|
|
597
|
+
"when": { "anyEqualsLevel": "low" },
|
|
598
|
+
"effect": {
|
|
599
|
+
"kind": "require_followup",
|
|
600
|
+
"guidance": "Address whichever gate scored low: build_correctness low -- the build or tests are still failing; fix them before this step can complete. invariant_preservation low -- one or more invariants from the plan are violated; fix the implementation. implementation_gaps low -- the gap scan was not completed or found unaddressed gaps; fix them inline, file as follow-up tickets, or explicitly defer with rationale."
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
],
|
|
473
604
|
"requireConfirmation": false
|
|
474
605
|
},
|
|
475
606
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "mr-review-workflow-agentic",
|
|
3
3
|
"name": "MR Review Workflow (Lean v2 \u2022 Notes-First \u2022 Evidence-Driven Reviewer Families)",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.5.0",
|
|
5
5
|
"description": "Lean v2 MR review workflow. Merges intake, missing-input gating, context gathering, and re-triage into one structured front phase, then drives review through a shared fact packet, parallel reviewer families, contradiction-driven synthesis, and evidence-first final validation.",
|
|
6
6
|
"about": "## MR Review Workflow\n\nThis workflow conducts a structured, evidence-driven code review of a merge request or pull request. It is designed for cases where you want a thorough, audit-quality review rather than a quick glance -- particularly when the change touches critical surfaces, spans many files, or carries real production risk.\n\n**What it does:**\nThe workflow locates and bounds the review target, enriches it with PR context and ticket intent, classifies the change by risk and shape, then runs parallel \"reviewer family\" agents (covering correctness, architecture, runtime risk, tests/docs, and more) from a shared neutral fact packet. It reconciles contradictions between reviewer families, stress-tests the recommendation with adversarial validators, and produces a final handoff with severity-classified findings and ready-to-post MR comments.\n\n**When to use it:**\n- Before merging a PR that touches auth, data models, APIs, or critical paths\n- When you want independent perspectives on a change without the noise of an unstructured review\n- When the change is large or the reviewer is unfamiliar with the surrounding code\n- When you need a reproducible audit trail for compliance or team review processes\n\n**What it produces:**\nA final review recommendation (approve / request changes / needs discussion) with a confidence band, severity-graded findings (Critical / Major / Minor / Nit), ready-to-post MR comments, a coverage ledger showing which review domains were checked, and an honest disclosure of any context that could not be recovered.\n\n**How to get good results:**\nProvide the PR URL, branch name, or diff. The workflow can recover most context on its own -- ticket links, repo patterns, policy docs -- but if the change has non-obvious intent, a one-sentence description of the goal helps calibrate review sensitivity. The workflow will not post comments or approve/reject without explicit instruction.",
|
|
7
7
|
"examples": [
|
|
@@ -19,22 +19,34 @@
|
|
|
19
19
|
],
|
|
20
20
|
"assessments": [
|
|
21
21
|
{
|
|
22
|
-
"id": "
|
|
23
|
-
"purpose": "
|
|
22
|
+
"id": "evidence-quality-gate",
|
|
23
|
+
"purpose": "Key findings are backed by specific code references, line numbers, or concrete observations -- not intuition or pattern-matching alone.",
|
|
24
24
|
"dimensions": [
|
|
25
25
|
{
|
|
26
26
|
"id": "evidence_quality",
|
|
27
|
-
"purpose": "
|
|
27
|
+
"purpose": "Each finding cites a specific file, function, or line. No finding relies on intuition or pattern-matching without concrete grounding.",
|
|
28
28
|
"levels": ["low", "high"]
|
|
29
|
-
}
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "coverage-completeness-gate",
|
|
34
|
+
"purpose": "All relevant review domains have been adequately checked for this change. No material blind spots remain unacknowledged.",
|
|
35
|
+
"dimensions": [
|
|
30
36
|
{
|
|
31
37
|
"id": "coverage_completeness",
|
|
32
|
-
"purpose": "All
|
|
38
|
+
"purpose": "All material review domains are checked or explicitly acknowledged as gaps in the coverage ledger.",
|
|
33
39
|
"levels": ["low", "high"]
|
|
34
|
-
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "contradiction-resolution-gate",
|
|
45
|
+
"purpose": "Material contradictions and competing interpretations are resolved or explicitly acknowledged with a clear rationale for the chosen position.",
|
|
46
|
+
"dimensions": [
|
|
35
47
|
{
|
|
36
48
|
"id": "contradiction_resolution",
|
|
37
|
-
"purpose": "
|
|
49
|
+
"purpose": "Every material contradiction is resolved by evidence or explicitly acknowledged with a stated position and rationale.",
|
|
38
50
|
"levels": ["low", "high"]
|
|
39
51
|
}
|
|
40
52
|
]
|
|
@@ -260,7 +272,9 @@
|
|
|
260
272
|
]
|
|
261
273
|
},
|
|
262
274
|
"assessmentRefs": [
|
|
263
|
-
"
|
|
275
|
+
"evidence-quality-gate",
|
|
276
|
+
"coverage-completeness-gate",
|
|
277
|
+
"contradiction-resolution-gate"
|
|
264
278
|
],
|
|
265
279
|
"assessmentConsequences": [
|
|
266
280
|
{
|
|
@@ -269,7 +283,7 @@
|
|
|
269
283
|
},
|
|
270
284
|
"effect": {
|
|
271
285
|
"kind": "require_followup",
|
|
272
|
-
"guidance": "Address whichever
|
|
286
|
+
"guidance": "Address whichever gate scored low: evidence_quality low -- anchor each finding to a specific file, function, or line; remove findings without concrete grounding. coverage_completeness low -- investigate uncovered domains or explicitly acknowledge gaps in the coverage ledger. contradiction_resolution low -- resolve each contradiction or explicitly state your position with rationale."
|
|
273
287
|
}
|
|
274
288
|
}
|
|
275
289
|
],
|