Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
c0a90b1
ci: add codex refresh dispatch trampoline
ttaylorr-oai Jul 31, 2026
5367fed
ci: call the simplified codex controller
ttaylorr-oai Aug 1, 2026
f848bb4
ci: verify Codex topics before entering the merge queue
ttaylorr-oai Aug 4, 2026
17738e2
ci: route unstable Codex admission through meta
ttaylorr-oai Aug 5, 2026
988cecc
ci: build Codex Git from dugite fork
dreynaud-oai Jul 21, 2026
21f743f
ci: run Codex Linux arm64 releases natively
ttaylorr-oai Jul 21, 2026
004d9c3
ci: build Codex Git releases with LTO
ttaylorr-oai Jul 21, 2026
88fcb4a
ci: train Codex Git releases with PGO
ttaylorr-oai Jul 21, 2026
a9783f5
Merge tb/codex/automation into codex
chatgpt-codex-connector[bot] Aug 5, 2026
cc8fd98
Merge tb/codex/geometric-maintenance-promisor into codex
chatgpt-codex-connector[bot] Aug 5, 2026
011461d
Merge tb/codex/release into codex
chatgpt-codex-connector[bot] Aug 5, 2026
3b9f776
Merge dr/codex/dugite into codex
chatgpt-codex-connector[bot] Aug 5, 2026
71a2710
Merge tb/codex/lto-pgo into codex
chatgpt-codex-connector[bot] Aug 5, 2026
a70b280
dir: compare all saved metadata for UNTR directories
ttaylorr-oai Jul 11, 2026
092bd84
path-namespace: compare complete filesystem object identities
ttaylorr-oai Jul 21, 2026
405af2f
dir: consume preloaded UNTR directory stat results
ttaylorr-oai Jul 10, 2026
63c849b
dir: snapshot UNTR directory validation inputs
ttaylorr-oai Jul 10, 2026
4d84d76
dir: validate captured UNTR directory stats
ttaylorr-oai Jul 10, 2026
f09eed8
dir: validate captured UNTR directory stats in parallel
ttaylorr-oai Jul 10, 2026
92d76ca
status: overlap UNTR validation with tracked-index refresh
ttaylorr-oai Jul 21, 2026
4b4dc94
fsmonitor: require content checks for reported paths
ttaylorr-oai Jul 21, 2026
8b21397
status: gate automatic UNTR validation preloads
ttaylorr-oai Jul 26, 2026
b1fc630
fsmonitor: support provider-wide invalidation
ttaylorr-oai Jul 11, 2026
9485e67
fsmonitor: rediscover linked worktrees when starting a daemon
ttaylorr-oai Jul 24, 2026
2abb4ec
Merge standalone S01/P08 into S01
ttaylorr-oai Jul 21, 2026
270b6f0
fsmonitor: keep multiply-linked files invalid
ttaylorr Jul 11, 2026
db28363
fsmonitor: start implicit daemons with the invoking Git executable
ttaylorr-oai Jul 24, 2026
3bf0277
dir: verify cached excludes during UNTR preload
ttaylorr-oai Jul 21, 2026
60e6747
fsmonitor--daemon: invalidate globally for worktree hardlink events
ttaylorr-oai Jul 11, 2026
d0493c0
fsmonitor: ignore startup timeout configuration in daemon run
ttaylorr Jul 24, 2026
efb09a1
dir: rescan invalid collapsed UNTR witnesses
ttaylorr Jul 24, 2026
359df78
fsmonitor: invalidate conversion state for attribute-file events
ttaylorr-oai Jul 24, 2026
e89815a
fsmonitor: bind daemon queries to the canonical worktree root
ttaylorr-oai Jul 11, 2026
3a22626
dir: skip recursively valid empty UNTR subtrees
ttaylorr Jul 24, 2026
eb042ff
fsmonitor: invalidate attributes for matched directory summaries
ttaylorr-oai Jul 24, 2026
37d0ae4
preload-index: queue bounded bulk directory scans
ttaylorr Jul 24, 2026
ab71232
preload-index: classify sparse-aware bulk stat observations
ttaylorr Jul 24, 2026
aa37846
preload-index: bind APFS scans to a stable worktree root
ttaylorr-oai Jul 21, 2026
afc4ee6
Merge the S05 prerequisites
ttaylorr-oai Jul 29, 2026
08641fe
precompose: prepare Unicode configuration before parallel conversion
ttaylorr-oai Jul 21, 2026
1c1061d
Merge the S06 prerequisites
ttaylorr-oai Jul 11, 2026
caa0279
fsmonitor: validate FSMN before publishing it
ttaylorr-oai Jul 11, 2026
cf4c103
preload-index: validate packed APFS directory records
ttaylorr Jul 24, 2026
1a074bc
status: pin semantic verification to the worktree root
ttaylorr-oai Jul 11, 2026
77db739
fsmonitor: add an untracked-cache token extension
ttaylorr-oai Jul 11, 2026
f1f20ba
preload-index: walk APFS directories beneath a held root
ttaylorr Jul 24, 2026
fc93346
status: resolve semantic proof paths through pinned parents
ttaylorr-oai Jul 11, 2026
5952e41
fsmonitor: bind untracked-cache state to its token
ttaylorr-oai Jul 11, 2026
5e41690
preload-index: factor the ordinary preload eligibility predicate
ttaylorr-oai Jul 21, 2026
0ef5138
path-namespace: check reopened component identity
ttaylorr-oai Jul 24, 2026
6b66f3a
fsmonitor: validate builtin daemon responses before applying them
ttaylorr-oai Jul 10, 2026
22911e2
preload-index: enable opt-in APFS bulk preloading
ttaylorr-oai Jul 28, 2026
58de3de
status: hash tracked files through anchored descriptors
ttaylorr-oai Jul 11, 2026
533f8fc
fsmonitor: apply validated builtin path records directly
ttaylorr-oai Jul 24, 2026
9bb0380
t7529: cover APFS preload directory and root replacement
ttaylorr-oai Jul 28, 2026
a1c1756
convert: support independent conversion attribute checks
ttaylorr-oai Jul 10, 2026
61540f1
fsmonitor: ignore empty hook path records
ttaylorr-oai Jul 24, 2026
aa3a599
Merge the S11 prerequisites
ttaylorr-oai Jul 24, 2026
dda6437
status: classify candidates for semantic verification
ttaylorr-oai Jul 11, 2026
7168555
fsmonitor: centralize complete fsmonitor invalidation
ttaylorr-oai Jul 11, 2026
d18785f
preload-index: retain proven deletions from complete bulk scans
ttaylorr-oai Jul 24, 2026
7cef594
read-cache: reject out-of-bounds index extensions
ttaylorr-oai Jul 10, 2026
5a00480
status: assemble and test serial semantic proof candidates
ttaylorr-oai Jul 11, 2026
85b1cba
wt-status: separate untracked traversal from result collection
ttaylorr-oai Jul 11, 2026
c2df2b4
preload-index: classify definitive tracked-file size changes
ttaylorr-oai Jul 24, 2026
0200a18
cache-tree: avoid allocations and searches while reading
ttaylorr-oai Jul 21, 2026
4d3b510
read-cache: factor refreshed entry construction
ttaylorr-oai Jul 21, 2026
49fe843
status: apply complete semantic proofs atomically
ttaylorr-oai Jul 11, 2026
f95e261
status: close fsmonitor tokens around complete status scans
ttaylorr-oai Jul 29, 2026
6ebc45d
dir: reject oversized pattern files before allocation
ttaylorr-oai Jul 24, 2026
452d90d
status: consume definitive bulk changes exactly once
ttaylorr-oai Jul 24, 2026
f47e1cf
read-cache: decode bounded TREE and UNTR extensions in parallel
ttaylorr-oai Jul 21, 2026
1bdde05
status: refresh verified writable bulk-preload entries
ttaylorr-oai Jul 21, 2026
63f24e7
status: verify semantic proof ranges in parallel
ttaylorr-oai Jul 11, 2026
8a6156f
status: fingerprint configuration for semantic clean proofs
ttaylorr-oai Jul 11, 2026
e0b98c4
status: write bounded attribute manifests
ttaylorr-oai Jul 11, 2026
a8e66a7
status: validate attribute manifest records
ttaylorr-oai Jul 11, 2026
4338534
status: iterate changed attribute manifest entries
ttaylorr-oai Jul 11, 2026
fc7923b
status: read attribute sources through pinned paths
ttaylorr-oai Jul 11, 2026
199a318
status: build worktree attribute manifests
ttaylorr-oai Jul 11, 2026
ed40439
status: probe attribute sources in parallel
ttaylorr-oai Jul 11, 2026
42e25d3
fsmonitor: add a bounded clean-proof record format
ttaylorr-oai Jul 10, 2026
fc309a2
status: retain validated worktree attribute manifests
ttaylorr-oai Jul 10, 2026
5d2748c
path: snapshot external source namespaces
ttaylorr-oai Jul 11, 2026
89f5743
attr: fingerprint external sources in stable namespaces
ttaylorr-oai Jul 11, 2026
d73edb2
Merge the S08 prerequisites
ttaylorr-oai Jul 29, 2026
5a099ee
status: bind semantic configuration to its index
ttaylorr-oai Jul 26, 2026
5139eb9
commit: stage semantic configuration before reading the index
ttaylorr-oai Jul 26, 2026
b91d315
status: classify durable index source identities
ttaylorr-oai Jul 24, 2026
41e3003
read-cache: bind null-checksum indexes to their source file
ttaylorr-oai Jul 11, 2026
3b91385
read-cache: validate persisted fsmonitor semantic history
ttaylorr-oai Jul 24, 2026
213f3fa
read-cache: write only token-closed fsmonitor history
ttaylorr-oai Jul 24, 2026
53a2693
read-cache: preserve validated fsmonitor history across indexes
ttaylorr-oai Jul 11, 2026
263f785
status: hold external attributes stable across refresh
ttaylorr-oai Jul 21, 2026
9867637
fsmonitor: seed missing-history baselines from legacy tokens
ttaylorr-oai Jul 24, 2026
add5957
status: pin index-state snapshots to the named index
ttaylorr-oai Jul 29, 2026
c1e9529
fsmonitor: rebuild sparse-index history without expanding the live index
ttaylorr-oai Jul 24, 2026
ff8abed
status: bind each closing token to its complete proof epoch
ttaylorr-oai Jul 21, 2026
41ed131
fsmonitor: reopen semantic proofs after attribute events
ttaylorr-oai Jul 21, 2026
b9f32ad
status: adopt tracked history only after closing its proof
ttaylorr-oai Jul 21, 2026
c76a2a9
wt-status: close tracked proofs before scanning untracked paths
ttaylorr Jul 24, 2026
9986548
commit: close fsmonitor tokens across pre-commit hooks
ttaylorr-oai Jul 21, 2026
c2b0601
Merge the S13 prerequisites
ttaylorr-oai Jul 30, 2026
91e3e0c
exclude: prove the contents of observed ignore sources
ttaylorr-oai Jul 21, 2026
c56ffe1
dir: capture ignore sources beneath anchored parents
ttaylorr-oai Jul 21, 2026
76e59d8
preload-index: stage proven untracked bulk results
ttaylorr-oai Jul 21, 2026
f99aaf0
preload-index: collect visible paths during the APFS walk
ttaylorr-oai Jul 21, 2026
47d2e2e
status: reuse complete APFS untracked preload results
ttaylorr-oai Jul 21, 2026
8e82ade
preload-index: translate complete Linux statx observations
ttaylorr-oai Jul 21, 2026
83a902c
preload-index: anchor Linux directory opens to the worktree
ttaylorr-oai Jul 21, 2026
c78d9c8
preload-index: enumerate Linux directories without trusting d_type
ttaylorr-oai Jul 21, 2026
07ff641
preload-index: detect replaced Linux scan directories
ttaylorr-oai Jul 21, 2026
2238f07
preload-index: validate Linux mount topology around bulk scans
ttaylorr-oai Jul 21, 2026
b27158c
preload-index: enable the verified Linux bulk scan backend
ttaylorr-oai Jul 21, 2026
8be274d
status: close bulk content proofs with the provider token
ttaylorr-oai Jul 29, 2026
406445d
exclude: compute stable source-proof digests
ttaylorr-oai Jul 24, 2026
98f3a03
status: add a bounded clean-status sidecar format
ttaylorr-oai Jul 21, 2026
af7e188
status: install sidecars against a pinned index
ttaylorr-oai Jul 24, 2026
fb30860
status: classify indexes that clean proofs may certify
ttaylorr-oai Jul 24, 2026
66c883f
status: issue sidecars after a verified full scan
ttaylorr-oai Jul 28, 2026
e3d4d6b
status: load bounded clean-status sidecars
ttaylorr-oai Jul 24, 2026
95c6008
exclude: support nonblocking proof captures
ttaylorr-oai Jul 27, 2026
dc95a38
status: answer exact clean status before index deserialization
ttaylorr-oai Jul 27, 2026
f9eeee0
Documentation: describe status clean-proof sidecars
ttaylorr-oai Jul 21, 2026
809bbc3
Merge the status optimization topics
ttaylorr-oai Jul 29, 2026
949c04b
t7529: open the resume FIFO before publishing readiness
ttaylorr Aug 6, 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
60 changes: 60 additions & 0 deletions .github/workflows/codex-pgo-training.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/sh

