120 lines
4.6 KiB
Python
120 lines
4.6 KiB
Python
"""Admission dispatch for wave D55 (the D53+D54 coherence pass + the
|
|
D49 consent=promotion follow-through).
|
|
|
|
classify + activate + admit (the headless scaffolding entry law): the
|
|
D55 wave builds on the existing rune project, user-dispatch approved.
|
|
"""
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
|
|
|
|
from rune import construction_activation as cact # noqa: E402
|
|
from rune import construction_admission as cadm # noqa: E402
|
|
from rune import construction_mode as cmode # noqa: E402
|
|
from rune import scaffold as sc # noqa: E402
|
|
|
|
ROOT = os.path.join(os.path.dirname(__file__), "..")
|
|
|
|
OBJECTIVE = (
|
|
"land wave D55 (the D53+D54 coherence pass + the D49 consent="
|
|
"promotion follow-through): (1) CONSENT = PROMOTION ONLY — retire "
|
|
"the write/edit permission-gate special-casing in tui/approvals: "
|
|
"a chat-origin write tool call is never face-blocked by the "
|
|
"approvals layer (capability is pane-wide per D49), the "
|
|
"work-promotion consent card keeps firing for work-shaped chat "
|
|
"messages unchanged, and the write card's wording reads as work "
|
|
"promotion, not permission; (2) D53+D54 COHERENCE — every style "
|
|
"site resolves through the themes tokens (no raw hex literals "
|
|
"outside themes/, stragglers migrated, the old sub-floor #78788A "
|
|
"ghost literal included); contrast floors hold across the full "
|
|
"face for every role in vivid AND calm; the motion law's three "
|
|
"invariants (wave gated, chatpane static, one region per frame) "
|
|
"asserted in one place; a fresh long-answer PTY proof at 110 "
|
|
"columns over a real streamed 27B turn (format holds, "
|
|
"summary-first holds, no deadline error)"
|
|
)
|
|
AFFECTED = [
|
|
"tui/",
|
|
"scripts/admit_wave_d55_coherence.py",
|
|
]
|
|
|
|
def main() -> int:
|
|
store = os.path.join(ROOT, "store", "scaffold")
|
|
scaffold = sc.Scaffold(store, "rune")
|
|
|
|
md = cmode.classify_mode(
|
|
OBJECTIVE,
|
|
target_project="rune",
|
|
project_exists=True,
|
|
affected_surface=AFFECTED,
|
|
)
|
|
print("classified mode:", md.mode)
|
|
|
|
need = {
|
|
"need_id": "need-wave-d55-coherence",
|
|
"objective": OBJECTIVE,
|
|
"origin": "worker",
|
|
"project": "rune",
|
|
"task_ref": "wave-d55-coherence",
|
|
"affected_surface": AFFECTED,
|
|
"evidence_refs": [
|
|
"tui/approvals/approvals.go",
|
|
"tui/cmd/rune-tui/main.go",
|
|
"tui/consent/consent.go",
|
|
"tui/themes/roles.go",
|
|
"tui/lanes/render.go",
|
|
"tui/lanes/activity.go",
|
|
"tui/chatpane/chatpane.go",
|
|
],
|
|
}
|
|
act = cact.activate(md, need=need, scaffold=scaffold,
|
|
builder="wave-d55-coherence")
|
|
print("activated:", act.get("activated"), act.get("mode"))
|
|
|
|
env = cadm.admit(
|
|
act,
|
|
objective=OBJECTIVE,
|
|
builder="wave-d55-coherence",
|
|
affected_surface=AFFECTED,
|
|
evidence_refs=need["evidence_refs"],
|
|
origin="worker",
|
|
task_ref="wave-d55-coherence",
|
|
expected_new_entities=[
|
|
"the D55 coherence wave report (reports/)",
|
|
"the red-first write-not-face-blocked + "
|
|
"promotion-wording tests",
|
|
"the migrated themes tokens (confirm trio, body tones, "
|
|
"activity states, gauge tones) and the one-place "
|
|
"motion-law coherence test",
|
|
],
|
|
expected_runtime_effects=[
|
|
"a chat-origin write tool call is never refused by the "
|
|
"approvals layer while work-shaped chat messages still "
|
|
"promote through the consent card, every styled row "
|
|
"resolves through themes tokens with the contrast floors "
|
|
"holding in vivid and calm, the motion law's invariants "
|
|
"are asserted in one place, and a streamed 27B long "
|
|
"answer holds format at 110 columns with no deadline "
|
|
"error",
|
|
],
|
|
verification_obligations=[
|
|
"go test -race -short ./... in tui/ green (documented "
|
|
"pre-existing boot-smoke PTY family aside)",
|
|
"build/vet/gofmt clean",
|
|
"the 110-column long-answer PTY proof over the live core "
|
|
"(127.0.0.1:8376, identity Rune)",
|
|
],
|
|
approval_ref="user:D55 directive 2026-10-24 (D49 follow-through "
|
|
"+ D53/D54 coherence)",
|
|
contract_id="ADMIT-wave-d55-coherence",
|
|
project_store=store,
|
|
project_id="rune",
|
|
)
|
|
print(json.dumps(env, indent=2, default=str)[:2400])
|
|
return 0 if env.get("success") else 1
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|