{
  "evidence": [
    {
      "client": "antigravity-cli",
      "version": "1.2.7",
      "platform": "darwin-arm64",
      "observedAt": "2026-09-20",
      "capability": "lifecycle.sessionStart",
      "fixture": "fixtures/SessionStart-1.2.7.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "session-start-1-2-7",
      "idleBehavior": "fires when a session starts",
      "busyBehavior": "fires before the first model invocation",
      "authorityLevel": "advisory",
      "limitations": [
        "captured in print mode only",
        "no hook_event_name field; the event is known only from the command argument",
        "hooks attach only when the Antigravity session has an open workspace; an ordinary print-mode turn sends an empty workspacePaths and no session is created. This capture used --add-dir"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-cli",
      "version": "1.2.7",
      "platform": "darwin-arm64",
      "observedAt": "2026-09-20",
      "capability": "context.beforeTurnInjection",
      "fixture": "fixtures/PreInvocation-1.2.7.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "pre-invocation-1-2-7",
      "idleBehavior": "waits for the next invocation",
      "busyBehavior": "does not interrupt an in-progress invocation",
      "authorityLevel": "context",
      "limitations": [
        "requires the injectSteps ephemeralMessage envelope",
        "userMessage and toolCall injection types were not exercised",
        "hooks attach only when the Antigravity session has an open workspace; an ordinary print-mode turn sends an empty workspacePaths and no session is created. This capture used --add-dir"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-cli",
      "version": "1.2.7",
      "platform": "darwin-arm64",
      "observedAt": "2026-09-20",
      "capability": "delivery.nextTurn",
      "fixture": "fixtures/PreInvocation-1.2.7.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "pre-invocation-1-2-7",
      "idleBehavior": "offers complete peer messages at the next invocation",
      "busyBehavior": "does not interrupt an in-progress invocation",
      "authorityLevel": "context",
      "limitations": [
        "delivery requires the next invocation; there is no live push and no reply route",
        "the end-of-turn Stop continuation carries its reason to the model and is a bounded nudge, not a gate: this adapter continues one turn at most once and the client caps consecutive continuations itself (vendor 1.1.9)",
        "the continuation ceiling's own value was not captured, and neither was what the model is told when it is reached",
        "captured on darwin-arm64 in print mode only; Linux, Windows and interactive sessions were not observed",
        "agy agentapi send-message needs the running session's language-server address and CSRF token, and hooks are given neither, so ACC has no live push",
        "reply routing back to ACC was not observed",
        "hooks attach only when the Antigravity session has an open workspace; an ordinary print-mode turn sends an empty workspacePaths and no session is created. This capture used --add-dir"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-cli",
      "version": "1.2.7",
      "platform": "darwin-arm64",
      "observedAt": "2026-09-21T19:29:23.548Z",
      "capability": "delivery.livePush",
      "fixture": "fixtures/delivery/antigravity-cli-1.2.7-relay-product.json",
      "idleBehavior": "offered",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "native-delivery-1-2-7-relay-product",
      "busyBehavior": "queued_after_turn",
      "authorityLevel": "experimental",
      "limitations": [
        "Observed on darwin-arm64 with Antigravity CLI 1.2.7 in the TUI, model Gemini 3.8 Flash, through a private candidate built from this branch and installed into an isolated ACC data home; print mode ends with its turn and runs no relay.",
        "The agent started the relay once for the conversation through run_command, after ACC's one-time context line named the command; the operator approved that command and each acc reply once at the client's permission prompt. ACC writes no permission rule.",
        "The relay holds the session's language-server address and CSRF token in memory only; ACC's registration carries a nonce and a socket path, never the endpoint. ANTIGRAVITY_AGENTAPI_EXE named the same agy the relay runs.",
        "An idle session woke with no user input. A message accepted while the model was streaming a long text answer was presented only after that answer completed. A message accepted while a turn waited on a tool permission was presented at that turn's next model invocation, after the tool returned, rather than after the turn.",
        "The busy branch took three sends: the first landed at a tool boundary as above, the second arrived after the answer had already finished and so showed an idle wake; the third, timed against the running stream, is the one recorded.",
        "The model receives each push as a SYSTEM_MESSAGE; the send-message title is not shown to it.",
        "The observed reply loop uses the installed acc reply CLI; native delivery.replyRoute remains false. The router reports a relay push as transport live-adapter.",
        "A repeated logical message kept its message id, took the durable path on the second send, and was pushed and answered once.",
        "Antigravity runs no SessionEnd: the relay retired itself about five seconds after its agy exited, and a later message stayed queued in the durable inbox.",
        "The first TUI session in a folder trusted at that launch hands every hook an empty workspacePaths even with --add-dir, so that session gets no ACC context and no relay prompt; the next launch in the now-trusted folder does."
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-desktop",
      "version": "2.19.1",
      "platform": "darwin-arm64",
      "observedAt": "2026-10-04",
      "capability": "lifecycle.sessionStart",
      "fixture": "fixtures/desktop-2.19.1.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "desktop-session-start-2-19-1",
      "idleBehavior": "fires when a conversation starts",
      "busyBehavior": "fires before the first model invocation",
      "authorityLevel": "advisory",
      "limitations": [
        "captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
        "the hooks ran as direct children of the app's language server; no agy process took part"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-desktop",
      "version": "2.19.1",
      "platform": "darwin-arm64",
      "observedAt": "2026-10-04",
      "capability": "context.beforeTurnInjection",
      "fixture": "fixtures/desktop-2.19.1.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "desktop-pre-invocation-2-19-1",
      "idleBehavior": "waits for the next invocation",
      "busyBehavior": "not observed in the desktop app",
      "authorityLevel": "context",
      "limitations": [
        "captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
        "the hooks ran as direct children of the app's language server; no agy process took part",
        "requires the injectSteps ephemeralMessage envelope, as Antigravity CLI"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-desktop",
      "version": "2.19.1",
      "platform": "darwin-arm64",
      "observedAt": "2026-10-04",
      "capability": "delivery.nextTurn",
      "fixture": "fixtures/desktop-2.19.1.json",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "desktop-pre-invocation-2-19-1",
      "idleBehavior": "offers complete peer messages at the next invocation",
      "busyBehavior": "not observed in the desktop app",
      "authorityLevel": "context",
      "limitations": [
        "captured on the desktop app 2.19.1 (Antigravity.app) on darwin-arm64 with ACC 0.8.5's installed hooks, in one conversation of a probe project opened in the app",
        "the hooks ran as direct children of the app's language server; no agy process took part",
        "the agent's acc reply runs only outside the app's sandbox, which the app approves by its grants in ~/.gemini/config/config.json"
      ],
      "result": "pass"
    },
    {
      "client": "antigravity-desktop",
      "version": "2.19.1",
      "platform": "darwin-arm64",
      "observedAt": "2026-10-05T04:34:55.036Z",
      "capability": "delivery.livePush",
      "fixture": "fixtures/delivery/antigravity-desktop-2.19.1-product.json",
      "idleBehavior": "offered",
      "provenance": "fixtures/certification-provenance.json",
      "provenanceId": "native-delivery-2-19-1-desktop-product",
      "busyBehavior": "queued_after_turn",
      "authorityLevel": "experimental",
      "limitations": [
        "Observed on darwin-arm64 with Antigravity 2.19.1, the desktop app (Antigravity.app), model Gemini 3.8 Flash, in one conversation of a probe project opened in the app, through a private candidate built from this branch and installed into an isolated ACC data home that the app was launched with.",
        "No relay and no command for the agent to run: ACC found the app's language server as the hook's parent, read its endpoint from the server's command line at each bind and offer, and pushed through the server's own agentapi; the endpoint record carries the server's pid, start time and port, never the token.",
        "An idle conversation woke with no user input. A message accepted while the model streamed a long answer was presented after that answer completed, uninterrupted. The desktop UI shows each push as a collapsed ACC peer message entry.",
        "The agent's acc commands fail inside the app's sandbox and run once the model retries outside it; with the wrapper's grant already in ~/.gemini/config/config.json, that retry ran without an approval prompt.",
        "With the app quit, a message stayed queued as recipient_offline. After the app restarted - a new language server, token and port - the conversation's first user turn bound it again, and the next push woke it.",
        "The app runs no SessionStart for a conversation it reopens, so after a restart live delivery returns at the conversation's next turn, not before."
      ],
      "result": "pass"
    }
  ]
}