# Keep this workload short and biased toward the local Git operations Codex
# invokes frequently. The full Git test suite is too slow for each release
# target and would weight test-harness paths more heavily than status, diff,
# clone, fetch, and repository maintenance.

set -eu

git_bin="$PWD/bin-wrappers/git"
training_dir=$(mktemp -d "${TMPDIR:-/tmp}/codex-git-pgo.XXXXXX")
repo="$training_dir/repo"
clone="$training_dir/clone"

cleanup () {
rm -rf "$training_dir"
}
trap cleanup EXIT HUP INT TERM

mkdir -p "$training_dir/home"
export HOME="$training_dir/home"
export GIT_CONFIG_NOSYSTEM=1
export GIT_TERMINAL_PROMPT=0

"$git_bin" clone --quiet --no-local "$PWD" "$repo"
"$git_bin" -C "$repo" config user.name "Codex Git PGO"
"$git_bin" -C "$repo" config user.email "codex-git-pgo@openai.com"

i=0
while test "$i" -lt 256
do
dir="$repo/training/$((i % 16))"
mkdir -p "$dir"
printf '%s\n' "$i" >"$dir/file-$i"
i=$((i + 1))
done

"$git_bin" -C "$repo" status --porcelain=v2 --branch >/dev/null
"$git_bin" -C "$repo" status --porcelain=v2 --branch --untracked-files=all >/dev/null
"$git_bin" -C "$repo" ls-files --others --exclude-standard >/dev/null
"$git_bin" -C "$repo" add training
"$git_bin" -C "$repo" diff --cached --stat >/dev/null
"$git_bin" -C "$repo" commit --quiet -m "add training files"

