Skip to content

[WF6][WF7][WF8][WF9] add workflow executor, Makefile cutover, and SLO… - #59

Closed
briansrls wants to merge 1 commit into
mainfrom
claude/workflow-cutover-lane-2-tzy9J
Closed

briansrls wants to merge 1 commit into
mainfrom
claude/workflow-cutover-lane-2-tzy9J

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

… instrumentation

Implements Lane C (Workflow cutover/perf):

WF6: Workflow executor that runs CI via typed planner units instead of monolithic DAG execution. Each unit maps to a shell command; CachedHit units are skipped, Execute units run in topological order with ledger persistence.

WF7: test-all workflow shares the same executor path. Cross-workflow dedup via WorkIdentity ensures codegen/build units produce identical ledger keys across ci and test-all flows.

WF8: make ci and make test-all are now thin wrappers that delegate to gunbc-workflow ci/test-all. Core workflow entries added to makegen registry; render.rs emits single-line cargo run commands.

WF9: SLO budget checking with warm-noop and total-duration thresholds. Top-slow-units reporting and typed execution summary with critical-path output. Default budgets: ci warm-noop 5s, test-all warm-noop 10s.

New modules: workflow/executor.rs, workflow/slo.rs, workflow/unit_commands.rs Updated: bin/workflow.rs (run mode + plan mode), lib.rs re-exports, makegen registry + render
Tests: 13 contract tests + 12 unit tests (80 total workflow tests pass)

https://claude.ai/code/session_017pfGYUCdnm2fTB1ui2VJyQ

… instrumentation

Implements Lane C (Workflow cutover/perf):

WF6: Workflow executor that runs CI via typed planner units instead of
monolithic DAG execution. Each unit maps to a shell command; CachedHit
units are skipped, Execute units run in topological order with ledger
persistence.

WF7: test-all workflow shares the same executor path. Cross-workflow
dedup via WorkIdentity ensures codegen/build units produce identical
ledger keys across ci and test-all flows.

WF8: make ci and make test-all are now thin wrappers that delegate to
gunbc-workflow ci/test-all. Core workflow entries added to makegen
registry; render.rs emits single-line cargo run commands.

WF9: SLO budget checking with warm-noop and total-duration thresholds.
Top-slow-units reporting and typed execution summary with critical-path
output. Default budgets: ci warm-noop 5s, test-all warm-noop 10s.

New modules: workflow/executor.rs, workflow/slo.rs, workflow/unit_commands.rs
Updated: bin/workflow.rs (run mode + plan mode), lib.rs re-exports,
makegen registry + render
Tests: 13 contract tests + 12 unit tests (80 total workflow tests pass)

https://claude.ai/code/session_017pfGYUCdnm2fTB1ui2VJyQ

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b7c7611ba2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1390 to +1394
WorkflowSpec::core(
"ci",
"Run CI via workflow planner (typed units, deterministic keying)",
&[],
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Stop registering ci as both core workflow and tool

Adding ci to default_core_workflows here while MANUAL_TOOL_DEFS still includes ManualToolDef::pipeline("ci") causes makegen to emit two ci: targets (one core workflow wrapper and one tool target). Since targets are rendered from core_workflows and then tools (makegen/render.rs), the legacy gunbc-ci recipe can override the new workflow wrapper, so make ci does not reliably cut over to gunbc-workflow ci as intended.

Useful? React with 👍 / 👎.

Comment on lines +262 to +265
work_id: node_plan.work_id.clone(),
key: node_plan.key.clone(),
status,
output_hashes: BTreeMap::from([(PortName::from("result"), hash)]),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Prevent failed units from being cached as hits

This entry persists status plus an output hash even for failed executions, which makes failed runs look materialized for the same key. In the planner, the digest-match branch treats any rehydratable prior entry as CachedHit (workflow/planner.rs), so a unit that failed once can be skipped on the next run without re-executing, producing false-green workflow outcomes.

Useful? React with 👍 / 👎.

Comment on lines +282 to +285
status: LedgerStatus::Skipped {
blocked_by: node_plan.node_id.clone(),
},
output_hashes: BTreeMap::new(),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Prevent skipped units from being cached as hits

Skipped units are written with the same key and output_hashes: {}; rehydrating an empty map succeeds, so the planner's digest-match path can classify previously skipped units as CachedHit. After a transient upstream failure, downstream units may remain permanently skipped/cached until inputs or upstream keys change, which breaks rerun correctness.

Useful? React with 👍 / 👎.

@briansrls briansrls closed this Feb 20, 2026
briansrls added a commit that referenced this pull request May 13, 2026
Record CONSUMER_LANDED for recursive_flex_demonstration_landed on the
YAML↔ci_github_actions_workflow.dag regression guard; document bootstrap
demo authority and defer isolated compile_to_dag receipts to M1(2.8) fix.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls briansrls mentioned this pull request May 13, 2026
4 of 5 tasks
briansrls added a commit that referenced this pull request May 13, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 13, 2026
Address codex + inline BLOCKING: do not treat the YAML→generator drift
test as the recursive-flex emit-back consumer. §1.8 row #59 stays
DECLARED until `project_github_actions(ci_workflow_dag, YamlStatic)`
(or direct-execution) is the cited receipt; document the supporting
ratchet and fix rustdoc authority direction (YAML upstream, `.dag` derived).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 13, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 13, 2026
* WIP: recursive_flex_demonstration_landed

* WIP: recursive_flex_demonstration_landed

* docs(r3): gate #59 recursive_flex emit-back ledger + test citation

Record CONSUMER_LANDED for recursive_flex_demonstration_landed on the
YAML↔ci_github_actions_workflow.dag regression guard; document bootstrap
demo authority and defer isolated compile_to_dag receipts to M1(2.8) fix.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(r3): tighten gate #59 §1.8 row (review ergonomics)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(r3): gate #59 DECLARED; YAML upstream vs emit-back receipt split

Address codex + inline BLOCKING: do not treat the YAML→generator drift
test as the recursive-flex emit-back consumer. §1.8 row #59 stays
DECLARED until `project_github_actions(ci_workflow_dag, YamlStatic)`
(or direct-execution) is the cited receipt; document the supporting
ratchet and fix rustdoc authority direction (YAML upstream, `.dag` derived).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(r3): drop process-flavored clause from gate #59 §1.8 row

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
- recursive_flex_demonstration_landed: structural equality of CI workflow carrier
  vs gunbc_ci_github_actions_workflow + ci_emission.dag source ratchet (YamlStatic arm
  and gunbc_ci_yml_workflow binding)
- r3-program-plan §1.8 row #59: document M1(2.8) scope for emission-module compile

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
… 11920)

Remove misleading full-file compile_to_dag wording on the YAML drift test;
point readers at recursive_flex_demonstration_landed + module M1(2.8) note.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
…tion) (#3110)

* WIP: R3 gate #59: recursive_flex_demonstration_landed (T-Lens-Self-Applicatio

* fix(r3): land gate #59 receipt without full ci_emission compile (M1 2.8)

- recursive_flex_demonstration_landed: structural equality of CI workflow carrier
  vs gunbc_ci_github_actions_workflow + ci_emission.dag source ratchet (YamlStatic arm
  and gunbc_ci_yml_workflow binding)
- r3-program-plan §1.8 row #59: document M1(2.8) scope for emission-module compile

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(test): align gate #59 rustdoc with linked-bundle receipt (review 11920)

Remove misleading full-file compile_to_dag wording on the YAML drift test;
point readers at recursive_flex_demonstration_landed + module M1(2.8) note.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
/#81/#91

§1.8 is canonical (INVARIANTS P2). Re-derive §3 T-Numeric residuals (drop stale
#23 DECLARED; ETA lists #23 as landed), fix T-CostLens #40 vs #70 wording, and
refresh the predicate-execution index: HARNESS_NAMED rows + verdict/buckets now
match mechanical §1.8 Status classification at HEAD (61 harness-eligible).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
…tion) (#3097)

* WIP: R3 gate #20: numeric_inherited_bake_ins_dissolved (T-Numeric-Constructio

* WIP: R3 gate #20: numeric_inherited_bake_ins_dissolved (T-Numeric-Constructio

* docs(r3): promote gate #20 numeric_inherited_bake_ins_dissolved to PASSING

Record CONSUMER_LANDED + PASSING in §1.8 with producer/consumer citations
(types.dag Int refinements + m2_substrate_inhabitance_test ratchet). Refresh
§3 T-Numeric-Construction snapshot, PM compile note, and close-predicate index
(HARNESS_NAMED, bucket counts, ledger anchor text).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(r3): align PM compile note header with 2026-05-14 §3 amendments

Optional editorial consistency from composer-2 review (cadence stamp vs
audit follow-up date).

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: R3 gate #20: numeric_inherited_bake_ins_dissolved (T-Numeric-Constructio

* WIP: R3 gate #20: numeric_inherited_bake_ins_dissolved (T-Numeric-Constructio

* docs(r3): align §3 + predicate audit with §1.8 for gates #23/#40/#59/#63/#81/#91

§1.8 is canonical (INVARIANTS P2). Re-derive §3 T-Numeric residuals (drop stale
#23 DECLARED; ETA lists #23 as landed), fix T-CostLens #40 vs #70 wording, and
refresh the predicate-execution index: HARNESS_NAMED rows + verdict/buckets now
match mechanical §1.8 Status classification at HEAD (61 harness-eligible).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(r3): sync PM compile T-CostLens clause with §1.8 + §3 lane row

§1.8 rows #37/#40/#70 are not both DECLARED; #40 is CONSUMER_LANDED + PASSING
and #70 INTEGRATION_RECEIPT (P2 single-authority vs §3 T-CostLens snapshot).

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls deleted the claude/workflow-cutover-lane-2-tzy9J branch June 1, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants