Skip to content

hosted door: createHonoApp sends responses uncompressed; record compression as the platform's or CDN's job and document it #32536

Closed

Description

@objectstack-fleet

domain:server#3 · os-bill · session_01Utp6CaAUev5V62cLHhQwBi

Filing category: ③ follow-up the maintainer's ruling asks for (#32155, ruling Y′ recorded on the card; analysis /mnt/project-files/server-seat3-p2/card-32155/fable-analysis-xy.md; read from the code, not run).
Refs #32155 · Refs #32491

Business reason

After #32491, a self-hosted ObjectStack server compresses its responses (brotli or gzip above 1 KB), which cuts the console's vendor bundle from about 2 MB on the wire. A deployment that serves through the hosted door, createHonoApp in @objectstack/hono (Cloudflare Workers, Deno, Bun, Vercel Edge, and the cloud's tenant kernels), does not compress in the application. Operators need to know where compression is supposed to happen there, so nobody ships a large uncompressed bundle by mistake, or compresses twice.

What happens

  1. feat(plugin-hono-server): compress responses by default (brotli/gzip above 1 KB, never streams) #32491 adds compression only to plugin-hono-server (the self-hosted Node door). Its implementation uses node:zlib and node:buffer, which edge runtimes do not offer directly.
  2. createHonoApp adds neither Content-Encoding nor Vary: Accept-Encoding. The two doors-equal conformance pins (runtime + hono: an exact /approvals/act dispatcher domain that forwards to the approvals service member, and a catch-all that stops consuming non-JSON bodies (segment 2 of ruling A on #22438) #22576, runtime: an exact /webhooks/redeliver dispatcher domain that forwards to the declared redeliver member, with a typed refusal for an absent slot (webhooks segment 2 of #22564's stage 2) #22755) now compare across doors with content-encoding and the accept-encoding member of Vary treated as transport headers.
  3. Nothing in the adapter README or the deployment docs says who compresses on the hosted door.

Expected

The owning seat states the rule and writes it down: on the hosted door, compression is the platform's or CDN's job (edge platforms compress by default), and the application does not compress there. If measurement shows a hosted target that does not compress, file the edge-native compression work separately. Document the rule in packages/adapters/hono/README.md and the deployment docs.

Re-check (premise): after #32491 lands, git grep -n "Content-Encoding\|compress" -- packages/adapters/hono/src finds no compression in the hosted door.
Reader who acts: the seat that owns packages/adapters/hono and the deployment docs.

Activity

  1. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch → domain:server · p3 · pm:queue · 2026-11-12T06:05Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobs
    domain:serverDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Nov 12, 2026
  3. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-elon-musk · session_016WV4cxHwXNcGcAHNerZsom

    Fold: 2026-11-14T21:21Z · area-lease pilot #33059, area A5. This card rides in one PR with #32565 (same compression rule, same docs), branch claude/area-A5-32565. The PR body will carry Fixes #32536. Not a separate claim.

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  5. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#5 · os-elon-musk · session_016WV4cxHwXNcGcAHNerZsom

    Claim: area-lease pilot #33059, area A5 thread · 2026-11-14T21:53Z · p3 (A5 lease), coupled with #32565 in one PR (#33452), dispatched to an os-dev subagent of this thread. Restates the earlier Fold: note as a Claim: record.
    Session: session_016WV4cxHwXNcGcAHNerZsom
    Account: os-elon-musk
    Branch: claude/area-A5-32565
    Worktree: objectstack-issue-32565
    Domain: domain:server
    Seat: domain:server#5 (area A5)
    File surface: packages/adapters/hono/README.md and the deployment docs page that names the hosted door (ruling Y′ on #32155, item 3), shared PR with #32565. Stop on breach.
    Clause-②: no (docs only for this card)
    Metadata-protocol: none
    Premise: re-measured on origin/main before any edit

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

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsdomain:serverDomain lane — seat card indexed by label:pm:seatlease:A5pm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions