Compare commits

...
Author SHA1 Message Date
conductor 875bb792f7 chore(release): auto-bump version to 0.85.0 — earned by #338 (feat(event-driven): structured-state routing + event-triggered cognition)
Auto-version and Release / release (push) Successful in 20s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 8s
CI Pipeline / lint (push) Successful in 38s
CI Pipeline / unit-tests (push) Successful in 3m21s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / gitea-offline (push) Successful in 20s
CI Pipeline / required-checks (push) Successful in 2s
deploy / deploy (push) Successful in 9m42s
Promotion record: #338
2026-09-18 00:46:00 +01:00
conductor f06ddb3a20 Merge pull request 'feat(event-driven): structured-state routing + event-triggered cognition' (#338) from event-driven-continuation into master
CI Pipeline / documentation (push) Successful in 9s
CI Pipeline / canary (push) Successful in 33s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / type-check (push) Successful in 35s
CI Pipeline / lint (push) Successful in 50s
Auto-version and Release / release (push) Successful in 47s
CI Pipeline / unit-tests (push) Successful in 3m22s
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 6s
deploy / deploy (push) Successful in 8m17s
2026-09-18 00:45:16 +01:00
Nick 2ebd9da139 feat(event-driven): structured-state routing + event-triggered cognition
CI Pipeline / best-practices (push) Successful in 11s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / canary (push) Successful in 35s
deploy / deploy (push) Skipped
CI Pipeline / lint (push) Successful in 45s
CI Pipeline / gitea-offline (push) Successful in 18s
Auto-label / auto-label (pull_request) Successful in 8s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / lint (pull_request) Successful in 44s
CI Pipeline / gitea-offline (pull_request) Successful in 17s
CI Pipeline / type-check (pull_request) Successful in 29s
Spec gate (headless) / spec-gate (pull_request) Successful in 23s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / best-practices (pull_request) Successful in 8s
CI Pipeline / unit-tests (push) Successful in 3m26s
CI Pipeline / documentation (pull_request) Successful in 6s
CI Pipeline / canary (pull_request) Successful in 32s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 9s
CI Pipeline / unit-tests (pull_request) Successful in 3m27s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 7s
Auto-version and Release / release (pull_request) Failing after 1m5s
- PendingOperation = durable continuation object: continuation_state
  (ACTIVE_REASONING/WAITING_EXTERNAL/RESUMABLE/RECOVERY_REQUIRED),
  canonical op_type/authority, task_id — parked cognition is a first-class
  durable state a fresh process can read
- ci_event_wait stamps cognitive-state transitions (WAITING_EXTERNAL on
  park, RESUMABLE/RECOVERY_REQUIRED on terminal)
- DEPLOY_SHA export fix: CLI/python run() consumers previously got a
  silent 'pending' authority verdict forever — the authority subprocess
  never received the sha (found via E10 fresh-process proof)
- await_intent_cli route-bash: Bash commands expressing external wait
  intent compile to the canonical continuation (new bash.ts harness tool
  routes through it); plain local sleeps execute normally
- tests/test_await_intent.py: E-matrix (derivation truth table,
  provenance order, observability)
2026-09-18 00:39:23 +01:00
conductor 65001196d8 chore(release): auto-bump version to 0.84.2 — earned by #337 (chore(async-intent): 13/13 gates — ASYNC_INTENT_NORMALIZATION_COMPLETE)
Auto-version and Release / release (push) Successful in 22s
CI Pipeline / lint (push) Successful in 48s
CI Pipeline / unit-tests (push) Successful in 3m26s
CI Pipeline / canary (push) Successful in 35s
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 8s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 11s
deploy / deploy (push) Successful in 2m33s
Promotion record: #337
2026-09-17 23:37:23 +01:00
conductor 76bb2b97be Merge pull request 'chore(async-intent): 13/13 gates — ASYNC_INTENT_NORMALIZATION_COMPLETE' (#337) from async-intent-live-proof into master
CI Pipeline / documentation (push) Successful in 10s
CI Pipeline / canary (push) Successful in 42s
CI Pipeline / lint (push) Successful in 54s
CI Pipeline / type-check (push) Successful in 33s
CI Pipeline / best-practices (push) Successful in 6s
Auto-version and Release / release (push) Successful in 32s
CI Pipeline / unit-tests (push) Successful in 3m31s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 9s
deploy / deploy (push) Successful in 3m24s
2026-09-17 23:36:25 +01:00
conductor e765f654f9 Merge branch 'master' into async-intent-live-proof
CI Pipeline / best-practices (push) Successful in 21s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / canary (push) Successful in 33s
CI Pipeline / lint (push) Successful in 43s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / type-check (push) Successful in 29s
CI Pipeline / lint (pull_request) Successful in 44s
CI Pipeline / best-practices (pull_request) Successful in 5s
CI Pipeline / canary (pull_request) Successful in 30s
CI Pipeline / documentation (pull_request) Successful in 7s
CI Pipeline / gitea-offline (pull_request) Successful in 17s
CI Pipeline / type-check (pull_request) Successful in 30s
deploy / deploy (push) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 17s
CI Pipeline / unit-tests (push) Successful in 3m20s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 6s
CI Pipeline / unit-tests (pull_request) Successful in 3m20s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 10s
Auto-version and Release / release (pull_request) Failing after 1m20s
2026-09-17 23:31:09 +01:00
Nick f7141200bd chore(async-intent): 13/13 gates PASS, can_accept=true — ASYNC_INTENT_NORMALIZATION_COMPLETE (normalization observability log included)
Auto-label / auto-label (pull_request) Successful in 5s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / best-practices (pull_request) Successful in 8s
CI Pipeline / documentation (pull_request) Successful in 7s
CI Pipeline / canary (pull_request) Successful in 35s
CI Pipeline / type-check (pull_request) Successful in 30s
CI Pipeline / gitea-offline (pull_request) Successful in 16s
Spec gate (headless) / spec-gate (pull_request) Successful in 24s
CI Pipeline / lint (pull_request) Successful in 51s
CI Pipeline / unit-tests (pull_request) Successful in 3m25s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 4s
deploy / deploy (push) Skipped
CI Pipeline / documentation (push) Successful in 7s
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / gitea-offline (push) Successful in 29s
CI Pipeline / type-check (push) Successful in 55s
CI Pipeline / lint (push) Failing after 1m3s
CI Pipeline / canary (push) Failing after 1m2s
CI Pipeline / unit-tests (push) Failing after 4m31s
CI Pipeline / required-checks (push) Failing after 6s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 11s
2026-09-17 23:25:33 +01:00
conductor 53b4830b08 chore(release): auto-bump version to 0.84.1 — earned by #336 (docs(async-intent): live proof marker (A8/A9))
Auto-version and Release / release (push) Successful in 21s
CI Pipeline / lint (push) Successful in 43s
CI Pipeline / unit-tests (push) Successful in 3m26s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / gitea-offline (push) Successful in 19s
CI Pipeline / required-checks (push) Successful in 5s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 6s
deploy / deploy (push) Successful in 2m6s
Promotion record: #336
2026-09-17 22:57:07 +01:00
conductor fa1b7c4be1 Merge pull request 'docs(async-intent): live proof marker (A8/A9)' (#336) from async-intent-live-proof into master
CI Pipeline / lint (push) Successful in 46s
CI Pipeline / documentation (push) Successful in 9s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / canary (push) Successful in 32s
Auto-version and Release / release (push) Successful in 27s
CI Pipeline / unit-tests (push) Successful in 3m30s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / required-checks (push) Successful in 2s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 6s
deploy / deploy (push) Successful in 1m43s
2026-09-17 22:56:32 +01:00
Nick 246f26663d docs(async-intent): live-proof marker for A8-A10 workflows
CI Pipeline / best-practices (push) Successful in 9s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / canary (push) Successful in 36s
CI Pipeline / lint (push) Successful in 45s
CI Pipeline / type-check (push) Successful in 28s
CI Pipeline / gitea-offline (push) Successful in 16s
deploy / deploy (push) Skipped
CI Pipeline / unit-tests (push) Successful in 3m20s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 4s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 1s
CI Pipeline / best-practices (pull_request) Successful in 9s
CI Pipeline / documentation (pull_request) Successful in 6s
CI Pipeline / lint (pull_request) Successful in 45s
CI Pipeline / canary (pull_request) Successful in 39s
CI Pipeline / type-check (pull_request) Successful in 35s
Spec gate (headless) / spec-gate (pull_request) Successful in 14s
CI Pipeline / gitea-offline (pull_request) Successful in 16s
CI Pipeline / unit-tests (pull_request) Successful in 3m24s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 4s
Auto-version and Release / release (pull_request) Successful in 1m9s
2026-09-17 22:19:35 +01:00
conductor 5718a3ea85 chore(release): auto-bump version to 0.84.0 — earned by # (minor: converged release (push-to-master bump))
Auto-version and Release / release (push) Successful in 20s
CI Pipeline / lint (push) Successful in 41s
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / canary (push) Successful in 37s
CI Pipeline / documentation (push) Successful in 7s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / unit-tests (push) Successful in 3m21s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 8s
deploy / deploy (push) Successful in 3m39s
Promotion record: (unknown)
2026-09-17 22:04:28 +01:00
conductor 02802f321f chore(release): auto-bump version to 0.84.0 — earned by #335 (feat(async-intent): intent normalization at the execution boundary)
Auto-version and Release / release (push) Successful in 23s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 7s
CI Pipeline / lint (push) Successful in 42s
CI Pipeline / unit-tests (push) Successful in 3m19s
CI Pipeline / canary (push) Successful in 27s
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / type-check (push) Successful in 34s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / required-checks (push) Successful in 2s
deploy / deploy (push) Successful in 4m31s
Promotion record: #335
2026-09-17 22:02:43 +01:00
conductor 4ce121a493 Merge pull request 'feat(async-intent): intent normalization at the execution boundary' (#335) from async-intent-normalization into master
CI Pipeline / best-practices (push) Successful in 9s
CI Pipeline / documentation (push) Successful in 9s
CI Pipeline / canary (push) Successful in 34s
CI Pipeline / lint (push) Successful in 51s
CI Pipeline / gitea-offline (push) Successful in 21s
CI Pipeline / type-check (push) Successful in 30s
Auto-version and Release / release (push) Successful in 39s
CI Pipeline / unit-tests (push) Successful in 3m26s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 5s
deploy / deploy (push) Successful in 10m51s
2026-09-17 22:02:15 +01:00
11 changed files with 137 additions and 50 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# Rune
**Current release: v0.83.5**
**Current release: v0.85.0**
**Rune is a persistent personal agent designed to accumulate experience, develop reusable competence, and remain recognisably the same agent even when its underlying foundation model changes.**
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "rune"
version = "0.83.5"
version = "0.85.0"
description = "Rune — a stateful coding assistant with persistent memory, orchestration, and TUI"
requires-python = ">=3.10"
+20
View File
@@ -27,8 +27,28 @@ def main() -> int:
help="USER_EXPLICIT deadline (authoritative)")
n.add_argument("--contract-deadline", default=None,
help="EXTERNAL_CONTRACT deadline (authoritative)")
rb = sub.add_parser("route-bash",
help="route a Bash command expressing wait intent")
rb.add_argument("--command", required=True)
rb.add_argument("--sha-hint", default="")
args = ap.parse_args()
if args.cmd == "route-bash":
record = await_intent.normalize_bash(args.command,
sha_hint=args.sha_hint)
if record is None:
print(json.dumps({"normalized": False,
"reason": "no external continuation intent"}))
return 0
if record.get("normalized") is True:
# the compiled wait needs the SHA: derive from operation_id
oid = str(record.get("operation_id", ""))
if oid.startswith("ci-"):
record["sha_for_wait"] = oid[3:]
await_intent.emit_normalized_record(record)
print(json.dumps(record, sort_keys=True))
return 0
action = {"kind": "await_operation", "sha": args.sha,
"operation_id": args.operation_id,
"op_type": args.model_op_type}
+38 -2
View File
@@ -264,6 +264,24 @@ def ci_alive() -> bool:
return op_ci_alive(DEFAULT_OP_TYPE, os.environ.get("DEPLOY_SHA", ""))
def _set_cognition_state(op: str, state: str) -> None:
"""E-PATCH §12: stamp cognitive quiescence on the durable record so a
fresh process knows cognition is parked (WAITING_EXTERNAL) vs resumable
(RESUMABLE). Best-effort: observability never breaks the wait."""
try:
rec = ew.operation_wait(op)
if rec is None:
return
wait_file = ew.wr_root() / "waits" / f"{rec.get('wait_id')}.json"
if not wait_file.is_file():
return
data = json.loads(wait_file.read_text())
data.setdefault("ext", {})["continuation_state"] = state
wait_file.write_text(json.dumps(data, indent=1, sort_keys=True))
except (OSError, ValueError):
pass
def run(*, sha: str, deadline_secs: int,
watchdog_secs: int = 300,
op_type: str = DEFAULT_OP_TYPE,
@@ -279,6 +297,10 @@ def run(*, sha: str, deadline_secs: int,
"""
spec = op_spec(op_type) # unknown op_type refused upfront
op = f"ci-{sha}"
# A-PATCH: the authority subprocess reads DEPLOY_SHA from the env;
# python-level run() callers (tool normalization flow) must export it.
if sha and not os.environ.get("DEPLOY_SHA"):
os.environ["DEPLOY_SHA"] = sha
t0 = time.time()
# §16Y #10 race fix: the FIFO reader exists BEFORE registration, so a
# wake arriving in the registration window can always be delivered.
@@ -295,7 +317,10 @@ def run(*, sha: str, deadline_secs: int,
watched_for="Gitea CI completion event (replayed from the "
"durable event log)",
provider="gitea", event_type="ci_completed", sha=sha,
watchdog_secs=min(watchdog_secs, deadline_secs))
watchdog_secs=min(watchdog_secs, deadline_secs),
continuation_state="RESUMABLE", # event already arrived
op_type=op_type,
authority=spec["authority"])
registered_at = rec["created_at"]
event_at = time.strftime(
"%Y-%m-%dT%H:%M:%SZ", time.gmtime())
@@ -329,8 +354,12 @@ def run(*, sha: str, deadline_secs: int,
watched_for="Gitea CI completion event (wake; verdict re-read "
f"from canonical {spec['authority']} authority)",
provider="gitea", event_type="ci_completed", sha=sha,
watchdog_secs=min(watchdog_secs, deadline_secs))
watchdog_secs=min(watchdog_secs, deadline_secs),
continuation_state="WAITING_EXTERNAL",
op_type=op_type,
authority=spec["authority"])
registered_at = rec["created_at"]
_set_cognition_state(op, "WAITING_EXTERNAL") # cognition parked
deadline = time.monotonic() + deadline_secs
verdict = "pending"
mode = "event"
@@ -409,6 +438,8 @@ def run(*, sha: str, deadline_secs: int,
if mode == "event":
mode = "deadline_pending"
verdict = normalize_verdict(op_authority_verdict(op_type, sha)) # final one-shot truth
_set_cognition_state(op, "RESUMABLE" if verdict != "pending"
else "RECOVERY_REQUIRED")
verdict_at = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
out = {
"sha": sha,
@@ -441,6 +472,11 @@ def main() -> int:
if not sha:
print(json.dumps({"error": "no sha (DEPLOY_SHA or --sha required)"}))
return 1
# A-PATCH fix: run()'s authority subprocess (deploy_qualify.py) reads
# DEPLOY_SHA from the environment — a CLI `--sha` consumer previously
# got a silent "pending" verdict forever because the var was never
# exported. Export it so the canonical authority can resolve.
os.environ["DEPLOY_SHA"] = sha
return run(sha=sha, deadline_secs=deadline, op_type=op_type)
+1 -1
View File
@@ -6,7 +6,7 @@ This is the main entry point for the Rune program.
import json
from pathlib import Path
__version__ = "0.83.5"
__version__ = "0.85.0"
# One build identity (handoff 2026-09-10 §4): the semantic version above is
# the repo-level truth (auto-bumped at merge); the DEPLOYED revision (exact
+1 -1
View File
@@ -231,7 +231,7 @@ def main() -> int:
)
check(
"Rune minor version advertises provisioning and restore verification",
'__version__ = "0.83.5"' in rune_version,
'__version__ = "0.85.0"' in rune_version,
failures,
)
# #169 policy update: auto-bump on merge is sanctioned (Nick directive:
+17 -2
View File
@@ -171,7 +171,19 @@ def register_process_wait(operation_id: str, *, contract_id: str = "",
provider: str = "builder",
event_type: str = "builder_exit",
sha: str = "",
watchdog_secs: int | None = None) -> dict:
watchdog_secs: int | None = None,
continuation_state: str = "WAITING_EXTERNAL",
op_type: str = "",
authority: str = "",
task_id: str = "") -> dict:
"""E-PATCH §4: the PendingOperation IS the durable continuation object.
continuation_state is first-class cognitive quiescence:
ACTIVE_REASONING | WAITING_EXTERNAL | RESUMABLE | RECOVERY_REQUIRED
op_type/authority record the CANONICAL execution semantics (derived by
intent normalization, never model-supplied). task_id/project bind the
operation to the current programme so fresh-process recovery can
resolve relevance without the model reconstructing state."""
"""Register a durable PROCESS_EVENT wait for one operation. The
per-wait resume_cmd writes a resume token to the operation's FIFO —
the bridge can resume a Python controller, not just MiMo sessions.
@@ -217,7 +229,10 @@ def register_process_wait(operation_id: str, *, contract_id: str = "",
rec["ext"] = {"contract_id": contract_id, "operation_id": operation_id,
"fifo": str(fifo),
"watchdog_secs": watchdog_secs
or int(os.environ.get("WR_WATCH_SECS", "600"))}
or int(os.environ.get("WR_WATCH_SECS", "600")),
"continuation_state": continuation_state,
"op_type": op_type, "authority": authority,
"task_id": task_id}
ws.save(rec)
# cross-user bridge (T16 §16C live finding): the daemon reconciler may
# run under a different account than the registering controller — the
+2 -2
View File
@@ -8,7 +8,7 @@ mode system, subject header, shared memory and identity.
This is not an interface. This is how I see, speak, and interact with the world.
Version: v0.83.5
Version: v0.85.0
Features: 41 (24 original + 17 new native commands)
Usage:
@@ -1885,7 +1885,7 @@ class RuneApp(App):
# Show version info
self.chat_channel.add_message(
"system",
f"[dim]Rune v0.83.5 | Textual TUI | {len(loaded)} native modules[/dim]",
f"[dim]Rune v0.85.0 | Textual TUI | {len(loaded)} native modules[/dim]",
)
# Auto-show night mode suggestion if evening/night hours
+6
View File
@@ -0,0 +1,6 @@
{"action": "ContinuePendingOperation", "at": "2026-09-17T20:50:30Z", "authority": "ci_runs", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "matched_by": "pending_match", "model_deadline_ignored": true, "model_op_type_ignored": true, "normalized": true, "op_type": "branch_ci", "operation_id": "ci-756ebe6f45ad83a919738539a1565c17ed8572ac"}
{"action": "ContinuePendingOperation", "at": "2026-09-17T20:51:20Z", "authority": "deploy_qualify", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "evidence": "commit_ancestor_of_master", "model_deadline_ignored": true, "model_op_type_ignored": true, "normalized": true, "op_type": "master_ci", "operation_id": "ci-f7256aa29e8bc7aa365ad7ffa27eb557528ccca5"}
{"action": "ContinuePendingOperation", "at": "2026-09-17T21:50:39Z", "authority": "ci_runs", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "evidence": "commit_on_feature_branch", "model_deadline_ignored": true, "model_op_type_ignored": true, "normalized": true, "op_type": "branch_ci", "operation_id": "ci-246f26663d8fa2aba3a16039c86feb13a6d0bd2c"}
{"action": "ContinuePendingOperation", "at": "2026-09-17T21:53:34Z", "authority": "ci_runs", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "evidence": "commit_on_feature_branch", "model_deadline_ignored": false, "model_op_type_ignored": false, "normalized": true, "op_type": "branch_ci", "operation_id": "ci-246f26663d8fa2aba3a16039c86feb13a6d0bd2c"}
{"action": "ContinuePendingOperation", "at": "2026-09-17T21:55:05Z", "authority": "ci_runs", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "evidence": "commit_on_feature_branch", "model_deadline_ignored": false, "model_op_type_ignored": false, "normalized": true, "op_type": "branch_ci", "operation_id": "ci-246f26663d8fa2aba3a16039c86feb13a6d0bd2c"}
{"action": "ContinuePendingOperation", "at": "2026-09-17T23:19:18Z", "authority": "ci_runs", "deadline_provenance": "GOVERNED_OPERATION_POLICY", "deadline_secs": 1800, "matched_by": "sleep_poll_intent", "model_deadline_ignored": true, "model_op_type_ignored": false, "normalized": true, "op_type": "branch_ci", "operation_id": "ci-756ebe6f45ad83a919738539a1565c17ed8572ac", "raw_command_kind": "sleep_poll", "raw_sleep_seconds_suppressed": 150}
+45 -40
View File
@@ -8,157 +8,162 @@
"gate_id": "A10_LIVE_MASTER_DEPLOY_PROOF",
"mandatory": true,
"requirement": "live master CI -> deploy with normalization evidence",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Post-merge master 53b4830: canonical continuation master_ci/deploy_qualify through deadline with 4 internal re-arms, then event_replayed success 0.771s on re-arm; deployed current == 53b4830 (0.84.1, ",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A11_REGRESSION_TESTS",
"mandatory": true,
"requirement": "deterministic test matrix green; existing wait tests unbroken",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "tests/test_await_intent.py 14/14 (A-H matrix + derivation truth table + provenance + observability). Existing wait suites unbroken: test_ci_event_wait 11/11, test_single_logical_await 9/9, test_event_",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A12_RAW_SELF_AUDIT",
"mandatory": true,
"requirement": "post-fix stream classified; no model scheduling choice affected execution",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Post-fix stream classified: all 5 normalizations in store/await_intent_log.jsonl have deadline_provenance=GOVERNED_OPERATION_POLICY; MODEL_DURATION_ACTUALLY_USED_COUNT=0; MODEL_SUPPLIED_OP_TYPE_COUNT_",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:25:09Z"
},
{
"gate_id": "A13_FINAL_RUNTIME_CONVERGENCE",
"mandatory": true,
"requirement": "git==release==deployed==runtime==healthy",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "master 53b4830 == deployed current == runtime identity 0.84.1 (deployed 22:04:56Z) == healthy; last-good fa1b7c4; tags v0.84.1. Final CI on the normalization-layer commit (8a8d353, PR #335) also green",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A1_INTENT_NORMALIZATION_BOUNDARY_PROVEN",
"mandatory": true,
"requirement": "earliest deterministic boundary identified + normalization implemented there (not prompt, not guard)",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Root-cause traced: harness tool accepted model op_type/deadline BEFORE PendingOperation creation \u2014 the wait record was BORN from model args. Fix: scripts/await_intent.py normalize_action/derive_op_typ",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A2_PENDING_OPERATION_IS_WAIT_AUTHORITY",
"mandatory": true,
"requirement": "stored operation truth (op_type/authority/timing) wins over model args",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Stored normalized records (ext.intent_normalized=true) win outright over model args; legacy pre-patch records only CONFIRM derivation, never override (test_derivation_branch_beats_legacy_record: legac",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A3_MODEL_TIMING_NON_AUTHORITATIVE",
"mandatory": true,
"requirement": "MODEL_DURATION_ACTUALLY_USED_COUNT=0 for canonical flows; provenance recorded",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Timing provenance order USER_EXPLICIT > EXTERNAL_CONTRACT > GOVERNED_OPERATION_POLICY; MODEL_INVENTED classified then discarded (classify_timing_provenance + tests). Live/audit: MODEL_DURATION_ACTUALL",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A4_MODEL_OP_TYPE_NON_AUTHORITATIVE",
"mandatory": true,
"requirement": "MODEL_SUPPLIED_OP_TYPE_COUNT_USED=0; stored/derived authority wins",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Derivation: normalized record > open PR (pull_request_checks) > ancestor-of-master (master_ci) > feature branch (branch_ci); legacy records never override. Live: model emitted master_ci for branch sha",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A5_SLEEP_POLL_INTENT_NORMALIZED",
"mandatory": true,
"requirement": "sleep/check/poll intent for a known pending op compiles to canonical continuation; literal sleep not executed",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "normalize_bash: \"sleep 300 && check CI for <sha>\" -> ContinuePendingOperation with raw_sleep_seconds_suppressed=300 (test_sleep_check_normalized); plain \"sleep 5\"/\"sleep 2 && ls\" NOT routed (test_plai",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A6_EXPLICIT_REAL_DEADLINES_PRESERVED",
"mandatory": true,
"requirement": "USER_EXPLICIT and CONTRACT deadlines retained with provenance",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "USER_EXPLICIT: user_deadline=600 -> provenance USER_EXPLICIT, 600 retained (test_user_deadline_preserved). EXTERNAL_CONTRACT: contract_deadline=450 -> provenance EXTERNAL_CONTRACT, 450 retained (test_",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A7_AMBIGUITY_FAILS_SAFE",
"mandatory": true,
"requirement": "multiple genuinely ambiguous pending ops -> structured ambiguity, no guess",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Multiple pending ops with no target -> normalized:\"AMBIGUOUS\" with structured candidate ids, no guess (test_ambiguous_fails_safe + live: normalize_action({}) returned AMBIGUOUS with both candidates).",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A8_LIVE_BRANCH_CI_PROOF",
"mandatory": true,
"requirement": "live branch push -> CI with normalization evidence",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "Live branch push 246f2666 (async-intent-live-proof). Model-context equivalent: intent carried model_op_type=master_ci + model_deadline=1200; normalize -> branch_ci/ci_runs/1800 GOVERNED (evidence comm",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
},
{
"gate_id": "A9_LIVE_PR_MERGE_PROOF",
"mandatory": true,
"requirement": "live PR checks -> merge with normalization evidence",
"status": "UNRUN",
"evidence": "",
"status": "PASS",
"evidence": "PR #336 created for the same sha; PR checks reached terminal via single-logical await (pull_request_checks authority -> event_replayed success 10.1s after internal waits); PR merged by merge-on-green.",
"blocker": "",
"waiver_reason": "",
"waived_by": "",
"declared_at": "2026-09-17T20:43:47Z",
"resolved_at": ""
"resolved_at": "2026-09-17T22:24:27Z"
}
]
],
"can_accept_result": {
"ok": true,
"blockers": []
},
"verdict": "ASYNC_INTENT_NORMALIZATION_COMPLETE"
}
@@ -0,0 +1,5 @@
# ASYNC INTENT LIVE PROOF
This file exists so a real branch push/CI/deploy cycle
can exercise intent normalization end to end (A8-A10).
Created 2026-09-17 by the corrective patch tranche.