Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
465 commits
Select commit Hold shift + click to select a range
c999930
wt-status: separate untracked traversal from result collection
ttaylorr-oai Jul 11, 2026
cd8df22
path: snapshot external source namespaces
ttaylorr-oai Jul 11, 2026
c45c17e
preload-index: classify definitive tracked-file size changes
ttaylorr-oai Jul 24, 2026
dfcb08e
cache-tree: avoid allocations and searches while reading
ttaylorr-oai Jul 21, 2026
ace0b00
read-cache: factor refreshed entry construction
ttaylorr-oai Jul 21, 2026
164ebc8
status: close fsmonitor tokens around complete status scans
ttaylorr-oai Jul 29, 2026
d81902a
attr: fingerprint external sources in stable namespaces
ttaylorr-oai Jul 11, 2026
0c0ac94
dir: reject oversized pattern files before allocation
ttaylorr-oai Jul 24, 2026
d69f875
status: consume definitive bulk changes exactly once
ttaylorr-oai Jul 24, 2026
906756b
read-cache: decode bounded TREE and UNTR extensions in parallel
ttaylorr-oai Jul 21, 2026
cc7f401
status: refresh verified writable bulk-preload entries
ttaylorr-oai Jul 21, 2026
e6f661a
Merge the S08 prerequisites
ttaylorr-oai Jul 29, 2026
a52ef38
status: bind semantic configuration to its index
ttaylorr-oai Jul 26, 2026
5e0ea2b
commit: stage semantic configuration before reading the index
ttaylorr-oai Jul 26, 2026
d458572
status: classify durable index source identities
ttaylorr-oai Jul 24, 2026
4723a2a
read-cache: bind null-checksum indexes to their source file
ttaylorr-oai Jul 11, 2026
f6abf39
read-cache: validate persisted fsmonitor semantic history
ttaylorr-oai Jul 24, 2026
7ed7c7f
read-cache: write only token-closed fsmonitor history
ttaylorr-oai Jul 24, 2026
6be60ce
read-cache: preserve validated fsmonitor history across indexes
ttaylorr-oai Jul 11, 2026
50f2f80
status: hold external attributes stable across refresh
ttaylorr-oai Jul 21, 2026
e3b798a
fsmonitor: seed missing-history baselines from legacy tokens
ttaylorr-oai Jul 24, 2026
c4a8c4c
status: prepare logical-index history checkpoints
ttaylorr-oai Jul 29, 2026
a9d6e76
fsmonitor: rebuild sparse-index history without expanding the live index
ttaylorr-oai Jul 24, 2026
0545302
status: bind each closing token to its complete proof epoch
ttaylorr-oai Jul 21, 2026
a9ba041
fsmonitor: reopen semantic proofs after attribute events
ttaylorr-oai Jul 21, 2026
9a29db5
status: adopt tracked history only after closing its proof
ttaylorr-oai Jul 21, 2026
124aec1
wt-status: close tracked proofs before scanning untracked paths
ttaylorr Jul 24, 2026
c64d9d3
commit: close fsmonitor tokens across pre-commit hooks
ttaylorr-oai Jul 21, 2026
f5f13dc
Merge the S13 prerequisites
ttaylorr-oai Jul 30, 2026
377b8c5
exclude: prove the contents of observed ignore sources
ttaylorr-oai Jul 21, 2026
505e149
dir: capture ignore sources beneath anchored parents
ttaylorr-oai Jul 21, 2026
408da96
preload-index: stage proven untracked bulk results
ttaylorr-oai Jul 21, 2026
8c1d2c6
preload-index: collect visible paths during the APFS walk
ttaylorr-oai Jul 21, 2026
19881aa
status: reuse complete APFS untracked preload results
ttaylorr-oai Jul 21, 2026
51700e7
preload-index: translate complete Linux statx observations
ttaylorr-oai Jul 21, 2026
fe85124
preload-index: anchor Linux directory opens to the worktree
ttaylorr-oai Jul 21, 2026
ea3d88c
preload-index: enumerate Linux directories without trusting d_type
ttaylorr-oai Jul 21, 2026
903986b
preload-index: detect replaced Linux scan directories
ttaylorr-oai Jul 21, 2026
44231ed
preload-index: validate Linux mount topology around bulk scans
ttaylorr-oai Jul 21, 2026
124fdfe
preload-index: enable the verified Linux bulk scan backend
ttaylorr-oai Jul 21, 2026
0929c7b
status: close bulk content proofs with the provider token
ttaylorr-oai Jul 29, 2026
35931f3
exclude: compute stable source-proof digests
ttaylorr-oai Jul 24, 2026
f72d9f6
status: add a bounded clean-status sidecar format
ttaylorr-oai Jul 21, 2026
d7a0fcc
status: install sidecars against a pinned index
ttaylorr-oai Jul 24, 2026
be1f161
status: classify indexes that clean proofs may certify
ttaylorr-oai Jul 24, 2026
25fd7e9
status: issue sidecars after a verified full scan
ttaylorr-oai Jul 28, 2026
45284db
status: load bounded clean-status sidecars
ttaylorr-oai Jul 24, 2026
9450f7d
exclude: support nonblocking proof captures
ttaylorr-oai Jul 27, 2026
984e6bc
status: answer exact clean status before index deserialization
ttaylorr-oai Jul 27, 2026
ab2d58b
Documentation: describe status clean-proof sidecars
ttaylorr-oai Jul 21, 2026
487a384
status: reuse clean proofs for plain status after restore
ttaylorr-oai Aug 10, 2026
68a2139
fsmonitor: restore recursive validity for paired untracked state
ttaylorr-oai Aug 10, 2026
a5c115e
status: bind external history to physical index sources
ttaylorr-oai Aug 10, 2026
895661b
status: refresh external history before exact proofs
ttaylorr Aug 10, 2026
fe3dcf6
status: keep a forward fsmonitor boundary over stale history
ttaylorr-oai Aug 10, 2026
b5bdb10
status: preserve external history for dirty root-wide queries
ttaylorr-oai Aug 11, 2026
dae1208
status: show delayed progress during semantic refresh
ttaylorr-oai Aug 11, 2026
0d85573
preload-index: avoid bulk scans for sparse provider deltas
ttaylorr-oai Aug 11, 2026
aa34702
fsmonitor: keep external history disabled on Windows
ttaylorr-oai Aug 11, 2026
128801c
fsmonitor: honor explicitly invalidated external history
ttaylorr-oai Aug 11, 2026
5a2f72a
status: preserve semantic history for scoped queries
ttaylorr-oai Aug 11, 2026
378744b
status: reuse closed proofs for scoped queries
ttaylorr-oai Aug 11, 2026
0a020c3
Merge the status optimization topics
ttaylorr-oai Aug 11, 2026
99031cd
fsmonitor: preserve authenticated legacy daemon history
ttaylorr-oai Aug 11, 2026
b5a28dc
t7527: guard invalidated external fsmonitor history
ttaylorr-oai Aug 11, 2026
b56b58d
t7529: open the resume FIFO before publishing readiness
ttaylorr Aug 6, 2026
7c2f753
t7527: disable split index for legacy daemon queries
ttaylorr-oai Aug 11, 2026
2bcb292
t7527: allow a clean read-tree reset to skip refresh
ttaylorr-oai Aug 11, 2026
28505e8
t7527: cover scoped fsmonitor history reuse
ttaylorr-oai Aug 11, 2026
ceaa331
t7527: tolerate unpersisted fsmonitor-valid bits
ttaylorr-oai Aug 11, 2026
76a309a
t7527: cover closed scoped untracked-cache reuse
ttaylorr-oai Aug 11, 2026
d90ab77
Merge tb/codex/status-preview-unstable into codex-unstable
chatgpt-codex-connector[bot] Aug 11, 2026
58b4a5a
diff: honor --no-optional-locks when refreshing the index
ttaylorr-oai Aug 7, 2026
9ad6b79
describe: honor optional locks for dirty-worktree checks
ttaylorr-oai Aug 12, 2026
91c5314
stash: avoid rewriting the index when nothing can be saved
ttaylorr-oai Aug 12, 2026
ca7ab8a
status: reuse clean proofs across equivalent query shapes
ttaylorr-oai Aug 12, 2026
a34b412
status: preserve semantic history across scoped and index changes
ttaylorr-oai Aug 12, 2026
ff9d80c
checkout: avoid rewriting an unchanged index
tnm-oai Jul 29, 2026
6b9b771
t7530: tolerate an already-exited fast fallback
ttaylorr-oai Aug 12, 2026
f75350d
commit: honor optional locks during a dry run
ttaylorr-oai Aug 12, 2026
daff9b7
reset: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
e4a2f83
status: certify clean output with configured stash display
ttaylorr-oai Aug 12, 2026
aa5914a
t7530: preserve clean proofs across no-op index commands
ttaylorr-oai Aug 12, 2026
1116611
fsmonitor: reduce attribute-manifest recovery overhead
ttaylorr-oai Aug 13, 2026
5bc12de
checkout-index: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
fccd1c5
fsmonitor: revalidate cached directories after provider resets
ttaylorr-oai Aug 13, 2026
2b2d61e
diff: restore external fsmonitor history when available
ttaylorr-oai Aug 12, 2026
71b094c
fsmonitor: pool attribute-manifest candidate paths
ttaylorr-oai Aug 13, 2026
21f3bd0
sparse-checkout: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
135cda7
status: preload full recovery for scoped pathspecs
ttaylorr-oai Aug 13, 2026
5886a18
status: reissue clean proofs after repository inputs change
ttaylorr-oai Aug 13, 2026
74a6090
add: never write the index during a dry run
ttaylorr-oai Aug 13, 2026
8d96898
Merge tb/codex/status-preview-unstable into codex-unstable
chatgpt-codex-connector[bot] Aug 12, 2026
b1814d4
fsmonitor: recover history after mixed-writer resets
ttaylorr-oai Aug 13, 2026
9fcb8e4
t7519: persist paired cache before testing provider reset
ttaylorr-oai Aug 13, 2026
8e03033
status: preserve history for paths without active filters
ttaylorr-oai Aug 13, 2026
41bff55
status: ignore command-scoped preload tuning in proofs
ttaylorr-oai Aug 13, 2026
6b945d3
attr-fingerprint: treat empty source paths as absent
ttaylorr-oai Aug 13, 2026
8962cb3
status: reuse proofs for empty attribute overrides
ttaylorr-oai Aug 13, 2026
32b38c4
status: integrate the reviewed preview on codex-unstable
ttaylorr-oai Aug 13, 2026
0ad408f
fsmonitor: prepare reviewed metadata recovery release
ttaylorr-oai Aug 13, 2026
227d693
t7519: make the reviewed provider-reset fixture deterministic
ttaylorr-oai Aug 13, 2026
9d9de87
status: preserve proof for ordinary staged paths
ttaylorr-oai Aug 13, 2026
2cbfb81
status: keep preload overrides out of worktree proofs
ttaylorr-oai Aug 13, 2026
bc87951
fsmonitor--daemon: target worktree hardlink events by inode
ttaylorr-oai Aug 14, 2026
c7d8faf
t7530: expect targeted hardlink invalidations
ttaylorr-oai Aug 14, 2026
f257199
status: reuse authenticated history after provider reset
ttaylorr-oai Aug 14, 2026
2e3ca25
fsmonitor: preserve attribute history for removed directory cones
ttaylorr-oai Aug 14, 2026
713f42d
Merge empty attribute-source compatibility fix
ttaylorr-oai Aug 13, 2026
b441f40
fsmonitor: retain attribute history when restoring directory cones
ttaylorr-oai Aug 14, 2026
fd4c617
Merge cache-stable empty attribute overrides
ttaylorr-oai Aug 13, 2026
85b7b09
fsmonitor: persist revalidated history after provider resets
ttaylorr-oai Aug 14, 2026
d4a7e0a
fsmonitor: retain untracked candidates across expired provider tokens
ttaylorr-oai Aug 14, 2026
3f62bd9
fsmonitor: authenticate explicit worktrees for pending state
ttaylorr-oai Aug 14, 2026
8aa9243
status: preserve proofs across guarded Codex invocations
ttaylorr-oai Aug 14, 2026
ffb0d06
t7527: run failing filter probe with portable environment setup
ttaylorr-oai Aug 14, 2026
a584605
fsmonitor: report index writes without untracked proofs
ttaylorr-oai Aug 14, 2026
897c1c3
status: normalize disabled post-index-change hooks
ttaylorr-oai Aug 14, 2026
4be7b19
t7519: explicitly publish the repaired index proof
ttaylorr-oai Aug 14, 2026
5758f4f
diff: close fsmonitor tokens after complete tracked refresh
ttaylorr-oai Aug 15, 2026
512ff0b
status: replace existing proofs when restoring external history
ttaylorr-oai Aug 15, 2026
e1b7051
stash: preserve authenticated worktree proofs during creation
ttaylorr-oai Aug 15, 2026
b5967d3
stash: avoid rebuilding clean proofs for scratch indexes
ttaylorr-oai Aug 15, 2026
0f0d2e3
stash: restore authenticated history before creating a stash
ttaylorr-oai Aug 15, 2026
e7bb647
t7519: cover stash creation from linked external history
ttaylorr-oai Aug 15, 2026
71c6ae2
write-tree: preserve authenticated fsmonitor proofs
ttaylorr-oai Aug 15, 2026
ba4f698
write-tree: avoid clean-proof work for temporary indexes
ttaylorr-oai Aug 15, 2026
38974f1
fsmonitor: preserve authenticated proofs across ordinary commands
ttaylorr-oai Aug 15, 2026
25e07b6
t7527: expect safe mixed resets to preserve clean history
ttaylorr-oai Aug 15, 2026
de1f403
fsmonitor: preserve proofs through filters, replay, and index locks
ttaylorr-oai Aug 15, 2026
cfa4609
t7527: accept either authenticated legacy checkpoint restore
ttaylorr-oai Aug 15, 2026
79008a5
diff: restore authenticated history with configured filters
ttaylorr-oai Aug 15, 2026
c73b3bf
fsmonitor: skip missing-checkpoint hashes for read-only commands
ttaylorr-oai Aug 15, 2026
0ff66b9
fsmonitor: reserve checkpoint source hashes for writable status
ttaylorr-oai Aug 15, 2026
39d6f4d
diff: repair provider-reset history before publishing its index
ttaylorr-oai Aug 15, 2026
8b9abcc
fsmonitor: retain checked manifests across scoped directory deltas
ttaylorr-oai Aug 16, 2026
4ce520b
diff: reuse pinned observations during provider-reset repair
ttaylorr-oai Aug 16, 2026
9de7f00
dir: share normalized exclude hashes across identical blobs
ttaylorr-oai Aug 16, 2026
7533c04
status: admit clean sidecars for inactive configured filters
ttaylorr-oai Aug 16, 2026
1a816d0
exclude: avoid an intermediate reopen of regular sources
ttaylorr-oai Aug 16, 2026
7f27676
status: preserve legacy proof epochs across preload tuning
ttaylorr-oai Aug 16, 2026
7e161e4
fsmonitor: bound directory reuse by attribute sources
ttaylorr-oai Aug 16, 2026
6ac52eb
t7527: separate index and sidecar preload coverage
ttaylorr-oai Aug 16, 2026
3c4e9b3
dir: share normalized exclude hashes without pthreads
ttaylorr-oai Aug 16, 2026
09b85bb
t7519: distinguish serial and threaded index refreshes
ttaylorr-oai Aug 16, 2026
d60a9ca
t7519: check scoped recovery with the available worker count
ttaylorr-oai Aug 16, 2026
3aea30a
status: retain recovery and progress without pthreads
ttaylorr-oai Aug 16, 2026
806c60a
status: reuse bulk results after discarding legacy caches
ttaylorr-oai Aug 16, 2026
fdc90ab
preload-index: select bulk for read-only cache recovery
ttaylorr-oai Aug 16, 2026
407556e
status: recover discarded empty legacy caches in one pass
ttaylorr-oai Aug 16, 2026
25835e7
t7519: isolate the bulk recovery test environment
ttaylorr-oai Aug 16, 2026
4e0bff4
fsmonitor: avoid full scans for partially proved private indexes
ttaylorr-oai Aug 16, 2026
8851fb2
t7519: disarm completed query-barrier cleanups
ttaylorr-oai Aug 16, 2026
2c1ddce
t7519: verify reuse after writable legacy-cache repair
ttaylorr-oai Aug 16, 2026
75af907
fsmonitor: avoid repository-wide bootstrap for bounded readers
ttaylorr-oai Aug 16, 2026
0128580
dir: persist unresolved fsmonitor events as invalidation
ttaylorr-oai Aug 16, 2026
1d90abf
read-cache: allow authenticated same-path replacements
ttaylorr-oai Aug 16, 2026
5ce3a08
stash: retain paired history for scoped regular-file changes
ttaylorr-oai Aug 16, 2026
57785f2
clean-status: normalize redundant disabled submodule recursion
ttaylorr-oai Aug 16, 2026
6758ad3
tests: integrate scoped proof coverage with both harnesses
ttaylorr-oai Aug 16, 2026
c6e43d5
t7534: force the same-stat oracle to read file contents
ttaylorr-oai Aug 16, 2026
a3f0a03
t7534: force the required-filter control to read the file
ttaylorr-oai Aug 16, 2026
bbaff5d
t7533: keep the staged-sibling fixture out of split-index mode
ttaylorr-oai Aug 16, 2026
00ffe09
am: retain authenticated worktree proofs before refresh
ttaylorr-oai Aug 16, 2026
2f50bbb
t7519: age the staged entry before checkpoint reissue
ttaylorr-oai Aug 16, 2026
b2774c4
stash: leave room for the object ID terminator
ttaylorr-oai Aug 16, 2026
93fcc2a
t7530: probe fsmonitor without requiring an index write
ttaylorr-oai Aug 16, 2026
c904258
t7530: isolate external exclude FIFO parents
ttaylorr-oai Aug 16, 2026
945c934
status: defer Linux scoped history hashing until a repair
ttaylorr Aug 17, 2026
bc53296
clean-status: release the raw fsmonitor shadow bitmap
ttaylorr-oai Aug 17, 2026
0d19bae
commit: restore external proofs before preparing the index
ttaylorr-oai Aug 17, 2026
8b6bfe5
fsmonitor: recognize equivalent index-only reader requests
ttaylorr-oai Aug 17, 2026
6c6572f
exclude: tolerate sibling churn around a pinned regular source
ttaylorr-oai Aug 17, 2026
c44046b
fsmonitor: release raw index bitmaps with their owner
ttaylorr-oai Aug 17, 2026
3c1668f
status: carry a failed sidecar probe into the index refresh
ttaylorr-oai Aug 17, 2026
b746a5c
fsmonitor: retire the provider token after a failed cookie
ttaylorr-oai Aug 17, 2026
27ab244
fsmonitor: encode Darwin worktree-root events without overreading
ttaylorr-oai Aug 17, 2026
f8673a7
fsmonitor: open watch-limit backoff markers without blocking
ttaylorr-oai Aug 17, 2026
78231e7
fsmonitor: reuse authenticated manifests for wider directory deltas
ttaylorr-oai Aug 17, 2026
3b083bc
fsmonitor: bound nested attribute invalidation to its index cone
ttaylorr-oai Aug 17, 2026
a89c828
status: preserve index proofs during temporary fsmonitor backoff
ttaylorr-oai Aug 17, 2026
d5cf450
checkout-index: restore external proofs before updating the index
ttaylorr-oai Aug 17, 2026
b44fbb9
t7530: reject failed cookie synchronization in the prerequisite
ttaylorr-oai Aug 17, 2026
add6c9f
read-cache: treat damaged optional index witnesses as misses
ttaylorr-oai Aug 17, 2026
da6ea85
t1602: require a healthy native cookie before recovery tests
ttaylorr-oai Aug 17, 2026
df1ad6c
t: use test_env for shell-function invocations
ttaylorr-oai Aug 17, 2026
fed5b75
t7519: expect the index-only cached diff fallback
ttaylorr-oai Aug 17, 2026
c9d2933
t7535: wait for the listener before removing its cookie directory
ttaylorr-oai Aug 17, 2026
e4d6efe
read-cache: decode extension signatures as unsigned integers
ttaylorr-oai Aug 17, 2026
8cc3a48
t7536: export the watch-limit fixture environment
ttaylorr-oai Aug 17, 2026
8c98efb
unit-tests: use a nonzero mode bit in namespace identity test
ttaylorr-oai Aug 17, 2026
80fce6e
status: skip an unclosable terminal index refresh
ttaylorr-oai Aug 17, 2026
b65fc91
status: retain the identity of an index it rewrites
ttaylorr-oai Aug 17, 2026
5ecbe07
status: trace provider resets in the clean sidecar probe
ttaylorr-oai Aug 17, 2026
9738dca
fsmonitor: require failed-cookie token retirement
ttaylorr-oai Aug 17, 2026
05f4310
status: stop retrying consecutive provider resets
ttaylorr-oai Aug 17, 2026
092e1bf
fsmonitor: flush pending FSEvents before cookie wait
tamird Jul 21, 2026
0397f90
Revert "fsmonitor: flush pending FSEvents before cookie wait"
ttaylorr-oai Aug 17, 2026
9157b55
fsmonitor: retain suspended history across backoff writers
ttaylorr Aug 18, 2026
73ad245
fsmonitor: suspend history with inactive configured filters
ttaylorr-oai Aug 18, 2026
92e616d
t7536: cover structural writes during watch-limit backoff
ttaylorr-oai Aug 18, 2026
b9efccb
fsmonitor: recognize the main index in commit hooks
ttaylorr-oai Aug 18, 2026
15a40e0
apply: preserve suspended fsmonitor history
ttaylorr-oai Aug 18, 2026
a065df1
commit: retain suspended history across successful hooks
ttaylorr-oai Aug 18, 2026
80f369a
t7536: allow the hook to remove staged content
ttaylorr-oai Aug 18, 2026
799a26f
fsmonitor: guard commit checkpoint ownership checks
ttaylorr-oai Aug 18, 2026
dd1294c
fsmonitor: prepare history before canonical index reads
ttaylorr-oai Aug 18, 2026
b079f4c
commit: preserve suspended history after interactive selection
ttaylorr-oai Aug 18, 2026
b5325b6
read-cache: recover serialized backoff content checks
ttaylorr-oai Aug 18, 2026
59045e1
t7536: respect interactive index spelling and hook scope
ttaylorr-oai Aug 18, 2026
2d4eda6
stash: prepare authenticated history before reading the index
ttaylorr-oai Aug 18, 2026
418580a
exclude: use the empty blob for an empty captured source
ttaylorr-oai Aug 18, 2026
d0fde4d
stash: defer history invalidation until selection succeeds
ttaylorr-oai Aug 18, 2026
83a7d25
unpack-trees: preserve suspended history across safe replacements
ttaylorr-oai Aug 18, 2026
8cd86ab
stash: reread zero-checksum history before the default merge
ttaylorr-oai Aug 18, 2026
0fb6e54
status: reissue clean proofs after config changes
ttaylorr-oai Aug 18, 2026
bb349b7
status: ignore command-scoped relativePaths in clean proofs
ttaylorr-oai Aug 18, 2026
eac63b0
status: retain clean proofs across presentation overrides
ttaylorr-oai Aug 19, 2026
7224415
t7530: use test_env with test_must_fail
ttaylorr-oai Aug 19, 2026
fe86d9f
Merge tb/codex/status-preview-unstable into codex-unstable
chatgpt-codex-connector[bot] Aug 25, 2026
fded12c
Merge tb/codex/fsmonitor-hardlink-inodes-unstable into codex-unstable
chatgpt-codex-connector[bot] Aug 25, 2026
7e7ac92
fsmonitor: retry late FSEvents cookies after timeout
ttaylorr-oai Aug 21, 2026
30bc5b7
fsmonitor: retain paths when compacting old batches
ttaylorr-oai Aug 21, 2026
0b6a851
fsmonitor: preserve event chronology across compaction
ttaylorr-oai Aug 24, 2026
6c5b551
t7527: query delayed cookies with valid v2 tokens
ttaylorr-oai Aug 24, 2026
2dc9196
merge: preserve clean status proofs for non-ff merges
ttaylorr-oai Aug 24, 2026
8dfbe01
status: issue clean proof after repairing the index
ttaylorr-oai Aug 25, 2026
f4eb55c
status: preserve clean proofs across configured pulls
ttaylorr-oai Aug 26, 2026
9a72a70
unpack-trees: retain clean proofs across policy updates
ttaylorr-oai Aug 27, 2026
049a820
status: keep clean proofs current after worktree updates
ttaylorr-oai Aug 27, 2026
bb555fe
fsmonitor: retain directory identity on Linux
ttaylorr-oai Aug 27, 2026
d591d97
status: finish tracked checks during writer proof repair
ttaylorr-oai Aug 27, 2026
1293167
status: complete clean-proof repair for native writers
ttaylorr-oai Aug 27, 2026
754631a
clean-status-index: reject missing snapshot paths
ttaylorr-oai Aug 27, 2026
a3c4461
simple-ipc: harden daemon replacement transitions
ttaylorr-oai Aug 27, 2026
7bed8a3
fsmonitor: fence Darwin callbacks before answering queries
ttaylorr-oai Aug 27, 2026
5c54f63
fsmonitor: allow .git components in daemon events
ttaylorr-oai Aug 28, 2026
16d98d8
sequencer: finish final-conflict rebases cleanly
ttaylorr-oai Aug 28, 2026
9b09d49
wt-status: replace authenticated untracked output on reopen
ttaylorr-oai Aug 28, 2026
0f0eb01
merge: retain clean proofs across retries and resolve undo
ttaylorr-oai Aug 28, 2026
1cf041c
dir: load tracked excludes before targeted cache refresh
ttaylorr-oai Aug 29, 2026
837f89d
fsmonitor: make Darwin provider fences cancellable on APFS
ttaylorr-oai Aug 29, 2026
d65bfdc
stash: reissue clean sidecar after rewriting the index
ttaylorr-oai Aug 30, 2026
7d45de1
rebase: reissue clean sidecar after continuing
ttaylorr-oai Aug 30, 2026
338efbc
status: issue clean proofs in linked worktrees
ttaylorr-oai Aug 30, 2026
b2b395a
status: make post-operation sidecar issuance fail closed
ttaylorr-oai Aug 30, 2026
5e6128e
t: make clean-status sidecar checks platform-safe
ttaylorr-oai Aug 30, 2026
8055b6c
status: preserve authenticated proofs across owned index writes
ttaylorr-oai Aug 30, 2026
1f60e88
status: recognize disabled read-side filters
ttaylorr-oai Sep 1, 2026
5f1339f
worktree: certify new indexes without optional locks
ttaylorr-oai Sep 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/codex-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,8 @@ jobs:
- name: Check out Dugite Native
uses: actions/checkout@v6
with:
repository: desktop/dugite-native
ref: f97e50add48cdcff053a69d95aa343a4a4a258c2
repository: dreynaud-oai/dugite-native
ref: b6f4473557acb85433fdf9deffe0854a34fd9cc5
path: dugite-native
fetch-depth: 0
persist-credentials: false
Expand Down
243 changes: 243 additions & 0 deletions .github/workflows/codex.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
name: Refresh codex

