MODEL OUTPUT = INTENT; RUNE CONTROLLER = EXECUTION SEMANTICS. scripts/await_intent.py: deterministic resolver that derives canonical op_type from stored normalized records / open PRs / git ancestry — model supplied op_type and deadline_secs are recorded but NEVER used as policy (git/Gitea truth outranks even legacy wait records). Sleep/check/poll intent aimed at a known pending operation compiles to ContinuePendingOperation; plain legitimate sleeps are untouched. Timing provenance: USER_EXPLICIT/EXTERNAL_CONTRACT authoritative, MODEL_INVENTED discarded. Ambiguity fails safe with structured candidates. await_intent_cli.py = tool surface; compact JSONL observability per normalization. await-operation.ts rewired to normalize before dispatch (needs commit of harness tool separately).
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
"""await_intent_cli.py — CLI surface for the intent normalization layer.
|
|
|
|
Used by the await-operation harness tool so the MODEL's scheduling hints
|
|
never reach the wait engine. Prints one JSON line.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
import await_intent # noqa: E402
|
|
|
|
|
|
def main() -> int:
|
|
ap = argparse.ArgumentParser(description=__doc__)
|
|
sub = ap.add_subparsers(dest="cmd", required=True)
|
|
n = sub.add_parser("normalize", help="normalize a continuation intent")
|
|
n.add_argument("--sha", default="")
|
|
n.add_argument("--operation-id", default="")
|
|
n.add_argument("--model-op-type", default=None)
|
|
n.add_argument("--model-deadline", default=None)
|
|
n.add_argument("--user-deadline", default=None,
|
|
help="USER_EXPLICIT deadline (authoritative)")
|
|
n.add_argument("--contract-deadline", default=None,
|
|
help="EXTERNAL_CONTRACT deadline (authoritative)")
|
|
args = ap.parse_args()
|
|
|
|
action = {"kind": "await_operation", "sha": args.sha,
|
|
"operation_id": args.operation_id,
|
|
"op_type": args.model_op_type}
|
|
model_deadline = (int(args.model_deadline)
|
|
if args.model_deadline else None)
|
|
user_deadline = (int(args.user_deadline)
|
|
if args.user_deadline else None)
|
|
contract_deadline = (int(args.contract_deadline)
|
|
if args.contract_deadline else None)
|
|
record = await_intent.normalize_action(
|
|
action, model_deadline=model_deadline,
|
|
user_deadline=user_deadline, contract_deadline=contract_deadline)
|
|
await_intent.emit_normalized_record(record)
|
|
print(json.dumps(record, sort_keys=True))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|