Skip to content

Bound native sidebar replies for released iOS clients - #469

Merged
i2cjak merged 1 commit into
mainfrom
backplane/native-sidebar-release-013-679512
Oct 28, 2026
Merged

i2cjak merged 1 commit into
mainfrom
backplane/native-sidebar-release-013-679512

Conversation

@i2cjak

@i2cjak i2cjak commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator

Long project histories can make the native view exceed the hub's reply limit before the released iOS client receives any content. The 0.13 baseline reproduces LIMIT with no ready view on both isolated logical-hub cases.

This change negotiates bounded native sidebar metadata before constructing row JSON. Closed shelves retain authoritative counts; signed Previous/Next controls keep every row reachable, including selected descendants outside the current range. Final replies retain the existing byte cap. Fitting reuses one post-action result, and read-only paging publishes server session values using captured request keys without adopting caller values.

The correction preserves main's existing 47 routes, viewer/pending/diff/mail behavior, draft ownership, and legacy opt-out/raw-32 behavior. It adds one read-only paging route and does not require a new iOS bridge for the released bounded-sidebar contract.

Validation:

  • 204 focused assertions passed: planner/projection/live/scale 70, actor 8, read-only session 7, forged input 8, complete sidebar output 24, hub routing 87.
  • Seven source-guard tests and an independent HMAC vector passed; the reviewed guard preserves all 131 prior members and adds four explicit native dependency bridges.
  • Required proof and bounded whole-source typecheck were attempted. Both retain the baseline law-file import-order error; the whole-source check also retains the unused native-window Watch.tree arity error. Those files are unchanged. No global proof or whole-tree pass is claimed.
  • The corrected release binary and copied-history pass-after gate are separate packaging/integration checks; this PR does not claim runtime or deployment acceptance.

Frozen correction: commit b4d314b771b4d8fb7b17cce51dde4f402ca116e4, tree 413b1b8c044d1d2bb073c1d0305c71d5b2a8887c, parent 74d943b7db3ceab37893b350308cf1802f38fe6b. The correction is exactly 17 files relative to that parent. Linux delivery proceeds independently of this separate native compatibility repair.

Negotiate bounded project and descendant pages before constructing native
row JSON. Keep selected rows, authoritative counts and signed scoped
continuations, then fit the final reply under the unchanged byte cap.
Execute actions once across fit trials and project read-only page session
fields from server values using captured request keys. Preserve main
routing/viewer behavior and legacy opt-out schemas.

Validation: 204 focused assertions, 7 guard tests and external HMAC vector
passed. Required proof and whole-source check were attempted; inherited
LAWS import syntax and unused app Watch.tree arity errors remain unchanged.
The actual release binary and copied-history gate are separate next steps.
@i2cjak
i2cjak changed the base branch from build/0.13.0-main-70ce50f31 to main October 28, 2026 19:11
@i2cjak
i2cjak merged commit 3c9d6ed into main Oct 28, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant