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
{{ message }}
Repository navigation
Commit 96fd49c
Browse filesBrowse the repository at this point in the historyBrowse files
docs(spec): leave object.zod.ts and filter-logic-conformance.ts to the open PRs that now hold them (stage 3)
The #20494 PR (object.zod.ts) and the #20444 PR (filter-logic-conformance.ts)
opened after this stage's claim, so both files join the stage's exclusions.
Their comment sites return to the base bytes (blobs befde04 and c9b32ac)
and wait for a later stage.
Claude-Session: https://claude.ai/code/session_014EJ1ED8X4MMrT18BhVx4tx
Co-authored-by: Claude <noreply@anthropic.com>
message: `lifecycle.archive.after ('${lc.archive.after}') must equal retention.maxAge ('${lc.retention.maxAge}') — the hot window ends where the archive begins`,
1003
1003
});
1004
1004
}
1005
-
// [commit 5649efbf9] The retention + ttl + archive triple — the alignment above, one
1006
-
// policy wider. Since [commit 530c1df65] the Archiver selects the rows it moves by the
1005
+
// [#10527] The retention + ttl + archive triple — the alignment above, one
1006
+
// policy wider. Since [#10347] the Archiver selects the rows it moves by the
1007
1007
// ttl cutoff (`ttl.field` older than `ttl.expireAfter`) whenever `ttl` is
1008
1008
// declared, and by `created_at`/`archive.after` only when it is not — so on
1009
1009
// this triple the age bound (`retention.maxAge`, pinned equal to
message: 'lifecycle.retention.onlyWhen cannot be combined with archive — the Archiver moves rows by age alone and would archive rows the filter protects',
1034
1034
});
1035
1035
}
1036
-
// [commit 801296050] ttl.onlyWhen mirrors both of retention.onlyWhen's conflicts, from
1036
+
// [#10165] ttl.onlyWhen mirrors both of retention.onlyWhen's conflicts, from
1037
1037
// the Reaper's actual semantics rather than by symmetry alone:
1038
1038
// - rotation: the Rotator DROPs whole physical shards; a shard is dropped by
1039
1039
// age with no row read, so rows the filter protects go down with it.
1040
1040
// - archive: `reapObject` returns into `archiveObject` before the ttl reap
1041
1041
// ever runs, so with `archive` declared the filter guards a code path that
1042
-
// is never executed (declared ≠ enforced). Since [commit 530c1df65] the Archiver does
1042
+
// is never executed (declared ≠ enforced). Since [#10347] the Archiver does
1043
1043
// apply the declared ttl window itself — it selects candidates by
1044
1044
// `ttl.field` past `ttl.expireAfter` instead of `created_at` past
1045
1045
// `archive.after` — but its candidate read is that cutoff and nothing else
1046
1046
// (`where: { [ttl.field]: { $lt: cutoff }}`, no `onlyWhen` spread the way
1047
1047
// `reap()` spreads it into its scope), so every due row is copied and
1048
1048
// hot-deleted whether or not the filter names it. That is the whole of what
1049
-
// [commit 530c1df65] changed here: the WINDOW an author declares now carries over to
1049
+
// [#10347] changed here: the WINDOW an author declares now carries over to
1050
1050
// the Archiver, the FILTER still does not — so the refusal stands, on a
1051
1051
// narrower reason than the "moves rows by age alone" this bullet used to
1052
1052
// give. Whether `onlyWhen` should become meaningful under `archive` (the
0 commit comments