Skip to content

Add an A2A v1.0 task server and dual-stack Hyrule Handoff intake #40

Description

@Svaag

Parent architecture issue: AS215932/agent-core#14

Related reliability work: #29

Problem

Engineering currently consumes an NOC-specific LHP-v1 fetch path and rejects the equivalent SOC path. Intake is pull-oriented and coupled to origin-specific transport details, while the intended Engineering workflow is shared across agents.

Implementation

  • Add an A2A v1.0 HTTP+JSON task server using the official Python SDK.
  • Publish an Agent Card with a prepare_guarded_change skill and require https://servify.network/a2a/extensions/hyrule-handoff/v1.
  • Persist A2A tasks and the caseId / handoffId / source-loop / GitHub issue correlation in PostgreSQL.
  • Validate size bounds, schema, authorization, source revision, canonical payload hash, evidence references, and redaction policy before durable acceptance.
  • Store the highest accepted sourceRevision; reject regressions and reject a conflicting hash at the same revision.
  • Create or reconcile one loop:candidate issue per handoff. Never apply loop:approved automatically.
  • Before authorized execution, reconcile the latest CaseHandoff revision, GitHub labels, and required Knowledge context. Refuse stale or mismatched work.
  • Report draft PRs, proposed changes, execution evidence, and bounded run output as A2A Artifacts.
  • Implement the Hyrule task-state mapping from the parent issue. COMPLETED means the Engineering deliverable exists, not that the origin case is verified or resolved.
  • Support client polling in the first release. Keep push notifications behind a feature flag until the production TLS endpoint is ready.
  • Retain the existing LHP-v1 intake under a feature flag for shadow comparison and rollback.
  • Emit task, revision-conflict, authorization, rejection, retry, and latency metrics/traces without logging secrets or raw untrusted payloads.

A2A status events may wake the Reliability Governor, but they must not authorize execution. #29 remains the owner of persistent wake/reconciliation semantics; this issue owns A2A server and transport integration.

Acceptance criteria

  • Valid NOC and SOC profile requests are durably accepted and correlated to exactly one candidate issue.
  • Duplicate submissions and service restarts do not create duplicate tasks or GitHub issues.
  • Stale revisions, same-revision hash conflicts, incompatible extensions, bad authentication, and oversized payloads are rejected and observable.
  • A task waits in INPUT_REQUIRED until the human authorization and domain prerequisites are present.
  • A draft PR is returned as an Artifact and maps to change-planned/completed-deliverable semantics only.
  • Engineering cannot write the originating case's verified or resolved state.
  • Shadow comparison demonstrates A2A/LHP semantic parity and the feature flag restores LHP-only intake.

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

    enhancementNew feature or requestloop:needs-humanHuman review required before autonomous routing

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions