fix: unify executor registration, dispatch and exit verification - #91
Conversation
Independent review — holding this PRAn Blocker
I confirmed this is reachable rather than theoretical. Your own validation is unusually honest and I want to be clear that I read it that way. The gap is narrow: every test and the live probe run after registration succeeded. There is no case covering a spawn on an install where Suggested fix: check for Also worth fixing in the same pass
Confirmed correctThe reviewer specifically verified and I want this on record: the legacy Minor items — the doubled role prompt after registration, the stale built-ins line at Note that Full verdicts and adjudication for all three PRs: |
|
Thanks for catching the upgrade path. You were right: my original live validation only covered an already-registered executor. Addressed in 11d41b8 and 9a546f0:
Validation: 2,711 tests total, 2,640 passed, 71 conditional skips, 0 failures; focused registration/CLI/spawn suites 46/46 passed. Component build, changed-core strict TypeScript, measured inventory/gate and Linux platform smoke passed. Independent follow-up review found no blockers. These are local results; GitHub checks are separate. No installed user roles or hook trust records were changed in this follow-up. The registered prompt still accompanies the inline task instructions; I left that non-blocking prompt-deduplication item for a separate change. Ready for another review of the upgrade compatibility fix. |
# Conflicts: # README.ko.md # README.md # README.zh.md # plugins/codexclaw/components/subagent-config/dist/cli.js # plugins/codexclaw/components/subagent-config/dist/spawn-attach-hook.js # plugins/codexclaw/components/subagent-config/src/cli.ts # plugins/codexclaw/components/subagent-config/src/spawn-attach-hook.ts
…le-registration Keep lidge-jun#110's shared registrar (registerRole) and architect mapping; keep lidge-jun#91's executor resolution: executor spawns use the registered native executor type when $CODEX_HOME/agents/executor.toml exists, otherwise the built-in worker. Tests from both sides retained; dist rebuilt; badges regenerated.
CXC displays and stores
executor, but its spawn hook classifiedagent_type: "executor"as explorer/reviewer, and its exit evidence hook only matchedworker. This change makes executor identity consistent while preserving existing installations that have only built-inworker.executorwhen$CODEX_HOME/agents/executor.tomlexists, otherwise retain built-inworker. The pure payload builder also defaults to worker unless registration is known. Both names use executor settings and the same exit evidence gate.cxc subagents register executor. Content-hash provenance permits updates to unchanged managed prompts, preserving user-edited or differing unmarked files and symlinks. Updates retain the exact previous content as a backup. Identical legacy prompts can be adopted. Registration does not change project model choices, permissions, worker roles or hook trust.Maintainer review follow-up
The missing-registration upgrade path now has a regression test: the original unconditional executor mapping fails; worker fallback passes. Managed prompt updates, user-edit preservation and legacy adoption are tested. Latest
dev(including #92/#93) was incorporated with a normal merge so the published branch history is preserved.Validation
Full combined suite: 2711 total / 2640 passed / 0 failed / 71 conditional skips. Focused registration/CLI/spawn suites: 46 passed. Component build, changed-core strict TypeScript, measured inventory/gate and Linux platform smoke pass. Tests cover concurrent initial registration, conflicts and symlinks, absent/present native roles and the production payload resolver.
The original fresh-session executor probe succeeded before this follow-up. This follow-up changed no installed user roles or settings. Actual modified SubagentStop delivery still requires normal hook reapproval; invoked-entrypoint tests do not prove native hook delivery. No merge or release requested.
Design and evidence:
devlog/_fin/260908_executor_role_registration/.