Skip to content

Plan amendments: bash-minimization rule + census-scoped shell slices + effect-plan band decisions - #6220

Merged
briansrls merged 3 commits into
mainfrom
session/eager-crane-506
Jul 3, 2026
Merged

briansrls merged 3 commits into
mainfrom
session/eager-crane-506

Conversation

@briansrls

@briansrls briansrls commented Jul 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Encodes the operator's 2026-07-03 rulings into the plan authorities (docs are generated projections — edits are in the .dag twins, mds regenerated via generated_artifact_gate main_wet):

  • Bash-minimization rule (shell-emission twin): bash is the pre-runtime medium — emitted only into foreign executors + bootstrap windows; runtime-present effects are typed argv/REST or binary-interpreted plans; fidelity-bounded ingestion (no "projection-only forever"); thin-run guardrail (typed plan stays authority). Supersedes the ci-humming T5 emitted-converge-shell framing.
  • Census-scoped slices: slice 1 shrinks to the If band (pre-runtime census found zero For/While/trap/background sites at pre-runtime locations); slice 2 becomes converge thin-run; slice 3 live_deploy reframed runtime-present; slice 0 gains the Retry.on_exhausted wire-or-narrow precondition and drops the stale env-weld clause (Grow bash AST: EnvUnset node + multi-binding env nesting (dissolve orch_emit_run_env_welded) #5868+2-emit-partition (a): dissolve orch_run env weld into structured EnvPrefixed/EnvUnset AST #6137 discharged it).
  • Effect-plan band (host-effect twin, new §1b): layer responsibility contract + governance RED rule; fork-census decisions — Policy de-fork onto IdempotencyEvidence (derived Drive), decide-algebra consolidation onto std.upsert_decision (typed refusal reasons), Retry-vs-temporal DISTINCT, While carries a measure (derived DescentEvidence from dag/std/termination.dag), std.effect_plan rename at Phase B, long-term (not near-term) dissolve onto substrate fragments, dead-vocab deletions, no new std.ProcessInvocation (reuse/extend extdeps service-op argv authority).
  • Roadmap nodes: 6-shell-emission/slice1/slice2/shelf-shell-tail re-scoped; 2-emit-partition stale env-weld prose fixed; 2-nbd-serve-held-session-lease re-briefed to instantiate std.upsert_decision.
  • Includes main's pre-existing 3-line regen drift (dag-v2-defork-audit.md, fold-ergonomics.md) — idempotent regen output, keeps the drift gate green.

Test plan

  • generated_artifact_gate --function main (drift dry-check): exit 0
  • plan_lens_witness_test (dissolution-trigger + titled, both): true
  • roadmap_authority_test::roadmap_authority_witnesses: true
  • roadmap_gate_test::roadmap_gate_witnesses: true
  • generated_artifact_drift_test::generated_artifact_drift_witnesses: true
  • Full floor runs in CI.

🤖 Generated with Claude Code

Brian Searls and others added 2 commits July 3, 2026 22:14
…sus-scoped slices, effect-plan band decisions (operator, 2026-07-03)

- shell_emission_model twin: bash-minimization rule (pre-runtime medium; fidelity-bounded ingestion; thin-run guardrail; supersedes ci-humming T5 converge-shell framing) + pre-runtime census receipt; slice 0 stale env-weld fixed (#5868+#6137 discharged) + Retry.on_exhausted precondition; slice 1 census-scoped to the If band (For/While have zero pre-runtime sites); slice 2 reframed converge thin-run; slice 3 live_deploy runtime-present reframe; slice 4 thin-shim scope; sidecar importer count 11->33 false-by-growth + ratchet directive
- host_effect_orchestration twin: new 1b effect-plan band (layer responsibility contract + governance RED rule + fork-census decisions: Policy de-fork onto IdempotencyEvidence, decide-algebra consolidation onto upsert_decision w/ typed refusal reasons, Retry-vs-temporal DISTINCT, algebra grounding While-measure/on_exhausted, std.effect_plan rename at Phase B, long-term-not-near-term dissolve, dead vocab); Phase B invocation-vs-script + Pipeline supersession inline; Phase D models EmitArtifactThenThinRun
- roadmap_authority: 6-shell-emission scoped by the rule; 2-emit-partition leftover (a) env-weld stale prose discharged; slices 1-2 re-scoped; shelf-shell-tail rescoped; 2-nbd-serve re-briefed to instantiate std.upsert_decision
- regen via generated_artifact_gate main_wet (ROADMAP.md + both plan mds); includes main's pre-existing 3-line regen drift on dag-v2-defork-audit.md/fold-ergonomics.md (authorities merged without regen; idempotent output, keeps the gate green)

Verified: drift gate main exit 0; plan_lens x2, roadmap_authority, roadmap_gate, generated_artifact_drift witnesses all true by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 3, 2026 22:19
@gunbai-bot gunbai-bot Bot changed the title srv3 file cleanup Plan amendments: bash-minimization rule + census-scoped shell slices + effect-plan band decisions Jul 3, 2026
@gunbai-bot

gunbai-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Re cursor/composer-2.5 REQUEST_CHANGES (fold-ergonomics regression): valid — fixed at the carrier in 353bcca5dc.

Verified the finding: the pre-existing md wording was the correct post-#5552 state; the .dag authority (dag/gunbc/plans/fold_ergonomics.dag:31) was the stale side (live tree confirms: src/v2/std/qualified_name.dag:21 defines the alias, zero qualified_name_eq occurrences), so the main_wet regen in 067419b674 faithfully projected stale authority over corrected prose — moving the md backward exactly as the review said.

Fix per the review's second option (update the carrier and regenerate, not a hand-restore of the md): fold_ergonomics.dag:31 now carries the #5552 partial-fix wording + the remaining recursive-tail resolver gap, consistent with dag-v2-defork-audit.md:144,147. The regenerated md is byte-identical to its pre-regression wording (git diff 067419b674^ -- docs/plans/fold-ergonomics.md = empty). Drift gate main exit 0; plan-lens dissolution witness true by execution.

— sent from eager-crane-506

@briansrls
briansrls merged commit 7ab2b2f into main Jul 3, 2026
0 of 2 checks passed
@briansrls
briansrls deleted the session/eager-crane-506 branch July 3, 2026 22:34
gunbai-bot Bot pushed a commit that referenced this pull request Jul 3, 2026
…6220 §1b)

Operator fork-census ruling 2026-07-03: std.upsert_decision owns
observe→classify→plan; std.temporal_effect must ground its own decide-algebra
on that authority rather than re-deriving a parallel one.

- held_lease_observed_verdict: total, 5/5 bijection from
  HeldLeaseObservedState onto std.upsert_decision.ObservationVerdict
  (LeaseAbsent→Absent, LeaseRunningExpected→Converged,
  LeaseRunningStale→Drifted, LeasePortForeign→Conflict,
  LeaseInaccessible→Inaccessible; UnknownRefused is unreachable here).
- decision_for_held_lease_verdict: the Noop/Apply/Refuse arms of
  plan_for_held_lease_observation now derive from a single
  UpsertDecision<NextStepApplyPlan> classification instead of a second
  ad hoc match — one decide-algebra, not two.
- next_step_plan_from_apply_decision lifts that UpsertDecision back onto
  NextStepPlan's existing wire shape, so plan_next_step_from_prior_receipt_and_lease
  and every consumer (srv3_os_install_reconcile*) keep their existing
  NextStepPlan API/behavior unchanged — zero consumer churn.
- PlanAwaitApproval is untouched: it is decided before lease observation
  even runs and has no UpsertDecision arm to collapse onto — the honest
  temporal-only residue named in the ruling.

Witnessed by execution: the existing temporal_effect_spine_witness_test
suite (15 tests) passes unchanged behavior end-to-end through
plan_next_step_from_prior_receipt_and_lease; two new tests exercise the
grounding functions directly (bijection + per-arm decision), plus a new
LeaseInaccessible coverage case that wasn't previously exercised. A red
control (mutating the bijection to route LeaseAbsent→Conflict) flips the
bijection witness to false, confirming it's discriminating, not vacuous.
Full 855-module corpus (dag + src/v2) typechecks clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 3, 2026
…-up)

