feat: add WorkGraph parallelism and one-node validation - #1253
Open
garynewball wants to merge 6 commits into
Open
feat: add WorkGraph parallelism and one-node validation#1253garynewball wants to merge 6 commits into
garynewball wants to merge 6 commits into
Conversation
added 6 commits
July 29, 2026 14:56
…e, tests, and ownership
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Implement Slice 2 of Firstmate WorkGraph: persistent parallelism modes off|eco|on|max with auto accepted only as a CLI alias canonicalized to on; request/goal/project/global precedence; deterministic one-node WorkGraph and slice-contract v1 schemas and validation/status; no spawn, teardown, enforcement, AGENTS.md, active-task, or implicit global-config mutation; preserve legacy behavior. Validate strict duplicate-free JSON, recursively reject unknown keys, bind hash and parse to the same bytes, align runtime and schemas exactly, use safe integer semantics, hermetic tests, and documentation ownership. Do not leave global parallelism materialized in this slice.
What Changed
off|eco|on|maxparallelism modes with request, goal, project, and global precedence; CLI-onlyautocanonicalizes toon.Risk Assessment
✅ Low: Captain, the focused fix resolves the prior CLI-alias finding without introducing material source risk, and the overall change remains bounded and non-enforcing.
Testing
Baseline diff/status inspection confirmed the intended standalone CLI/schema scope; the focused hermetic test and isolated end-to-end workflow passed, demonstrating persistence and precedence, CLI-only
auto, strict byte-bound one-node validation, disabled enforcement, no implicit global write, and preserved legacy state. The reviewer-visible artifact is a CLI transcript because this change has no rendered UI.Evidence: End-to-end WorkGraph CLI transcript
Shows mode precedence, CLI-onlyauto, canonical persistence, verified one-node graph status, duplicate-key rejection, disabled enforcement, and unchanged legacy state.Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed ✅
bin/fm-parallelism.sh:149- Intent requires “auto accepted only as a CLI alias canonicalized to on,” but this hunk applies the alias-acceptingrequire_modetoFM_PARALLELISM_OVERRIDE, soFM_PARALLELISM_OVERRIDE=auto ... getis accepted and resolved ason. Restrictautocanonicalization to parsed CLI arguments and accept only canonical modes from the environment, unless this broader alias behavior is explicitly approved.🔧 Fix: Captain: restrict auto alias to CLI inputs
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
bin/fm-test-run.sh tests/fm-workgraph.test.shIsolatedfm-parallelism.sh get/set/statusworkflow covering default non-materialization, canonical modes, request > goal > project > global precedence, andautocanonicalizationNon-CLIautorejection throughFM_PARALLELISM_OVERRIDE=autoand a manually persistedautovaluebin/fm-workgraph.sh status .../graph.jsonagainst a digest-bound one-node contractbin/fm-workgraph.sh validate .../duplicate-graph.jsonto demonstrate strict duplicate-key rejectionLegacy task-state byte comparison before and after parallelism operationsbin/fm-test-run.sh --list --changed --base 99533c5d7d3702050e6084429dddff6ea4fe1aa0selection checkTarget-tree checks confirming no materializedconfig/parallelismand no changes toAGENTS.md, spawn, or teardown surfacesgit status --shortafter testing and cleanup✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.