Current boundary
Current main already parses and preserves named typed Resource descriptors, exposes them through st2 agents --json, and keeps Resource-only declaration changes out of task launch identity and healthy-task replacement. Canonical evals consume the same native Agent Spec vector.
The remaining question is deliberately narrower: if an owner provides an optional resolver, what trustworthy observational evidence may st2 expose to read-oriented consumers?
Required invariants
- Resolution is optional observation, not Agent Spec admission.
- An unresolved, unsupported, missing, unauthorized, or unreachable resource must not become a generic launch, readiness, materialization, restart, replacement, or teardown gate.
- Resource-only observation changes must not degrade or disrupt an already-running agent task.
- URI possession confers no authority, access, or grant.
- st2 remains complete from the ordinary catalog folder without CAS, a resident database, a reachable resolver, or another online service.
- Existing native gates, including workspace and materialization validation, retain their own contracts.
A resolver may report candidate states such as available, missing, unauthorized, unreachable, or unsupported, but the generic envelope must not pretend that one universal taxonomy captures every downstream type. The resolver owner must define what its evidence means and how stale observations are represented.
Existing native seam
The portable declaration and inspection seam is already present:
- Agent Spec carries zero or more uniquely named Resource bindings;
- the binding name is an agent-local semantic role;
_tag identifies the downstream type contract;
uri is preserved as exact absolute identity;
st2 agents --json projects descriptors without resolving them; and
- Resource-only declaration changes adopt healthy work without stop, replacement, or relaunch.
The missing seam is only optional resolution evidence and a trustworthy read-side consumer of it.
Acceptance direction
A future implementation should prove that:
- selected descriptors and their observational state are inspectable without resolving external payloads during launch;
- unsupported or unavailable resolvers remain visible and non-destructive;
- transient resolver failure cannot stop, replace, or suppress declared work;
- observation is attributable to the binding and resolver that produced it; and
- removing the resolver leaves ordinary catalog inspection and runtime behavior complete.
Outside st2's generic contract
Type-specific cardinality, a special work role, “no work means idle,” and A -> no holder -> B handoff semantics belong to the owning resource type or eval corpus. They are not generic st2 Agent Spec law. Publication, resolution, launch, readiness, and teardown remain distinct states.
Open questions
- Which component owns each optional resolver and its trust boundary?
- Is observational state exposed through catalog inspection,
doctor, or a separate read-only surface?
- What freshness and provenance accompany a result?
- Which minimal states, if any, are safe across resource types?
- How do derived runtime observations remain distinct from the declared Resource identity?
Related
Current boundary
Current main already parses and preserves named typed Resource descriptors, exposes them through
st2 agents --json, and keeps Resource-only declaration changes out of task launch identity and healthy-task replacement. Canonical evals consume the same native Agent Spec vector.The remaining question is deliberately narrower: if an owner provides an optional resolver, what trustworthy observational evidence may st2 expose to read-oriented consumers?
Required invariants
A resolver may report candidate states such as
available,missing,unauthorized,unreachable, orunsupported, but the generic envelope must not pretend that one universal taxonomy captures every downstream type. The resolver owner must define what its evidence means and how stale observations are represented.Existing native seam
The portable declaration and inspection seam is already present:
_tagidentifies the downstream type contract;uriis preserved as exact absolute identity;st2 agents --jsonprojects descriptors without resolving them; andThe missing seam is only optional resolution evidence and a trustworthy read-side consumer of it.
Acceptance direction
A future implementation should prove that:
Outside st2's generic contract
Type-specific cardinality, a special
workrole, “no work means idle,” andA -> no holder -> Bhandoff semantics belong to the owning resource type or eval corpus. They are not generic st2 Agent Spec law. Publication, resolution, launch, readiness, and teardown remain distinct states.Open questions
doctor, or a separate read-only surface?Related