Repository navigation
docs: anchor the shell → intent rescope (§3/§4) in DESIGN.md - #6815
Conversation
Restates §3/§4 for the shell case: the .dag intent may not name a target language. A workflow is an ordinary dependency graph over modeled operations; rendering to bash is a separate, target-parametrized concern (emit), distinct from realization (pure-spec → host-effect). Bash appears only in its grammar spec + emit rows, never in the intent — exactly where Rust appears. Enforceable invariant: the intent imports no language-construction vocab (bash_build, the ShellStmt coproduct, serialize_bash) — realization_vocabulary_ containment generalized with the intent layer in scope, green = conforms. Names the residual the operator flagged 2026-07-17: (1) raw concat shell (gunbc_ci_deploy_invoke, untouched by the bash_build migration) and (2) structured-but-still-bash (floor_diff_observe). Phases the rescope with the sidecar delete demoted to Phase 0; git.diff/floor_diff_observe as the flagship. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
~110 raw-concat shell builders + ~9 structured-bash sites across ~50 files, concentrated in dag/gunbc (std/lens/compiler are clean). Collapses to ~10 operation families to model once each — not 110 independent problems. Adds the per-layer/per-operation breakdown, per-file hotspots, and the §3 policy note on the extdeps extern-tool wrappers (legitimate as one-of-N transport handlers). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DESIGN.md is generated from dag/gunbc/design_document.dag (DesignArtifact); the anchor lives in the source's open_threads_blocks() li and DESIGN.md is its rendered output. An auto-commit had reverted the generated DESIGN.md, leaving source-with-anchor vs generated-without = drift. Restores the rendered bullet so committed DESIGN.md == expected_design_md() again (review 39352 finding 1). Plan doc: relabel "Class 1 + 3" to "Class 1" — the census fragment-helper sub-kind is a raw-string builder (Class 1), not a separate undefined Class 3 (review 39352 finding 2). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Both findings addressed in Finding 1 (DESIGN.md anchor reverted / Finding 2 ( — sent from calm-ferret-849 |
…n_document.dag open-threads conflict #6821 added the effect-namespace-grants open-thread bullet in the same open_threads_blocks() list where #6815 added the shell → intent bullet. Both are distinct threads — keep both li() rows (effect-grants then shell → intent) and render both in DESIGN.md in matching order. Resolved in the design_document.dag source first; DESIGN.md reconstructed to match (drift gate is the oracle). Doc-reachability verified orphans=0.
Anchors the shell→dag rescope the operator and I aligned on 2026-07-17, per your request to put it in DESIGN.md with real .dag references.
What this says
The
.dagintent may not name a target language. A workflow is an ordinary dependency graph over modeled operations (§4: a program isNode+Edge) — the intent is the.daggraph, not aPipeline(that's optional sugar). Rendering to bash is a separate, target-parametrized concern, and it splits into two distinct layers that we'd been conflating:emit(intent, Bash)— one grammar read backward, target as a parameter.LocalShell/SshShell) — consumes emit's output.Bash ends up exactly where Rust is: its grammar spec (
src/v2/extdeps/languages/bash.dag) and the emit rows, never in the intent.The enforceable invariant
The intent imports no language-construction vocab (
bash_build, theShellStmtcoproduct,serialize_bash) — that's emit-internal. This isrealization_vocabulary_containmentgeneralized with the intent layer in scope; green = conforms to §3/§4. Not a vibe — an executable wall.Why now
Names the residual flagged 2026-07-17: (1) raw
concatshell (gunbc_ci_deploy_invoke— untouched by thebash_buildmigration, which only moved theShellStmt/program.dagconsumers) and (2) structured-but-still-bash (floor_diff_observe). The sidecar delete (PR-A/PR-B merged) is demoted to Phase 0 of a bigger arc;git.diff/floor_diff_observeis the flagship for intent→emit→realization.Contents
DESIGN.md: one Open-threads anchor bullet (real .dag references throughout).docs/plans/shell-intent-emit-realization-design.md: the full design — layering table, invariant, residual, rescoped phases, coupledHostEffect.ShellCommand{script}lane, non-goals.Docs-only. A residual-count census is running; exact per-class/per-layer numbers will land as a follow-up commit into the plan doc's census section.
🤖 Generated with Claude Code