printf 'changed\n' >>"$repo/training/0/file-0"
rm "$repo/training/1/file-1"
mkdir -p "$repo/untracked"
printf 'new\n' >"$repo/untracked/file"

"$git_bin" -C "$repo" status --porcelain=v2 --branch >/dev/null
"$git_bin" -C "$repo" diff --stat >/dev/null
"$git_bin" -C "$repo" diff --name-status >/dev/null
"$git_bin" -C "$repo" ls-files --stage >/dev/null
"$git_bin" -C "$repo" log --oneline --decorate -20 >/dev/null
"$git_bin" -C "$repo" rev-list --objects --all >/dev/null
"$git_bin" -C "$repo" for-each-ref --format='%(refname) %(objectname)' >/dev/null
"$git_bin" -C "$repo" repack -ad
"$git_bin" clone --quiet --no-local "$repo" "$clone"
"$git_bin" -C "$clone" status --porcelain=v2 --branch >/dev/null
"$git_bin" -C "$clone" fetch --quiet "$repo"
69 changes: 50 additions & 19 deletions .github/workflows/codex-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ jobs:
name: ${{ matrix.name }}
needs: version
runs-on: ${{ matrix.os }}
timeout-minutes: 30
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
Expand All @@ -117,6 +117,9 @@ jobs:
binary: /tmp/build/git/bin/git
file_pattern: Mach-O 64-bit executable arm64
has_gcm: false
lto: thin
profile_format: LLVM
llvm_profdata: xcrun llvm-profdata
max_tar_bytes: 67108864
- name: macOS x64
os: macos-15-intel
Expand All @@ -126,15 +129,21 @@ jobs:
binary: /tmp/build/git/bin/git
file_pattern: Mach-O 64-bit executable x86_64
has_gcm: false
lto: thin
profile_format: LLVM
llvm_profdata: xcrun llvm-profdata
max_tar_bytes: 67108864
# Keep arm64 builds native so release smoke tests can execute them.
- name: Linux arm64
os: ubuntu-22.04
os: ubuntu-22.04-arm
target_platform: ubuntu
asset_platform: ubuntu
arch: arm64
binary: /tmp/build/git/bin/git
file_pattern: ELF 64-bit.*ARM aarch64
has_gcm: false
lto: auto
profile_format: GCC
max_tar_bytes: 67108864
- name: Linux x64
os: ubuntu-22.04
Expand All @@ -144,6 +153,8 @@ jobs:
binary: /tmp/build/git/bin/git
file_pattern: ELF 64-bit.*x86-64
has_gcm: false
lto: auto
profile_format: GCC
max_tar_bytes: 67108864
- name: Windows arm64
os: windows-11-arm
Expand All @@ -153,6 +164,9 @@ jobs:
binary: /tmp/build/git/clangarm64/bin/git.exe
file_pattern: PE32\+.*ARM64
has_gcm: true
lto: thin
profile_format: LLVM
llvm_profdata: llvm-profdata
max_tar_bytes: 134217728
sdk_arch: aarch64
sdk_flavor: full
Expand All @@ -169,6 +183,8 @@ jobs:
binary: /tmp/build/git/mingw64/bin/git.exe
file_pattern: PE32\+.*x86-64
has_gcm: true
lto: auto
profile_format: GCC
max_tar_bytes: 134217728
sdk_arch: x86_64
sdk_flavor: full
Expand All @@ -184,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 All @@ -209,6 +225,11 @@ jobs:
-c 'user.email=41898282+github-actions[bot]@users.noreply.github.com' \
tag -a "$VERSION" -m "$VERSION"

