Skip to content

docs: record four self-audit gaps in the parity ledger - #13

Merged
cardmagic merged 2 commits into
mainfrom
docs/parity-ledger-gaps
Aug 19, 2026
Merged

docs: record four self-audit gaps in the parity ledger#13
cardmagic merged 2 commits into
mainfrom
docs/parity-ledger-gaps

Conversation

@cardmagic

Copy link
Copy Markdown
Owner

Summary

  • Add a Partial row for backpressure and payload caps (shared JSON nesting limit, optional maxBytes guard, 255-char reminder names), noting the missing distributed rate limits already tracked as an open Ruby roadmap item.
  • Note under the wake-up table that neither runtime auto-selects an adapter — both poll until one is configured, and both warn once about it. Shared limitation, not a JS gap.
  • Explain why the MySQL row tracks only mysql2: Ruby also tests trilogy, Node has no comparable second client.
  • Record the operator dashboard's shared limits (single-ID dead-letter retry, no admin audit trail, pause sets a flag rather than interrupting a turn) — verified by reading dead_letter_manager.rb/dead-letters.ts and the pause implementation on both sides, not inferred from docs alone.

Found by a real run of the solid-objects-audit skill against this repo and solid_objects (Ruby), covering the 0.12.0–0.13.3 version range both changelogs share.

Test plan

  • Docs-only change; no code paths affected
  • Confirm table rendering in docs/parity.md on GitHub

Add a Partial row for backpressure and payload caps, note that neither
runtime auto-selects a wake-up adapter, explain why the MySQL row
tracks only mysql2, and record the operator dashboard's shared retry,
audit-trail, and pause limits. Each addition was checked against the
Ruby implementation before being written.
@greptile-apps

greptile-apps Bot commented Aug 18, 2026

Copy link
Copy Markdown

Greptile Summary

The parity ledger now documents shared runtime limitations and clarifies differences that are not JavaScript parity gaps.

  • Adds backpressure and payload-cap behavior, including distinct InvalidPayload and PayloadTooLarge errors.
  • Records shared operator-dashboard and wake-up adapter limitations.
  • Explains why only the mysql2 client is tracked for Node.js.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
docs/parity.md Expands the parity ledger with shared limitations and correctly distinguishes excessive-nesting errors from byte-limit errors.

Reviews (2): Last reviewed commit: "fix: correct payload error type and sati..." | Re-trigger Greptile

Comment thread docs/parity.md Outdated
| Domain rejection and strict poison ordering | Native | Rejections accept JavaScript identifier-style codes and roll back without retry; invalid codes fail terminally, while retryable failures block later operations until completion or dead-lettering. |
| Bounded activation passes and hot-actor fairness | Native | Configurable turn-count and elapsed-time budgets bound each pass, then move only that actor's already-due memberships behind actors already waiting. |
| Bounded claim candidate scan | Native | A configurable ordered scan continues to another ready actor when a worker loses the first candidate's lease race. |
| Backpressure and payload caps | Partial | Serialization enforces a shared maximum JSON nesting depth and an optional caller-supplied `maxBytes` limit, both raising `PayloadTooLarge`; reminder names are bounded to 255 characters. Distributed per-actor rate limits and global admission control do not exist yet, matching the open Ruby roadmap item. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Distinguish payload error types

The new row says excessive nesting and an exceeded maxBytes limit both raise PayloadTooLarge, but nesting raises InvalidPayload; this gives callers incorrect error-handling guidance.

Suggested change
| Backpressure and payload caps | Partial | Serialization enforces a shared maximum JSON nesting depth and an optional caller-supplied `maxBytes` limit, both raising `PayloadTooLarge`; reminder names are bounded to 255 characters. Distributed per-actor rate limits and global admission control do not exist yet, matching the open Ruby roadmap item. |
| Backpressure and payload caps | Partial | Serialization enforces a shared maximum JSON nesting depth, raising `InvalidPayload`, and an optional caller-supplied `maxBytes` limit, raising `PayloadTooLarge`; reminder names are bounded to 255 characters. Distributed per-actor rate limits and global admission control do not exist yet, matching the open Ruby roadmap item. |
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/parity.md
Line: 41

Comment:
**Distinguish payload error types**

The new row says excessive nesting and an exceeded `maxBytes` limit both raise `PayloadTooLarge`, but nesting raises `InvalidPayload`; this gives callers incorrect error-handling guidance.

```suggestion
| Backpressure and payload caps                                                                                 | Partial | Serialization enforces a shared maximum JSON nesting depth, raising `InvalidPayload`, and an optional caller-supplied `maxBytes` limit, raising `PayloadTooLarge`; reminder names are bounded to 255 characters. Distributed per-actor rate limits and global admission control do not exist yet, matching the open Ruby roadmap item. |
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Nesting-depth overflow raises InvalidPayload, not PayloadTooLarge;
only the caller-supplied maxBytes check raises PayloadTooLarge. Also
run prettier so the table matches the repo's pinned column widths.
@cardmagic
cardmagic merged commit 7ffa3cd into main Aug 19, 2026
19 checks passed
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