merge: lane/proto
This commit is contained in:
@@ -68,3 +68,8 @@ you change observable behaviour, update the doc in `docs/` that describes it in
|
|||||||
Ask in the PR rather than guessing at the interface. A day of clarification is cheaper than
|
Ask in the PR rather than guessing at the interface. A day of clarification is cheaper than
|
||||||
an M2 integration rewrite. And record real decisions as an ADR in `docs/adr/` — the next
|
an M2 integration rewrite. And record real decisions as an ADR in `docs/adr/` — the next
|
||||||
agent to touch this will have none of your context.
|
agent to touch this will have none of your context.
|
||||||
|
|
||||||
|
**ADR numbers:** there is no allocator. Take the next free number in `main`'s
|
||||||
|
`docs/adr/` (gaps from reserved-but-unwritten entries are fine to fill). Lanes draft in
|
||||||
|
parallel, so collisions happen: whoever merges **second** renumbers, updates any
|
||||||
|
cross-references, and keeps going — it is not worth a round trip.
|
||||||
|
|||||||
+3
-3
@@ -35,7 +35,7 @@ Nobody else commits here. Everybody else *generates from* here.
|
|||||||
|
|
||||||
```
|
```
|
||||||
contracts/
|
contracts/
|
||||||
├── VERSION # protocol semver — v1.2.0, minor-bumped from the v1.0.0 freeze
|
├── VERSION # protocol semver — v1.4.0, minor-bumped from the v1.0.0 freeze
|
||||||
├── openrpc.json # human-readable API doc (generated from schema/)
|
├── openrpc.json # human-readable API doc (generated from schema/)
|
||||||
├── schema/
|
├── schema/
|
||||||
│ ├── envelope.schema.json # JSON-RPC 2.0 envelope + our error codes
|
│ ├── envelope.schema.json # JSON-RPC 2.0 envelope + our error codes
|
||||||
@@ -67,7 +67,7 @@ subset, `fixtures/` documents the fixture shape and the placeholder rules.
|
|||||||
"Retype → major" is about the **wire** — a field a client parses off the socket. A
|
"Retype → major" is about the **wire** — a field a client parses off the socket. A
|
||||||
change that leaves the wire byte-identical but breaks a *generated binding's* source
|
change that leaves the wire byte-identical but breaks a *generated binding's* source
|
||||||
API (a C++ virtual's return type, a struct name) is a **minor** bump plus a migration
|
API (a C++ virtual's return type, a struct name) is a **minor** bump plus a migration
|
||||||
note — see `docs/adr/0014-generated-binding-changes-and-versioning.md`.
|
note — see `docs/adr/0015-generated-binding-changes-and-versioning.md`.
|
||||||
5. **Changes arrive as a PR to `contracts/` alone**, containing: schema edit + fixtures +
|
5. **Changes arrive as a PR to `contracts/` alone**, containing: schema edit + fixtures +
|
||||||
regenerated code + `VERSION` bump. Lanes rebase onto it. This is the only synchronization
|
regenerated code + `VERSION` bump. Lanes rebase onto it. This is the only synchronization
|
||||||
point in the whole project — keep it cheap and frequent rather than big and rare.
|
point in the whole project — keep it cheap and frequent rather than big and rare.
|
||||||
@@ -102,7 +102,7 @@ All four carry **the same JSON-RPC 2.0 payloads**. The framing differences stop
|
|||||||
transport layer; no method behaves differently depending on how it arrived — except that
|
transport layer; no method behaves differently depending on how it arrived — except that
|
||||||
methods marked `"privileged": true` in the schema are refused over the WebSocket transport.
|
methods marked `"privileged": true` in the schema are refused over the WebSocket transport.
|
||||||
|
|
||||||
## Method surface (v1.2.0 — expand only via PR)
|
## Method surface (v1.4.0 — expand only via PR)
|
||||||
|
|
||||||
### Session
|
### Session
|
||||||
| Method | Params → Result |
|
| Method | Params → Result |
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ how lanes are told to regenerate and adapt. Minor, not major: a major would make
|
|||||||
`session.hello` refuse a client whose wire behaviour is unchanged. The rule — a
|
`session.hello` refuse a client whose wire behaviour is unchanged. The rule — a
|
||||||
generated-binding API break with an unchanged wire is minor + migration note, because
|
generated-binding API break with an unchanged wire is minor + migration note, because
|
||||||
`VERSION` is the protocol version, not the C++ ABI — is written up as
|
`VERSION` is the protocol version, not the C++ ABI — is written up as
|
||||||
`docs/adr/0014-generated-binding-changes-and-versioning.md` (this instance is
|
`docs/adr/0015-generated-binding-changes-and-versioning.md` (this instance is
|
||||||
mechanical; the ADR records the rule for the next one, which GUI will also consume
|
mechanical; the ADR records the rule for the next one, which GUI will also consume
|
||||||
since it already links `velox::proto`). `kProtocolVersion` moves to `"1.4.0"` with it.
|
since it already links `velox::proto`). `kProtocolVersion` moves to `"1.4.0"` with it.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# ADR 0014 — Versioning a generated-binding break with an unchanged wire
|
# ADR 0015 — Versioning a generated-binding break with an unchanged wire
|
||||||
|
|
||||||
**Status:** accepted · **Date:** 2026-09-10 · **Lane:** PROTO
|
**Status:** accepted · **Date:** 2026-09-10 · **Lane:** PROTO
|
||||||
**Prompted by:** the 1.4.0 bump (DAEMON's P1 — `HandlerResult` / `HandlerError` on the
|
**Prompted by:** the 1.4.0 bump (DAEMON's P1 — `HandlerResult` / `HandlerError` on the
|
||||||
Reference in New Issue
Block a user