- name: Install OpenAI build configuration
shell: bash
working-directory: dugite-native/git
run: cp config.mak.openai config.mak

# Match Dugite Native's compatibility choice for its macOS x64 build.
- name: Select Xcode 16.4
if: matrix.target_platform == 'macOS' && matrix.arch == 'x64'
Expand Down Expand Up @@ -243,19 +264,13 @@ jobs:
- name: Install Linux arm64 build dependencies
if: matrix.target_platform == 'ubuntu' && matrix.arch == 'arm64'
run: |
sudo sed -i "s/^deb/deb [arch=amd64,i386]/g" /etc/apt/sources.list
release="$(lsb_release -s -c)"
echo "deb [arch=arm64,armhf] http://azure.ports.ubuntu.com/ ${release} main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64,armhf] http://azure.ports.ubuntu.com/ ${release}-updates main universe multiverse restricted" | sudo tee -a /etc/apt/sources.list
sudo dpkg --add-architecture arm64
sudo apt-get update
sudo apt-get install -y \
binutils-aarch64-linux-gnu \
gcc-aarch64-linux-gnu \
libcurl4-gnutls-dev:arm64 \
libexpat1-dev:arm64 \
libssl-dev:arm64 \
zlib1g-dev:arm64
libcurl4-gnutls-dev \
libexpat1-dev \
libssl-dev \
zlib1g-dev

