Run Skywalker as primary with a closed director fleet - #466
Merged
Conversation
TheGreatAxios
force-pushed
the
cl-orchestrator-play
branch
2 times, most recently
from
August 19, 2026 05:13
3daf0c6 to
e0c5e00
Compare
Orchestrator is the only product path (CL-5814): drop the first-run mode picker, Settings session-mode rows, and dual-mode prompt/tool branching. Legacy sessionMode on disk still loads without error and is ignored. Also land the Level-1 closed director registry (16 ids + resolve + intent defaults) so leaf packages can fill in place (CL-5818).
Document the CL-5814 product break: orchestrator-only primary, legacy sessionMode ignored, first-run picker and Settings rows gone.
Panel-owned tools no longer paint stream rows; fleet report only announces terminal/stall transitions so the board owns live state.
Require real director prompts (not placeholders) and assert task resolves directors and intents before the registry and dispatch path ship full packages.
Replace placeholder registry entries with the closed sixteen packages, project them as default profiles, and resolve named or intent-only task dispatches from the fleet.
Skywalker is the primary system role. Leaves mount small tool allowlists instead of deny-everything, and docs directors lock write_file/edit_file paths at the permission gate so prompt policy is not the only fence.
PRODUCT, ARCHITECTURE, and IMPLEMENTATION now describe Skywalker, the 16-package registry, spawn matrix, intent map, and writePaths. Registry tests cover greybeard spawn, review envelopes, and primary stance.
Close the two dogfood gaps greybeard flagged: nested directors pass spawn.allowlist into nested task so greybeard cannot mint implement, and task without agent or intent fails closed instead of a generic leaf.
…rator Wire director identity headers (agent id, modelRole, optionalSkills) into profiles and spawn, drive leaf effort from modelRole, inject arch/runtime into the env block, and make never-implement structural on the primary tool surface instead of prompt-only.
… honesty Stack agents and tasks under the transcript so fleet work sits next to the prompt, and stop telling Skywalker that product write tools are how files change when those tools are unmounted.
Transcript fleet notices drop per-lane done walls; chrome shows either the board or the checklist, not both; done-only task lists collapse.
Docs directors no longer mount run_shell so writePaths cannot be bypassed via shell. Bare allowlist names match only the workspace root file. Remove unused taskCallIds machinery from the runtime bridge.
The write-path allowlist matched the raw subject in addition to the resolved workspace-relative path, so a glob like docs/* could accept docs/../src/hack.ts (the subject string starts with docs/ even though the resolved path escapes to src/). It also fell through to pattern matching for paths resolving outside cwd. Resolve the subject against cwd first and hard-deny anything outside cwd without ever matching the raw subject. Globs now match only the workspace-relative path, and bare names still compare root-only. Also compose DOCS_TOOLS from READ_TOOLS minus run_shell so it tracks the read surface instead of duplicating it. Add tests for traversal escape, outside-cwd absolute paths, and the existing positive cases.
Bumps the vendor pin table to ad0f99e7977b3ad4f28d8cc8d446ac52a4a2d685 (2026-08-10) and pulls the verbatim @intx/types package forward. Also fixes a storage-isogit package-name typo in the pin table.
Carries the 17 locally-patched markers forward onto ad0f99e7 (startupDeliveries, ADAPTIVE_THINKING_MODELS, deps context-transforms forwarding, stream-terminal detector, abort-reason classification, getTurnsRevision, snapshot memoization, etc.). See vendor/intx-inference/PATCHES.md.
Wide terminals (>=100 cols) put live workers on a right rail so the transcript stays readable; narrow width still stacks. Document the layout and keep geometry/chrome tests covering dual vs stack.
Lead PRODUCT with the local multi-agent harness framing so progress and cost visibility sit next to implement/verify/land.
Implement stops on success_criteria with a criteria report map; explore prefers one pass then a scannable Findings map; Skywalker scales fan-out, requires typed multi-leaf briefs, and defaults critique after multi-file ship. Critique stays correctness-only. Harness facts surface turn budgets and no early-stop on compaction.
Implement and critique treat sync→async signature drift as blocking; Skywalker skips explore/critique on tiny green ships and re-dispatches implement on blocking findings. complex-jwt states the sync Response contract; complex-stock-gate adds multi-file mutable-state coverage.
Document director API-contract / simple-path loop in Unreleased; keep the new stock-gate case and jwt sync grader wording with the shipped packages.
Third complex eval stresses header-driven multi-file state (Idempotency-Key). Skywalker Fetch URLs section steers primary at mounted web_fetch instead of shell thrash on URL-read tasks.
Document the third complex capability case and Skywalker primary URL path alongside the API-contract loop notes.
Raise the agent timeout default, require web_fetch on web-bait, and seed hermetic skill stubs so eval workdirs stop spamming missing-skill noise. Add complex-bugfix, complex-pagination, and complex-rename-user plus a buggy-service fixture patterned after SWE-bench / Terminal-Bench shapes.
web_fetch/web_search were registered but only discoverable via tool_search, so models thrashed tool_search on web-bait despite Skywalker saying they were mounted. Put both in CATALOG_TOOL_NAMES. Harden the eval harness (20m timeout, requireBehaviors, skill stubs) and add complex-bugfix/pagination/rename-user.
Pin public smoke runs to xai/thegreataxios + grok-4.5, load a single Lite instance, run product exec, and capture preds.jsonl under evals/public/results for later official Docker grading.
Sub-agent work paints as ● Task transcript rows with clock and tool again. The standing FLEET agents board and dual-rail chrome are off so checklist, board, and Task rows no longer restate the same fleet.
Drop DUAL_MIN_COLUMNS / RAIL_WIDTH_* and dual agents-box positioning. Geometry always stacks; live fleet status stays on Task transcript rows.
Ctrl+C now tears down the process, primary agent, and workers in one press. Plain corbits always opens a new session; resume / --resume open the picker.
One press stops a busy run or clears an idle draft; a second press within two seconds exits. Keep resume opening the session picker.
Enter was wrongly labeled as steer-while-queuing-everything and Alt+Enter as reinject. Match Pi-style soft steer at tool.boundary vs follow-up at idle.
Soft steer and follow-up must never call interrupt(); only Ctrl+C hard-stop closes the agent and tears down in-flight task workers.
Headless exec was registering an onAuthURL callback it could never complete, so OAuth-backed MCP servers hung automation. Gate the callback on interactiveAuth: TUI keeps the browser flow; exec and other headless hosts reuse stored tokens only.
Standing plugin diagnostics were easy to miss as startup notices. Keep them as a prompt attention mark shared with mcp !\, attribute warnings per plugin, and show them in the /plugins surface. Also document the current Enter steer / Alt+Enter queue / Ctrl+C stop mid-run gestures.
Fleet board chrome and stall bang blink are intentionally off; transcript Task rows and working chrome own that status. The duplicate grok-responses unit test still expected summary auto after the adapter moved to detailed.
TheGreatAxios
force-pushed
the
cl-orchestrator-play
branch
from
August 19, 2026 07:36
5fd36a3 to
90c3222
Compare
@intx/agent snapshots dispatch names at createAgent. MCP tools arrive later, and the post-connect reload waited for every server including OAuth-blocked ones. tool_search listed them; invoke returned unknown tool. Fall through to the live runner until upstream consults current definitions.
Older result files omit the field; parse defaults from the per-name map so the frozen baseline still loads.
Informational only until a deliberate baseline refreeze. The dispatch case requires at least one task call plus a working route; the recall case does not assert that compaction fired.
TheGreatAxios
commented
Aug 19, 2026
TheGreatAxios
left a comment
Collaborator
Author
There was a problem hiding this comment.
Review · Comment
Corbits Code runs Skywalker as the primary director, routes closed director dispatch, and reshapes the TUI/fleet surfaces.
Findings
evals/capability/behaviors.ts:228— The fingerprint separator is an actual NUL byte (\0) in a TypeScript source file, sogit diff origin/main...HEAD --statreportsevals/capability/behaviors.tsasBin 10132 -> 10605 bytes. That hides the source diff from normal review tooling and makes the branch look like it ships binary TypeScript; could we use a textual separator such as"\u0000"or structured tuple serialization instead?src/tui/geometry.test.ts:563—git diff --check origin/main...HEADfails on a new blank line at EOF. This keeps the diff from passing the repository whitespace check cleanly.
Notes
- Setup check:
./bin/check-envpasses everything except repo-local hooks config (core.hooksPathis not set to.githooksin this worktree). - Validation run in this review:
bun run buildexits 0, andbun run testexits 0. - Commit-message audit also needs cleanup before merge:
git log origin/main..HEAD --format="%s" | awk "length > 72"returns two over-72 subjects,git log origin/main..HEAD --format="%b" | awk "length > 72"returns multiple over-72 body lines, and the body audit findsCL-*tracker references.
A NUL delimiter made git treat the metrics module as binary. A JSON array owns the name/args boundary without a magic separator.
Shakespeare's write lock now covers the canonical docs/ trio. Bruckheimer is limited to product docs. Skywalker stays the primary session and cannot be spawned as a task leaf.
A tool-less turn after tools is complete only when the four-heading envelope is present. Missing headings get one wrap-up nudge, then an incomplete-report salvage so identical re-dispatch is blocked. Greybeard is told to review itself and never spawn a parallel diagnostic fleet.
Vanilla installs no longer need a sibling agents tree for default skills. Recipes spawn closed directors; convention skills stay use_skill-only.
The one-shot smoke defaulted to a personal prepaid provider profile. Callers now pass --provider and --model so local eval accounts stay off the repo.
Local settings must not pick the model. Capability eval and SWE dry-run now require --provider/--model the same as a real SWE run.
Required style skill told models to refuse if cwd had no .git. Eval fixtures are tmp copies, so GPT stopped on simple-health. Edits are allowed without a repo; eval workdirs get an unsigned fixture commit so isolated workers have HEAD.
Rename Unreleased to 0.2.99 with an operator-facing lead. Write tools stay off the primary.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The primary session is always orchestrator. Its identity is Skywalker: product write tools stay off the primary, and it chains
task(agent=…)for named lanes. The operator does not name a director.taskwithoutagentor a non-generalintentfails closed;task(agent=skywalker)is refusedwritePaths; docs leaves omitrun_shell; optionalwritePathsstill gate path-keyed writes when a profile sets themuse_skillandtool_search; late-connected MCP tools dispatch the same turntool_searchlists themcorbits-skillsaction slashes ship by default; live Task rows replace standing fleet-board chrome--provider/--modelso local settings are not the implicit targetVerification
bun run typecheck,bun run build, andbun run testpassxai/thegreataxios/grok-composer-2.5-fast(explore, critique, greybeard spawn fence, parallel explore+neckbeard, research/plan/testsmith fleet)Fixes CL-5814
Fixes CL-5818
Fixes CL-5817
Fixes CL-5819
Fixes CL-5820
Fixes CL-5821
Fixes CL-5822
Fixes CL-5823
Fixes CL-5824
Fixes CL-5825
Fixes CL-5826
Fixes CL-5827
Fixes CL-5829
Fixes CL-5830
Fixes CL-5838
Fixes CL-5842
Fixes CL-5843
Fixes CL-5844
Fixes CL-5845
Fixes CL-6315
Fixes CL-6538
Fixes CL-6539
Fixes CL-6540
Fixes CL-6541
Fixes CL-6542
Fixes CL-6543
Fixes CL-6544
Fixes CL-6545
Fixes CL-6546
Fixes CL-6547
Fixes CL-6549
Fixes CL-6550
Part of CL-6537
Related to CL-6316
Related to CL-5846
Related to CL-6548
Related to CL-6551
Related to CL-6552
Related to CL-6553
Related to CL-6554