docs(maestro): fix disabled-unstable-variant claim in STRUCTURED-VIEW.md

A SessionUpdate variant gated behind an unstable ACP feature this build
doesn't enable is compiled out of the enum, not decoded into a Notice.
It fails deserialization the same as a genuinely unknown future tag.
This commit is contained in:
Miguel Palhas
2026-09-05 05:35:19 +01:00
parent b225fbdd69
commit 74a423567f
+10 -9
View File
@@ -116,15 +116,16 @@ crate.
| `Notice` | The raw JSON of any `session/update` variant the ACP dependency already decodes but the projection does not special-case. | `notice:<seq>`. |
`Notice` covers known-but-unspecialized `SessionUpdate` variants: ones the
`agent-client-protocol` dependency's schema already deserializes (it currently
also folds `available_commands_update` and `session_info_update` there,
alongside anything gated behind an unstable ACP feature this build doesn't
enable) but the projection's `match` doesn't fold into one of the other seven
kinds. It is not a wire-level forward-compatibility seam: `SessionUpdate` is
an internally-tagged enum with no unknown-variant fallback, so a
`session/update` whose `sessionUpdate` tag this build's dependency has never
heard of fails to deserialize before the projection ever runs, rather than
becoming a `Notice`. A genuinely new ACP variant needs the
`agent-client-protocol` dependency's schema already deserializes (it
currently folds `available_commands_update` and `session_info_update`
there) but the projection's `match` doesn't fold into one of the other
seven kinds. It is not a wire-level forward-compatibility seam:
`SessionUpdate` is an internally-tagged enum with no unknown-variant
fallback, so a `session/update` whose `sessionUpdate` tag this build's
dependency has never heard of — including a variant gated behind an
unstable ACP feature this build doesn't enable, which is compiled out of
the enum entirely — fails to deserialize before the projection ever runs,
rather than becoming a `Notice`. A genuinely new ACP variant needs the
`agent-client-protocol` dependency upgraded (and, typically, the projection's
`match` taught about it) before it can appear on this transcript at all — see
`projection.rs`'s test asserting that an unrecognised `sessionUpdate` tag is a