# Dugite Native currently pins MinGit 2.53. Keep its build script and
# dependency schema, but match the runtime to the Git series we compile.
Expand Down Expand Up @@ -303,13 +318,18 @@ jobs:
dependencies.json >"$updated"
mv "$updated" dependencies.json

# Dugite cross-compiles several targets. Keep Git's optional Rust
# library disabled until its Makefile can direct Cargo at those targets.
# Build an instrumented Git, run a representative local workload, then
# rebuild with its profile. Keep Git's optional Rust library disabled
# until its Makefile can direct Cargo at these targets.
- name: Build the Dugite Native distribution
shell: bash
working-directory: dugite-native
env:
NO_RUST: 1
OPENAI_LLVM_PROFDATA: ${{ matrix.llvm_profdata }}
OPENAI_LTO: ${{ matrix.lto }}
OPENAI_PROFILE: BUILD
OPENAI_PROFILE_FORMAT: ${{ matrix.profile_format }}
TARGET_PLATFORM: ${{ matrix.target_platform }}
TARGET_ARCH: ${{ matrix.arch }}
run: |
Expand All @@ -335,6 +355,9 @@ jobs:
working-directory: dugite-native/git
env:
MINGW_DIR: ${{ matrix.mingw_dir }}
OPENAI_LLVM_PROFDATA: ${{ matrix.llvm_profdata }}
OPENAI_LTO: ${{ matrix.lto }}
OPENAI_PROFILE_FORMAT: ${{ matrix.profile_format }}
run: |
set -euo pipefail

