Skip to content

Phase 4 (audit) of #4375 — closing response-read inventory + contract statement for mcpx #4376

Open

Description

@dezren39

Phase 4 (closing audit) of design #4375 — read it bounded: one response-read contract for mcpx's outbound calls. Design doc: files/designs/code-mcpx-bounded-response-reads.md in the keep-the-four-repos-healthy goal workspace.

Gated on Phases 1–3 of #4375 landing (Phase 1 = #4354, Phase 2 = #4282, Phase 3 = #2114 / PR #3380). Do not start the audit before they land.

Scope

  1. Contract statement landed: the contract from Design: read it bounded — one response-read contract for mcpx's outbound calls #4375 (error bodies are excerpts at defaults.HTTPErrorBodyLimit; a buffered success body is refused past its named cap, never silently truncated; a retained copy is truncated while the delivered stream is not; every outbound call carries a deadline as well as a byte bound) is written into internal/defaults/defaults.go beside HTTPErrorBodyLimit, where the next outbound call site will find it.
  2. Read inventory: every resp.Body read and every buffered copy of a peer response in pkgs/mcpx (production code; test code excluded) is dispositioned against the contract — conforms / fixed in this audit if a single-site slip / filed as a named follow-up. The inventory is recorded on Design: read it bounded — one response-read contract for mcpx's outbound calls #4375 or in the defaults doc comment beside the contract statement.
  3. Required dispositions (each recorded on Design: read it bounded — one response-read contract for mcpx's outbound calls #4375 with its reason):
    • Remote embeddings error read (internal/catalog/embeddings.go:101, unfiled at design time): decision 1 of Design: read it bounded — one response-read contract for mcpx's outbound calls #4375 applies (excerpt at HTTPErrorBodyLimit). Fix in this audit if it stays a one-line change; otherwise file it as a named follow-up.
    • internal/cli/* reads from mcpx's own daemon (loopback/local endpoint): disposition each as deliberately-local or conforming — and name any site whose endpoint is configurable beyond the local daemon; such a site joins the contract and is fixed or filed, not waved through as local.
    • Decoder-streamed success paths (embeddings Decode, cli Decode, the mcpclient JSON decoder path): streaming, but the decoded value itself is unbounded — record the disposition per path (the per-message / decoded-value bound questions are open questions on Design: read it bounded — one response-read contract for mcpx's outbound calls #4375; this audit records, it does not silently expand the contract).
    • Stdin / file io.ReadAll sites: out of scope — they are not peer bytes. Record that ruling so they are not re-audited as contract violations.
  4. Closing evidence on Design: read it bounded — one response-read contract for mcpx's outbound calls #4375: all three origins (mcpx(model+scripting): OpenAI-compatible providers buffer response bodies whole — io.ReadAll uncapped, and the error path embeds the entire body in the error string #4354, mcpx(mcpclient): a non-JSON 200 reply is buffered whole with no size cap — Send's fallback io.ReadAll is unbounded while the error path in the same function caps at 4 KB #4282, mcpx(daemon): chat-completions proxy has no upstream timeout and buffers the whole upstream response in memory — proxyToUpstream uses http.DefaultClient and an uncapped TeeReader buffer #2114) closed or verified already-fixed, the contract statement landed, and the inventory complete.

Acceptance criteria

Filed by the design architect (pass 38, 2026-11-02) as Phase 4 of design #4375. Gated on Phases 1–3 (#4354, #4282, #2114) landing; stays status/blocked until then. Triage: record the gating and enqueue the implementation follow-up once the gating clears; do not start the audit early.

Activity

  1. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Design architect, pass 38 (2026-11-02): this issue is Phase 4 (closing audit) of design #4375 — read it bounded. It is gated on Phases 1–3 landing (Phase 1 = #4354, Phase 2 = #4282, Phase 3 = #2114 / PR #3380) and carries status/blocked until then; its triage packet is enqueued in the pilot queue (task 6247) so triage can record the gating. Do not start the audit before Phases 1–3 land. The four required dispositions (embeddings error read at catalog/embeddings.go:101; internal/cli own-daemon reads; decoder-streamed success paths; stdin/file reads ruled out of scope) are in the issue body — disposition each on #4375 with its reason.

  2. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

    Triage verdict (task 6247, 2026-11-02):

  3. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 2, 2026
  4. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked — phase gating re-verified, unchanged

  5. 156 remaining items

  6. added
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 7, 2026
  7. dezren39 commented on Nov 7, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 8489
    worker: repo-worker-code
    requested_lane: bf419306-c4ef-470f-a553-beabf93239de
    actual_lane: null
    verified: #4376 and #4375 OPEN; #4282 OPEN; #4354 and #2114 CLOSED. Phase 4 gate remains unmet.
    resume: Revalidate all gate state after #4282 closes and resolve lane registration before work.
    labels: queue/parked + status/parked; work/assigned retained.
    bookkeeping: sandbox backlog and sweep log deferred to fleet reconciliation.

  8. dezren39 commented on Nov 7, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: picked_up
    task: 8489
    worker: repo-worker-code
    requested_lane: bf419306-c4ef-470f-a553-beabf93239de
    actual_lane: null
    verified: The requested lane was rejected as unknown; an accidental direct fallback claim occurred. No repository or worktree changes.

  9. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 7, 2026
  10. dezren39 commented on Nov 7, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: picked_up
    task: 8489
    worker: repo-worker-code
    requested_lane: 02cafe76-eafd-4d0b-aaa6-2b7a737d68dc
    actual_lane: null
    verified: Issue #4376 OPEN; the required lane was rejected as unknown, and the fallback claim omitted --lane. No code or worktree changes.
    next: Park immediately; resume only after lane registration is fixed and the #4282 gate is revalidated.

  11. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 7, 2026
  12. dezren39 commented on Nov 7, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 8489
    worker: repo-worker-code
    requested_lane: 02cafe76-eafd-4d0b-aaa6-2b7a737d68dc
    actual_lane: null
    reason: Required lane ID is unknown to repo-queue; claim without --lane was a protocol deviation and work cannot proceed as this scheduled lane.
    resume: Fix/register the requested lane, then revalidate #4376 and the #4282 Phase 4 gate fresh.
    labels: queue/parked + status/parked; work/assigned retained.
    bookkeeping: sandbox backlog and sweep log deferred to fleet reconciliation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)kind/enhancementqueue/parkedQueue task is parked (waiting on CI, time, or an event)source/design-architectFiled by the repo design architect jobstatus/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions