gosalyn: Case 2 design ruling after r11, idea items capped at 3 of 120 characters: M5, the B5 note, the 5.1 residual (now 360 characters per reply) and 10 step 8 closed by Jason; the rest of M5 unchanged, C2-06 builds and tests the new boundaries (Q219, mos-1299, Vikunja 465, ludwig-0014 Q4)

This commit is contained in:
jason.woltje committed 2026-10-22 10:56:13 -05:00
1 parent 51fdfb7e21
commit 2852348d2e
1 file changed
+18 -8
+18 -8
View File
@@ -114,6 +114,15 @@ Webby's round d1 on this ruling (webby-0088, REVIEW-d1 at webby/reviews 35130c26
refusal for a prefix that holds a book folder (B1), and asked for the `unmapped` row, the `kind` values,
the readers and the section 8 line (N1-N4). All five are in the text above, in 1.2 and in 8.
## Ruling after r11: idea items capped at 3 of 120 characters (Q219)
Jason answered Q26 with "yes" (DECISIONS Q219, mos-1299, Vikunja 465, ludwig-0014 Q4). An `idea` item
is at most 120 characters, at most 3 per reply. The rest of M5 is unchanged: 10 items and 1,200
characters of item text per reply, 300 for `fact`, `finding`, `correction` and `question`, and the
correction edit distance. The residual in 5.1 is now 360 characters of free suggestion text per reply,
and 10 step 8 is closed by Jason. C2-06 hasn't landed, so it builds with the new numbers, and its tests
refuse one past each new boundary and accept at it.
## Changes from r10
Webby returned r10 with B1-B3 and N1-N5 (webby-0036, `agents/webby/work/case2-r10/REVIEW.md` at
@@ -407,7 +416,8 @@ the line says so.
- B4. On a library business the conversation reader leaves creative sessions out of `catalogue()` and
refuses to open one by id (5.1 M7, C2-10a in the slice).
- B5. At most 10 items and 1,200 characters of item text per reply. An `idea` item is at most 200
characters, at most 5 per reply. Other kinds are at most 300 (5.1).
characters, at most 5 per reply. Other kinds are at most 300 (5.1). Q219 later set ideas to at most 3
of 120 characters (ruling after r11).
- B6. `correction.from` must equal one cite's `quote`, inside that cite's lines (5.2).
- B7. The broker keeps fetched page text per session, bounded and in memory, not in a table. The bundle
refuses the `harness-builtin` web source for creative definitions (5.2, 5.3).
@@ -888,20 +898,20 @@ New constants in `vocabulary.mjs`, each changed only by a reviewed commit:
| M2 tool gate (`gate.mjs:137-138`, unchanged) | `Write`, `Edit` or `Bash` from a creative session | C2-08: `decide()` with each creative policy refuses all three, on pi and claude-code |
| M3 typed tool set (`tools.mjs`) | The tool list is exact: lookups and `send_message`. No write tool, no `raise_decision` | C2-05b: a snapshot of tool names per creative role |
| M4 library verbs are human only | `library.file`, `library.sync` and `library.status` from an agent session, with `human-required` as at `broker.mjs:1434-1435`. Later write verbs join the list | C2-04 and C2-03a: each verb from an agent session refuses |
| M5 cited-reply guard (5.2) | A reply that isn't a list of short cited items. At most 10 items and 1,200 characters of item text per reply. An `idea` item is at most 200 characters, at most 5 per reply. A `fact`, `finding`, `correction` or `question` item is at most 300. A `correction`'s `to` is within edit distance max(12, 25% of `from`) of its `from` | C2-06: each limit refused one past the boundary and accepted at it |
| M5 cited-reply guard (5.2) | A reply that isn't a list of short cited items. At most 10 items and 1,200 characters of item text per reply. An `idea` item is at most 120 characters, at most 3 per reply (Q219). A `fact`, `finding`, `correction` or `question` item is at most 300. A `correction`'s `to` is within edit distance max(12, 25% of `from`) of its `from` | C2-06: each limit refused one past the boundary and accepted at it |
| M6 no free-text decision channel | `decision.raise` from a creative definition refuses `decision-not-allowed` in the broker. The typed tool is also absent (M3) | C2-08: a creative session's raise refuses and no decision row appears. An assistant's raise still works |
| M7 no raw session view | On a business with a library project, the conversation reader leaves creative sessions out of `catalogue()`, and `open()` refuses them with `conversation-not-listed` | C2-10a: a creative session file under the root isn't listed and won't open by id. An assistant session still lists |
| M8 no raw Discord engine | On a business with a library project, `discord check` and `discord run` refuse a binding whose engine isn't `mosaic-bus` (`discord-engine-not-allowed`), and a `mosaic-bus` binding with `tools` | C2-10a: both refuse on a library business. A pi binding on a business without a library still checks clean |
| M9 no agent write to the mapping | An organization write whose `projects` differ from the file's refuses `organization-projects-protected`, in `organizationWriter.write` | C2-04: `write` called directly with a changed playground prefix, and again with a changed hybrid entry, refuses, and the file and `changes.jsonl` are unchanged |
| M10 personas and creative instances are the human's | Any write by an actor other than the business file's `human` that touches a creative instance: the chief of staff's `assistants`, `instances` and `models` keys through `organization.set`, and the tester's `instances.set` and `routes.set`. A persona file that fails its digest, mode or fence check. A harness argv that holds the prompt text | C2-08: each path refuses with its code (4) and the file is unchanged. The human's `instances.set` and `routes.set` on `bean` work, and so does her `limits.set` change to Bean's `launch.models` key. Tester cases through a bound tester session. A mutant without the `models` check fails. No `instances` read, `changes.jsonl` line or adapter argv holds a marker string from a fixture persona |
Residual, in numbers. One reply can carry up to 5 `idea` items of 200 characters, which is 1,000
Residual, in numbers. One reply can carry up to 3 `idea` items of 120 characters, which is 360
characters of free suggestion text inside a total of 1,200 characters of item text. Each item must quote
a real line of her repo, but the quote can be any line. Over a chat that adds up. Code can't tell a
sentence of story from a sentence of advice, and this design doesn't propose a classifier. Jason wrote
"NEVER", and Q176 says the system enforces it, so the residual is his or Melanie's to accept (10 step
8). Lower numbers are a constant change: 3 ideas of 120 characters would make the residual 360. What
lands in her repo stays hers alone. M2 to M4 make an agent write there impossible.
"NEVER", and Q176 says the system enforces it. He chose these caps over 5 ideas of 200 characters
(Q219), which closes 10 step 8. What lands in her repo stays hers alone. M2 to M4 make an agent write
there impossible.
### 5.2 Agents always refer to the source material
@@ -1405,8 +1415,8 @@ What it adds is one bot account with read access to that one repo.
and asks her to confirm the mapping, the universes, the playground folders and which specialists to
start with, and when. A specialist she wants later is added by the human through `instances.set`
(4), with no hand edit and no new row.
8. The residual in 5.1: up to 5 idea items of 200 characters per reply, 1,000 characters of free text
within 1,200 total. He or Melanie accepts it or orders lower caps. Mos takes it to him.
8. The residual in 5.1. Closed: Jason ordered the lower caps, 3 idea items of 120 characters per reply,
360 characters of free text within 1,200 total (Q219, mos-1299).
9. The instance start. Stopping Hermes comes later, and only when she chooses it.
- The bus and the Console are already running from step 2c, and both come back after a boot on
their own (Q189, which reverses mos-1097 item 1). Nobody starts the Console by hand here. With a