canon(methods): add dispatch-paths — assistant-orchestrated vs autonomous-trigger#201
Merged
Conversation
…mous-trigger Adds klappy://canon/methods/dispatch-paths as a Tier-2 method naming the two dispatch classes a spawned-agent-session runtime can be invoked through: - Assistant-orchestrated — an assistant in a chat session dispatches and consumes the result; engagement=assistant permitted; the managed-agents skill is the canonical example. - Autonomous-trigger — an external event wakes the runtime with no assistant in the loop; engagement MUST be agent per mode-discipline-and-bottleneck-respect; errors emit to configured targets; AMS audit gate is the first impl. Single decision rule: when the runtime returns, who reads the result first? Human via chat assistant → orchestrated. Anything else → autonomous. No third path; mixed deployments are two wirings. Pairs with klappy://canon/methods/trigger-source-taxonomy: this doc names the dispatch classes; that doc names the input edges that wake the autonomous-trigger path. Operationalizes klappy://canon/principles/agents-need-their-own-wire for the dispatch layer (autonomous-trigger is the path that removes the human-as-relay). Status proposed; 1334 words; under-budget per planning constraint.
Canon Quality — Frontmatter Schema ✅All 40 file(s) in Validator: |
Canon Quality —
|
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 242 | dead-reference |
klappy://writings/nothing-new-even-ai |
URI does not resolve |
writings/choosing-faith-not-fear.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 203 | dead-reference |
klappy://writings/four-questions-that-change-everything |
URI does not resolve |
writings/getting-started-with-odd-and-oddkit.md — 4 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 69 | legacy-link-pattern |
/page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows |
Use a klappy:// URI instead of /page/ path |
| 202 | legacy-link-pattern |
/page/docs/oddkit/proactive/proactive-bootstrap |
Use a klappy:// URI instead of /page/ path |
| 204 | legacy-link-pattern |
/page/docs/examples/project-instructions-template |
Use a klappy:// URI instead of /page/ path |
| 260 | legacy-link-pattern |
/page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows |
Use a klappy:// URI instead of /page/ path |
writings/the-broken-wall-and-the-buried-talent.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 332 | dead-reference |
klappy://draft-zeros/appendix-a-the-biblical-roots |
URI does not resolve |
writings/the-voice-came-first.md — 1 finding(s)
| Line | Rule | Occurrence | Message |
|---|---|---|---|
| 244 | dead-reference |
klappy://writings/four-questions-that-change-everything |
URI does not resolve |
Soft-block mode — this status is informational; the job will not fail. Hard-block ships in PR-3.2 after the observation cycle.
What to do for each finding:
- Fix the slug if the target now lives at a different
klappy://URI.- Remove the link if it is no longer needed.
- Allowlist with a reason if the rot is intentional (e.g. forward-ref to an upcoming article): place
<!-- audit-allow: dead-reference reason="..." -->on the line above the offending link. The directive is line-level and scopes to the next markdown link.
Spec: klappy://docs/oddkit/specs/oddkit-audit · Workflow: .github/workflows/canon-quality.yml · Run: #133
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.
Adds
klappy://canon/methods/dispatch-pathsas a Tier-2 method naming the two dispatch classes a spawned-agent-session runtime can be invoked through.What this PR adds
One new file:
canon/methods/dispatch-paths.md(1334 words, 104 lines, 6 sections).The two paths
Assistant-orchestrated — an assistant (Claude, OpenCode, etc.) in a chat session dispatches a runtime invocation, waits for the result, and consumes it on behalf of an operator who is watching.
engagement=assistantpermitted. Theskills/managed-agents/SKILL.mdis the canonical implementation.Autonomous-trigger — an external event (webhook, queue message, alarm, object-store notification, AMS frame) wakes the runtime with no assistant in the loop.
engagement=agentmandatory perklappy://canon/constraints/mode-discipline-and-bottleneck-respect. Errors emit to configured targets, not into a void. The AMS audit gate (forthcoming) is the first implementation.Single decision rule
The two paths are not interchangeable. Wiring autonomous-trigger but treating it like assistant-orchestrated (e.g., a persona emitting clarifying questions into a Slack webhook nobody watches) is the most common failure mode this doc exists to prevent.
Pairing with PR #198 (trigger-source-taxonomy)
This doc names the dispatch classes. Trigger-source-taxonomy (#198, drafted but pending merge) names the input edges that wake the autonomous-trigger class. Together they cover the "how does a runtime get invoked" question at two altitudes — class (this doc) and routing convention (#198).
Prior art and confidence
Prior art: messaging architecture's request-reply vs publish-subscribe; serverless platforms' synchronous vs event-driven invocation. The contribution is the specific binding to the persona-shaped runtime's
engagementdimension.Confidence: working belief, two implementations. Consistent with deployed
managed-agentsskill and in-design AMS audit gate. Retraction conditions stated.Word budget
Hard cap was ~1500 words. Final: 1334 words. The trigger-source-taxonomy draft hit 5962 words against the same target; this draft was scoped tightly enough to land under-budget. Learning encoded in
journal/2026-05-11-trigger-taxonomy-drafting.tsv.Status
status: proposed. Awaits operator review.Note
Low Risk
Low risk: adds a new Tier-2 canon markdown document only, with no code or runtime behavior changes.
Overview
Introduces
canon/methods/dispatch-paths.md, a Tier-2 method that names and defines the two supported dispatch classes for spawned-agent-session runtime invocations: assistant-orchestrated (results consumed inline by a chat assistant, allowingengagement=assistant) vs autonomous-trigger (event-driven invocations with no assistant in the loop, requiringengagement=agentand configured error/result emissions).Includes a decision rule/tree for selecting the path, plus guidance on expected deployment shapes and failure modes when treating autonomous-trigger flows like assistant-orchestrated ones.
Reviewed by Cursor Bugbot for commit 8e86fcd. Bugbot is set up for automated code reviews on this repo. Configure here.