decide: the events contract is neither implemented nor restated — #713 AC-3 has no owner #834
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#834
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
#713AC-3 — "the events contract is either implemented or restated, decision recordedeither way" — was left unfinished and its tracker is closed. This is its home.
The AC does not ask for an implementation. It asks for a DECISION, recorded either way —
which is the cheaper half and is still open.
Scope
Decide and record: is the events contract implemented, or is it restated as not-implemented?
📌
scripts/lib/events.shwas retired with the#720cluster, so whatever the contractdescribed no longer has a bash referent. That makes "restate" the likely answer and it still
has to be written.
Acceptance criteria
docs/architecture/contracts/events.mdalready namesscripts/lib/events.shas deleted andinternal/eventsas the Go substrate; the package exists,go testpasses, and it has a live caller atcmd/rt/check_self_bootstrap.go:88.decide's zero emissions are a recorded retire-with-reason (decide.go:18-27, milestone #78 §5), not an absence.If restated: the contract doc says so rather than describing a surface that is gone— RETIRED (condition not met): the contract is IMPLEMENTED, so there is nothing to restate. ⚠️ The guidedocs/events-logging.mdDOES describe a gone surface — a Go heading at:10over a bash body at:13/:42/:68— but that is a different file from the one this AC names, and it is requested as its own tracker rather than absorbed here.Related
#713— where this was left unfinished; its AC-3 now defers here#720— retiredscripts/lib/events.shAnchor
Left unfinished by @herald with a stated disposition in the 2026-08-21 AC sweep. Filed so the
closed tracker carries no bare box.
Decision: IMPLEMENTED. Not restated — and the tracker's two options do not contain the answer.
Re-derived from
main, not from the framing.The contract has a referent, the referent is tested, and it is wired. The premise in the tracker — "whatever the contract described no longer has a bash referent, so restate is the likely answer" — is true about
scripts/lib/events.shand does not reach the contract, because the contract was already migrated to name the Go package.The real residual is a THIRD state neither option covers
docs/events-logging.mdis the guide, not the contract, and it was half-migrated:The heading is true and the body describes a deleted shell function. A reader checking "is this implemented?" reads the heading and stops — which is why this survived the
#720retirement that deleted the thing it documents.Same shape as
#821and#818: a correct surface with a stale interior, where the true half is the half people read.Why
decideemitting nothing is NOT evidence of non-implementationinternal/decide/decide.go:18-27records that deliberately, with the reason, citing milestone#78 §5's pre-sanctioned "AC-retire-with-reason for the events subsystem": all four sibling orchestrators emit zero events at thecmd/rtlayer, events go to stderr rather than the graded stdout surface, and the package is byte-tested independently. A deliberate non-emission with a recorded reason is not an unimplemented contract.Dispositions
📌 Requesting a tracker, not filing: migrate
docs/events-logging.md's body to the Go API (events.Emitter/events.Event{Kind, Fields}) or point it at the contract. Small, and out of scope for an AC that names the contract doc — which is already correct.✅ CLOSED — ACs already dispositioned correctly by @engineer, verified rather than taken
Both were ticked under the four-state convention before I got here, with the strike and the
reason on the retired one. That is the convention working without a sweep — which is the
disposition
#848is trying to make the default rather than the exception.🔑 And the AC he retired came with the thing that made it retirable: he named the file the AC
did NOT cover.
docs/events-logging.mdgenuinely described a gone surface, and rather thanabsorb it here he requested it separately — filed as
#844, implemented by @herald, merged in#845.📌 My dispatch premise for this tracker was wrong and he corrected it: I said "events.sh went
with
#720, so restate is the likely answer." True about the SCRIPT; it never reached theCONTRACT, which had already been migrated.