Decision from the tournament
Use direct named resource bindings in Agent Spec for the first contract. Do not add an Assignment or Focus
wrapper yet.
agent "dev" {
resource "work" _tag="github-issue" uri="github-issue://example/project/123"
resource "source" _tag="worktree" uri="worktree://example/project/change"
resource "worklog" _tag="axe-worklog" uri="axe-worklog://example/project/123"
resource "delivery" _tag="ding" uri="ding://example/dev"
}
The contract is:
uri is the byte-exact stable resource identity; v1 performs no normalization or alias resolution;
_tag selects the resource-type contract;
- the KDL node name is the binding's semantic role;
- an agent has zero or one direct resource named
work;
- no
work binding means idle; and
- handoff publishes
A -> no holder -> B by removing A's binding before adding B's binding with the same URI.
The tagged resource union remains extensible. Resource types may have separate small contracts and custom
resolvers or renderers without making every type an Agent Spec primitive.
Ownership boundary
Agent Spec authors and publishers own canonical KDL publication and the durable typed resource graph. st2 owns
validation, reconciliation, runtime delivery, and the relaunch boundary. External systems remain authoritative
for their targets: GitHub for issues and pull requests, a secret manager for credentials, the PTY runtime for
sessions, and so on.
Changing resource metadata or bindings must not restart an otherwise healthy agent session. Runtime trajectory
changes use the explicit relaunch boundary tracked in
st2 PR #77.
Evidence
PR #45 publishes nine matched Codex cells:
| Scenario |
Direct resources |
Focus control |
Assignment control |
| Cold discovery |
work selects the issue |
focus selects intent |
Assignment groups bindings |
| Hot retarget |
rebind/remove work |
rebind intent/remove focus |
replace/idle Assignment |
| Handoff/restart |
move work through no holder |
move focus through no holder |
move active Assignment through idle |
All three treatments completed the intended exploratory behavior. Focus and Assignment showed no behavioral
advantage. The direct-resource treatment is smaller and makes idle and handoff observable from the resource
graph itself. The controls remain in the corpus so this conclusion can be challenged by future scenarios.
Deferred questions
- required versus optional availability;
- access intent and future access management;
- shared catalog-level definitions versus direct bindings;
- native folder-eval projection and runtime resolution;
- IDE/TUI renderers per resource type; and
- whether existing compact surfaces such as
ding lower to resource bindings.
These are deliberately not encoded in the v1 envelope until a concrete scenario demonstrates the need.
Related work
Decision from the tournament
Use direct named resource bindings in Agent Spec for the first contract. Do not add an Assignment or Focus
wrapper yet.
The contract is:
uriis the byte-exact stable resource identity; v1 performs no normalization or alias resolution;_tagselects the resource-type contract;work;workbinding means idle; andA -> no holder -> Bby removing A's binding before adding B's binding with the same URI.The tagged resource union remains extensible. Resource types may have separate small contracts and custom
resolvers or renderers without making every type an Agent Spec primitive.
Ownership boundary
Agent Spec authors and publishers own canonical KDL publication and the durable typed resource graph. st2 owns
validation, reconciliation, runtime delivery, and the relaunch boundary. External systems remain authoritative
for their targets: GitHub for issues and pull requests, a secret manager for credentials, the PTY runtime for
sessions, and so on.
Changing resource metadata or bindings must not restart an otherwise healthy agent session. Runtime trajectory
changes use the explicit relaunch boundary tracked in
st2 PR #77.
Evidence
PR #45 publishes nine matched Codex cells:
workselects the issuefocusselectsintentworkintent/remove focusworkthrough no holderAll three treatments completed the intended exploratory behavior. Focus and Assignment showed no behavioral
advantage. The direct-resource treatment is smaller and makes idle and handoff observable from the resource
graph itself. The controls remain in the corpus so this conclusion can be challenged by future scenarios.
Deferred questions
dinglower to resource bindings.These are deliberately not encoded in the v1 envelope until a concrete scenario demonstrates the need.
Related work