Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | A clone's asks of a server: the server's own reason, its answer checked, bounded in full, and any number of artifacts Intent: The maintainer, 2026-10-18: "yeah, adversarial testing on a scratch repo would be good." The attack on the staged release (tech-note 63f0e1ff23) found: from a clone, the server's reason for a refusal was lost as "the server answered 403" (finding 7); a server that sends a byte now and then, each within a read's timeout, stalled a clone's asks, and MCP's start in a clone, with no limit (finding 8); a receipt of about 2000 artifacts or more was refused with "Argument list too long" (finding 9); and a clone passed on the server's receipt answer unchecked, an artifact or a user it was not asked of included (finding 10). Expression: Exchange.within, in a file of its own (src/ocx/exchange.cr), makes each request to a server on a client of its own and refuses it once ten seconds have passed since it began, however the server spreads what it sends, then closes the client; the receipt and unaudited asks, a node's signed requests, register's collect and create's pattern fetch all go through it, and their own timeouts go. Server::Asked reads a refusal in JSON, as OCX's page gives one with a 403, as the answer it is. AskServerReceipts refuses an answer that is not of the artifacts asked, in order, and the user asked, and capabilities_at gives nothing for another user. Place#receipts reads 500 artifacts at a time, within what one of fossil's arguments may hold. docs/design/modules.json and docs/survey/functionality.json list the new file, docs/design/modules.md regenerated. docs/interfaces.md: receipt in a clone's checkout (the row still said it was refused there), poll's asks as a POST (it still said GET), and the bound in full. Demonstrates: spec/ocx/receipt_spec.cr, spec/ocx/remote_node_spec.cr, spec/ocx/logins_spec.cr, spec/ocx/create_spec.cr; crystal run ci.cr green: 395 examples, 0 failures; coverage 100.0%. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | agent-tools |
| Files: | files | file ages | folders |
| SHA3-256: |
d748182db97a4657883e64c891506c25 |
| User & Date: | opus-ocx2 2026-10-18 20:29:35.062 |
Context
|
2026-10-18
| ||
| 20:37 | The backlog: what the adversarial fixes left Intent: The maintainer, 2026-10-18: "yeah, adversarial testing on a scratch repo would be good." The fixes of its findings (720b6b5cf3, 898527c82d, ef10d7e83b, e0726b6ab5, d748182db9) each named what they left; the backlog keeps those for the maintainer to pick, as docs/backlog.md says. Expression: docs/backlog.md: a run holding a NUL, posted with Fossil itself, ending a node's watcher; the cost of reading every blob no check-in, file or cluster names at each forum write and node round; the stand-in fossil's redefinition of OCX::Fossil.env, which precept C6's guard leaves no simpler way around; and the smaller echoes and messages left. Demonstrates: spec/guards/delineation_spec.cr, spec/guards/documents_spec.cr, spec/guards/size_spec.cr; crystal run ci.cr green: 395 examples, 0 failures; coverage 100.0%. check-in: f3a128266d user: opus-ocx2 tags: agent-tools | |
| 20:29 | A clone's asks of a server: the server's own reason, its answer checked, bounded in full, and any number of artifacts Intent: The maintainer, 2026-10-18: "yeah, adversarial testing on a scratch repo would be good." The attack on the staged release (tech-note 63f0e1ff23) found: from a clone, the server's reason for a refusal was lost as "the server answered 403" (finding 7); a server that sends a byte now and then, each within a read's timeout, stalled a clone's asks, and MCP's start in a clone, with no limit (finding 8); a receipt of about 2000 artifacts or more was refused with "Argument list too long" (finding 9); and a clone passed on the server's receipt answer unchecked, an artifact or a user it was not asked of included (finding 10). Expression: Exchange.within, in a file of its own (src/ocx/exchange.cr), makes each request to a server on a client of its own and refuses it once ten seconds have passed since it began, however the server spreads what it sends, then closes the client; the receipt and unaudited asks, a node's signed requests, register's collect and create's pattern fetch all go through it, and their own timeouts go. Server::Asked reads a refusal in JSON, as OCX's page gives one with a 403, as the answer it is. AskServerReceipts refuses an answer that is not of the artifacts asked, in order, and the user asked, and capabilities_at gives nothing for another user. Place#receipts reads 500 artifacts at a time, within what one of fossil's arguments may hold. docs/design/modules.json and docs/survey/functionality.json list the new file, docs/design/modules.md regenerated. docs/interfaces.md: receipt in a clone's checkout (the row still said it was refused there), poll's asks as a POST (it still said GET), and the bound in full. Demonstrates: spec/ocx/receipt_spec.cr, spec/ocx/remote_node_spec.cr, spec/ocx/logins_spec.cr, spec/ocx/create_spec.cr; crystal run ci.cr green: 395 examples, 0 failures; coverage 100.0%. check-in: d748182db9 user: opus-ocx2 tags: agent-tools | |
| 20:19 | Every page form a POST; a repository not there said to be, leaving no lock; and -- before words that begin with -- Intent: The maintainer, 2026-10-18: "yeah, adversarial testing on a scratch repo would be good." The attack on the staged release (tech-note 63f0e1ff23) found, among its mediums and lows: every page form for a tool needing no capability submitted by GET, so collect's code was kept in the URL and a long query was cut short without a word (finding 5); a tool named on a repository that is not there left a lock file beside it, and was refused as if its user held nothing (finding 12); and the command line had no way to give a value beginning with -- (finding 13). Expression: Page#form always writes method="POST"; the CGI already takes a POST for a tool needing no capability. Place#run fails a fossil command on a repository that is not there, naming it, before taking the turn, unless the command names its repository by `on`, as a clone, which makes it, does; Command.refusal says at the command line that there is no such repository to read capabilities from. Cli.read takes every word after -- as a bare word. docs/interfaces.md: the CGI's forms, and a repository named that is not there. knowledge-map.json lists the adversarial tests' tech-notes among the records kept elsewhere; docs/knowledge-map.md regenerated. Demonstrates: spec/ocx/styles_spec.cr, spec/ocx/harness_spec.cr, spec/ocx/fossil_spec.cr, spec/ocx/command_spec.cr, spec/ocx/logins_spec.cr; crystal run ci.cr green: 394 examples, 0 failures; coverage 100.0%. check-in: e0726b6ab5 user: opus-ocx2 tags: agent-tools | |
Changes
Changes to docs/design/modules.json.
Changes to docs/design/modules.md.
Changes to docs/interfaces.md.
Changes to docs/survey/functionality.json.
Changes to spec/ocx/receipt_spec.cr.
Changes to src/ocx/commands/create.cr.
Changes to src/ocx/commands/receipt.cr.
Changes to src/ocx/commands/register.cr.
Added src/ocx/exchange.cr.
Changes to src/ocx/fossil/said.cr.
Changes to src/ocx/server.cr.