P1: 65536 fix verified; new finding = admission gate 503 (backend busy)

This commit is contained in:
deus
2026-08-10 05:21:38 +00:00
parent 55a704de01
commit b2185eeaa0
3 changed files with 260 additions and 0 deletions
+124
View File
@@ -0,0 +1,124 @@
GO vom Menschen — grind-Container neu gestartet (bullpen-coder mit max_tokens 65536, Modell-Kontext 64k). Bitte Package 1/2 (envelope.lua) unveraendert an @coder dispatchen, fortlaufende Job-Nummer ab 719.
KAMPAGNE (a) ENGLISH-ONLY — KICKOFF, PACKAGE 1/2: envelope.lua
PROBLEM
PO-Order: replace all German terms (code and comments) with English translations. Phase 1 is
purely mechanical — renames and comment translations ONLY, zero behavior change. The conformance
suite (27/27, sha256 c90450a6…, Vertrag unveraendert) is the regression net. Erste Stufe:
umschlag.lua wird zu envelope.lua (Dateiname + Modul-Funktion + Parameter), dann versions.lua,
dann lmcp.lua (Integration = Operator-Arbeit). KEINE Logik aendern.
WHERE
Der Coder arbeitet in seiner Sandbox (Container grind, /var/lib/bullpen/coder/). Die
Quelldatei liegt NICHT dort — der vollstaendige Inhalt von umschlag.lua steht weiter unten
in diesem Ticket. Aus ihm entsteht envelope.lua. Die Zieldatei ist ein REINES Modul.
TRAPS (Verboten — das sind die plausiblen Fehler)
- NICHT die Logik aendern: Regeln 15 bleiben exakt (Fehlercodes -32020/-32602, Reihenfolge,
Meldungstexte Englisch wie sie sind). Es sind NUR Identifier-Umbenennungen + Kommentar-Uebersetzung.
- KEIN Selbsttest in der Datei (Entscheidung C der letzten Kampagne: die Suite ist der Test).
- KEINE Fences/Backticks/Markdown — Zeile 1 echte Lua, `return M` als LETZTE Zeile, danach nichts.
- KEINE weiteren Funktionen, keine print-Ausgaben im Modul.
- Die Funktion heisst NEU `M.check` (nicht mehr `M.pruefe`), Parameter heissen NEU `header`
(nicht `kopf`) und `body` (nicht `rumpf`). Lua-Tabellenzugriffe `kopf[...]``header[...]`,
`rumpf.method``body.method`, `rumpf.params``body.params`.
- Der Dateiname im Ticket ist nur ein Hinweis — geliefert wird der DATEIINHALT.
ANFORDERUNG (Zieldatei envelope.lua)
Nimm den untenstehenden Quelltext von umschlag.lua und erzeuge daraus envelope.lua:
1. Datei-Kommentarzeilen (oben, -- umschlag.lua … / -- Basis: job667.lua … / -- kopf: … / -- rumpf: … /
-- Rueckgabe: …) ins Englische uebersetzen, sinngemaess (die deutsche Provenienz darf bleiben,
z.B. "Based on job667.lua (coder run 5, #669)").
2. `function M.pruefe(kopf, rumpf)``function M.check(header, body)`; alle Verwendungen von
`kopf``header`, `rumpf``body` im Funktionskoerper.
3. Inline-Kommentare (-- Regel 1 … -- Erfolg) ins Englische uebersetzen.
4. Regeln, Codes, Meldungstexte, Reihenfolge: UNVERAENDERT.
5. Struktur: `local M = {}``return M` (letzte Zeile). Kein Selbsttest.
ABNAHME (Coder-seitig)
- Sandbox-Parse-Check: `lua5.4 envelope.lua` → exit 0, keine stderr.
- Melde: (1) Dateiinhalt als Rohtext ohne Fences, (2) sha256, (3) Parse-Check-Ergebnis.
- Der Operator integriert, laesst die Suite laufen (27/27 muss gruen bleiben) und attestiert.
QUELLTEXT (umschlag.lua, komplett):
```
-- umschlag.lua: Kopf-/Envelope-Pruefung nach Spec 2026-07-28
-- Basis: job667.lua (coder Lauf 5, #669) — parst, reine Struktur, zwei
-- Defekte per Foreman-Review #671/#674 hier korrigiert:
-- Regel 3: mcp-name-KOPF wird geprueft (war nur params.name/uri)
-- Regel 4: _meta liegt unter rumpf.params._meta (war rumpf.meta)
local M = {}
-- kopf: Tabelle der HTTP-Kopfzeilen, Namen KLEINGESCHRIEBEN, z.B.
-- {['mcp-method']='tools/list',['mcp-protocol-version']='2026-07-28'}
-- rumpf: dekodierte JSON-RPC-Anfrage als Lua-Tabelle
-- {jsonrpc='2.0',id=1,method='tools/list',params={_meta={...}}}
-- Rueckgabe: true,nil,nil | false,<fehlercode>,<meldung>
function M.pruefe(kopf, rumpf)
if not kopf or not rumpf then
return false, -32600, "Invalid Request"
end
-- Regel 1: k['mcp-protocol-version'] fehlt
if not kopf['mcp-protocol-version'] then
return false, -32020, 'Missing required header: MCP-Protocol-Version'
end
-- Regel 2: k['mcp-method'] fehlt
if not kopf['mcp-method'] then
return false, -32020, 'Missing required header: Mcp-Method'
end
-- Regel 2: k['mcp-method'] ~= rumpf.method
if kopf['mcp-method'] ~= rumpf.method then
return false, -32020, 'Mcp-Method header does not match body'
end
-- Regel 3: Mcp-Name-Kopf Pflicht bei tools/call, resources/read, prompts/get
local method = rumpf.method
local params = rumpf.params or {}
if method == 'tools/call' or method == 'prompts/get' then
if not kopf['mcp-name'] or kopf['mcp-name'] ~= params.name then
return false, -32020, 'Mcp-Name header does not match body'
end
elseif method == 'resources/read' then
if not kopf['mcp-name'] or kopf['mcp-name'] ~= params.uri then
return false, -32020, 'Mcp-Name header does not match body'
end
end
-- Regel 4: _meta-Pflichtfelder (liegen unter params._meta)
local meta = (rumpf.params or {})._meta or {}
if not meta['io.modelcontextprotocol/protocolVersion'] then
return false, -32602, 'Missing required _meta field: io.modelcontextprotocol/protocolVersion'
end
if not meta['io.modelcontextprotocol/clientCapabilities'] then
return false, -32602, 'Missing required _meta field: io.modelcontextprotocol/clientCapabilities'
end
-- Regel 5: k['mcp-protocol-version'] ~= meta['io.modelcontextprotocol/protocolVersion']
if kopf['mcp-protocol-version'] ~= meta['io.modelcontextprotocol/protocolVersion'] then
return false, -32020, 'Header MCP-Protocol-Version does not match _meta protocolVersion'
end
-- Erfolg
return true, nil, nil
end
return M
```
STEP 1 @testdesigner: NICHT noetig fuer Phase 1 — der Vertrag existiert bereits
(konformitaet_2026_07_28.py, sha256 c90450a6240f133c…, 27/27 gruen, E1-Entscheidung: Suite
bleibt unveraendert). @testdesigner kommt erst in Phase 2 (Dual-Protokoll-Suite) zum Zug.
STEP 2 @coder: envelope.lua aus dem Quelltext oben erzeugen (Regeln/TRAPS beachten),
Parse-Check in der Sandbox, Inhalt + sha256 melden.
CONSTRAINTS
- Nur /var/lib/bullpen/coder/ in der Sandbox. Kein laufender Dienst, keine anderen Dateien.
- Lieferung als Rohtext im Raum, keine Fences.
Dispatch, then END YOUR TURN.
+124
View File
@@ -0,0 +1,124 @@
GO #2 — grind-Container neu gestartet, Patch in grind bestaetigt (MAXBODY 65536, Modell ctx 65536 laut Katalog). Bitte Package 1/2 (envelope.lua) erneut an @coder dispatchen, fortlaufende Job-Nummer. Erwartung: Datei NICHT leer (mind. ~2k chars).
KAMPAGNE (a) ENGLISH-ONLY — KICKOFF, PACKAGE 1/2: envelope.lua
PROBLEM
PO-Order: replace all German terms (code and comments) with English translations. Phase 1 is
purely mechanical — renames and comment translations ONLY, zero behavior change. The conformance
suite (27/27, sha256 c90450a6…, Vertrag unveraendert) is the regression net. Erste Stufe:
umschlag.lua wird zu envelope.lua (Dateiname + Modul-Funktion + Parameter), dann versions.lua,
dann lmcp.lua (Integration = Operator-Arbeit). KEINE Logik aendern.
WHERE
Der Coder arbeitet in seiner Sandbox (Container grind, /var/lib/bullpen/coder/). Die
Quelldatei liegt NICHT dort — der vollstaendige Inhalt von umschlag.lua steht weiter unten
in diesem Ticket. Aus ihm entsteht envelope.lua. Die Zieldatei ist ein REINES Modul.
TRAPS (Verboten — das sind die plausiblen Fehler)
- NICHT die Logik aendern: Regeln 15 bleiben exakt (Fehlercodes -32020/-32602, Reihenfolge,
Meldungstexte Englisch wie sie sind). Es sind NUR Identifier-Umbenennungen + Kommentar-Uebersetzung.
- KEIN Selbsttest in der Datei (Entscheidung C der letzten Kampagne: die Suite ist der Test).
- KEINE Fences/Backticks/Markdown — Zeile 1 echte Lua, `return M` als LETZTE Zeile, danach nichts.
- KEINE weiteren Funktionen, keine print-Ausgaben im Modul.
- Die Funktion heisst NEU `M.check` (nicht mehr `M.pruefe`), Parameter heissen NEU `header`
(nicht `kopf`) und `body` (nicht `rumpf`). Lua-Tabellenzugriffe `kopf[...]``header[...]`,
`rumpf.method``body.method`, `rumpf.params``body.params`.
- Der Dateiname im Ticket ist nur ein Hinweis — geliefert wird der DATEIINHALT.
ANFORDERUNG (Zieldatei envelope.lua)
Nimm den untenstehenden Quelltext von umschlag.lua und erzeuge daraus envelope.lua:
1. Datei-Kommentarzeilen (oben, -- umschlag.lua … / -- Basis: job667.lua … / -- kopf: … / -- rumpf: … /
-- Rueckgabe: …) ins Englische uebersetzen, sinngemaess (die deutsche Provenienz darf bleiben,
z.B. "Based on job667.lua (coder run 5, #669)").
2. `function M.pruefe(kopf, rumpf)``function M.check(header, body)`; alle Verwendungen von
`kopf``header`, `rumpf``body` im Funktionskoerper.
3. Inline-Kommentare (-- Regel 1 … -- Erfolg) ins Englische uebersetzen.
4. Regeln, Codes, Meldungstexte, Reihenfolge: UNVERAENDERT.
5. Struktur: `local M = {}``return M` (letzte Zeile). Kein Selbsttest.
ABNAHME (Coder-seitig)
- Sandbox-Parse-Check: `lua5.4 envelope.lua` → exit 0, keine stderr.
- Melde: (1) Dateiinhalt als Rohtext ohne Fences, (2) sha256, (3) Parse-Check-Ergebnis.
- Der Operator integriert, laesst die Suite laufen (27/27 muss gruen bleiben) und attestiert.
QUELLTEXT (umschlag.lua, komplett):
```
-- umschlag.lua: Kopf-/Envelope-Pruefung nach Spec 2026-07-28
-- Basis: job667.lua (coder Lauf 5, #669) — parst, reine Struktur, zwei
-- Defekte per Foreman-Review #671/#674 hier korrigiert:
-- Regel 3: mcp-name-KOPF wird geprueft (war nur params.name/uri)
-- Regel 4: _meta liegt unter rumpf.params._meta (war rumpf.meta)
local M = {}
-- kopf: Tabelle der HTTP-Kopfzeilen, Namen KLEINGESCHRIEBEN, z.B.
-- {['mcp-method']='tools/list',['mcp-protocol-version']='2026-07-28'}
-- rumpf: dekodierte JSON-RPC-Anfrage als Lua-Tabelle
-- {jsonrpc='2.0',id=1,method='tools/list',params={_meta={...}}}
-- Rueckgabe: true,nil,nil | false,<fehlercode>,<meldung>
function M.pruefe(kopf, rumpf)
if not kopf or not rumpf then
return false, -32600, "Invalid Request"
end
-- Regel 1: k['mcp-protocol-version'] fehlt
if not kopf['mcp-protocol-version'] then
return false, -32020, 'Missing required header: MCP-Protocol-Version'
end
-- Regel 2: k['mcp-method'] fehlt
if not kopf['mcp-method'] then
return false, -32020, 'Missing required header: Mcp-Method'
end
-- Regel 2: k['mcp-method'] ~= rumpf.method
if kopf['mcp-method'] ~= rumpf.method then
return false, -32020, 'Mcp-Method header does not match body'
end
-- Regel 3: Mcp-Name-Kopf Pflicht bei tools/call, resources/read, prompts/get
local method = rumpf.method
local params = rumpf.params or {}
if method == 'tools/call' or method == 'prompts/get' then
if not kopf['mcp-name'] or kopf['mcp-name'] ~= params.name then
return false, -32020, 'Mcp-Name header does not match body'
end
elseif method == 'resources/read' then
if not kopf['mcp-name'] or kopf['mcp-name'] ~= params.uri then
return false, -32020, 'Mcp-Name header does not match body'
end
end
-- Regel 4: _meta-Pflichtfelder (liegen unter params._meta)
local meta = (rumpf.params or {})._meta or {}
if not meta['io.modelcontextprotocol/protocolVersion'] then
return false, -32602, 'Missing required _meta field: io.modelcontextprotocol/protocolVersion'
end
if not meta['io.modelcontextprotocol/clientCapabilities'] then
return false, -32602, 'Missing required _meta field: io.modelcontextprotocol/clientCapabilities'
end
-- Regel 5: k['mcp-protocol-version'] ~= meta['io.modelcontextprotocol/protocolVersion']
if kopf['mcp-protocol-version'] ~= meta['io.modelcontextprotocol/protocolVersion'] then
return false, -32020, 'Header MCP-Protocol-Version does not match _meta protocolVersion'
end
-- Erfolg
return true, nil, nil
end
return M
```
STEP 1 @testdesigner: NICHT noetig fuer Phase 1 — der Vertrag existiert bereits
(konformitaet_2026_07_28.py, sha256 c90450a6240f133c…, 27/27 gruen, E1-Entscheidung: Suite
bleibt unveraendert). @testdesigner kommt erst in Phase 2 (Dual-Protokoll-Suite) zum Zug.
STEP 2 @coder: envelope.lua aus dem Quelltext oben erzeugen (Regeln/TRAPS beachten),
Parse-Check in der Sandbox, Inhalt + sha256 melden.
CONSTRAINTS
- Nur /var/lib/bullpen/coder/ in der Sandbox. Kein laufender Dienst, keine anderen Dateien.
- Lieferung als Rohtext im Raum, keine Fences.
Dispatch, then END YOUR TURN.
+12
View File
@@ -64,3 +64,15 @@ Das ist INFRA, keine Gesellschafts-Aufgabe und kein Task-Shape-Problem.
- AUSSTEHEND (Flottenzugriff): Patch im grind-Container einspielen + bullpen-coder.service
neustarten. Anleitung: /root/harvest/deploy_coder_65536.md.
- Danach: Entwarnung an deus, Go des Menschen, dann re-dispatch P1 (envelope.lua) via @foreman.
## BUDGET-FIX VERIFIZIERT + NEUER BEFUND (2026-08-10)
- 65536-Budget WIRKT: kleine Requests liefern echten content (mt=1400 -> 170 chars,
tiny -> 200 in 37-73s). Leerdatei-Muster (692/696/699/702/725) ist behoben.
- Neuer Befund: voller Coder-Request (langes Reasoning) -> HTTP 503 nach ~90s,
body: {"error":{"message":"backend busy (admission gate), retry shortly","type":"backend_busy"}}.
Das ist Admission-Gate-Lastabwurf, kein Request-Problem. Deckt sich mit
"Hardware ueberlastet" (Mensch).
- Dispatch #2 (ask 749, job 751) -> reply 754: codegen error 503. foreman hat gestoppt
(758), keine weiteren Dispatches ohne Entwarnung.
- Empfehlung: Gate abkuehlen lassen (keine parallelen Probes!), dann EIN sauberer
Re-Dispatch. deus probt nicht mehr parallel zum Coder.