Skip to content

Delete the workflow function concept: compiler_pipeline_entry is the entry authority - #11528

Merged
briansrls merged 4 commits into
mainfrom
workflow-concept-delete
Sep 18, 2026
Merged

briansrls merged 4 commits into
mainfrom
workflow-concept-delete

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Implements D12 (operator, 2026-09-17), which supersedes the earlier marker/FunctionRole direction and its migration of the legacy workflow population.

What was wrong

"Workflow" was never a semantic kind. It was one emitter predicate — v1.compiler.emit_rust is_workflow_item, true when a function carried uses, when the registry held a service or resource name for it, or when the registry held nothing at all — and its only product was the clap subcommands emit_main_rs rendered. Three effect facts and one fail-open standing in for an entry role nobody authored: the meaning fork DESIGN §3 forbids, one name over the effect axis and the entry axis at once.

Why deletion, measured before cutting

emit_main_rs routes on compiler_pipeline_entry before it consults workflow functions, so every built binary is single-entry and pulls none in: v1.compile is RetainedHostCliKernel (clap from the generated dispatch), v2.compiler.compile is SourceRootEvalDriver, v2.cli.compile_cli is NativeCliDriver. gunbc build offers only the seed's own bins (gunbc.devboot.program offered_programs). A closure with no entry already rendered the typed exit-2 emit_entry_point_absent_main_rs. v1.compiler.infer gates no resource operation on workflow — admissibility is the uses clause binding the resource into body scope — and is_async, set from uses > 0, had no reader anywhere in the tree.

So the derived CLI reached no production binary, and no rename to an entry-point concept is required by any consumer.

The cut

Deleted: is_workflow_item, collect_workflow_funcs, WorkflowFunc, to_workflow_func, validate_workflow_param_defaults, the emit_main_rs workflow arm (cli struct, subcommand enum, main fn, its module/resource/service imports), the imported-data-reference constant folding that only that arm consumed (its visibility walk, DataDeclIndex, ConstantFold, and the two diagnostic variants left with no producer), and the dead is_async field. renders_clap_cli collapses to the pipeline dispatch, the one thing that still renders use clap.

Kept: compiler_pipeline_entry as the sole entry authority — an executable declares exactly one, a library none, more than one or an unmodeled driver each refuse with their own typed main — the entry-absent refusal, and uses with its one meaning as an effect requirement. No function is marked; the legacy workflow population is untouched, which is what D11 wants.

Executed evidence

test.claim.entry_authority_witness_test, six arms, all green:

arm establishes
pure library entry-absent refusal, no Subcommand
library + uses regression control: an effect requirement creates no entry
library + service call regression control: a service call creates no entry
one declared entry + an effect that driver's main is the sole root
two declarations typed ambiguity refusal
unmodeled driver typed unknown-driver refusal

Reintroducing uses > 0, a service name or a registry miss as entry identity turns the two regression controls red, because the emitted main would carry a Subcommand instead of the refusal. The pure library alone could not catch that: it has no effect to misread.

Both rooted closures still emit and build, run locally with this seed:

  • //gunbc/instruments:v2-native-cli — exit_status=0 warning_count=0
  • //gunbc/instruments:self-host — emitted its closure and built it

Coverage that moved rather than disappeared

  • The three witnesses whose subject was folding an imported data reference into a CLI default are deleted with the path: that folding had no other consumer, so no capability is left uncovered. (Checked before deleting, as the ruling required.)
  • A rust unit test asserted a non-gunbc program's CLI carries no GUNBC_BUILD_IDENTITY. That struct is gone and the fact is now structural, so the case is rehomed as an exclusion on all three library arms of the witness.
  • gunbc.emit_stage_blocking_population_census keeps its WorkflowParameterDefaultGate arm: a recorded reading stopped on that gate at its own revision, and deleting the arm would make that receipt unrepresentable rather than retire it. The row now says the gate is gone.

Plan authority

D12 is recorded in gunbc.plans.demand_engine_program (status line, section 7 roster, the exit block, a clause on D11, and the new D12 row) and its committed markdown projection regenerated. @fierce-seal-607 owns the plan text and should review that wording before merge.

Seed growth

No hand-Rust declaration is added. The hand-Rust changes are deletions: two stale diagnostic variants in cli_run/compile_clean.rs, the retired unit test, and one is_async field construction each in declaration_index.rs and cli_run.rs. So no SeedGrowthJustification row is owed.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 3 commits September 17, 2026 18:08
…entry authority

"Workflow" was never a semantic kind. It was one emitter predicate --
`v1.compiler.emit_rust` `is_workflow_item`, true when a function carried `uses`,
when the registry held a service or resource name for it, or when the registry
held nothing at all -- and its only product was the clap subcommands
`emit_main_rs` rendered. Three effect facts and one fail-open standing in for an
entry role nobody authored, which is the meaning fork DESIGN section 3 forbids:
one name over the effect axis and the entry axis at once.

MEASURED BEFORE CUTTING, and the census is why this is a deletion rather than a
marker. `emit_main_rs` routes on `compiler_pipeline_entry` BEFORE it consults
workflow functions, so every built binary is single-entry and pulls none in:
`v1.compile` is RetainedHostCliKernel and takes its clap surface from the
generated dispatch, `v2.compiler.compile` is SourceRootEvalDriver, and
`v2.cli.compile_cli` is NativeCliDriver. `gunbc build` offers only the seed's own
bins. A closure with no entry already rendered the typed exit-2
`emit_entry_point_absent_main_rs`. `v1.compiler.infer` gates no resource
operation on workflow -- admissibility is the `uses` clause binding the resource
into body scope -- and `is_async`, set from `uses` > 0, had no reader anywhere.
So the derived CLI reached no production binary and its deletion breaks none.

