Repository navigation
Gap A PR1: diagnostic-emission intent + Bash realization (emit(EmitDirective, Bash) → echo >&2); delete dead render_log_annotation - #5505
Merged
Conversation
briansrls
added a commit
that referenced
this pull request
Jun 22, 2026
…round-trip is the completeness gate, never the emit-PR bar) quick-seal-137 (lane owner) refinement: 'a target is done iff round-trip green' must not be misread as 'emit PRs cannot merge until round-trip green' — that would over-gate. An emit-only PR with correct green grammar rows is merge-ready AS the emit step; the medium is COMPLETE only once its round-trip law is green (DecodeFidelity-bounded). markdown #5501 + bash #5505 landed the emit step; their round-trip completeness is the named next step, not a merge precondition. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls
added a commit
that referenced
this pull request
Jun 22, 2026
…per-medium decidability partition (#5513) * WIP: roadmap reflection + analysis * plan(emission): §5.2 — emit-step-merge-ready is NOT medium-complete (round-trip is the completeness gate, never the emit-PR bar) quick-seal-137 (lane owner) refinement: 'a target is done iff round-trip green' must not be misread as 'emit PRs cannot merge until round-trip green' — that would over-gate. An emit-only PR with correct green grammar rows is merge-ready AS the emit step; the medium is COMPLETE only once its round-trip law is green (DecodeFidelity-bounded). markdown #5501 + bash #5505 landed the emit step; their round-trip completeness is the named next step, not a merge precondition. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
Gap A (emission = ingestion⁻¹ past syntax,
docs/plans/emission-ingestion-inverse.md§4(A)) — PR1: the Bash-medium foundation. Introduces the medium-agnostic diagnostic-emission intent and its first row-driven realization, and deletes the dead hand-rolled forward emitter it replaces.src/v2/std/diagnostic.dag):DiagnosticSeverity = SeverityError | SeverityWarning+ a thinEmitDirective { severity, message: String }+ eq fns. Medium-agnostic, dispatch-free (DESIGN §3). This is the "emit a diagnostic" intent, distinct from the rich compilerDiagnostic.src/v2/extdeps/languages/bash.dag):emit(EmitDirective, Bash) → 'echo' '<message>' >&2, row-driven through the shared grammar machinery (emit = serialize_target ∘ translate, DESIGN §4) — not a hand-rolled emitter. Adds the>&2(StdoutToStderr) fixed redirect token (bash-arc is parked, so absorbed here).src/v2/compiler/manual/emit_directive_bash_test.dag): the live by-execution consumer grounding the intent.render_log_annotationforward emitter (dsl/extdeps/github/log_annotations.dag) + itsactions.dagre-export. It was dead (only re-exported, never called); per DESIGN §5 dissolving dead code is spec-without-execution, so it is removed as a dead scaffold, not migrated. TheLogAnnotationmodel + prefix data are kept for the GHA-as-Node arc.Why
render_log_annotationwas amatch→concat("::error::", …)forward emitter — the exact thing the language layer abolished (one grammar read backward, N+M not N×M). This lands the agnostic intent + Bash realization so future consumers author intent and emit renders the medium, under bright-gull's MediumStructureLeak lens (#5500).Honest scope (deferred payoff is markered, not silent)
The Bash transport is severity-invariant (POSIX
shhas no severity concept; the stream is the only axis). So in PR1severityis carried by the intent but realized only by a later medium layer. Phase 2 (witty-wolf GHA-as-Node-gated), markered indiagnostic.dag:::error/::warningGitHub-Actions annotation over the Bash transport),Optional<Locus>, added with the GHA realizer that reads it),tools.build_step::error,gunbc.ci_spec::warning) ontoemit(EmitDirective, GHA-over-Bash), which shrinks the §0 realization-vocab containment roster (the bright-gull dissolve-on).Noticeis intentionally absent — zero live consumers (only the deadAnnotationNotice), so adding it now would be §5 spec-without-execution.Test plan (green by execution —
gunbc run --claim-run, both source roots)emit_directive_bash_error_emits_echo_stderr_holds→true(keystone: exact bytes'echo' 'build verification failed' >&2)emit_directive_bash_severity_invariant_holds→true(Error/Warning render identically; severity is GHA-layer)emit_directive_bash_message_flows_holds→true(distinct message → distinct correct bytes; word not fabricated)emit_directive_bash_to_stdout_wrong_ne_correct_holds→true(discriminating RED: stdout/no->&2model emits different bytes;>&2is load-bearing)bash_emit_command_accepts_holds→true;ci_runner_seam_holds(importsactions.dag) →trueafter the deletion.Built
gunbcrelease; no.rschanges (fmt/clippy unaffected).Note: the MODELING-COHERENCE per-head check is failing on a pre-existing
ctrlplan-lib circular dependency (plans.coherence → plans.reducible, missingstd.reducible) — cites only/home/briansrls/ctrl/plans/files, identical across commits before/after this PR's edits, unrelated to these gunbc changes.🤖 Generated with Claude Code