Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
432 commits
Select commit Hold shift + click to select a range
d36bd67
dir: rescan invalid collapsed UNTR witnesses
ttaylorr Jul 24, 2026
201d543
attr: fingerprint external sources in stable namespaces
ttaylorr-oai Jul 11, 2026
e8acfe7
fsmonitor: bind daemon queries to the canonical worktree root
ttaylorr-oai Jul 11, 2026
734087e
dir: skip recursively valid empty UNTR subtrees
ttaylorr Jul 24, 2026
6b14e41
Merge the S08 prerequisites
ttaylorr-oai Jul 29, 2026
e6213ce
status: bind semantic configuration to its index
ttaylorr-oai Jul 26, 2026
e33973b
commit: stage semantic configuration before reading the index
ttaylorr-oai Jul 26, 2026
2ab4b0f
status: classify durable index source identities
ttaylorr-oai Jul 24, 2026
af4ec9b
read-cache: bind null-checksum indexes to their source file
ttaylorr-oai Jul 11, 2026
7b77513
Merge the S05 prerequisites
ttaylorr-oai Jul 29, 2026
a0ec2c8
read-cache: validate persisted fsmonitor semantic history
ttaylorr-oai Jul 24, 2026
7ea9510
fsmonitor: validate FSMN before publishing it
ttaylorr-oai Jul 11, 2026
436442a
read-cache: write only token-closed fsmonitor history
ttaylorr-oai Jul 24, 2026
163c835
fsmonitor: add an untracked-cache token extension
ttaylorr-oai Jul 11, 2026
6541294
read-cache: preserve validated fsmonitor history across indexes
ttaylorr-oai Jul 11, 2026
7e2ede1
fsmonitor: bind untracked-cache state to its token
ttaylorr-oai Jul 11, 2026
048aa39
status: hold external attributes stable across refresh
ttaylorr-oai Jul 21, 2026
b2d084d
fsmonitor: validate builtin daemon responses before applying them
ttaylorr-oai Jul 10, 2026
aca949d
fsmonitor: seed missing-history baselines from legacy tokens
ttaylorr-oai Jul 24, 2026
c318a56
fsmonitor: apply validated builtin path records directly
ttaylorr-oai Jul 24, 2026
c07bbdb
status: prepare logical-index history checkpoints
ttaylorr-oai Jul 29, 2026
002a49e
fsmonitor: ignore empty hook path records
ttaylorr-oai Jul 24, 2026
f9daeec
fsmonitor: rebuild sparse-index history without expanding the live index
ttaylorr-oai Jul 24, 2026
51f4df5
fsmonitor: centralize complete fsmonitor invalidation
ttaylorr-oai Jul 11, 2026
24d99db
status: bind each closing token to its complete proof epoch
ttaylorr-oai Jul 21, 2026
0c15202
wt-status: separate untracked traversal from result collection
ttaylorr-oai Jul 11, 2026
a01798e
fsmonitor: reopen semantic proofs after attribute events
ttaylorr-oai Jul 21, 2026
e3c1585
status: close fsmonitor tokens around complete status scans
ttaylorr-oai Jul 29, 2026
079682a
preload-index: queue bounded bulk directory scans
ttaylorr Jul 24, 2026
604f05c
preload-index: classify sparse-aware bulk stat observations
ttaylorr Jul 24, 2026
3f85309
status: adopt tracked history only after closing its proof
ttaylorr-oai Jul 21, 2026
df00b29
preload-index: bind APFS scans to a stable worktree root
ttaylorr-oai Jul 21, 2026
327518e
wt-status: close tracked proofs before scanning untracked paths
ttaylorr Jul 24, 2026
9cddda7
precompose: prepare Unicode configuration before parallel conversion
ttaylorr-oai Jul 21, 2026
bfafc5c
dir: reject oversized pattern files before allocation
ttaylorr-oai Jul 24, 2026
36b6852
commit: close fsmonitor tokens across pre-commit hooks
ttaylorr-oai Jul 21, 2026
cfb045d
preload-index: validate packed APFS directory records
ttaylorr Jul 24, 2026
29d4a93
Merge the S13 prerequisites
ttaylorr-oai Jul 30, 2026
711aea8
preload-index: walk APFS directories beneath a held root
ttaylorr Jul 24, 2026
4d658b7
exclude: prove the contents of observed ignore sources
ttaylorr-oai Jul 21, 2026
cd0dde9
preload-index: factor the ordinary preload eligibility predicate
ttaylorr-oai Jul 21, 2026
87ed248
dir: capture ignore sources beneath anchored parents
ttaylorr-oai Jul 21, 2026
d4ad0c5
preload-index: enable opt-in APFS bulk preloading
ttaylorr-oai Jul 28, 2026
029af3f
preload-index: stage proven untracked bulk results
ttaylorr-oai Jul 21, 2026
0fd4a93
t7529: cover APFS preload directory and root replacement
ttaylorr-oai Jul 28, 2026
a58ee81
preload-index: collect visible paths during the APFS walk
ttaylorr-oai Jul 21, 2026
6c61ac4
Merge the S11 prerequisites
ttaylorr-oai Jul 24, 2026
9a02cea
status: reuse complete APFS untracked preload results
ttaylorr-oai Jul 21, 2026
152483c
preload-index: retain proven deletions from complete bulk scans
ttaylorr-oai Jul 24, 2026
bd11d98
preload-index: translate complete Linux statx observations
ttaylorr-oai Jul 21, 2026
2018054
preload-index: classify definitive tracked-file size changes
ttaylorr-oai Jul 24, 2026
2415dab
preload-index: anchor Linux directory opens to the worktree
ttaylorr-oai Jul 21, 2026
1675be3
status: consume definitive bulk changes exactly once
ttaylorr-oai Jul 24, 2026
5f12f61
preload-index: enumerate Linux directories without trusting d_type
ttaylorr-oai Jul 21, 2026
297d1c5
preload-index: detect replaced Linux scan directories
ttaylorr-oai Jul 21, 2026
426c340
preload-index: validate Linux mount topology around bulk scans
ttaylorr-oai Jul 21, 2026
a275107
preload-index: enable the verified Linux bulk scan backend
ttaylorr-oai Jul 21, 2026
ceca085
status: close bulk content proofs with the provider token
ttaylorr-oai Jul 29, 2026
5b506f9
exclude: compute stable source-proof digests
ttaylorr-oai Jul 24, 2026
8868648
status: add a bounded clean-status sidecar format
ttaylorr-oai Jul 21, 2026
ec6e355
status: install sidecars against a pinned index
ttaylorr-oai Jul 24, 2026
3770956
status: classify indexes that clean proofs may certify
ttaylorr-oai Jul 24, 2026
8e1abdc
status: issue sidecars after a verified full scan
ttaylorr-oai Jul 28, 2026
03e6c19
status: load bounded clean-status sidecars
ttaylorr-oai Jul 24, 2026
c29ca75
exclude: support nonblocking proof captures
ttaylorr-oai Jul 27, 2026
6e3e253
status: answer exact clean status before index deserialization
ttaylorr-oai Jul 27, 2026
2c8e5e7
Documentation: describe status clean-proof sidecars
ttaylorr-oai Jul 21, 2026
af4c937
status: reuse clean proofs for plain status after restore
ttaylorr-oai Aug 10, 2026
4ec1853
fsmonitor: restore recursive validity for paired untracked state
ttaylorr-oai Aug 10, 2026
dfe59c7
status: bind external history to physical index sources
ttaylorr-oai Aug 10, 2026
0cb4e45
status: refresh external history before exact proofs
ttaylorr Aug 10, 2026
9ecbcff
status: keep a forward fsmonitor boundary over stale history
ttaylorr-oai Aug 10, 2026
2fa1965
status: preserve external history for dirty root-wide queries
ttaylorr-oai Aug 11, 2026
29a5c60
status: show delayed progress during semantic refresh
ttaylorr-oai Aug 11, 2026
2d1c363
preload-index: avoid bulk scans for sparse provider deltas
ttaylorr-oai Aug 11, 2026
850776c
fsmonitor: keep external history disabled on Windows
ttaylorr-oai Aug 11, 2026
5ea24eb
fsmonitor: honor explicitly invalidated external history
ttaylorr-oai Aug 11, 2026
dc6b288
status: preserve semantic history for scoped queries
ttaylorr-oai Aug 11, 2026
8355433
read-cache: factor refreshed entry construction
ttaylorr-oai Jul 21, 2026
df5ea02
status: reuse closed proofs for scoped queries
ttaylorr-oai Aug 11, 2026
a730f03
read-cache: reject out-of-bounds index extensions
ttaylorr-oai Jul 10, 2026
6252ce8
cache-tree: avoid allocations and searches while reading
ttaylorr-oai Jul 21, 2026
3b5e72e
read-cache: decode bounded TREE and UNTR extensions in parallel
ttaylorr-oai Jul 21, 2026
0497ef0
status: refresh verified writable bulk-preload entries
ttaylorr-oai Jul 21, 2026
9900ceb
Merge the status optimization topics
ttaylorr-oai Aug 11, 2026
3f0cc18
fsmonitor: preserve authenticated legacy daemon history
ttaylorr-oai Aug 11, 2026
8b4c582
t7527: guard invalidated external fsmonitor history
ttaylorr-oai Aug 11, 2026
33ec97b
t7529: open the resume FIFO before publishing readiness
ttaylorr Aug 6, 2026
e75df74
t7527: disable split index for legacy daemon queries
ttaylorr-oai Aug 11, 2026
4c3cb85
t7527: allow a clean read-tree reset to skip refresh
ttaylorr-oai Aug 11, 2026
a26cb19
t7527: cover scoped fsmonitor history reuse
ttaylorr-oai Aug 11, 2026
2b09ca7
t7527: tolerate unpersisted fsmonitor-valid bits
ttaylorr-oai Aug 11, 2026
95ddb66
t7527: cover closed scoped untracked-cache reuse
ttaylorr-oai Aug 11, 2026
7f6a319
diff: honor --no-optional-locks when refreshing the index
ttaylorr-oai Aug 7, 2026
12d352e
describe: honor optional locks for dirty-worktree checks
ttaylorr-oai Aug 12, 2026
13c8406
stash: avoid rewriting the index when nothing can be saved
ttaylorr-oai Aug 12, 2026
614c40f
status: reuse clean proofs across equivalent query shapes
ttaylorr-oai Aug 12, 2026
3d7c419
status: preserve semantic history across scoped and index changes
ttaylorr-oai Aug 12, 2026
08f76b5
checkout: avoid rewriting an unchanged index
tnm-oai Jul 29, 2026
9b86dcf
t7530: tolerate an already-exited fast fallback
ttaylorr-oai Aug 12, 2026
9d4b906
commit: honor optional locks during a dry run
ttaylorr-oai Aug 12, 2026
c2089ad
reset: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
7a39a2e
status: certify clean output with configured stash display
ttaylorr-oai Aug 12, 2026
1ea29b9
t7530: preserve clean proofs across no-op index commands
ttaylorr-oai Aug 12, 2026
7d58180
checkout-index: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
2456dca
diff: restore external fsmonitor history when available
ttaylorr-oai Aug 12, 2026
a7b0d3d
sparse-checkout: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
d08d58c
Merge tb/codex/status-preview-unstable into codex-unstable
chatgpt-codex-connector[bot] Aug 12, 2026
60077b9
status: preserve semantic history across scoped and index changes
ttaylorr-oai Aug 12, 2026
35e68d5
checkout: avoid rewriting an unchanged index
tnm-oai Jul 29, 2026
af83c31
t7530: tolerate an already-exited fast fallback
ttaylorr-oai Aug 12, 2026
3bedbda
commit: honor optional locks during a dry run
ttaylorr-oai Aug 12, 2026
60c41c1
reset: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
2039dce
status: certify clean output with configured stash display
ttaylorr-oai Aug 12, 2026
d8489d9
t7530: preserve clean proofs across no-op index commands
ttaylorr-oai Aug 12, 2026
4e32c1a
checkout-index: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
047394b
diff: restore external fsmonitor history when available
ttaylorr-oai Aug 12, 2026
935249c
sparse-checkout: avoid rewriting an unchanged index
ttaylorr-oai Aug 12, 2026
cfb9444
status: integrate the reviewed preview on codex-unstable
ttaylorr-oai Aug 13, 2026
9fa1549
fsmonitor: reduce attribute-manifest recovery overhead
ttaylorr-oai Aug 13, 2026
6d70207
fsmonitor: revalidate cached directories after provider resets
ttaylorr-oai Aug 13, 2026
d1269e6
fsmonitor: pool attribute-manifest candidate paths
ttaylorr-oai Aug 13, 2026
ef7d150
status: preload full recovery for scoped pathspecs
ttaylorr-oai Aug 13, 2026
3c98588
status: reissue clean proofs after repository inputs change
ttaylorr-oai Aug 13, 2026
fca61fd
fsmonitor: recover history after mixed-writer resets
ttaylorr-oai Aug 13, 2026
a8303ff
fsmonitor: prepare reviewed metadata recovery release
ttaylorr-oai Aug 13, 2026
acaa7bb
t7519: persist paired cache before testing provider reset
ttaylorr-oai Aug 13, 2026
046008d
t7519: make the reviewed provider-reset fixture deterministic
ttaylorr-oai Aug 13, 2026
7d89280
add: never write the index during a dry run
ttaylorr-oai Aug 13, 2026
28d464c
status: preserve history for paths without active filters
ttaylorr-oai Aug 13, 2026
dad9e3b
status: preserve proof for ordinary staged paths
ttaylorr-oai Aug 13, 2026
4bc13b1
status: ignore command-scoped preload tuning in proofs
ttaylorr-oai Aug 13, 2026
f92dd57
status: keep preload overrides out of worktree proofs
ttaylorr-oai Aug 13, 2026
1f8294d
attr-fingerprint: treat empty source paths as absent
ttaylorr-oai Aug 13, 2026
6900890
status: reuse proofs for empty attribute overrides
ttaylorr-oai Aug 13, 2026
09aaf05
Merge empty attribute-source compatibility fix
ttaylorr-oai Aug 13, 2026
cbf6ae4
Merge cache-stable empty attribute overrides
ttaylorr-oai Aug 13, 2026
17148f5
fsmonitor--daemon: target worktree hardlink events by inode
ttaylorr-oai Aug 14, 2026
5af6c77
t7530: expect targeted hardlink invalidations
ttaylorr-oai Aug 14, 2026
e923cf0
status: reuse authenticated history after provider reset
ttaylorr-oai Aug 14, 2026
22878a7
fsmonitor: preserve attribute history for removed directory cones
ttaylorr-oai Aug 14, 2026
8f5cc69
fsmonitor: retain attribute history when restoring directory cones
ttaylorr-oai Aug 14, 2026
fe7dfc0
fsmonitor: persist revalidated history after provider resets
ttaylorr-oai Aug 14, 2026
49d03b6
fsmonitor: retain untracked candidates across expired provider tokens
ttaylorr-oai Aug 14, 2026
d8abc88
fsmonitor: authenticate explicit worktrees for pending state
ttaylorr-oai Aug 14, 2026
062e636
status: preserve proofs across guarded Codex invocations
ttaylorr-oai Aug 14, 2026
ca4c581
t7527: run failing filter probe with portable environment setup
ttaylorr-oai Aug 14, 2026
288a9d2
fsmonitor: report index writes without untracked proofs
ttaylorr-oai Aug 14, 2026
d04b9c3
status: normalize disabled post-index-change hooks
ttaylorr-oai Aug 14, 2026
f3cb59d
t7519: explicitly publish the repaired index proof
ttaylorr-oai Aug 14, 2026
9b689df
diff: close fsmonitor tokens after complete tracked refresh
ttaylorr-oai Aug 15, 2026
4b4ca0e
status: replace existing proofs when restoring external history
ttaylorr-oai Aug 15, 2026
28dac0a
stash: preserve authenticated worktree proofs during creation
ttaylorr-oai Aug 15, 2026
184d318
stash: avoid rebuilding clean proofs for scratch indexes
ttaylorr-oai Aug 15, 2026
5d885ff
stash: restore authenticated history before creating a stash
ttaylorr-oai Aug 15, 2026
5f2a52e
t7519: cover stash creation from linked external history
ttaylorr-oai Aug 15, 2026
53d3e44
write-tree: preserve authenticated fsmonitor proofs
ttaylorr-oai Aug 15, 2026
3209530
write-tree: avoid clean-proof work for temporary indexes
ttaylorr-oai Aug 15, 2026
8abeda5
fsmonitor: preserve authenticated proofs across ordinary commands
ttaylorr-oai Aug 15, 2026
1565e9d
t7527: expect safe mixed resets to preserve clean history
ttaylorr-oai Aug 15, 2026
e3c9a5b
fsmonitor: preserve proofs through filters, replay, and index locks
ttaylorr-oai Aug 15, 2026
136d1c0
t7527: accept either authenticated legacy checkpoint restore
ttaylorr-oai Aug 15, 2026
57b3c90
diff: restore authenticated history with configured filters
ttaylorr-oai Aug 15, 2026
8514240
fsmonitor: skip missing-checkpoint hashes for read-only commands
ttaylorr-oai Aug 15, 2026
ae84bba
fsmonitor: reserve checkpoint source hashes for writable status
ttaylorr-oai Aug 15, 2026
dfc55f9
diff: repair provider-reset history before publishing its index
ttaylorr-oai Aug 15, 2026
7c19bf4
fsmonitor: retain checked manifests across scoped directory deltas
ttaylorr-oai Aug 16, 2026
ef6cdb5
diff: reuse pinned observations during provider-reset repair
ttaylorr-oai Aug 16, 2026
b4bd792
dir: share normalized exclude hashes across identical blobs
ttaylorr-oai Aug 16, 2026
f5d69f4
status: admit clean sidecars for inactive configured filters
ttaylorr-oai Aug 16, 2026
44b6b8b
exclude: avoid an intermediate reopen of regular sources
ttaylorr-oai Aug 16, 2026
cdcd1c4
status: preserve legacy proof epochs across preload tuning
ttaylorr-oai Aug 16, 2026
26874a9
fsmonitor: bound directory reuse by attribute sources
ttaylorr-oai Aug 16, 2026
fad7b3d
t7527: separate index and sidecar preload coverage
ttaylorr-oai Aug 16, 2026
6ebfec2
dir: share normalized exclude hashes without pthreads
ttaylorr-oai Aug 16, 2026
b6fbc8e
t7519: distinguish serial and threaded index refreshes
ttaylorr-oai Aug 16, 2026
1257a5f
t7519: check scoped recovery with the available worker count
ttaylorr-oai Aug 16, 2026
3a86cb8
status: retain recovery and progress without pthreads
ttaylorr-oai Aug 16, 2026
e36890c
status: reuse bulk results after discarding legacy caches
ttaylorr-oai Aug 16, 2026
5abe1ce
preload-index: select bulk for read-only cache recovery
ttaylorr-oai Aug 16, 2026
3fcb4c5
status: recover discarded empty legacy caches in one pass
ttaylorr-oai Aug 16, 2026
5e6cc30
t7519: isolate the bulk recovery test environment
ttaylorr-oai Aug 16, 2026
c6b2f26
fsmonitor: avoid full scans for partially proved private indexes
ttaylorr-oai Aug 16, 2026
b208bc4
t7519: disarm completed query-barrier cleanups
ttaylorr-oai Aug 16, 2026
8def7dc
t7519: verify reuse after writable legacy-cache repair
ttaylorr-oai Aug 16, 2026
d079f66
fsmonitor: avoid repository-wide bootstrap for bounded readers
ttaylorr-oai Aug 16, 2026
04abe79
dir: persist unresolved fsmonitor events as invalidation
ttaylorr-oai Aug 16, 2026
4922f4b
read-cache: allow authenticated same-path replacements
ttaylorr-oai Aug 16, 2026
428d829
stash: retain paired history for scoped regular-file changes
ttaylorr-oai Aug 16, 2026
116bc02
clean-status: normalize redundant disabled submodule recursion
ttaylorr-oai Aug 16, 2026
e658bba
tests: integrate scoped proof coverage with both harnesses
ttaylorr-oai Aug 16, 2026
bc0e68c
t7534: force the same-stat oracle to read file contents
ttaylorr-oai Aug 16, 2026
39647c8
t7534: force the required-filter control to read the file
ttaylorr-oai Aug 16, 2026
284a8ae
t7533: keep the staged-sibling fixture out of split-index mode
ttaylorr-oai Aug 16, 2026
810ab59
am: retain authenticated worktree proofs before refresh
ttaylorr-oai Aug 16, 2026
fec9824
t7519: age the staged entry before checkpoint reissue
ttaylorr-oai Aug 16, 2026
687de43
stash: leave room for the object ID terminator
ttaylorr-oai Aug 16, 2026
ef3af6c
t7530: probe fsmonitor without requiring an index write
ttaylorr-oai Aug 16, 2026
e94acd7
t7530: isolate external exclude FIFO parents
ttaylorr-oai Aug 16, 2026
cb6cbd4
status: defer Linux scoped history hashing until a repair
ttaylorr Aug 17, 2026
aaa01b4
clean-status: release the raw fsmonitor shadow bitmap
ttaylorr-oai Aug 17, 2026
d313b5f
commit: restore external proofs before preparing the index
ttaylorr-oai Aug 17, 2026
88f1686
fsmonitor: recognize equivalent index-only reader requests
ttaylorr-oai Aug 17, 2026
81eaddb
exclude: tolerate sibling churn around a pinned regular source
ttaylorr-oai Aug 17, 2026
40798d4
fsmonitor: release raw index bitmaps with their owner
ttaylorr-oai Aug 17, 2026
0a5f399
status: carry a failed sidecar probe into the index refresh
ttaylorr-oai Aug 17, 2026
2444e35
fsmonitor: retire the provider token after a failed cookie
ttaylorr-oai Aug 17, 2026
706bdff
fsmonitor: encode Darwin worktree-root events without overreading
ttaylorr-oai Aug 17, 2026
ae6012c
fsmonitor: open watch-limit backoff markers without blocking
ttaylorr-oai Aug 17, 2026
0e380d2
fsmonitor: reuse authenticated manifests for wider directory deltas
ttaylorr-oai Aug 17, 2026
d01b4d6
fsmonitor: bound nested attribute invalidation to its index cone
ttaylorr-oai Aug 17, 2026
53b813d
status: preserve index proofs during temporary fsmonitor backoff
ttaylorr-oai Aug 17, 2026
a03fa3b
checkout-index: restore external proofs before updating the index
ttaylorr-oai Aug 17, 2026
968fd32
t7530: reject failed cookie synchronization in the prerequisite
ttaylorr-oai Aug 17, 2026
8b9f22c
read-cache: treat damaged optional index witnesses as misses
ttaylorr-oai Aug 17, 2026
176a9b2
t1602: require a healthy native cookie before recovery tests
ttaylorr-oai Aug 17, 2026
20d54cc
t: use test_env for shell-function invocations
ttaylorr-oai Aug 17, 2026
c5a07e6
t7519: expect the index-only cached diff fallback
ttaylorr-oai Aug 17, 2026
19fc552
t7535: wait for the listener before removing its cookie directory
ttaylorr-oai Aug 17, 2026
be3eacf
read-cache: decode extension signatures as unsigned integers
ttaylorr-oai Aug 17, 2026
a56d683
t7536: export the watch-limit fixture environment
ttaylorr-oai Aug 17, 2026
7d31504
unit-tests: use a nonzero mode bit in namespace identity test
ttaylorr-oai Aug 17, 2026
fa49e0f
status: skip an unclosable terminal index refresh
ttaylorr-oai Aug 17, 2026
bd208f3
status: retain the identity of an index it rewrites
ttaylorr-oai Aug 17, 2026
880b232
status: trace provider resets in the clean sidecar probe
ttaylorr-oai Aug 17, 2026
798fb21
fsmonitor: require failed-cookie token retirement
ttaylorr-oai Aug 17, 2026
68abca2
status: stop retrying consecutive provider resets
ttaylorr-oai Aug 17, 2026
a8d82e3
fsmonitor: flush pending FSEvents before cookie wait
tamird Jul 21, 2026
f7be5b1
Revert "fsmonitor: flush pending FSEvents before cookie wait"
ttaylorr-oai Aug 17, 2026
4e82cbf
fsmonitor: retain suspended history across backoff writers
ttaylorr Aug 18, 2026
1baa4c7
fsmonitor: suspend history with inactive configured filters
ttaylorr-oai Aug 18, 2026
bdf9d93
t7536: cover structural writes during watch-limit backoff
ttaylorr-oai Aug 18, 2026
0d366ab
fsmonitor: recognize the main index in commit hooks
ttaylorr-oai Aug 18, 2026
25e2d02
apply: preserve suspended fsmonitor history
ttaylorr-oai Aug 18, 2026
2d2e9d0
commit: retain suspended history across successful hooks
ttaylorr-oai Aug 18, 2026
27e12e7
t7536: allow the hook to remove staged content
ttaylorr-oai Aug 18, 2026
947ab15
fsmonitor: guard commit checkpoint ownership checks
ttaylorr-oai Aug 18, 2026
0d1e07f
fsmonitor: prepare history before canonical index reads
ttaylorr-oai Aug 18, 2026
12cb4a7
commit: preserve suspended history after interactive selection
ttaylorr-oai Aug 18, 2026
3e78474
read-cache: recover serialized backoff content checks
ttaylorr-oai Aug 18, 2026
537ca56
t7536: respect interactive index spelling and hook scope
ttaylorr-oai Aug 18, 2026
b1e7bfb
stash: prepare authenticated history before reading the index
ttaylorr-oai Aug 18, 2026
44e7848
exclude: use the empty blob for an empty captured source
ttaylorr-oai Aug 18, 2026
e122952
stash: defer history invalidation until selection succeeds
ttaylorr-oai Aug 18, 2026
bf9f887
unpack-trees: preserve suspended history across safe replacements
ttaylorr-oai Aug 18, 2026
00debd2
stash: reread zero-checksum history before the default merge
ttaylorr-oai Aug 18, 2026
5890aef
status: reissue clean proofs after config changes
ttaylorr-oai Aug 18, 2026
44402f3
status: ignore command-scoped relativePaths in clean proofs
ttaylorr-oai Aug 18, 2026
2c6c284
status: retain clean proofs across presentation overrides
ttaylorr-oai Aug 19, 2026
88fab89
t7530: use test_env with test_must_fail
ttaylorr-oai Aug 19, 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 @@ -142,6 +142,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
14 changes: 8 additions & 6 deletions Documentation/git-http-fetch.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,15 @@ commit-id::
line (which is not expected in
this case), 'git http-fetch' fetches the packfile directly at the given
URL and uses index-pack to generate corresponding .idx and .keep files.
The hash is used to determine the name of the temporary file and is
arbitrary. The output of index-pack is printed to stdout. Requires
--index-pack-args.
The hash is used to determine the name of the temporary file. It need
not be the pack hash, but it must uniquely identify the pack contents
for resumption. The output of index-pack is printed to stdout. Requires
one or more --index-pack-arg options.

