c0mbatduckzz's picture
Publish WQK 0.6 formal specification, use cases and verified release (part 2)
767a051 verified
Raw History Blame Contribute Delete
6.66 kB
"""Command-line interface for the corrective TOM World & Query Kernel 0.4.1."""
from __future__ import annotations
import argparse
import json
import shutil
from pathlib import Path
from typing import Any, Mapping
from tom_world03.canonical import canonical_bytes
from tom_world03.rational import Q
from .baseline import trusted_piecewise_baseline
from .engine import run_continuation
from .index import build_interval_index
from .io import load_record, load_world
from .journal import ContinuationStore
from .model import OpenSegment
from .solver import next_event_set
def _write(value: Mapping[str, Any] | list[Any], destination: str | None = None) -> None:
data = canonical_bytes(value) + b"\n"
if destination:
path = Path(destination)
path.parent.mkdir(parents=True, exist_ok=True)
path.write_bytes(data)
print(json.dumps(value, indent=2, sort_keys=True))
def _segment(path: str | None, world_initial: OpenSegment) -> OpenSegment:
if path is None:
return world_initial
return OpenSegment.from_record(load_record(path))
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(
prog="tom-world04r",
description="Corrective 0.4.1 piecewise continuation kernel based only on corrected 0.3",
)
sub = parser.add_subparsers(dest="command", required=True)
p_validate = sub.add_parser("validate", help="validate a 0.4.1 world and its immutable interval index")
p_validate.add_argument("world")
p_index = sub.add_parser("index", help="rebuild the exact immutable interval index")
p_index.add_argument("world")
p_index.add_argument("--output")
p_next = sub.add_parser("next-event", help="find the next solver-derived event set")
p_next.add_argument("world")
p_next.add_argument("--segment", help="optional content-addressed open segment JSON; defaults to initial segment")
p_next.add_argument("--after")
p_next.add_argument("--before")
p_next.add_argument("--planner", choices=("indexed", "exhaustive"), default="indexed")
p_next.add_argument("--refine-steps", type=int)
p_next.add_argument("--output")
p_run = sub.add_parser("run", help="continue a world to its declared horizon")
p_run.add_argument("world")
p_run.add_argument("--planner", choices=("indexed", "exhaustive"), default="indexed")
p_run.add_argument("--max-event-sets", type=int)
p_run.add_argument("--output")
p_baseline = sub.add_parser("baseline", help="run the independent stdlib Fraction baseline")
p_baseline.add_argument("world")
p_baseline.add_argument("--output")
p_persist = sub.add_parser("persist", help="initialize a fresh journal and persist the complete continuation")
p_persist.add_argument("world")
p_persist.add_argument("store")
p_persist.add_argument("--planner", choices=("indexed", "exhaustive"), default="indexed")
p_persist.add_argument("--replace", action="store_true")
p_persist.add_argument("--output")
p_audit = sub.add_parser("audit", help="audit every reachable journal object and ancestry link")
p_audit.add_argument("store")
p_audit.add_argument("--allow-orphans", action="store_true")
p_audit.add_argument("--output")
p_reconstruct = sub.add_parser("reconstruct", help="reconstruct the semantic continuation chain from a journal")
p_reconstruct.add_argument("store")
p_reconstruct.add_argument("--output")
args = parser.parse_args(argv)
if args.command == "validate":
raw, world = load_world(args.world)
_write({
"schema": "TOM-WORLD-0.4.1-VALIDATION-SUMMARY",
"status": "valid",
"world_hash": world.content_hash,
"world_bytes": len(canonical_bytes(raw)) + 1,
"relations": len(world.relations),
"horizon": world.horizon.to_record(),
"initial_segment_hash": world.initial_segment.content_hash,
"corrected_v03_zip_sha256": world.corrected_v03_zip_sha256,
"corrected_interval_sha256": world.corrected_interval_sha256,
"prior_v0_4_used_as_source": False,
})
return 0
if args.command == "index":
_, world = load_world(args.world)
record = build_interval_index(world.relations, seed_sha256=world.seed_sha256)
_write(record, args.output)
return 0
if args.command == "next-event":
_, world = load_world(args.world)
segment = _segment(args.segment, world.initial_segment)
record = next_event_set(
world,
segment,
after=None if args.after is None else Q.from_value(args.after),
before=None if args.before is None else Q.from_value(args.before),
planner=args.planner,
refine_steps=args.refine_steps,
)
_write(record, args.output)
return 0
if args.command == "run":
_, world = load_world(args.world)
result = run_continuation(world, planner=args.planner, max_event_sets=args.max_event_sets)
_write(dict(result.record), args.output)
return 0
if args.command == "baseline":
raw, _ = load_world(args.world)
_write(trusted_piecewise_baseline(raw), args.output)
return 0
if args.command == "persist":
raw, world = load_world(args.world)
store_path = Path(args.store)
if store_path.exists() and args.replace:
shutil.rmtree(store_path)
store = ContinuationStore.initialize(
store_path,
Path(args.world).resolve().parents[2].joinpath("TOM_seed_genome_2026-09-01.txt").read_bytes()
if Path(args.world).resolve().parents[2].joinpath("TOM_seed_genome_2026-09-01.txt").exists()
else Path("TOM_seed_genome_2026-09-01.txt").read_bytes(),
raw,
world,
)
result = run_continuation(world, planner=args.planner, store=store)
_write({
"schema": "TOM-WORLD-0.4.1-PERSISTED-RUN",
"run": dict(result.record),
"audit": store.audit(),
"reconstruction": store.reconstruct(),
}, args.output)
return 0
if args.command == "audit":
store = ContinuationStore(args.store)
record = store.audit(require_no_orphans=not args.allow_orphans)
_write(record, args.output)
return 0 if record["valid"] else 1
if args.command == "reconstruct":
store = ContinuationStore(args.store)
_write(store.reconstruct(), args.output)
return 0
return 2
if __name__ == "__main__":
raise SystemExit(main())