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
4b4dc94
fsmonitor: require content checks for reported paths
ttaylorr-oai Jul 21, 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
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
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
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
eb042ff
fsmonitor: invalidate attributes for matched directory summaries
ttaylorr-oai Jul 24, 2026
7cef594
read-cache: reject out-of-bounds index extensions
ttaylorr-oai Jul 10, 2026
0200a18
cache-tree: avoid allocations and searches while reading
ttaylorr-oai Jul 21, 2026
6ebc45d
dir: reject oversized pattern files before allocation
ttaylorr-oai Jul 24, 2026
f47e1cf
read-cache: decode bounded TREE and UNTR extensions in parallel
ttaylorr-oai Jul 21, 2026
e4d4272
dir: compare all saved metadata for UNTR directories
ttaylorr-oai Jul 11, 2026
f7ecf2c
dir: consume preloaded UNTR directory stat results
ttaylorr-oai Jul 10, 2026
8bfd6c4
dir: snapshot UNTR directory validation inputs
ttaylorr-oai Jul 10, 2026
3f0ffb9
dir: validate captured UNTR directory stats
ttaylorr-oai Jul 10, 2026
4f2831b
dir: validate captured UNTR directory stats in parallel
ttaylorr-oai Jul 10, 2026
063f637
status: overlap UNTR validation with tracked-index refresh
ttaylorr-oai Jul 21, 2026
524d5af
status: gate automatic UNTR validation preloads
ttaylorr-oai Jul 26, 2026
cbc1127
path-namespace: compare complete filesystem object identities
ttaylorr-oai Jul 21, 2026
738d5bd
Merge standalone S01/P08 into S01
ttaylorr-oai Jul 21, 2026
a309898
dir: verify cached excludes during UNTR preload
ttaylorr-oai Jul 21, 2026
f3e5147
dir: rescan invalid collapsed UNTR witnesses
ttaylorr Jul 24, 2026
34f92c6
dir: skip recursively valid empty UNTR subtrees
ttaylorr Jul 24, 2026
6f8e7ac
Merge the S05 prerequisites
ttaylorr-oai Jul 29, 2026
1511394
fsmonitor: validate FSMN before publishing it
ttaylorr-oai Jul 11, 2026
4be316e
fsmonitor: add an untracked-cache token extension
ttaylorr-oai Jul 11, 2026
1ee806b
fsmonitor: bind untracked-cache state to its token
ttaylorr-oai Jul 11, 2026
60a469a
fsmonitor: validate builtin daemon responses before applying them
ttaylorr-oai Jul 10, 2026
1008133
fsmonitor: apply validated builtin path records directly
ttaylorr-oai Jul 24, 2026
4801779
fsmonitor: ignore empty hook path records
ttaylorr-oai Jul 24, 2026
67d6d0d
fsmonitor: centralize complete fsmonitor invalidation
ttaylorr-oai Jul 11, 2026
2c6e778
wt-status: separate untracked traversal from result collection
ttaylorr-oai Jul 11, 2026
db32b39
preload-index: queue bounded bulk directory scans
ttaylorr Jul 24, 2026
8ca749c
preload-index: classify sparse-aware bulk stat observations
ttaylorr Jul 24, 2026
08ac9de
status: close fsmonitor tokens around complete status scans
ttaylorr-oai Jul 29, 2026
998a3db
preload-index: bind APFS scans to a stable worktree root
ttaylorr-oai Jul 21, 2026
048667d
precompose: prepare Unicode configuration before parallel conversion
ttaylorr-oai Jul 21, 2026
9f51fe3
preload-index: validate packed APFS directory records
ttaylorr Jul 24, 2026
2f8304f
preload-index: walk APFS directories beneath a held root
ttaylorr Jul 24, 2026
5eb2344
preload-index: factor the ordinary preload eligibility predicate
ttaylorr-oai Jul 21, 2026
362d66e
preload-index: enable opt-in APFS bulk preloading
ttaylorr-oai Jul 28, 2026
5599fe6
t7529: cover APFS preload directory and root replacement
ttaylorr-oai Jul 28, 2026
ef77f38
Merge the S11 prerequisites
ttaylorr-oai Jul 24, 2026
2deb6f8
preload-index: retain proven deletions from complete bulk scans
ttaylorr-oai Jul 24, 2026
b525769
preload-index: classify definitive tracked-file size changes
ttaylorr-oai Jul 24, 2026
b1b3f8b
status: consume definitive bulk changes exactly once
ttaylorr-oai Jul 24, 2026
db53aed
read-cache: factor refreshed entry construction
ttaylorr-oai Jul 21, 2026
90a447e
Merge the S06 prerequisites
ttaylorr-oai Jul 11, 2026
3be9475
status: refresh verified writable bulk-preload entries
ttaylorr-oai Jul 21, 2026
b310040
status: pin semantic verification to the worktree root
ttaylorr-oai Jul 11, 2026
a70db77
status: resolve semantic proof paths through pinned parents
ttaylorr-oai Jul 11, 2026
a75bba2
path-namespace: check reopened component identity
ttaylorr-oai Jul 24, 2026
9171194
status: hash tracked files through anchored descriptors
ttaylorr-oai Jul 11, 2026
90f58b0
convert: support independent conversion attribute checks
ttaylorr-oai Jul 10, 2026
e8cd66f
status: classify candidates for semantic verification
ttaylorr-oai Jul 11, 2026
73e019d
status: assemble and test serial semantic proof candidates
ttaylorr-oai Jul 11, 2026
cde7364
status: apply complete semantic proofs atomically
ttaylorr-oai Jul 11, 2026
66381b7
status: verify semantic proof ranges in parallel
ttaylorr-oai Jul 11, 2026
ed0a20c
status: fingerprint configuration for semantic clean proofs
ttaylorr-oai Jul 11, 2026
aa9f9ec
status: write bounded attribute manifests
ttaylorr-oai Jul 11, 2026
b6ebff2
status: validate attribute manifest records
ttaylorr-oai Jul 11, 2026
959dea1
status: iterate changed attribute manifest entries
ttaylorr-oai Jul 11, 2026
88162a9
status: read attribute sources through pinned paths
ttaylorr-oai Jul 11, 2026
a2f12c6
status: build worktree attribute manifests
ttaylorr-oai Jul 11, 2026
91c2d8b
status: probe attribute sources in parallel
ttaylorr-oai Jul 11, 2026
07a6c0c
fsmonitor: add a bounded clean-proof record format
ttaylorr-oai Jul 10, 2026
0e8130b
status: retain validated worktree attribute manifests
ttaylorr-oai Jul 10, 2026
8c6648a
path: snapshot external source namespaces
ttaylorr-oai Jul 11, 2026
ea305b3
attr: fingerprint external sources in stable namespaces
ttaylorr-oai Jul 11, 2026
2599441
Merge the S08 prerequisites
ttaylorr-oai Jul 29, 2026
5098d46
status: bind semantic configuration to its index
ttaylorr-oai Jul 26, 2026
c5e4436
commit: stage semantic configuration before reading the index
ttaylorr-oai Jul 26, 2026
b915073
status: classify durable index source identities
ttaylorr-oai Jul 24, 2026
0d450fe
read-cache: bind null-checksum indexes to their source file
ttaylorr-oai Jul 11, 2026
1156608
read-cache: validate persisted fsmonitor semantic history
ttaylorr-oai Jul 24, 2026
934bc20
read-cache: write only token-closed fsmonitor history
ttaylorr-oai Jul 24, 2026
99f75c5
read-cache: preserve validated fsmonitor history across indexes
ttaylorr-oai Jul 11, 2026
55086f9
status: hold external attributes stable across refresh
ttaylorr-oai Jul 21, 2026
2a3368d
fsmonitor: seed missing-history baselines from legacy tokens
ttaylorr-oai Jul 24, 2026
b02327e
status: prepare logical-index history checkpoints
ttaylorr-oai Jul 29, 2026
b54256f
fsmonitor: rebuild sparse-index history without expanding the live index
ttaylorr-oai Jul 24, 2026
258c6cf
status: bind each closing token to its complete proof epoch
ttaylorr-oai Jul 21, 2026
f8cc6e2
fsmonitor: reopen semantic proofs after attribute events
ttaylorr-oai Jul 21, 2026
3322c59
status: adopt tracked history only after closing its proof
ttaylorr-oai Jul 21, 2026
506ff55
wt-status: close tracked proofs before scanning untracked paths
ttaylorr Jul 24, 2026
fbf5090
commit: close fsmonitor tokens across pre-commit hooks
ttaylorr-oai Jul 21, 2026
f958929
Merge the S13 prerequisites
ttaylorr-oai Jul 30, 2026
de1754f
exclude: prove the contents of observed ignore sources
ttaylorr-oai Jul 21, 2026
5e732c7
dir: capture ignore sources beneath anchored parents
ttaylorr-oai Jul 21, 2026
2b578b5
preload-index: stage proven untracked bulk results
ttaylorr-oai Jul 21, 2026
e605ac1
preload-index: collect visible paths during the APFS walk
ttaylorr-oai Jul 21, 2026
fa958f5
status: reuse complete APFS untracked preload results
ttaylorr-oai Jul 21, 2026
eafa468
preload-index: translate complete Linux statx observations
ttaylorr-oai Jul 21, 2026
eb2da05
preload-index: anchor Linux directory opens to the worktree
ttaylorr-oai Jul 21, 2026
c0472bc
preload-index: enumerate Linux directories without trusting d_type
ttaylorr-oai Jul 21, 2026
b9e9efc
preload-index: detect replaced Linux scan directories
ttaylorr-oai Jul 21, 2026
ce1a520
preload-index: validate Linux mount topology around bulk scans
ttaylorr-oai Jul 21, 2026
336f7a5
preload-index: enable the verified Linux bulk scan backend
ttaylorr-oai Jul 21, 2026
c32ae09
status: close bulk content proofs with the provider token
ttaylorr-oai Jul 29, 2026
2219086
exclude: compute stable source-proof digests
ttaylorr-oai Jul 24, 2026
9da17f6
status: add a bounded clean-status sidecar format
ttaylorr-oai Jul 21, 2026
1aa9dcf
status: install sidecars against a pinned index
ttaylorr-oai Jul 24, 2026
ccae48a
status: classify indexes that clean proofs may certify
ttaylorr-oai Jul 24, 2026
689033d
status: issue sidecars after a verified full scan
ttaylorr-oai Jul 28, 2026
095f4be
status: load bounded clean-status sidecars
ttaylorr-oai Jul 24, 2026
2dd8820
exclude: support nonblocking proof captures
ttaylorr-oai Jul 27, 2026
2c858d5
status: answer exact clean status before index deserialization
ttaylorr-oai Jul 27, 2026
2ccd509
Documentation: describe status clean-proof sidecars
ttaylorr-oai Jul 21, 2026
9e2ef35
Merge the status optimization topics
ttaylorr-oai Jul 29, 2026
e106175
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