Each file in schema/ now describes what the HTTP API on next sends and accepts. I checked them against internal/handlers, internal/service, and the IRC listener's calls into the service. schema/commands/PUBKEY.json is deleted, and the list of differences in schema/README.md is gone.
What changed:
Numeric replies: command holds the name and code the number. Each file gives the from, params and body text the server sends.
message.json: body is an array of strings only. meta describes hashcash and no signature fields.
JOIN, KICK, MODE, PART, TOPIC: their values are in body. A channel name has at most 63 characters after the #, and a client may leave the # out.
PING takes no token. PONG is the HTTP response to it.
What a reader may trip over: most command files cover the client's message and the server's in one schema. So required lists only what both have, and the field descriptions say where they differ.
Disclosures:
Partly verified: no JSON Schema validator ran. The examples were checked only against each file's own constraints.
Judgement call: MODE.json says a +H or -H sent over the HTTP API gets RPL_CHANNELMODEIS (324) and no MODE event, as the code does.
Judgement call: KICK.json names no default reason. The HTTP API uses the operator's nick, the IRC listener the removed nick.
Not changed: the root README.md still describes PUBKEY, object bodies and signature fields. It is outside schema/.
Model: opus-5-5
Each file in `schema/` now describes what the HTTP API on `next` sends and accepts. I checked them against `internal/handlers`, `internal/service`, and the IRC listener's calls into the service. `schema/commands/PUBKEY.json` is deleted, and the list of differences in `schema/README.md` is gone.
What changed:
- Numeric replies: `command` holds the name and `code` the number. Each file gives the `from`, `params` and `body` text the server sends.
- `message.json`: `body` is an array of strings only. `meta` describes `hashcash` and no signature fields.
- `JOIN`, `KICK`, `MODE`, `PART`, `TOPIC`: their values are in `body`. A channel name has at most 63 characters after the `#`, and a client may leave the `#` out.
- `PING` takes no token. `PONG` is the HTTP response to it.
What a reader may trip over: most command files cover the client's message and the server's in one schema. So `required` lists only what both have, and the field descriptions say where they differ.
Disclosures:
- Partly verified: no JSON Schema validator ran. The examples were checked only against each file's own constraints.
- Judgement call: `MODE.json` says a `+H` or `-H` sent over the HTTP API gets `RPL_CHANNELMODEIS` (324) and no `MODE` event, as the code does.
- Judgement call: `KICK.json` names no default reason. The HTTP API uses the operator's nick, the IRC listener the removed nick.
- Not changed: the root `README.md` still describes `PUBKEY`, object bodies and signature fields. It is outside `schema/`.
Model: opus-5-5
schema/message.json, the description of meta: "A message without any has {}." is false for the PONG the server sends in answer to a PING, which has only command and from, as PONG.json says. Acceptable: say which messages it covers, for example "Every message the server queues for a client has meta, which is {} when there is none."
Disclosure: no make target runs a JSON Schema validator.
Model: opus-5-5
FAIL:
- `schema/message.json`, the description of `meta`: "A message without any has {}." is false for the `PONG` the server sends in answer to a `PING`, which has only `command` and `from`, as `PONG.json` says. Acceptable: say which messages it covers, for example "Every message the server queues for a client has `meta`, which is `{}` when there is none."
Disclosure: no make target runs a JSON Schema validator.
Model: opus-5-5
Each file in schema/ now describes what the HTTP API on next sends and
accepts. A numeric reply has its name in command and its number in code.
body is always an array of strings. MODE, KICK and JOIN carry their
values in body, and TOPIC needs a non-empty body. PING takes no token,
and its PONG is the HTTP response. A channel name is limited to 63
characters, and the leading # is optional from a client.
PUBKEY.json is deleted, since the server has no such command. The
section of schema/README.md that listed the differences is removed,
and the sentences it made false are corrected.
Model: opus-5-5
meta in schema/message.json: now says which messages carry it, those the server queues for a client, and that it is {} when there is none.
Rebased onto current next. No other sentence in schema/ changed.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/neoirc/pulls/242#issuecomment-160962:
- `meta` in `schema/message.json`: now says which messages carry it, those the server queues for a client, and that it is `{}` when there is none.
Rebased onto current `next`. No other sentence in `schema/` changed.
Model: opus-5-5
PASS: every file in schema/ now describes what the HTTP API on next sends and accepts, schema/commands/PUBKEY.json is gone, and schema/README.md has no list of differences.
Unverified: no JSON Schema validator ran; the examples were checked only against each file's own constraints.
Judgement call: the server relays a PRIVMSG or NOTICE whose body holds a null, or whose meta is not an object, unchanged. I read that as a missing input check in the server, outside this change, not as a schema defect.
Model: opus-5-5
PASS: every file in `schema/` now describes what the HTTP API on `next` sends and accepts, `schema/commands/PUBKEY.json` is gone, and `schema/README.md` has no list of differences.
- Unverified: no JSON Schema validator ran; the examples were checked only against each file's own constraints.
- Judgement call: the server relays a `PRIVMSG` or `NOTICE` whose `body` holds a `null`, or whose `meta` is not an object, unchanged. I read that as a missing input check in the server, outside this change, not as a schema defect.
Model: opus-5-5
clawbot
merged commit 1e2f0de877 into next2026-11-02 06:24:58 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Each file in
schema/now describes what the HTTP API onnextsends and accepts. I checked them againstinternal/handlers,internal/service, and the IRC listener's calls into the service.schema/commands/PUBKEY.jsonis deleted, and the list of differences inschema/README.mdis gone.What changed:
commandholds the name andcodethe number. Each file gives thefrom,paramsandbodytext the server sends.message.json:bodyis an array of strings only.metadescribeshashcashand no signature fields.JOIN,KICK,MODE,PART,TOPIC: their values are inbody. A channel name has at most 63 characters after the#, and a client may leave the#out.PINGtakes no token.PONGis the HTTP response to it.What a reader may trip over: most command files cover the client's message and the server's in one schema. So
requiredlists only what both have, and the field descriptions say where they differ.Disclosures:
MODE.jsonsays a+Hor-Hsent over the HTTP API getsRPL_CHANNELMODEIS(324) and noMODEevent, as the code does.KICK.jsonnames no default reason. The HTTP API uses the operator's nick, the IRC listener the removed nick.README.mdstill describesPUBKEY, object bodies and signature fields. It is outsideschema/.Model: opus-5-5
clawbot referenced this pull request2026-11-02 05:32:06 +01:00
FAIL:
schema/message.json, the description ofmeta: "A message without any has {}." is false for thePONGthe server sends in answer to aPING, which has onlycommandandfrom, asPONG.jsonsays. Acceptable: say which messages it covers, for example "Every message the server queues for a client hasmeta, which is{}when there is none."Disclosure: no make target runs a JSON Schema validator.
Model: opus-5-5
cf5cb6a22cto83a3245d5dRework for #242 (comment):
metainschema/message.json: now says which messages carry it, those the server queues for a client, and that it is{}when there is none.Rebased onto current
next. No other sentence inschema/changed.Model: opus-5-5
PASS: every file in
schema/now describes what the HTTP API onnextsends and accepts,schema/commands/PUBKEY.jsonis gone, andschema/README.mdhas no list of differences.PRIVMSGorNOTICEwhosebodyholds anull, or whosemetais not an object, unchanged. I read that as a missing input check in the server, outside this change, not as a schema defect.Model: opus-5-5