--index-pack-args=<args>::
For internal use only. The command to run on the contents of the
downloaded pack. Arguments are URL-encoded separated by spaces.
--index-pack-arg=<arg>::
For internal use only. The first instance specifies the command run on
the contents of the downloaded pack. Subsequent instances specify its
arguments.

--recover::
Verify that everything reachable from target is fetched. Used after
Expand Down
43 changes: 43 additions & 0 deletions Documentation/gitformat-index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,49 @@ The remaining data of each directory block is grouped by type:
- An ewah bitmap, the n-th bit indicates whether the n-th index entry
is not CE_FSMONITOR_VALID.

== File System Monitor untracked-cache token

The file system monitor untracked-cache token records the provider
token associated with an untracked-cache snapshot. The signature for
this extension is { 'F', 'S', 'U', 'C' }.

The extension consists of:

- 32-bit version number: the current version is 1.

- A NUL-terminated string containing the opaque file system monitor
token associated with the untracked-cache data.

== File System Monitor semantic proof

The file system monitor semantic proof records the configuration and
attribute inputs for a completed worktree-content verification. Its
signature is { 'F', 'S', 'C', 'F' }.

The extension consists of:

- 32-bit version number (currently 1).

- 32-bit magic number identifying version 1 records (`FSC1`).

- 32-bit flags. The low four bits respectively indicate a complete
attribute manifest, a provider-token binding, a stat-data binding, and
coverage of the full index. All other bits must be zero.

- 32-bit length of the provider token.

- 32-bit length of the attribute manifest.

- The provider token, without a terminating NUL.

- Three hashes, using the index hash algorithm, over the relevant Git
configuration, semantic-conversion configuration, and attribute state.

- The attribute manifest described by its length above.

- A hash over all preceding bytes in this extension, using the index hash
algorithm.

== End of Index Entry

The End of Index Entry (EOIE) is used to locate the end of the variable
Expand Down
1 change: 1 addition & 0 deletions Documentation/technical/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ articles = [
'shallow.adoc',
'sparse-checkout.adoc',
'sparse-index.adoc',
'status-clean-proof.adoc',
'trivial-merge.adoc',
'unambiguous-types.adoc',
'unit-tests.adoc',
Expand Down
Loading
Loading