You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Two production-shaped examples alongside BDR, each adapted from a
real production skill with all identifiers fictionalized: examples/ops-report/ (the 100%-roteness archetype — every step
deterministic, one durable HITL gate, zero LLM nodes; the fixture for
the python adapter's durable-execution refusal) and examples/deal-monitor/ (the data-heavy archetype — parallel entry
waves, fan-out judges, template render replacing LLM-generated HTML;
the calibration fixture for the payload-aware estimator). tests/test_examples.py guards every example's expected IR, including
that its source_skill pointer resolves.
Payload-aware "before" cost estimator — the static scorecard now
models the data a skill pulls into context, not just its turn count.
The compiled pipeline's external_call footprint sizes the agent-side
context payload (tokens_per_external_call_result, default 6k/call,
with a per-MCP-tool override table payload_tokens_per_tool), folded
into C₀ of the cache-aware transcript model. Calibrated against a real
data-heavy production skill (Slack + Gmail dashboard, ~22 turns,
~1.6M cache-read tokens/run): the old flat prior underestimated the
before-cost 5–15×; the payload-aware default lands within ~3×, and one eval --run calibration brings it within ~10%.
rote eval --run's suggested prior re-fits now include transcript_growth_per_turn, inverted from measured cache-read tokens
under the quadratic transcript model — so every empirical run reports
the effective payload-inclusive growth rate alongside seconds_per_turn and output_tokens_per_turn.
CodexDriver is now implemented — rote compile --agent codex
spawns codex exec (OpenAI Codex CLI) as a compiler backend,
completing the three-driver lineup. Runs headless under a workspace-write sandbox (global reads so it can read the skill +
rubric in place, writes confined to the work dir, no network). The
environment is passed through untouched — a stored codex login
session is only overridden by CODEX_API_KEY/CODEX_ACCESS_TOKEN,
not OPENAI_API_KEY, and there is no separate OpenAI-API driver, so
no auth is forced. Verified against the real CLI (codex-cli 0.142.4).
rote analyze is now implemented — the plan to compile's apply. Runs the compiler against a skill and prints a structural
report (node-kind breakdown, roteness — matching rote eval — plus
mandatory checks, HITL gates, agent loops, and which runtimes can
target it) without emitting runtime code. --json for a
machine-readable report; --out keeps the compiled IR for a later rote emit. Previously a stub that printed "not yet implemented".
Changed
source_skill no longer participates in the pipeline hash — it's
provenance (a filesystem path the compiler re-points per output
location), and hashing it minted a new workflow type on every
re-compilation to a different directory, re-versioning in-flight
workflows whose behavior didn't change. Same rule as Node.source,
which was already excluded. One-time consequence: every pipeline's
hash (and therefore emitted workflow type name) changes once with this
release; in-flight workflows on the old type names continue on old
code as designed.
Fixed
The codex driver no longer raises NotImplementedError when
selected via --agent codex or chosen by auto-detect (a first-run
crash for users who had the Codex CLI but not Claude Code installed).
The BDR example's committed IR baseline carried the same dead source_skill pointer the orchestrator fix addresses
(../../skill resolved to a nonexistent examples/skill), so rote eval on the canonical example silently dropped its before-side
baseline. Corrected to ../skill; now regression-guarded for every
example.
rote compile/rote analyze --out now re-point the pipeline's source_skill to resolve from the emitted pipeline.yaml's location
(relative when possible, absolute otherwise). The agent records the
path relative to its temp work dir — deleted when the run ends — so
every kept compilation carried a dead pointer and a later rote eval
silently dropped the entire before-side baseline ("source_skill did
not resolve — emitting the after-side only"). Found by compiling a
real production skill.