You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The A2A batch shipped 7 specs / 17 tests across #1242, #1244 and #1247, and none of them carries @stable. daily-stable.yml filters on --grep "@stable", so the entire area — 10 of the 18 checklist bullets in §16 — watches nothing. An A2A regression between two nightlies is invisible to every scheduled lane; the specs only run when a PR happens to touch them (import graph) or someone dispatches manual.yml.
This closes the batch scoped in #1195: [-] → [x] for §16.1.
Why the tag is absent, and why that reason no longer holds
Each spec doc states the same justification:
No @stable yet: granted only after team validation (CONTRIBUTING.md). New in #1244, no daily history.
Two problems with it.
It is not one of the documented exceptions.CONTRIBUTING.md → Tag @stable states the standard plainly: "every new test enters with @stable" — in the PR itself, together with the spec doc, with the reviewer confirming the 5 validation steps on approval. The four exceptions are inherited-not-yet-reviewed, temporarily-removed-while-failing, utility specs, and @destructive. The A2A batch is none of those: the specs are newly authored, every one has a complete spec doc, and the assertions are causal (per-run sentinels, API observables paired with every UI assertion) rather than DOM echoes.
"No daily history" is circular. Without @stable these specs never enter the daily, so they can never accumulate the history their own docs cite as the precondition for the tag.
The technical blocker that would have justified holding back is also gone: LANGFLOW_A2A_ENABLED=true has been on every lane and both start scripts since #1240, and the whole batch is LLM-free (the round-trips run a Chat Input → Chat Output passthrough with a per-run sentinel — no provider, no key, no quota).
Evidence — local run, 2026-08-06
npx playwright test --grep "@a2a" --repeat-each=3 --retries=0
Against langflowai/langflow-nightly:latest = 1.12.0.dev18, LANGFLOW_A2A_ENABLED=true, LANGFLOW_WORKERS=1, default worker count on the Playwright side (fully parallel).
Metric
Result
Executions
51 / 51 passed (17 tests × 3)
Retries
0 — the local default of 3 was disabled so a flake could not hide
Wall clock
53.4 s
🚨 Backend Error: in the log
0
Flows before → after
26 → 26 (no leaked flow)
The spec docs record Last validated: 1.12.0.dev14; this run re-validates the batch four nightlies later on dev18, unchanged.
Scope
Promote to @stable — 17 tests across 7 specs:
a2a-server-agent-card.spec.ts (4)
a2a-server-discovery.spec.ts (2)
a2a-server-jsonrpc-message-send.spec.ts (3)
a2a-server-multi-turn-context.spec.ts (1)
a2a-server-tasks-lifecycle.spec.ts (3)
a2a-server-agent-tab-publish.spec.ts (3)
a2a-server-agent-tab-try-it.spec.ts (1)
Also in scope:
QA-CHECKLIST.md §16.1 — flip the 9 [-] bullets to [x]. The [~] Try it bullet stays [~]: the gap it names ("View JSON-RPC exchange") is a product absence, not a coverage gap (agentTab.viewExchange is a dead i18n key — 7 locales, zero call sites, absent from the DOM after a completed turn, Create: A2A Agent tab — publish flow and the Try it panel (§16.1 UI) #1244). Its spec still earns the tag; only the bullet symbol is held by the partial.
Each spec doc — replace the "No @stable yet" line in Tags with the tag, and bump Last validated to 1.12.0.dev18.
The 8 [ ] bullets (all 3 of §16.2 A2A Client, plus non-owner-publish 403 and the disabled-server state). §16.2 is spec-creation work and needs the loopback-SSRF question answered first (follow-up 4 of the scoping doc); the other two are recorded as not automatable in docs/core-functionality/a2a/a2a-coverage-scope.md.
Re-running step 2 of the validation checklist (forced failure). It was performed per spec in the authoring PRs and recorded in their commit bodies — Create: A2A JSON-RPC task surface — multi-turn context and task lifecycle (§16.1 T5+T6) #1247's is the sharpest example, where a force-fail attempt that shrank the 2 MB payload back to 1 KB was rejected for not making the test fail, which is why the spec doc states the payload is margin rather than a requirement.
Risk
The 4 UI tests (agent-tab-*) are the only ones with a plausible flake surface: the Agent-tab save has no DOM completion signal (agent-status flips optimistically), so both specs wait on the PATCH /api/v1/flows/{id} the button fires, and agent-card-name is mount-time state that a save does not refresh (asserted after a reload). Both were measured in #1244 and are already handled; 3/3 green here. Worth watching in the first week of daily history.
Acceptance
17 tests carry @stable
9 [-] bullets in §16.1 read [x]; the [~] bullet is unchanged
7 spec docs updated (Tags + Last validated)
npm run typecheck, npm run lint, npm run test:units green
npx playwright test --grep "@a2a" green on the PR lane
Problem
The A2A batch shipped 7 specs / 17 tests across #1242, #1244 and #1247, and none of them carries
@stable.daily-stable.ymlfilters on--grep "@stable", so the entire area — 10 of the 18 checklist bullets in §16 — watches nothing. An A2A regression between two nightlies is invisible to every scheduled lane; the specs only run when a PR happens to touch them (import graph) or someone dispatchesmanual.yml.This closes the batch scoped in #1195:
[-]→[x]for §16.1.Why the tag is absent, and why that reason no longer holds
Each spec doc states the same justification:
Two problems with it.
It is not one of the documented exceptions.
CONTRIBUTING.md→ Tag @stable states the standard plainly: "every new test enters with@stable" — in the PR itself, together with the spec doc, with the reviewer confirming the 5 validation steps on approval. The four exceptions are inherited-not-yet-reviewed, temporarily-removed-while-failing, utility specs, and@destructive. The A2A batch is none of those: the specs are newly authored, every one has a complete spec doc, and the assertions are causal (per-run sentinels, API observables paired with every UI assertion) rather than DOM echoes."No daily history" is circular. Without
@stablethese specs never enter the daily, so they can never accumulate the history their own docs cite as the precondition for the tag.The technical blocker that would have justified holding back is also gone:
LANGFLOW_A2A_ENABLED=truehas been on every lane and both start scripts since #1240, and the whole batch is LLM-free (the round-trips run a Chat Input → Chat Output passthrough with a per-run sentinel — no provider, no key, no quota).Evidence — local run, 2026-08-06
Against
langflowai/langflow-nightly:latest=1.12.0.dev18,LANGFLOW_A2A_ENABLED=true,LANGFLOW_WORKERS=1, default worker count on the Playwright side (fully parallel).🚨 Backend Error:in the logThe spec docs record
Last validated: 1.12.0.dev14; this run re-validates the batch four nightlies later ondev18, unchanged.Scope
Promote to
@stable— 17 tests across 7 specs:a2a-server-agent-card.spec.ts(4)a2a-server-discovery.spec.ts(2)a2a-server-jsonrpc-message-send.spec.ts(3)a2a-server-multi-turn-context.spec.ts(1)a2a-server-tasks-lifecycle.spec.ts(3)a2a-server-agent-tab-publish.spec.ts(3)a2a-server-agent-tab-try-it.spec.ts(1)Also in scope:
QA-CHECKLIST.md§16.1 — flip the 9[-]bullets to[x]. The[~]Try it bullet stays[~]: the gap it names ("View JSON-RPC exchange") is a product absence, not a coverage gap (agentTab.viewExchangeis a dead i18n key — 7 locales, zero call sites, absent from the DOM after a completed turn, Create: A2A Agent tab — publish flow and the Try it panel (§16.1 UI) #1244). Its spec still earns the tag; only the bullet symbol is held by the partial.@stableyet" line in Tags with the tag, and bumpLast validatedto1.12.0.dev18.npm run coverage:summaryin the PR (Guard QA-CHECKLIST generated blocks from PR edits (stop recurring merge conflicts) #741 — the generated blocks regenerate on merge).Out of scope
[ ]bullets (all 3 of §16.2 A2A Client, plus non-owner-publish403and the disabled-server state). §16.2 is spec-creation work and needs the loopback-SSRF question answered first (follow-up 4 of the scoping doc); the other two are recorded as not automatable indocs/core-functionality/a2a/a2a-coverage-scope.md.Risk
The 4 UI tests (
agent-tab-*) are the only ones with a plausible flake surface: the Agent-tab save has no DOM completion signal (agent-statusflips optimistically), so both specs wait on thePATCH /api/v1/flows/{id}the button fires, andagent-card-nameis mount-time state that a save does not refresh (asserted after a reload). Both were measured in #1244 and are already handled; 3/3 green here. Worth watching in the first week of daily history.Acceptance
@stable[-]bullets in §16.1 read[x]; the[~]bullet is unchangedLast validated)npm run typecheck,npm run lint,npm run test:unitsgreennpx playwright test --grep "@a2a"green on the PR lane