Skip to content

CL-6324: prove each deploy shape's own bracket, and cut agent-directory authoring to source form - #104

Closed
TheGreatAxios wants to merge 5 commits into
cl-6324-launch-bodyfrom
cl-6324-finish
Closed

CL-6324: prove each deploy shape's own bracket, and cut agent-directory authoring to source form#104
TheGreatAxios wants to merge 5 commits into
cl-6324-launch-bodyfrom
cl-6324-finish

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Stacked on #103.

Proof 2, per shape

The harness stopped asserting a workflow-host RunStarted for a folded step-mode run — that shape never emits one, which is why the earlier revision hung on it. Each shape is now asserted against the artefact it really produces:

  • step: no per-occurrence child run at all (asserted, not footnoted), plus the durable message.run.started/message.run.ended bracket read back as an insights turn-latency sample through GET /insights/latency.
  • section: a real mode: "section" deploy — rendered into its own source package, pushed as a workflow-kind asset, deployed by source-ref, driven with real mail. turn__0 carries RunStarted, StepStarted, StepCompleted, RunCompleted; the parent carries ChildSpawned, ChildCompleted, SignalAwaited.

That section pass is CL-6329's first live validation — the mode existed as a config argument and nothing had ever deployed or run one.

Proof 4 fails, and the failure is the finding

Boot restore does its half: every pin replayed, closure re-materialized, liveness: "ok" 9.2s after the restart. The run inside comes back terminal. The folded chat run refuses inbound mail (workflow run '...' is terminal) and the section deployment answers 409 workflow_run_terminal. onBodyFailure: "continue" cannot help — the failure is on the top-level run, not on a body occurrence. Details and timings in docs/revendor-inventory.md.

Agent-directory authoring cutover

The authoring lineage no longer writes the retired workflow.json envelope validatePush refuses. The renderer (and a reader) moved into a new dependency-free @corbits/workflow-source that hub-client, agent-runtime, agent-directory, evals, and the hub's planner deploy all consume; RetiredWorkflowEnvelopeError answers a pre-cutover asset as a 409 at every route boundary. Old write path deleted, not gated.

Repo typecheck 0. Touched suites green (agent-directory, workflow-source, hub-client, agent-runtime, evals, apps/hub).

Every agent-definition write is asserted as the two-file source tree a
workflow-kind asset now accepts — a package.json declaring the
interchange.workflow entry plus that entry module — with the definition
recovered back out of the entry through the same reader the routes use.

Adds red/green coverage for the named retirement error: an asset whose
tree still holds a bare workflow.json answers 409 at every route
boundary that can reach it, and writes nothing.
A workflow-kind asset accepts only a source codebase — a package.json
declaring an interchange.workflow entry plus that entry module — so the
agent-directory authoring lineage no longer writes the retired
workflow.json envelope.

The renderer moves out of @workbench/hub-client (and out of its second
copy in @corbits/agent-runtime) into a new dependency-free package,
@corbits/workflow-source, which both consume alongside a reader that
recovers the definition from the entry module's exact bytes. A missing
or non-source entry throws RetiredWorkflowEnvelopeError, which each
agent-directory route module answers as a 409 with re-author guidance
rather than letting it read as a server fault.

@corbits/agent-directory's definition-asset.ts is the lineage's single
seam onto that pair; the create core, the read/modify/write routes,
apps/hub's planner deploy, and the evals world snapshot all route
through it instead of naming an asset path apiece.

Both new library packages carry the canonical LGPL-2.1 text that
check:licenses requires.
Item 5 of the CL-6324 second-boot list is closed, with a section on
where the shared renderer and reader now live and where the named
retirement error is mapped.
A folded step-mode run is one unbounded step servicing every inbound
mail, so it never publishes a workflow-host RunStarted per message. The
harness stopped asserting one and now asserts what that shape actually
produces: no per-occurrence child run at all, plus the durable
message.run.started/ended bracket, read back as an insights turn-latency
sample through the tenant's own latency route.

Adds the section shape alongside it. The proof renders a mode: "section"
agent-runtime config into its own source package, pushes it as a
workflow-kind asset, deploys it by source-ref, and drives it with real
mail — so every message becomes an onTrigger occurrence with its own
child run id and its own event log, which is where RunStarted really
lives. Proof 4 kills the sidecar mid-occurrence in both shapes and
asserts the section runs another occurrence after boot restore, which is
onBodyFailure: "continue" doing its job.

Two environment facts the harness now handles explicitly rather than
leaving to chance: the model is named by E2E_OLLAMA_MODEL instead of
taken from the curated catalog seed, and the bench catalog is narrowed to
that one model so a turn's model is not decided alphabetically among the
embedding models a live Ollama connect also seeds.
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Landed via the stack tip: PR #108 (merge fbf0852) contains this branch's commits in full.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant