feat(agentic-harness): make generated orchestrator the hard-gate entry point (v0.6.0)#13
Merged
Merged
Conversation
…y point (v0.6.0)
The generated project CLAUDE.md registered the orchestrator with a soft,
advisory trigger ("For {domain} work, use the {orchestrator} skill. Answer
simple questions directly."), so activation depended on the model heeding a
soft line plus probabilistic skill-description matching — which the harness's
own guide admits is conservative, and maintenance.md lists "user bypassing the
orchestrator" as a known failure mode.
Register it instead as a hard-gate entry point: invoke the orchestrator before
responding to any prompt, with no CLAUDE.md-level bypass. CLAUDE.md is the
highest-priority instruction layer, so a firm standing directive there is the
reliable lever, not the probabilistic description. The triage that used to live
in CLAUDE.md moves into the orchestrator's first phase (Phase 0: intake &
triage), so trivial/off-domain prompts still route through the orchestrator and
are answered quickly without spinning up a team.
- claude-md-pointer.md: entry-point directive + multi-harness composition note
- orchestrator-template.md: entry-point descriptions (templates A/B/C); Phase 0
intake-and-triage front-step; SDD addendum and worked snippets re-headed;
follow-up-keywords note
- harness-setup SKILL.md: Step 5 wording, build bullets, two checklist items
- consistency: harness-review, usage-assessment, maintenance, harness-model
("trigger rule" -> "entry-point directive")
- plugin.json 0.5.0 -> 0.6.0; README
Decisions (user): hard gate on all prompts; CLAUDE.md directive plus
strengthened description, no hook.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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
harness-setupgenerates a per-project orchestrator skill and registers a pointer in the target repo'sCLAUDE.md. Until now that pointer carried only a soft, advisory trigger line:So activation rested on (a) the model voluntarily heeding a soft sentence and (b) probabilistic skill-description matching — which the harness's own
skill-writing-guide.mdadmits is conservative ("the model tends to skip a skill for a task it thinks it can handle bare-handed"), andmaintenance.mdeven lists "the user bypassing the orchestrator" as a known failure mode. The orchestrator was not reliably the entry point.This PR makes the generated
CLAUDE.mdregister the orchestrator as a hard gate: the model must invoke it before responding to any prompt, with no CLAUDE.md-level bypass.CLAUDE.mdis the highest-priority instruction layer, so a firm standing directive there is the reliable lever — not the probabilistic description. The triage that used to live inCLAUDE.md("answer simple questions directly") moves inside the orchestrator's first phase (Phase 0: intake & triage), so a trivial or off-domain prompt still routes through the orchestrator and is answered quickly there, without spinning up a team for every message.This is a behavior change to generated output only — minor and backward-compatible. Existing harnesses keep working; re-running setup/review upgrades them.
User decisions
Changes (9 files)
shared/claude-md-pointer.md(primary) — replaces the soft trigger with an entry-point directive (hard gate); relocates the triage note into the orchestrator; adds a multi-harness composition note (write the gate once as a routing preamble, each section keeps anOrchestrator:line).skills/harness-setup/references/orchestrator-template.md— orchestrator descriptions in templates A/B/C now open with "Entry point for all {domain} work…"; aPhase 0: intake & triagefront-step added to all three; SDD-coordination addendum + worked snippets re-headed to match; follow-up-keywords note.skills/harness-setup/SKILL.md— Step 5 ("register the pointer") wording, the build-into-orchestrator bullets, and two new deliverable-checklist items (description asserts entry-point status; first phase is intake & triage).harness-review/SKILL.md,harness-review/references/usage-assessment.md,harness-setup/references/maintenance.md,shared/harness-model.md: "trigger rule" → "entry-point directive"; harness-review now flags a soft gate (or a bypassed orchestrator) as a finding.plugin.json0.5.0→0.6.0; README line.Test plan
bash tests/ci/run-structural-tests.sh— all suites passed (6 pre-existing warnings, none in agentic-harness)claude plugin validate ./agentic-harness --strict— passedgrep -rn -i "answer simple questions directly\|trigger rule" agentic-harness/) — only the one intentional explanatory note remains