Protected session capture: `Parse agent logs for step summary` fails when the engine step never ran

Aperta Adatta ai principianti
#76,936 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
github-actions, go, javascript
Ambito
ci-cd, testing

Direzione di ricerca

Leggi generateLogParsing in pkg/workflow/compiler_yaml_ai_execution.go e i test del compilatore nelle vicinanze. Verifica come viene gestito l’ID del parser di acquisizione protetto, quindi aggiungi test per il passaggio di parsing condizionale e per il comportamento invariato con gli altri motori. Il lavoro è completato quando entrambi i casi sono verificati e il parser di acquisizione protetto viene ignorato solo quando steps.agentic_execution.outcome è skipped.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

ai-inspected

This issue was posted by Claude Code using claude-opus-5-5 on behalf of David.

Symptom

With protected-session-capture: true, a step that fails before the engine step (a failed PR checkout, a custom pre-agent gate that exits 1) leaves a second error on the agent job:

ERR_VALIDATION: AWF protected session capture could not be verified or published; no shared-log fallback is permitted

The engine step is skipped, so no capture can exist. The error reads as a capture integrity failure and hides the step that actually failed.

Example on v1.2.1 with the pydantic-ai engine: https://github.com/pydantic/pydantic-ai/actions/runs/43072677386. Checkout PR branch fails, Execute Pydantic AI CLI is skipped, and Parse agent logs for step summary fails with the error above.

Cause

generateLogParsing emits the parse step with an unconditional if: always():
https://github.com/github/gh-aw/blob/e478cc24ba638ef0668efd15d244daa4c1b0c405/pkg/workflow/compiler_yaml_ai_execution.go#L252-L254

With protected capture on, runLogParser calls readProtectedCommandOutput on GH_AW_AGENT_OUTPUT before any parsing:
https://github.com/github/gh-aw/blob/e478cc24ba638ef0668efd15d244daa4c1b0c405/actions/setup/js/log_parser_bootstrap.cjs#L282

Its fs.lstatSync throws on the capture directory AWF never created:
https://github.com/github/gh-aw/blob/e478cc24ba638ef0668efd15d244daa4c1b0c405/actions/setup/js/protected_command_output.cjs#L41

The catch block reports that as an unverifiable capture:
https://github.com/github/gh-aw/blob/e478cc24ba638ef0668efd15d244daa4c1b0c405/actions/setup/js/log_parser_bootstrap.cjs#L666-L676

Proposed fix

In generateLogParsing, when the engine has protected session capture enabled (the case protectedSessionCaptureParserID already handles), emit:

if: always() && steps.agentic_execution.outcome != 'skipped'

Keep if: always() for every other engine. Add a compiler test that asserts the new condition for a protected-capture engine and the unchanged one otherwise.

Why this cannot mask a real missing capture

AWF writes the capture only inside the agentic_execution step. If that step started at all (success, failure or cancelled), its outcome is not skipped, the parse step runs, and readProtectedCommandOutput fails closed exactly as today. The Actions runner sets the outcome, so no step in the job can change it. Only the case where no capture can exist is skipped.

The steps that already require steps.parse_agent_logs.outcome == 'success' (Ingest agent output and the agent output uploads) are skipped today when the parse step fails, and stay skipped.

Lingua principale
Go
Stelle
5.6k
Fork
625
Merge medio
5h 39m
PR unite (30g)
796

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/gh-aw

Tutte le issue di github/gh-aw

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.