Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
65ed7d0
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
2ff2716
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
5b1e150
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
1d731f0
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
174c159
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
ee2270d
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
8a013ec
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
4d7fc2a
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
f48c936
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
f44c149
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
a067814
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
fabf694
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
1b5fa43
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
f9bdcce
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
ce5e519
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
22d7a8b
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
22e88b0
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
8c26bab
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
a7f5ecb
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
d8c9e15
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
c1a4bfd
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
f532a17
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
0a35c42
fix(gen_gunbc_ci_workflow_dag): reject YAML null in string scalars
briansrls May 12, 2026
1625117
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
0eb856d
fix(gen_gunbc_ci_workflow_dag): fail-closed YAML key allowlists
briansrls May 12, 2026
648003f
docs(gen_gunbc_ci_workflow_dag): note Debug vs DSL string escaping
briansrls May 12, 2026
129c916
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
40b5e14
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
4449f3c
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
42d0f14
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
09f0de7
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
5347f3f
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
c29127d
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
48d4cc8
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
a5873eb
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
bff725f
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
2b1f628
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
3d1cc08
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
6728b5c
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
a057ade
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
59342b7
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
16158ff
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
19ea669
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
d8024d1
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
8d52de9
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
32612cf
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
62db588
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
4dea042
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
d1c7715
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
73969f4
test(ci): anchor ignored timing demo ignore to ROADMAP P5 deferral
briansrls May 12, 2026
b9777e1
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
5745752
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
69f895b
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
3258c5c
WIP: T-WAD Slice 4: WI-2 substrate (ci_emission.dag with WorkflowRunt…
briansrls May 12, 2026
c8b562a
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
c86cc44
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
b768a05
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
914d688
Merge remote-tracking branch 'origin/main' into session/proud-dove-838
briansrls May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ exclude = [".stage1"]
members = [
# v3 compiler — M0: hand-written substrate skeleton
"src/v3/compiler",
# T-WAD Slice 4 — regenerate `dsl/gunbc/ci_github_actions_workflow.dag` from `.github/workflows/ci.yml`
"tools/gen_gunbc_ci_workflow_dag",
# T-Ground-Pilot probe — bounded inhabitance-search routing pilot
# for the Rust target. Sibling crate so the probe lifecycle is
# isolated and the v3-compiler SG-0 ratchet is untouched.
Expand Down Expand Up @@ -33,6 +35,7 @@ license = "MIT"
[workspace.dependencies]
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
serde_yaml = "0.9"
thiserror = "1.0"
toml = "0.8"
proptest = "=1.4.0"
Expand Down
3 changes: 2 additions & 1 deletion dsl/extdeps/github/actions.dag
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,8 @@ type Step
name: String?,
id: String?,
uses: ActionRef,
with: Map<String, String>,
// `none` models omitted `with:` or YAML `with: {}` (no fabricated action inputs).
with: Map<String, String>?,
env: Map<String, String>?,
if_condition: String?,
continue_on_error: Bool,
Expand Down
27 changes: 19 additions & 8 deletions dsl/gunbc/ci.dag
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@
//
// Consumers:
// .github/workflows/ci.yml — sole live Actions transport for gunbc CI (single authority).
// dsl/gunbc/ci.dag — compiler-intent gates only (`CIPipeline` / `CIGate`). No parallel `Workflow`
// mirror of `ci.yml` here: that would violate INVARIANTS P2 / modeling-discipline Practice 5
// (dual encoding without a same-PR generator or structural consumer closing the boundary).
// future: dsl/gunbc/ci_emission.dag (WI-2 T-WAD R3; brief — file not authored yet) —
// `project_github_actions(ci_workflow_dag, runtime: WorkflowRuntime)` → `extdeps.github.actions.Workflow`
// (`WorkflowRuntime` = projection-mode sum per WI-2 brief; replaces retired `EmissionTarget` name — Shape A collision).
// Declaration + pinning first; per-arm bodies Slice 4–5.
// dsl/gunbc/ci.dag — compiler-intent gates (`CIPipeline` / `CIGate`) plus the pinned GitHub
// Actions `Workflow` carrier field on `CIWorkflowDag` (regenerated from `.github/workflows/ci.yml`
// into `dsl/gunbc/ci_github_actions_workflow.dag` — single structural consumer; no hand-parallel
// `Workflow` mirror elsewhere in this module).
// dsl/gunbc/ci_emission.dag — WI-2 / Slice 4: `WorkflowRuntime` + `project_github_actions` +
// pinned `gunbc_ci_yml_workflow` (`project_github_actions(ci_workflow_dag, YamlStatic)`).
// future: dag run ci_pipeline — interpreter execution of compiler-intent gates.

module gunbc.ci

import std.list { List }
import extdeps.github.actions { Workflow }
import gunbc.ci.github_actions_workflow { gunbc_ci_github_actions_workflow }
import gunbc.compiler {
compiler_cycle, test_package,
lint_command, test_command, ignored_test_command
Expand Down Expand Up @@ -109,9 +110,18 @@ type CIGateEdge {
to: CIGate
}

// `github_actions_workflow` does not author `pipeline` / `edges` (sole gate-topology
// authority remains those fields). It pins the typed Actions `Workflow` carrier
// regenerated from `.github/workflows/ci.yml` into `dsl/gunbc/ci_github_actions_workflow.dag`
// (byte drift test: `gunbc_ci_github_actions_workflow_dag_matches_yaml_generator_output`).
// That is one mechanical encoding of the repo CI YAML, not a second editorial source for
// which compiler gates exist; gate-vs-Actions alignment is process + follow-on projection
// (WI-2), not dual authority over the same axis (INVARIANTS P2 / modeling Practices 3+5).
type CIWorkflowDag {
pipeline: CIPipeline
edges: List<CIGateEdge>
// Pinned GitHub Actions transport for repository CI (see `dsl/gunbc/ci_github_actions_workflow.dag`).
github_actions_workflow: Workflow
}

// ── Gates ───────────────────────────────────────────────────────────
Expand Down Expand Up @@ -185,5 +195,6 @@ data ci_workflow_dag: CIWorkflowDag = {
{ from: compile_gates_gate, to: test_gate },
{ from: lint_gate, to: l1_gate },
{ from: test_gate, to: l1_gate }
]
],
github_actions_workflow: gunbc_ci_github_actions_workflow
}
40 changes: 40 additions & 0 deletions dsl/gunbc/ci_emission.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// gunbc/ci_emission.dag — T-WAD WI-2 / Slice 4: `WorkflowRuntime` + `project_github_actions`.
//
// Canonical GitHub Actions `Workflow` bytes live in `gunbc.ci.github_actions_workflow`
// (`dsl/gunbc/ci_github_actions_workflow.dag`, regenerated from `.github/workflows/ci.yml`).
// `CIWorkflowDag.github_actions_workflow` pins that carrier as part of the same authority
// row as the gate graph (`dsl/gunbc/ci.dag`).
//
// `project_github_actions(..., YamlStatic)` returns that YAML-pinned carrier (Slice 4:
// no structural projection from `pipeline`/`edges` yet; WI-2 follow-on). Transport-arm
// selection, not a second gate-topology editor.

module gunbc.ci_emission

import gunbc.ci { CIWorkflowDag, ci_workflow_dag }
import gunbc.ci.github_actions_workflow { gunbc_ci_github_actions_workflow }
import extdeps.github.actions { Workflow }

// 🟡 YELLOW (scaffold) — coproduct-dissolution receipt (see modeling-discipline Practice 4).
// Ratified initial surface: YamlStatic | BinaryShim | PythonShim (`docs/design-ci-workflow-emitter-dispatch.md` §3;
// `docs/briefs/t-wad-wi2-substrate-and-slice4-yamlstatic-body-worker.md` §1). `InlineGunbc` stays off the enum until a
// real runtime consumer exists (emitter-dispatch §5.4).

type WorkflowRuntime = YamlStatic | BinaryShim | PythonShim

// Slice 5: distinct thin-shim `Workflow` rows (WI-2 brief §1). Placeholders alias the committed
// CI workflow carrier so this file stays structurally validated (M1(2.8)).
data gunbc_ci_emission_binary_shim_placeholder_workflow: Workflow = gunbc_ci_github_actions_workflow

data gunbc_ci_emission_python_shim_placeholder_workflow: Workflow = gunbc_ci_github_actions_workflow

// v3 tokenizer maps `fn`, not legacy `func` (which becomes `Ident("func")` and fails top-level dispatch).
fn project_github_actions(dag: CIWorkflowDag, runtime: WorkflowRuntime) -> Workflow =
match runtime {
YamlStatic => dag.github_actions_workflow
BinaryShim => gunbc_ci_emission_binary_shim_placeholder_workflow
PythonShim => gunbc_ci_emission_python_shim_placeholder_workflow
}

// Pinned projection: same `ci_workflow_dag` row, YamlStatic transport (Slice 4).
data gunbc_ci_yml_workflow: Workflow = project_github_actions(ci_workflow_dag, YamlStatic)
Loading
Loading