Skip to content

Bound incremental RESP parsing and deadlines - #12

Merged
nicodes merged 1 commit into
mainfrom
issue-150-resp-bounds
Sep 13, 2026
Merged

nicodes merged 1 commit into
mainfrom
issue-150-resp-bounds

Conversation

@nicodes

@nicodes nicodes commented Sep 13, 2026 •

Copy link
Copy Markdown
Member

A10 L1 — bounded incremental RESP I/O

Behavior layer for https://github.com/aviorstudio/fieldsofrevik/issues/150. Gate PR #11 merged as 84261d956c414dac0f390a6c5a611f4328e6b404; native stack sync replayed this layer trivially onto that exact merge.

Self-verification evidence (Team No Review)

  • Source: aviorstudio/gd-redis, issue-150-resp-bounds, exact replay head 1c021f40ba741cfb09622d48cf6e242219c1dc4f; baseline dea4b076055080faac2aa90aa4bd252c4e70b754.
  • Decisions: approved epic comment 5651934845 profile: server/tooling-only private Docker Redis; no TLS/AUTH implementation this release; 8 MiB bulk/command, 16 MiB buffered I/O, depth 16, aggregate 4,096, pending requests/replies 64; connect/write/inactivity/absolute deadlines 3/2/2/5 seconds; protocol/limit/timeout closes. No separate 4 KiB line, 1 KiB error, or 128-argument bounds were introduced.
  • Change: byte-preserving parser; typed results; request/poll_io/take_result/cancel; synchronous wrappers retained; bounded fixture cleanup. FLUSHDB remains disabled by default.
  • Topology control: Revik uses server-side godot-api -> redis:3113 on its private Compose network, pinned Redis 7 with 64 MiB maxmemory and no published port/TLS/AUTH. No game code changed.
  • Versions: Godot 4.7.2.stable.official.ed1daf0bf; Docker 29.1.3; GNU timeout 9.9; Redis digest ff02b58...28eadf.
  • Post-sync replay verification: behavior diff remained the same ten files; clean tree; restored suite PASS 4/4.
  • Parser controls: byte-by-byte/arbitrary fragmentation; pipeline; Unicode/binary; malformed/negative/huge lengths; >16 MiB buffer; depth >16; aggregate >4,096; reply queue >64; restored parser.
  • Network controls: pinned Redis pipeline and binary roundtrip; request 65 rejected; oversized command typed limit; fragmented binary; typed NOAUTH; malformed/mid-frame disconnect close; cancel closes; measured 2-second inactivity, 5-second absolute, and 2-second blocked-write deadlines.
  • Gate/package controls rerun after sync: all six runner negatives rejected and restored 1/1; four malicious ZIP forms rejected; restored nine-file manifest and packaged editor lifecycle passed.
  • Artifact: post-sync ZIP SHA-256 3cb4c398186e401da6d04c6ea25550e6571318728b1ea00d7ff24c8567e620bf; installed tree 9c79c79ce9f17798f1ce57d540b8efe470333b894ea53a0e59331c21d562a60d.
  • Revik functional payload bound: authoritative versioned tools/effect_endurance.py --stacks 1000 PASS at Revik source a5ffb90f1beb3ef84ec3331ada1157d5e317c891, clean core/client diff SHA-256 e3b0c442...b855; fixture SHA-256 7aaf1705...a9b0; driver SHA-256 2e165386...0c09. Status completed, requested/trigger/hero-power counts each 1,000. Fresh 1,000-stack JSON UTF-8 size is 64,829 bytes versus 8,388,608 bytes (8,323,779 bytes headroom; 129.40x). Evidence report SHA-256 bab89cae...753f, identity aed284d0...e23b, log a730caf8...88e6. This is functional serialized-payload evidence, not performance certification; historical timings are not reused.
  • Endurance command: timeout --signal=TERM --kill-after=5 660s env PATH=/tmp/opencode/godot-4.7.2:$PATH python3 tools/effect_endurance.py --stacks 1000 --evidence /tmp/opencode/a10-effect-endurance-a5ffb90-20260913-r2.
  • Browser: N/A; raw TCP is unavailable in web exports.
  • Exact-head CI: PASS https://github.com/aviorstudio/gd-redis/actions/runs/34745892353 for 1c021f40ba741cfb09622d48cf6e242219c1dc4f. Pre-sync run 34745800901 passed only obsolete head ece2625....
  • Remaining gate: merge waits only for green exact-head CI. Release/GDAM installed-artifact production verification follows merge.

Correction (fieldsofrevik#150): Earlier evidence incorrectly said no identifiable 1,000-stack fixture existed. The caller identified the authoritative versioned fixture; the fresh run and identities above replace that statement.

@nicodes
nicodes added this pull request to stack #13 September 13, 2026 07:40
@nicodes nicodes changed the title Bound incremental RESP I/O Bound incremental RESP parsing and deadlines Sep 13, 2026
Base automatically changed from issue-150-studio-engineering to main September 13, 2026 07:41
@nicodes
nicodes force-pushed the issue-150-resp-bounds branch from ece2625 to 9759eca Compare September 13, 2026 07:41
@nicodes
nicodes force-pushed the issue-150-resp-bounds branch from 9759eca to 1c021f4 Compare September 13, 2026 07:42
@nicodes
nicodes merged commit e1ec38d into main Sep 13, 2026
3 checks passed
@nicodes nicodes mentioned this pull request Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant