Repository navigation
AgentHealth v0.8.0
AgentHealth v0.8.0 — Dependency graph
v0.8.0 implements Phase 10 with explicit shared-node references, independent
edge policies and relationship evidence, bounded parallel execution, and
ordered recursive output. See RFC #26,
the graph contract,
usage guide, and earlier-phase alignment.
Changes
- Add globally unique target/inline dependency
idand dependencyref.
References select explicitly configured nodes without overriding their
endpoint, checks, credentials or policies. - Evaluate each explicit ID once per run, including opted-in active checks
and cleanup. Anonymous nested targets remain independent. - Preserve critical/optional policy per edge and distinguish
supporting,
downstream,path,gatewayandrouterrelationship evidence. - Execute targets and dependencies in parallel while preserving output order.
Add per-runconcurrency(1–16, default 16) under the engine-wide 16-call
bound, including cleanup and uncooperative adapter calls. - Add
budget_ms(1–60000) for a node's own checks, retries and queue waits.
Parent budgets do not cancel independently budgeted shared dependencies. - Reject duplicate IDs, missing references, cycles, depth above 64 and more
than 10000 result projections before adapter execution. - Extend JSON/YAML results with
target.idand dependency-edge metadata.
Terminal output labels node IDs, relationships and optional edges. - Resolve agent-advertised dependency names only against explicit inline or
referenced nodes. Keep peer and first-runtime communication evidence separate. - Redact final results after all graph nodes register dynamically acquired secrets.
- Align earlier phase contracts and guides, add graph examples, schema fixtures,
graph/CLI regressions and real-output schema validation.
Compatibility and migration
Configuration/result v1, health states, dimensions, target types and exit codes
remain unchanged. Existing nested configurations require no migration.
Older binaries reject the new graph fields; upgrade before using them.
Parallel scheduling changes request timing, while declaration-order output stays
stable. Trusted custom adapters must tolerate concurrent calls across nodes.
Closed downstream result schemas should allow target.id, relationship
and critical. Incoming-edge policy belongs to each dependency projection;
a root result has no incoming-edge policy. Repeated IDs indicate shared evidence,
not repeated probes. Known secrets in IDs become redacted, which may collapse
identities; do not infer shared identity from that placeholder.
Installation
Download the matching archive and SBOM from the
v0.8.0 release.
Platforms: Linux AMD64/ARM64, macOS AMD64/ARM64 and Windows AMD64, with
five matching CycloneDX SBOMs and checksums. Follow
installation and attestation verification.
agenthealth version
agenthealth check examples/graph-check/agenthealth.yaml --format json
agenthealth doctor examples/graph-check/agenthealth.yamlThe example requires compatible running services and a safe first-agent handler
that contacts the selected peer. See setup requirements.
Limitations
No automatic topology discovery, product certification, root-cause inference,
new adapter protocols, AHP server, SDK packages, Docker or Kubernetes support
is introduced. A healthy backend or router does not establish a working
first-runtime path. Graph metadata can expose topology; restrict access to
results. Active probes remain explicit, bounded, non-destructive and non-retrying.
The existing independent one-second cleanup budget is separate from node budgets.
Validation
Local Go vet/race tests and Python schema/integration tests pass. Optional
SDK interoperability cases require their configured test environment. CI
runs platform Go race tests, current/legacy SDK interoperability, vulnerability
scanning, schema and documentation checks. The release workflow builds five
archives and smoke-tests Linux AMD64; other platforms are cross-compiled
without a claim of local runtime validation. Signed provenance and SBOM
attestations accompany the release; OS-native signing/notarization remains planned.
Cleanup hooks remain serialized across nodes, runs and engines sharing a registry. Waiting for the serialization gate honors the cleanup deadline; an uncooperative hook holds the gate and its adapter-call slots until it actually returns.