You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gated final step of the file-as-reference sequence, both halves in one
change as #3459 requires:
- releaseOwnership tombstones a released committed file (status='deleted' +
deleted_at, starting the declared 30-day grace window) — but only on a
deployment whose adr-0104-file-references flag is verified, read through
the engine's memoized seam (now public), failing closed every way of not
knowing.
- The sys_file reap guard's sweep-time re-verify extends to the ownership
columns (a re-claimed file is un-tombstoned and vetoed) and re-reads the
deployment flag fresh before any byte delete, so a regressed gate closes
for already-written tombstones without a restart. Attachments-scope
collection is unchanged and needs no flag.
Unmigrated deployments keep today's behaviour exactly: release clears the
ownership columns and files are retained forever. The R4 regression tests
flip to the new invariant and lock the two halves together.
Claude-Session: https://claude.ai/code/session_01KM46HedAWLbkuZyMBXn5wJ
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: content/docs/deployment/cli.mdx
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -657,7 +657,7 @@ Exit status is `0` only when the self-check passes, so CI can gate on it.
657
657
| Once verified | Effect |
658
658
| :--- | :--- |
659
659
|**Media value shapes**| A malformed `file` / `image` / `avatar` / `video` / `audio` value is **rejected** (`400 invalid_type`) instead of warned about. Set `OS_ALLOW_LAX_MEDIA_VALUES=1` to re-open leniency while diagnosing. |
660
-
|**Released-file collection**|Not yet shipped — the flag is the gate it will read. |
660
+
|**Released-file collection**|A field file whose one owning record lets go (the field is cleared or the record deleted) is tombstoned into the declared 30-day grace window; re-referencing the id within the window revives it, and after it the platform sweep reclaims the row and its bytes. Unverified deployments keep every released file forever. |
661
661
662
662
Other value classes are unaffected: a `lookup` or `location` value keeps its own
663
663
warn-first rollout, because this migration is evidence about *file* values and
@@ -670,7 +670,9 @@ later run that *fails* its self-check clears the flag's verified state, so a
670
670
database that has drifted closes its own gate.
671
671
672
672
A running server reads the flag once; after migrating, **restart it** for
673
-
enforcement to take effect.
673
+
enforcement (and release-time tombstoning) to take effect. The sweep's final
674
+
delete check re-reads the flag fresh, so a later failing run stops collection
0 commit comments