Distinguish asset read failures from unknown writes

This commit is contained in:
2026-10-06 00:54:49 +00:00
parent 91712fd900
commit b744346210
5 changed files with 66 additions and 19 deletions

View File

@@ -43,7 +43,9 @@ missing, conflicting, or unverifiable. Same-name attachments with different
bytes are conflicts even when their reported size matches. An existing
`SHA256SUMS` must exactly match the complete expected manifest; a subset or
different manifest is a conflict. An unreadable attachment is unverifiable,
not missing. Unrelated attachments are returned separately and are preserved.
not missing. A failed read-only inspection reports `not_attempted`; if this
invocation already delivered the page, its outcome retains `partial` progress.
Unknown-write outcomes are reserved for unresolved writes. Unrelated attachments are returned separately and are preserved.
Attachment downloads and same-origin redirects carry authorization only when
their scheme, host, and port match the configured Gitea service. Cross-origin

View File

@@ -131,6 +131,8 @@ followed by failed asset inspection. Both affected suites pass.
### R3 — Medium: Read-only asset failures are classified as unknown writes
Status: Resolved.
Category: Divergence from the selected outcome contract.
**Evidence:** [UploadMissing](../../internal/gitea/upload.go), around line 102,
@@ -153,6 +155,12 @@ as selected in the plan. Adjust tests and documentation consistently.
read-only invocation must not return unknown-write state or exit 3. A genuinely
ambiguous upload must continue to do so.
**Resolution:** Unverifiable preflight assets now return an inspection failure
with `not_attempted`, retaining partial page progress when creation preceded
the read failure. CLI tests cover existing and newly created pages, no asset
writes, and exit 1. Existing ambiguous-upload regressions still verify unknown
write outcomes. Both affected suites pass.
### R4 — Medium: Local artifact regeneration is prohibited
Category: Inadvertently strengthened prohibition.