Skip to content

[BUG] Harness column is always empty in the Substrate page's Actor Templates tableΒ #2653

Description

@Charlesthebird

🎯 Affected Service(s)

UI Service (with a controller-side cause)

🚦 Impact/Severity

Minor inconvenience

πŸ› Bug Description

The Harness column in the Actor Templates table on the Substrate page always shows β€”. Two neighboring fields are dead in the same way: the golden: … line under each template name, and managedByKagent.

Cause is #2638, which moved actor templates from the Kubernetes ActorTemplate CRD to ate-api.

  • Before: ActorTemplateForRevision stamped kagent.dev/harness on the template, and listSubstrateCRs read it back into HarnessName.
  • Now: ate-api templates carry no such labels, and listATEState never sets HarnessName, GoldenActorID, or ManagedByKagent.
  • The fields are still declared on SubstrateActorTemplate (go/core/internal/service/system/service.go), so nothing fails β€” the columns just can't ever have a value.

πŸ”„ Steps To Reproduce

  1. Bring up a cluster with scripts/setup-cluster/setup-cluster.sh.
  2. Create an AgentTemplate so at least one actor template exists.
  3. Open the Substrate page in the UI and find the Actor Templates table.
  4. The Harness column reads β€” for every row.

πŸ€” Expected Behavior

Each row names the harness that produced the template.

πŸ“± Actual Behavior

β€” on every row.

πŸ” Additional Context

Two more regressions on the same table

Both come from the same move to ate-api, and both are cosmetic rather than empty:

  • Sandbox class reads SANDBOX_CLASS_GVISOR. listATEState calls .String() on the ate-api enum; the CRD field it replaced was a plain string, so the column used to read gvisor.
  • Golden snapshot now reads atespace/name, via objectRefString. It used to be the bare snapshot name.

Searching the table by harness also stopped matching, since the row's search string includes harnessName and goldenActorId. That follows from the empty fields above rather than being separate.

Not issues, for the record

  • Phase values changed from CRD strings such as GoldenSnapshotPending to a derived Pending / Failed / Ready. The page treats phase as open-ended and the ready count compares lowercased, so both still work.
  • With ate-api unreachable the table is empty instead of falling back to Kubernetes CRs. Inherent to the move; ateApiError still surfaces on the page.
  • The Actors, Workers, and Worker Pools tables are unaffected β€” every field still has a source.

Why not derive the harness from the template name

revisionActorTemplateName builds <agentTemplate>-<harness>-<revisionShort>, so the harness is readable from the Name column, but parsing it back is unreliable. Agent template and harness names may both contain dashes, and truncateDNS1123To caps the combined agentTemplate-harness at 50 characters before the digest is appended, so long names lose part or all of the harness segment.

Fix

Carry the harness name β€” and the golden actor ID β€” in ate-api template metadata, and populate the fields from there. Alternatively drop the three empty fields and their UI columns, so the table stops showing values it can never fill. Sandbox class needs formatting back to the short form.

No test covers any of the three empty fields now, which is why CI stayed green through #2638.

Related files

  • go/core/internal/service/system/service.go β€” listATEState, SubstrateActorTemplate, objectRefString
  • go/core/v2/substrate/actor_template.go β€” ActorTemplateForRevision, revisionActorTemplateName, truncateDNS1123To
  • ui/src/pages/SubstratePage.tsx β€” Actor Templates columns and row search string

πŸ€– written by Claude

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    UIIssue pertaining to the UIai-generatedbugSomething isn't working

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions