Skip to content

feat(boatstack): goal escapes — the merged pursuit is bounded and demotes - #241

Merged
bigboateng merged 1 commit into
mainfrom
boatstack/goal-escapes
Jul 28, 2026
Merged

feat(boatstack): goal escapes — the merged pursuit is bounded and demotes#241
bigboateng merged 1 commit into
mainfrom
boatstack/goal-escapes

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

Sixth slice of the published → merged program (follows #240). Autonomy arrives pre-bounded: the merged-terminal pursuit runs only inside an explicit contract, and any disturbance that ends the contract demotes the step to the operator and stops.

What changed

  • The contract: at most 3 recorded post-publish fix cycles (PostPublishFixAttempts, an offline counter on the published slice mirroring RepairAttempt < 3), no changes-requested review verdict, and a cleanly merging branch (DIRTY fires base_conflicts; BEHIND deliberately does not — it is often auto-resolvable and already lands on an operator-owned Unknown phase without stickiness).
  • The demotion: a fired escape makes classifyNextActor return operator unconditionally, prescribePostPublish return nothing (demote-and-stop, never demote-and-suggest), the status reason explain the pause, flow watch treat it as a frontier change, and the frontier row carry it.
  • Sticky offline: the fired escape is cached best-effort on the slice — the same bounded modeled bypass as the terminal PRState cache; the delivery.next registry note now names it. A fresh session with gh unavailable still demotes. A perfect-looking live observation cannot re-arm an escaped pursuit.
  • The reset: recording the next correction (record-change) clears the escape and restarts the cycle at one — the explicit operator-authorized act, consistent with the protocol's frontier rules.
  • Default untouched: under published, no escape is ever evaluated, surfaced, or written; state files stay byte-stable through correction cycles (pinned).

Boundary conformance

  • Boundary: autonomous pursuit authority meeting its limits.
  • Control law: goal-escape-demotes-to-operator-and-stops.
  • Required evidence: goal_escape_conformance_test.go — positive (each live disturbance → operator + nothing prescribed + explanatory reason), relation (budget exhausts offline with gh down; persisted escape sticky; recorded correction resets to cycle 1), negative (unspent budget keeps prescribing; published default writes zero bookkeeping), bypass (escaped delivery never gets the merge prescribed again — even under a live merge-eligible observation — until the recorded reset).
  • Failure behavior: fail-closed to operator; escape evaluation is pure and offline-first.
  • Release condition: full suite green; additive omitempty fields only, no schema bump.

Evidence

  • go build ./... && go vet ./... && go test ./... — pass.
  • Release note added: 2026-07-28-bounded-merge-pursuit.md.

Next: the offline retro miner (recurrence detection over transcripts → typed proposals).

…otes

The merged-terminal pursuit now runs inside an explicit contract: at most
three recorded post-publish fix cycles (offline counter on the published
slice, mirroring RepairAttempt), no changes-requested review verdict, and a
cleanly merging branch (DIRTY fires; BEHIND deliberately does not). Any
ended contract fires a goal escape: the actor demotes to operator,
nothing further is prescribed (demote-and-stop), the reason explains the
pause, and the demotion is cached best-effort on the slice so it holds
offline in a fresh session — the same bounded bypass as the terminal
PRState cache, and the registry note now names it. Recording the next
correction is the explicit reset (escape clears, cycle restarts at one).
The published default evaluates and writes nothing.

control-law: goal-escape-demotes-to-operator-and-stops

Disclosure-Reviewed: reviewed — public-safe only, private facet kept out of this commit
@bigboateng
bigboateng merged commit c550ef9 into main Jul 28, 2026
12 checks passed
@bigboateng
bigboateng deleted the boatstack/goal-escapes branch July 28, 2026 17:07
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