Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
749a61a
feat(harness): hosted world handle over per-world postgres stores
khushalsonawat Aug 24, 2026
f286df7
feat(harness): align runner return conventions with the world-handle …
khushalsonawat Aug 24, 2026
e656354
feat(harness): environment-bundle.v2 manifest models
khushalsonawat Aug 24, 2026
f617f02
feat(harness): pre-provision preflight and the bundle seal
khushalsonawat Aug 24, 2026
722b12d
feat(harness): in-sandbox process provisioner — build, spawn, readiness
khushalsonawat Aug 25, 2026
1260a38
feat(harness): outbound channels — capabilities, canonicalization, sp…
khushalsonawat Aug 25, 2026
43ee151
feat(harness): hosted scheduler — world pool, scenario loop, retry, r…
khushalsonawat Aug 25, 2026
116b269
feat(harness): in-sandbox provisioner — seed, baseline, worlds, reset…
khushalsonawat Aug 25, 2026
41319e1
fix(harness): guard the degrade write site and close the provisioner …
khushalsonawat Aug 25, 2026
3b73082
fix(harness): pin the capabilities fixture expiry far-future
khushalsonawat Aug 25, 2026
c1d82ad
fix(harness): scheduler hardening — typed failure pass-through, fence…
khushalsonawat Aug 25, 2026
bd463cb
feat(harness): hosted entrypoint — lifecycle, outbound wiring, exit-c…
khushalsonawat Aug 25, 2026
fb27def
fix(harness): make the psycopg-absent prober test environment-indepen…
khushalsonawat Aug 25, 2026
0b0ddfc
feat(harness): integration pass — provider-resolved failure domains, …
khushalsonawat Aug 25, 2026
ca31f43
feat(harness): scenario-source adapter — bundle documents to runnable…
khushalsonawat Aug 25, 2026
89f1ce2
feat(harness): register scenarios with the platform — receipts now de…
khushalsonawat Aug 26, 2026
ef4c5a7
feat(harness): real-voice CallRunner — the hosted guest places the call
khushalsonawat Aug 26, 2026
ff72caa
feat(harness): surface the voice dispatch identity on runtime metadata
khushalsonawat Aug 26, 2026
0b2e307
fix(harness): deliver mandatory terminal artifacts, redact stored rec…
khushalsonawat Aug 26, 2026
7c16cbd
feat(harness): preflight guards for per-world agent names and storele…
khushalsonawat Aug 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
695 changes: 695 additions & 0 deletions src/fi/alk/harness/bundle_v2.py

Large diffs are not rendered by default.

730 changes: 730 additions & 0 deletions src/fi/alk/harness/call_runner.py

Large diffs are not rendered by default.

18 changes: 14 additions & 4 deletions src/fi/alk/harness/checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,23 @@ def run_check(
return Outcome(
name,
False,
f"the check raised {type(failed).__name__}: {failed}",
f"the check raised {type(failed).__name__}: {str(failed)[:200]}",
broken=True,
)

if said is None or said is True:
if said is None or said is True or (isinstance(said, str) and not said.strip()):
return Outcome(name, True)
return Outcome(name, False, str(said) if said is not True else "")
if said is False:
return Outcome(name, False, "False")
if not isinstance(said, str):
return Outcome(
name,
False,
f"the check returned {type(said).__name__} {repr(said)[:200]}; a check returns a "
"sentence naming what is wrong, or None when it held.",
broken=True,
)
return Outcome(name, False, said)


def all_held(outcomes: Sequence[Outcome]) -> bool:
Expand Down Expand Up @@ -120,7 +130,7 @@ def run_world_check(
return Outcome(
name,
False,
f"the check raised {type(failed).__name__}: {failed}",
f"the check raised {type(failed).__name__}: {str(failed)[:200]}",
broken=True,
)
return Outcome(name, said is None, "" if said is None else str(said))
18 changes: 16 additions & 2 deletions src/fi/alk/harness/folder.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@
if len(_sys.argv) > 2:
_calls = [_Call(**_one) for _one in _json.loads(_Path(_sys.argv[2]).read_text())]
_said = check(_world, _calls)
print("held" if _said is None else f"FAILED: {_said}")
raise SystemExit(0 if _said is None else 1)
_held = _said is None or _said is True or (isinstance(_said, str) and not _said.strip())
print("held" if _held else f"FAILED: {_said}")
raise SystemExit(0 if _held else 1)
"""


Expand Down Expand Up @@ -99,10 +100,23 @@ def _run(source: str, name: str, entry: str, *args: Any) -> Outcome:
if said is None or said is True or (isinstance(said, str) and not said.strip()):
return Outcome(True)
if said is False:
# Bare False from ready() names no precondition, so a scenario that hits it cannot be
# told apart from one whose ready.py is simply wrong — that is our mistake, not a
# generation-time precondition failure, so ready() alone reports it broken.
return Outcome(
False,
f"{name} returned False without saying what is wrong. Return the sentence instead, "
"or None if it holds.",
broken=(entry == "ready"),
)
if entry == "ready" and not isinstance(said, str):
# Same reasoning as bare False, widened: ready() has no way to turn a non-string value
# into a precondition sentence, so any of them is our mistake rather than the world's.
return Outcome(
False,
f"{name} returned {type(said).__name__} {repr(said)[:200]}. Return the sentence "
"naming what is missing, or None if it holds.",
broken=True,
)
return Outcome(False, str(said))

Expand Down
1,969 changes: 1,951 additions & 18 deletions src/fi/alk/harness/hosted_entrypoint.py

Large diffs are not rendered by default.

Loading
Loading