DELETED: is_workflow_item, collect_workflow_funcs, WorkflowFunc, to_workflow_func,
validate_workflow_param_defaults, the emit_main_rs workflow arm (cli struct,
subcommand enum, main fn, its module/resource/service imports), the
imported-data-reference constant folding that only that arm consumed (its
visibility walk, DataDeclIndex, ConstantFold and the two diagnostic variants left
with no producer), and the dead is_async field. `renders_clap_cli` collapses to
the pipeline dispatch, the one thing that still renders `use clap`.

KEPT: `compiler_pipeline_entry` as the sole entry authority -- an executable
declares exactly one, a library none, and more than one or an unmodeled driver
each refuse with their own typed main -- the entry-absent refusal, and `uses`
with its one meaning as an effect requirement. No function is marked; the legacy
workflow population is untouched.

EXECUTED EVIDENCE. test.claim.entry_authority_witness_test, six arms, all green:
a pure library, a library with a `uses` requirement and a library calling a
service operation each emit the same entry-absent refusal with no Subcommand --
the regression controls, which go red if `uses`, a service name or a registry
miss is ever read as entry identity again; one declared entry is the sole root
beside an effect; two declarations and an unmodeled driver each refuse.
`//gunbc/instruments:v2-native-cli` emits its closure and builds it with
exit_status=0 warning_count=0.

The three witnesses whose subject was folding an imported data reference into a
CLI default are deleted with the path: that folding had no other consumer, so
there is no capability left uncovered. `gunbc.emit_stage_blocking_population_census`
keeps its `WorkflowParameterDefaultGate` arm because a recorded reading stopped on
that gate at its own revision; deleting the arm would make that receipt
unrepresentable rather than retire it, and the row now says the gate is gone.

D12 is recorded in `gunbc.plans.demand_engine_program` and its committed markdown
projection regenerated.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…surface

CI caught what my local build did not: `cli_run/compile_clean.rs` is hand Rust and
still named `DataReferenceVisibilityBudgetExceeded` and
`ParameterDefaultFormNotAdmitted` -- in the diagnostic roster and in two
exhaustive matches -- after the variants were deleted with the workflow parameter
default gate that produced them. The matches are exhaustive over
`CompilerDiagnostic`, so removing the arms is the whole repair.

The unit test `emitted_non_gunbc_cli_has_no_gunbc_build_environment_dependency`
rendered the deleted CLI struct to assert that a non-gunbc program's clap surface
carries no `GUNBC_BUILD_IDENTITY`. Its subject is gone and the fact is now
structural -- a library emits no CLI at all -- so the case is REHOMED rather than
retired: `test.claim.entry_authority_witness_test` excludes that marker on all
three library arms, beside the `Subcommand` exclusion.

WHY THE LOCAL BUILD MISSED IT, recorded because it is the instrument's defect and
not the diff's: a scratch worktree of main shared this session's `/cargo-target`,
and the failing compile resolved its `v1_std_core.rs` from THAT tree, so
`cargo build --bins` reported success against a mirror that still declared the
variants. The check that reproduced it is `cargo clippy --all-targets`, the only
local command that compiles the test targets, run after deleting the scratch
worktree. Both now pass, as does `cargo build --lib`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`gunbc.type_reference_decl_file_occurrence_census` cited
`v1.compiler.emit_rust` `emit_cli_param_type_node`, which went with the derived
workflow CLI, and the declarations phase refused it as CITED-DECLARATION-ABSENT.
The row is a SPECIMEN list -- 18 samples beside a measured 25 occurrences -- so
removing the one that no longer resolves leaves the measurement intact and the
remaining specimens still inhabit the class.

Swept every decl_ref citation of the deleted population; this was the only one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot gunbai-bot Bot changed the title EFFECTS-1: wire v2 Filesystem effects into emitted Rust with an executing consumer (E0 -> E1 -> E2) Delete the workflow function concept: compiler_pipeline_entry is the entry authority Sep 17, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review September 17, 2026 20:27
T2a (#11458) and the emitted-manifest cut (#11531) landed in the same region of
`v1.compiler.emit_rust` this deletion empties, so the one authority conflict is
main's new `emit_cargo_feature` / `emit_cargo_features_section` sitting where the
workflow declarations were. Resolution keeps both sides' intent: main's cargo
feature rendering stays, the workflow vocabulary stays deleted.

The three generated mirrors conflicted as a consequence and were NOT hand-merged:
main's versions were taken, then regenerated from the resolved `.dag` authority
with `claim_executor --required-regen`, which named exactly those three as drift.
A hand-picked hunk in a generated file is a second authority for bytes the
emitter owns.

Re-verified on the merged tree: `cargo build --lib --bins` and
`cargo clippy --all-targets -- -D warnings` clean, and
test.claim.entry_authority_witness_test 6/6 including both regression controls.
The D12 plan text is untouched by the merge.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@briansrls
briansrls added this pull request to the merge queue Sep 18, 2026
Merged via the queue into main with commit 80791c2 Sep 18, 2026
4 checks passed
@briansrls
briansrls deleted the workflow-concept-delete branch September 18, 2026 01:37
@briansrls
briansrls restored the workflow-concept-delete branch September 18, 2026 01:40
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.

1 participant