Expand All @@ -349,8 +372,8 @@ jobs:
SKIP_DASHED_BUILT_INS=YesPlease
)
jobs="${NUMBER_OF_PROCESSORS:-2}"
make -j"$jobs" "${make_args[@]}" all
make "${make_args[@]}" DESTDIR=/tmp/build/git strip install
make -j"$jobs" "${make_args[@]}" OPENAI_PROFILE=BUILD all
make "${make_args[@]}" OPENAI_PROFILE=USE DESTDIR=/tmp/build/git strip install

- name: Verify distribution layout and provenance
shell: bash
Expand All @@ -360,6 +383,8 @@ jobs:
GIT_BINARY: ${{ matrix.binary }}
FILE_PATTERN: ${{ matrix.file_pattern }}
HAS_GCM: ${{ matrix.has_gcm }}
LTO: ${{ matrix.lto }}
PROFILE_FORMAT: ${{ matrix.profile_format }}
run: |
set -euo pipefail
if test "$TARGET_PLATFORM" = win32
Expand Down Expand Up @@ -387,9 +412,15 @@ jobs:
file "$GIT_BINARY" | tee /tmp/git-file-type
grep -E "$FILE_PATTERN" /tmp/git-file-type
strings "$GIT_BINARY" | grep -F "$GITHUB_SHA"
grep -F -- "-flto=$LTO" dugite-native/git/GIT-CFLAGS
if test "$PROFILE_FORMAT" = LLVM
then
grep -F -- "-fprofile-instr-use=" dugite-native/git/GIT-CFLAGS
else
grep -F -- "-fprofile-use=" dugite-native/git/GIT-CFLAGS
fi

- name: Smoke-test the native distribution
if: matrix.arch == 'x64' || matrix.target_platform == 'win32'
shell: bash
env:
TARGET_PLATFORM: ${{ matrix.target_platform }}
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/codex.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Refresh codex

on:
workflow_dispatch:
pull_request:
branches:
- codex
- codex-unstable
types:
- opened
- reopened
- synchronize
- ready_for_review
merge_group:
types:
- checks_requested

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

jobs:
refresh:
if: github.event_name == 'workflow_dispatch'
uses: openai/git/.github/workflows/codex.yml@meta
admission:
name: Codex admission
if: >-
(github.event_name == 'pull_request' &&
github.event.pull_request.base.ref == 'codex') ||
(github.event_name == 'merge_group' &&
github.event.merge_group.base_ref == 'refs/heads/codex')
permissions:
contents: read
pull-requests: read
uses: openai/git/.github/workflows/codex-admission.yml@meta
unstable_admission:
name: Codex unstable admission
if: >-
(github.event_name == 'pull_request' &&
github.event.pull_request.base.ref == 'codex-unstable') ||
(github.event_name == 'merge_group' &&
github.event.merge_group.base_ref == 'refs/heads/codex-unstable')
permissions:
contents: read
pull-requests: read
uses: openai/git/.github/workflows/codex-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
11 changes: 11 additions & 0 deletions Documentation/config/core.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,17 @@ 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.

core.unsetenvvars::
Windows-only: comma-separated list of environment variables'
names that need to be unset before spawning any other process.
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