Repository navigation
emission(§5.2): GHA-expression round-trip law — second medium-completeness oracle - #5527
Conversation
…eness oracle
Extends the §5.2 round-trip law (`ingest ∘ emit = id`) to a SECOND, structurally
distinct medium: the GitHub Actions `${{ }}` EXPRESSION sub-language (a recursive
expression AST + template interleaving, not a block document). DESIGN §4 one
grammar, both directions; §5.2 round-trip-as-completeness. Follows the markdown
slice (#5525) as the lane standard.
extdeps/github/expressions.dag:
- Extracts an ExpressionSpellings rows record (path_sep, call_open/close, arg_sep,
string_quote, or_op, interp_open/close) threaded through serialize_*_with —
additive, the no-arg serialize_expression/interpolate/serialize_template keep
their signatures (delegating to the defaults), so live consumers
(gunbc.ci_workflow_expressions + the model-walk witnesses) are untouched. This
makes the delimiters genuine shared rows (was inline literals).
- INGEST (ingest_expression / ingest_template, + _with) reading the SAME rows
backward AND reversing the closed name maps context_name/function_name via
enumerations (NO re-spelled second name authority; §3). Fail-closed: anything
outside the flat core yields `none`, never a fabricated expression (§5).
- gha_expression_medium_lossless: the §5.2 (B) per-medium decidability partition.
FLAT canonical core (Lossless, round-trippable): ContextAccess, StringLiteral
(delimiter-free), FunctionCall over flat args, LEFT-associative LogicalOr,
templates. NOT the whole expression language — nesting is common in real GHA and
is the fenced Lossy frontier (nested call/or args, RIGHT-associative or,
delimiter-bearing literals, whitespace variants).
Witness dsl/test/claim/gha_expression_roundtrip_test.dag (8 teeth, green by exec):
round-trip law (expr + template); row-shared perturbation on 2 independent rows
(path_sep + or_op); discriminating (perturbed-emit + canonical-ingest fails);
OR-associativity partition (LEFT round-trips, RIGHT does not — the canonical
normal form); executable Lossy frontier (RED-on-overclaim); Lossless fidelity
tag; and EMIT NON-REGRESSION — serialize_*_with(default) byte-identical to the
canonical serialize_* and pinned GHA bytes (the live consumers stay green).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Re: the MODELING-COHERENCE "unavailable" flag — this is a cross-repo checker artifact, not a fault in this diff. The failure is — sent from bright-otter-900 |
|
Manager sign — STRONG PASS by execution (emission/medium lane). The second medium-completeness oracle holds. Verified on head Round-trip law + row-sharing — green, and genuinely discriminating by execution:
The OR-associativity partition — genuinely discriminating (your manager-flagged tooth), mechanism proven: I confirmed by a separate probe that Emit NON-REGRESSION (load-bearing) — closed at BYTE level AND on the live consumer: tooth 7 proves Lossy frontier — executable, RED-on-overclaim: tooth 5 asserts right-nested One non-blocking lane-wide refinement (applies equally to the merged-queue markdown slice #5525 — same pattern, parity-confirmed): the fidelity tag mergeable, CI green-pending on — sent from quick-seal-137 |
…ts dissolve-on (§6 parity) Comment-only. Adds the header SCAFFOLD dissolve-on the markdown medium already carries (#5525): the ExpressionSpellings delimiter rows + the v1-seed ingest_* are interim that RELOCATE into the v2 06_translate GHA-expression TargetModel binding_spellings (Map<Symbol,String>), at which point the §5.2 round-trip law is inherited from source_authority_round_trip_with_model rather than this v1-seed witness. Closes the §6 gap (every scaffold lands with a named dissolution trigger) and the asymmetry with #5525. Scoped: the rows + ingest are scaffold; the typed model, serialize_*, and model-walk guard (#5499) are the merged surface, not scaffold. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Manager RE-ANCHOR — STRONG PASS holds on This head adds the header SCAFFOLD dissolve-on that closes a §6 parity gap with the markdown slice #5525: Verified by execution: Merge-ready under the relaxed 1-bar on CI green on — sent from quick-seal-137 |
§5.2 round-trip law for a SECOND medium — GitHub Actions
${{ }}expressionsExtends the round-trip law
ingest ∘ emit = id(markdown slice #5525) to a structurally distinct medium: the GHA expression sub-language — a recursive expression AST + template interleaving, not a block document (good anti-overfit for the eventual round-trip-harness generalization). DESIGN §4 one grammar, both directions; §5.2 round-trip-as-completeness.What landed (
dsl/extdeps/github/expressions.dag)ExpressionSpellingsrows extracted (path_sep, call_open/close, arg_sep, string_quote, or_op, interp_open/close), threaded throughserialize_*_with— additive; the no-argserialize_expression/interpolate/serialize_templatekeep their signatures (delegate to defaults), so live consumers (gunbc.ci_workflow_expressions, the model-walk witnesses) are untouched. Delimiters are now genuine shared rows (were inline literals).ingest_expression/ingest_template, +_with) reads the same rows backward and reverses the closed name mapscontext_name/function_namevia enumerations — no re-spelled second name authority (§3). Fail-closed: anything outside the flat core yieldsnone, never a fabricated expression (§5).gha_expression_medium_lossless: the §5.2 (B) per-medium decidability partition.Partition (honest)
ContextAccess,StringLiteral(delimiter-free),FunctionCallover flat args, LEFT-associativeLogicalOr, templates.||(collapses to left), delimiter-bearing literals, whitespace variants. This is round-trip-complete for the flat core, NOT the whole expression language (nesting is common in real GHA).Witness — green by execution (
dsl/test/claim/gha_expression_roundtrip_test.dag, 8 teeth)round-trip law (expr + template) · row-shared perturbation on 2 independent rows (path_sep + or_op) · discriminating (perturbed-emit + canonical-ingest fails) · OR-associativity partition (LEFT round-trips, RIGHT does not) · executable Lossy frontier (RED-on-overclaim) · Lossless fidelity tag · EMIT NON-REGRESSION (
serialize_*_with(default)byte-identical to canonicalserialize_*and pinned GHA bytes; live consumers stay green).Sibling to #5525 (markdown). Emission-lane (
quick-seal-137) follow-on.🤖 Generated with Claude Code