Operator review of #6223 (2026-07-03, via eager-crane-506): TemporalEffectPolicy
is still an inert third effect-shape vocabulary (fork-census PR #6220 §1b) —
zero consumers, CreateIfAbsent name-collides std.effects.CreateCause. Out of
scope for this PR's decide-algebra consolidation (that's HeldLeaseObservedState/
NextStepPlan onto std.upsert_decision, not TemporalEffectPolicy), so left
untouched here per DESIGN §6 ("every scaffold lands with a named dissolution
trigger") rather than silently deferred.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 4, 2026
…6223)

* WIP: decide-algebra consolidation (fork-census 2026-07-03, operator-ruled; se

* Ground std.temporal_effect's decide-algebra on std.upsert_decision (#6220 §1b)

Operator fork-census ruling 2026-07-03: std.upsert_decision owns
observe→classify→plan; std.temporal_effect must ground its own decide-algebra
on that authority rather than re-deriving a parallel one.

- held_lease_observed_verdict: total, 5/5 bijection from
  HeldLeaseObservedState onto std.upsert_decision.ObservationVerdict
  (LeaseAbsent→Absent, LeaseRunningExpected→Converged,
  LeaseRunningStale→Drifted, LeasePortForeign→Conflict,
  LeaseInaccessible→Inaccessible; UnknownRefused is unreachable here).
- decision_for_held_lease_verdict: the Noop/Apply/Refuse arms of
  plan_for_held_lease_observation now derive from a single
  UpsertDecision<NextStepApplyPlan> classification instead of a second
  ad hoc match — one decide-algebra, not two.
- next_step_plan_from_apply_decision lifts that UpsertDecision back onto
  NextStepPlan's existing wire shape, so plan_next_step_from_prior_receipt_and_lease
  and every consumer (srv3_os_install_reconcile*) keep their existing
  NextStepPlan API/behavior unchanged — zero consumer churn.
- PlanAwaitApproval is untouched: it is decided before lease observation
  even runs and has no UpsertDecision arm to collapse onto — the honest
  temporal-only residue named in the ruling.

Witnessed by execution: the existing temporal_effect_spine_witness_test
suite (15 tests) passes unchanged behavior end-to-end through
plan_next_step_from_prior_receipt_and_lease; two new tests exercise the
grounding functions directly (bijection + per-arm decision), plus a new
LeaseInaccessible coverage case that wasn't previously exercised. A red
control (mutating the bijection to route LeaseAbsent→Conflict) flips the
bijection witness to false, confirming it's discriminating, not vacuous.
Full 855-module corpus (dag + src/v2) typechecks clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Name the TemporalEffectPolicy dissolution trigger (nonblocking follow-up)

Operator review of #6223 (2026-07-03, via eager-crane-506): TemporalEffectPolicy
is still an inert third effect-shape vocabulary (fork-census PR #6220 §1b) —
zero consumers, CreateIfAbsent name-collides std.effects.CreateCause. Out of
scope for this PR's decide-algebra consolidation (that's HeldLeaseObservedState/
NextStepPlan onto std.upsert_decision, not TemporalEffectPolicy), so left
untouched here per DESIGN §6 ("every scaffold lands with a named dissolution
trigger") rather than silently deferred.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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