on:
schedule:
- cron: '*/5 * * * *'
workflow_dispatch:
inputs:
operation:
description: Refresh, scan, remove, or reorder a pinned topic
type: choice
options:
- refresh
- scan
- remove
- reorder
default: refresh
lane:
description: codex or codex-unstable for a plan operation
required: false
type: string
topic:
description: Exact topic branch for a plan operation
required: false
type: string
after:
description: Existing topic or root for reorder
required: false
type: string
plan_branch:
description: Optional codex-plan/* branch name
required: false
type: string
pull_request_target:
branches:
- meta
types:
- opened
- reopened
- synchronize
- ready_for_review

permissions:
actions: read
contents: read
pull-requests: read

jobs:
refresh:
if: >-
github.event_name == 'workflow_dispatch' &&
github.ref == 'refs/heads/codex' &&
inputs.operation == 'refresh'
uses: openai/git/.github/workflows/codex.yml@meta
topic_plan_scan:
name: Find one approved topic plan
if: >-
github.event_name == 'schedule' ||
(github.event_name == 'workflow_dispatch' &&
github.ref == 'refs/heads/codex' &&
inputs.operation == 'scan')
runs-on: ubuntu-24.04
permissions:
contents: read
pull-requests: read
concurrency:
group: codex-topic-plan-scan
cancel-in-progress: false
outputs:
lane: ${{ steps.reviewed.outputs.lane }}
topic: ${{ steps.reviewed.outputs.topic }}
source_tip: ${{ steps.reviewed.outputs.source_tip }}
review_pr: ${{ steps.reviewed.outputs.review_pr }}
env:
GH_TOKEN: ${{ github.token }}
steps:
- name: Pin trusted meta
id: meta
run: |
set -euo pipefail
test "$GITHUB_REPOSITORY" = openai/git
test "$GITHUB_REF" = refs/heads/codex
sha=$(gh api "repos/$GITHUB_REPOSITORY/git/ref/heads/meta" \
--jq .object.sha)
case "$sha" in
''|*[!0-9a-f]*) exit 1 ;;
esac
test "${#sha}" = 40
printf 'sha=%s\n' "$sha" >>"$GITHUB_OUTPUT"

- name: Check out trusted meta
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
with:
repository: ${{ github.repository }}
ref: ${{ steps.meta.outputs.sha }}
fetch-depth: 0
persist-credentials: false

- name: Find one exact approved topic PR
id: reviewed
env:
META_SHA: ${{ steps.meta.outputs.sha }}
run: |
set -euo pipefail

die () {
printf '%s\n' "$*" >&2
exit 1
}

test "$GITHUB_REPOSITORY" = openai/git
test "$GITHUB_REF" = refs/heads/codex ||
die "topic scan must run from the trusted default branch"
test "$(git rev-parse HEAD)" = "$META_SHA" ||
die "trusted checkout does not match pinned meta"
gh auth setup-git
mkdir -p "$RUNNER_TEMP/codex-plan-scan"
for lane in codex codex-unstable
do
case "$lane" in
codex) plan=codex.plan ;;
codex-unstable) plan=codex-unstable.plan ;;
esac
test -f "$plan" ||
die "trusted meta has no $plan"
gh pr list --repo "$GITHUB_REPOSITORY" --state open \
--base "$lane" --limit 1000 \
--json number,isDraft,headRefName,headRefOid,headRepository,reviewDecision |
jq -r --arg lane "$lane" '
.[] |
select(.isDraft | not) |
select(.reviewDecision == "APPROVED") |
select(.headRepository.nameWithOwner == "openai/git") |
[$lane, .headRefName, .headRefOid,
(.number | tostring)] | @tsv
'
done | sort -k4,4n >"$RUNNER_TEMP/codex-plan-scan/candidates"

while IFS=$'\t' read -r lane topic source_tip review_pr
do
test -n "$review_pr" || continue
case "$review_pr" in
*[!0-9]*) die "approved topic PR has invalid number '$review_pr'" ;;
esac
case "$source_tip" in
*[!0-9a-f]*|'') die "approved topic PR has invalid source SHA" ;;
esac
test "${#source_tip}" = 40 ||
die "approved topic PR has invalid source SHA"
git check-ref-format "refs/heads/$topic" >/dev/null 2>&1 ||
die "approved topic PR has invalid branch '$topic'"
case "$topic" in
??/codex/*) ;;
*) continue ;;
esac
suffix=${topic#??/codex/}
case "$suffix" in
''|*/*|*-wip|*-stale) continue ;;
esac
case "$lane" in
codex)
case "$topic" in
*-unstable) continue ;;
esac
plan=codex.plan
;;
codex-unstable)
case "$topic" in
*-unstable) ;;
*) continue ;;
esac
plan=codex-unstable.plan
;;
*) die "approved topic PR has invalid lane '$lane'" ;;
esac
pinned=$(git config --no-includes \
--file "$plan" \
--get "branch.$topic.source-tip" || :)
test "$pinned" = "$source_tip" && continue
short=$(printf '%.12s' "$source_tip")
slug=${topic##*/}
plan_branch=codex-plan/$lane-$slug-$short
pending=$(gh pr list --repo "$GITHUB_REPOSITORY" \
--state open --base meta --head "$plan_branch" \
--json number --jq '.[0].number // empty') ||
die "could not inspect pending Codex plan PR"
test -n "$pending" && continue
if ! sh .github/workflows/codex-branch.sh propose-plan \
--remote origin --lane "$lane" --topic "$topic" \
--action auto --source-tip "$source_tip" \
--review-pr "$review_pr" --expected-meta "$META_SHA" \
--no-push >/dev/null
then
printf 'skipping approved topic PR #%s: preflight failed\n' \
"$review_pr" >&2
continue
fi
{
printf 'lane=%s\n' "$lane"
printf 'topic=%s\n' "$topic"
printf 'source_tip=%s\n' "$source_tip"
printf 'review_pr=%s\n' "$review_pr"
} >>"$GITHUB_OUTPUT"
exit 0
done <"$RUNNER_TEMP/codex-plan-scan/candidates"
topic_plan_propose:
name: Propose reviewed topic plan
needs: topic_plan_scan
if: needs.topic_plan_scan.outputs.review_pr != ''
permissions:
contents: read
pull-requests: read
uses: openai/git/.github/workflows/codex-plan-propose.yml@meta
with:
lane: ${{ needs.topic_plan_scan.outputs.lane }}
topic: ${{ needs.topic_plan_scan.outputs.topic }}
action: auto
source_tip: ${{ needs.topic_plan_scan.outputs.source_tip }}
review_pr: ${{ needs.topic_plan_scan.outputs.review_pr }}
policy_plan_propose:
name: Propose explicit plan policy
if: >-
github.event_name == 'workflow_dispatch' &&
github.ref == 'refs/heads/codex' &&
(inputs.operation == 'remove' || inputs.operation == 'reorder')
permissions:
contents: read
pull-requests: read
uses: openai/git/.github/workflows/codex-plan-propose.yml@meta
with:
lane: ${{ inputs.lane }}
topic: ${{ inputs.topic }}
action: ${{ inputs.operation }}
after: ${{ inputs.after }}
plan_branch: ${{ inputs.plan_branch }}
plan_admission:
name: Codex plan admission
if: >-
github.event_name == 'pull_request_target' &&
github.event.pull_request.base.ref == 'meta'
permissions:
contents: read
pull-requests: write
uses: openai/git/.github/workflows/codex-plan-admission.yml@meta
1 change: 1 addition & 0 deletions Documentation/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ TECH_DOCS += technical/send-pack-pipeline
TECH_DOCS += technical/shallow
TECH_DOCS += technical/sparse-checkout
TECH_DOCS += technical/sparse-index
TECH_DOCS += technical/status-clean-proof
TECH_DOCS += technical/trivial-merge
TECH_DOCS += technical/unambiguous-types
TECH_DOCS += technical/unit-tests
Expand Down
14 changes: 14 additions & 0 deletions Documentation/config/core.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,20 @@ relatively high IO latencies. When enabled, Git will do the
index comparison to the filesystem data in parallel, allowing
overlapping IO's. Defaults to true.

core.preloadIndexBulk::
On supported filesystems, scan working tree directories in bulk before
the parallel index preload.
+
This replaces per-entry filesystem lookups with a physical directory scan,
but may cost more than normal preload depending on filesystem and cache
state. Inconclusive scans are discarded before continuing with the normal
preload. Currently this is supported on APFS, ext-family filesystems, and
XFS, and only has an effect when `core.preloadIndex` is enabled. Defaults
to false, except that a whole-worktree, read-only `git status` may use it
after the native file system monitor discards a legacy
untracked cache. Setting this option explicitly to false also disables
that recovery optimization.

core.unsetenvvars::
Windows-only: comma-separated list of environment variables'
names that need to be unset before spawning any other process.
Expand Down
10 changes: 10 additions & 0 deletions Documentation/config/fetch.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,16 @@ A value of 0 will give some reasonable default. If unset, it defaults to 1.
For submodules, this setting can be overridden using the `submodule.fetchJobs`
config setting.

`fetch.packfileUriJobs`::
Specifies the maximum number of packfile URI downloads and indexers
to run at once. The default is 1, which preserves advertised URI
order.
+
Values greater than 1 are used only when the server advertises and the
client requests the `no-ref-delta` promise. Each URI pack is then checked
with `index-pack --no-ref-delta` before it is accepted.
Responses with one URI retain the serial path.

`fetch.writeCommitGraph`::
Set to true to write a commit-graph after every `git fetch` command
that downloads a pack-file from a remote. Using the `--split` option,
Expand Down
11 changes: 11 additions & 0 deletions Documentation/config/uploadpack.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,14 @@ uploadpack.allowRefInWant::
is intended for the benefit of load-balanced servers which may
not have the same view of what OIDs their refs point to due to
replication delay.

uploadpack.allowNoRefDelta::
If this option is set, `upload-pack` may advertise the
`no-ref-delta` feature of the protocol version 2 `fetch`
command. When a client requests the feature, `upload-pack` passes
`--no-ref-delta` to `pack-objects` for the inline pack and promises
that every pack named in a `packfile-uris` response section also
contains no `REF_DELTA` entries. `upload-pack` does not inspect
configured URI packs, so the server administrator must create each
pack with `pack-objects --no-ref-delta` or otherwise verify this
property. The default is `false`.
11 changes: 9 additions & 2 deletions Documentation/git-index-pack.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ git-index-pack - Build pack index file for an existing packed archive
SYNOPSIS
--------
[verse]
'git index-pack' [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
'git index-pack' --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
'git index-pack' [-v] [-o <index-file>] [--no-ref-delta]
[--[no-]rev-index] <pack-file>
'git index-pack' --stdin [--fix-thin] [--keep] [--no-ref-delta]
[-v] [-o <index-file>]
[--[no-]rev-index] [<pack-file>]


Expand Down Expand Up @@ -60,6 +62,11 @@ OPTIONS
excluded objects the deltified objects are based on to the
pack. This option only makes sense in conjunction with --stdin.

--no-ref-delta::
Reject a pack containing a `REF_DELTA` entry. `OFS_DELTA` entries
are accepted. This option can be used to verify a protocol promise
that a pack contains no `REF_DELTA` entries.

--keep::
Before moving the index into its final destination
create an empty .keep file for the associated pack file.
Expand Down
8 changes: 7 additions & 1 deletion Documentation/git-pack-objects.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ SYNOPSIS
--------
[verse]
'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied]
[--no-reuse-delta] [--delta-base-offset] [--non-empty]
[--no-reuse-delta] [--delta-base-offset] [--no-ref-delta]
[--non-empty]
[--local] [--incremental] [--window=<n>] [--depth=<n>]
[--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
[--cruft] [--cruft-expiration=<time>]
Expand Down Expand Up @@ -297,6 +298,11 @@ Note: Porcelain commands such as `git gc` (see linkgit:git-gc[1]),
in modern Git when they put objects in your repository into pack files.
So does `git bundle` (see linkgit:git-bundle[1]) when it creates a bundle.

--no-ref-delta::
Do not emit deltas which represent their base by their literal
object ID. This is independent of `--delta-base-offset`;
without that option, no deltas are emitted.

--threads=<n>::
Specifies the number of threads to spawn when searching for best
delta matches. This requires that pack-objects be compiled with
Expand Down
Loading
Loading