Repository navigation
feat: add domain package - #10
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Pure reasoning over the process model and a run overlay, built on graph-dag. The control graph excludes the transitions a decision uses to loop back, so a retry loop stays acyclic and any remaining cycle is reported as data. Status is three-valued: a condition that cannot be decided leaves both branches and everything downstream unknown, while a branch definitely not taken skips what only it reaches. Decision and pseudo elements carry no work and derive as done once their needs are met. Conditions are trilean predicates evaluated against an injected facts port. Queries over the derived state: ready set, blocked-by, impact, what-if, critical path and unmet deliverables.
bf89e5c to
3d417bb
Compare
|
@codex security review |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
🎉 This PR is included in version 1.3.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Adds
@exadev/process-graph-domain: pure functions over aModeland a runOverlay, built on graph-dag. Stacked on the schema PR, so the base isfeat/graph-schema.The control graph drops the transitions a decision uses to loop back (a decision's outgoing transition whose target can reach its source), so a retry loop is acyclic and readiness is computed on the rest. Cycles left over contain no decision and come back from
illegalCycleswith their paths; status derivation throwsCycleErroron them.Status is
done,ready,blocked,skippedorunknown. A transition's trilean condition is evaluated against an injected facts port: definite true takes the branch, definite false cuts it (and what only it reaches becomes skipped), and an indeterminate result makes the branch and everything downstream unknown. Decision and pseudo elements have no work to do, so they derive as done once their needs are met; otherwise nothing after the initial pseudo-state could ever start. Queries arereadySet,blockedBy,impact,whatIfDone,criticalPathandunmetOutputs.Two deviations from the plan's signatures, both in the README.
impacttakes the overlay and facts because liveness depends on them. Provided input artefacts are answered by the facts port through a reserved key rather than a fifth parameter, which the repo'smax-paramsrule would reject.Tests assert exact status and ready sets for a diamond, a retry loop against a plain cycle, a decision with true, false and missing facts, a join with and without a skipped branch, unknown propagation, and a deliverable behind an unprovided input. I broke the condition mapping, the loop-edge exclusion and the skipped-source rule in turn and each turned the suite red.