Skip to content

Refresh committed upload retries with current serving guidance - #91

Merged
obsessixnv merged 4 commits into
mainfrom
fix/43-current-upload-replay
Sep 15, 2026
Merged

obsessixnv merged 4 commits into
mainfrom
fix/43-current-upload-replay

Conversation

@obsessixnv

Copy link
Copy Markdown
Contributor

A committed upload retry could report its old version as live after a newer publication, rollback, takedown or deletion. Exact retries now preserve the saved commit receipt and add replayed: true, while refreshing serving fields and next_step from the original page ID. Retrying never repeats the mutation, extends the upload expiry, or changes its saved response; different commit options still conflict.

Template retries also refresh guidance after a newer revision or retirement. Looking up the original entity ID prevents reused page slugs and template names from being mistaken for the original target. The API reference, MCP instructions and strict output schemas distinguish original operation results from current serving state.

Validation: reproduced the stale live: true failure before the fix; 262 unit tests; full integration, including new publication/rollback/disable/delete, retired-template, reused-name, immutable-receipt and strict-output regressions; production dependency audit and shell syntax checks. No database migration or deployment.

Closes #43.

@obsessixnv obsessixnv added bug Something isn't working audit:2026-09-14 Functional and reliability audit of commit 420bad8; cybersecurity excluded. priority:P2 Normal: correctness, reliability, or supported-workflow failure. size:M Medium: roughly 1–3 engineering days including focused checks. area:mcp Pages mcp functionality and maintenance. labels Sep 15, 2026
@obsessixnv
obsessixnv merged commit 3e17215 into main Sep 15, 2026
5 checks passed
@obsessixnv
obsessixnv deleted the fix/43-current-upload-replay branch September 15, 2026 15:43
obsessixnv added a commit that referenced this pull request Sep 15, 2026
A complete data file could be rejected by the 1 MiB managed-data
envelope limit after MCP advertised 1.5 MB inline support or recommended
an unlimited staged upload. The server now distinguishes compact
payload, escaped envelope, inline transport, staged file and complete
HTTP request limits using resolved startup configuration.

Domain overflow reports measured bytes, the applicable limit and whether
changing transport can help. Optional advisory `data_size` measurements
reject known-impossible uploads before reserving a handle; actual
content is independently validated on consume. Existing clients and
whitespace-heavy JSON remain supported, with no sampling, truncation,
capacity increase or migration. Data upload responses and
tool/prepared-prompt guidance expose the effective limits.

Validation on the combined branch after #91: 269 unit tests, 293 browser
tests, and full throwaway-Postgres integration, including exact
boundaries, escaping/UTF-8, runtime overrides, real HTTP request
boundaries/direct PUT separation, omitted/understated measurements, and
unchanged versions/audit/upload state on failure. Production dependency
audit and shell syntax pass. Independent review found no blocking
issues. CI covers the supported Node matrix and browser workflows.

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

Labels

area:mcp Pages mcp functionality and maintenance. audit:2026-09-14 Functional and reliability audit of commit 420bad8; cybersecurity excluded. bug Something isn't working priority:P2 Normal: correctness, reliability, or supported-workflow failure. size:M Medium: roughly 1–3 engineering days including focused checks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P2] Committed upload retries return stale live-state guidance after later publications

1 participant