Skip to content

design(merge-admission): branch & merge-admission model — green-stays-green by construction + repo-standard drift gate [SKETCH] - #5965

Merged
briansrls merged 7 commits into
mainfrom
session/tidy-badger-45
Jun 29, 2026
Merged

briansrls merged 7 commits into
mainfrom
session/tidy-badger-45

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session tidy-badger-45.
Pushing to session/tidy-badger-45 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

briansrls and others added 7 commits June 29, 2026 13:53
…uction-justification

These free-text String payloads on ConstructionJustification (rationale) and
ConstructionClass::RatchetForever (undecidable_because) were a §6 parallel-ledger:
unverifiable prose that no consumer ever reads (the only matches discard the value
with `_`). The judgment now lives entirely in the typed ConstructionClass; the
structured `dissolves_to: ConstructionMechanism` on WallAfterGrounding stays.

- construction_justification.dag: drop both String fields (RatchetForever → nullary)
- all 44 v2.lens.* decls: strip rationale + collapse RatchetForever { ... } → RatchetForever
- intent_linearity match arm: RatchetForever { undecidable_because: _ } → RatchetForever
- cli_run.rs hygiene-test fixture updated to the new shape
- construction_justification_rule plan: refresh §1/§3/§4 prose (the vacuity residual
  the rationale field embodied is now resolved by removal) + regenerated its md

Verified: construction_justification hygiene tests (3/3, incl. live-corpus
floor_corpus_every_lens_is_justified) green; modified .dag modules resolve/typecheck
(nullary RatchetForever construction); generated-artifact drift gate ExitSuccess.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tion-justification diagnostic

The unjustified-lens error message still named the removed `rationale` field;
the decl no longer carries it. Addresses claude-opus-4-7 review finding on #5943.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 29, 2026 20:31
@gunbai-bot gunbai-bot Bot changed the title Idempotency Manager design(merge-admission): branch & merge-admission model — green-stays-green by construction + repo-standard drift gate [SKETCH] Jun 29, 2026
@briansrls
briansrls merged commit bbef5d8 into main Jun 29, 2026
2 of 4 checks passed
@briansrls
briansrls deleted the session/tidy-badger-45 branch June 29, 2026 21:18
briansrls added a commit that referenced this pull request Jun 29, 2026
Rename receipt_is_admissible predicate params to merge_target_tree_hash;
add merge_admission_gate_shape_proposal plan (actuator shape only, not wired).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 30, 2026
…h, gate_roster_hash) (#5973)

* Model merge-admission authority: KeyedReceipt keyed on (base_tree_hash, gate_roster_hash)

Checkpoint 1 of branch_merge_admission_model — lands MergeStrategy, RepoStandard,
MergeAdmissionReceipt, AdmissionPolicy, and a simulation witness proving PerPrGateOnly
reds on stale-base (#5933 class) while KeyedReceipt is total on both stale-base and
stale-roster scenarios. No enforcement flip; gate shape escalated to loyal-bee.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Align merge-admission model with #5965 brief; add gate-shape proposal

Rename receipt_is_admissible predicate params to merge_target_tree_hash;
add merge_admission_gate_shape_proposal plan (actuator shape only, not wired).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Extend ci_failure_class with merge-admission enforcement model (activation deferred)

Wire KeyedReceipt consumption through existing merge_freshness_gating_status
authority: classify_merge_admission_verdict, merge_admission_would_block,
merge_admission_blocks_merge (false while GatingComputedDeferred). Add
discriminating witnesses: stale-base/roster denied, fresh admitted, RED-on-revert,
activation-deferred does not block. Gate-shape proposal marked APPROVED by loyal-bee.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Harden merge-admission witness teeth per review

Replace tautological roster-hash self-check with sensitivity control
(empty + truncated roster != current). Drop reflexive repo_standard_eq;
assert allowed_strategies is exactly [SquashMerge].

Co-authored-by: Cursor <cursoragent@cursor.com>

* Slice A: complete model+witnesses+proposal for #5973

Move actuator out to follow-on PR. Add surface-only roster hash stability
witness; reframe Rulesets as derived realization handler (not separate
drift authority). Harden roster-hash sensitivity + squash-only teeth.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Collapse MergeQueueAtomic into KeyedReceipt per §3 review

MergeQueueAtomic duplicated KeyedReceipt semantics in policy_admits
with no modeled queue axis; defer to branch_merge_admission_model table
until actuator PR carries distinct semantics.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix non_fold_residue CI: exhaust merge_strategy_eq matches

merge_strategy_eq nested `_ => false` arms flagged as unrostered
non-fold residue; enumerate all MergeStrategy pairs instead.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Prune unused merge_strategy_eq / repo_standard_eq helpers

No callers in worktree; witness uses structural == on unit variants.
Addresses claude-opus non-blocking review on #5973.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Address opus REQUEST_CHANGES: mark gate_content_hash scaffold

Dead *_eq helpers already removed in 29ce7c9; add Disposition
Scaffold on gate_content_hash (dissolves_to SingleAuthority when
substrate generic coproduct content-hash lands).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Move check_conclusion_is_success to extdeps.github.checks

Single authority for CheckConclusion success predicate per composer
REQUEST_CHANGES on #5973; merge_admission imports it.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.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