Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
204620e
Harden merge reliability gates and semantic coverage
adamziel May 14, 2026
d9d86c6
Deepen WordPress semantic merge E2E
adamziel May 14, 2026
1e49f06
Harden filesystem type replacement merges
adamziel May 14, 2026
2dfefbb
Cover generated upload files in semantic merge E2E
adamziel May 14, 2026
7d13503
Add plugin graph semantic merge fixture
adamziel May 14, 2026
99352d3
Add deterministic plugin graph merge coverage
adamziel May 14, 2026
7bed4bb
Add plugin validator conflict audit foundation
adamziel May 14, 2026
c6e8ab7
Cover plugin audit CLI filters
adamziel May 14, 2026
294d60e
Expose plugin validator conflict recording
adamziel May 14, 2026
76ffbf4
Support plugin validator findings files
adamziel May 14, 2026
678842a
Cover WordPress semantic object merges
adamziel May 14, 2026
e1cc65e
Add explicit plugin validator runner
adamziel May 14, 2026
a7753a5
Hold out-of-band explicit IDs for review
adamziel May 14, 2026
3653dc9
Cover plain integer primary key plugin graph collisions
adamziel May 14, 2026
ee740aa
Surface stale target drift in merge audit
adamziel May 15, 2026
2c1035c
Harden COW branch birth invariants
adamziel May 15, 2026
dd78b58
Cover WordPress lifecycle merges
adamziel May 15, 2026
9ec166b
Restore reset metadata on finalize failures
adamziel May 15, 2026
db1c27e
Require branch birth metadata before merge
adamziel May 15, 2026
baa59e1
Carry stale reviews into revalidation queue
adamziel May 15, 2026
cb4e31a
Preserve crash recovery marker after DB commit
adamziel May 15, 2026
73f7f9b
Add crash recovery restore command
adamziel May 15, 2026
b1228a7
Recover filesystem crash transactions
adamziel May 15, 2026
80b5405
Block merges with pending crash recovery
adamziel May 15, 2026
ea9988d
Expose merge crash recovery in branch CLI
adamziel May 15, 2026
f355577
Expose stale review revalidation in branch CLI
adamziel May 15, 2026
7567c80
Expose plugin validator commands in branch CLI
adamziel May 15, 2026
7eae752
Alias stale review revalidation from merge audit
adamziel May 15, 2026
c5aafe3
Harden git-created branch list rollback
adamziel May 15, 2026
8082f81
Finalize git-created branch metadata before publish
adamziel May 15, 2026
e7d8d67
Cover git-created branch list crash state
adamziel May 15, 2026
ee58604
Require birth metadata before branch reuse
adamziel May 15, 2026
8b2ece3
Align WP branch UI name validation
adamziel May 15, 2026
c7eabc1
Pass file roots to plugin validators
adamziel May 15, 2026
cda7155
Run inline plugin validators during merge
adamziel May 15, 2026
27d4afc
Expose inline plugin validators in branch merge
adamziel May 15, 2026
16db64a
Discover plugin validators during branch merge
adamziel May 15, 2026
ae9e75c
Cover discovered plugin graph validator failures
adamziel May 15, 2026
90d5861
Cover target-conflicting plugin graph validators
adamziel May 15, 2026
828d23d
Cover WordPress media merge validators
adamziel May 15, 2026
08b5ae3
Cover missing original media files
adamziel May 15, 2026
bfab281
Cover WordPress edit delete conflicts
adamziel May 15, 2026
a0bd44a
Cover WordPress reusable block reference drift
adamziel May 15, 2026
2724b36
Cover WordPress media metadata drift
adamziel May 15, 2026
2a1c666
Cover WordPress menu reference drift
adamziel May 15, 2026
cad2825
Cover WordPress option reference drift
adamziel May 15, 2026
420729f
Cover WordPress featured image drift
adamziel May 15, 2026
2889a8d
Cover WordPress image block drift
adamziel May 15, 2026
e47c05a
Cover WordPress term relationship drift
adamziel May 15, 2026
0404f47
Cover WordPress synced pattern drift
adamziel May 15, 2026
5aae683
Cover plugin explicit ID band violations
adamziel May 15, 2026
fef94f2
Cover plugin CPT references in semantic E2E
adamziel May 15, 2026
84d919d
Cover page-linked menus in semantic E2E
adamziel May 15, 2026
1170648
Document merge repair policy
adamziel May 15, 2026
596576c
Cover unsafe filesystem symlink policies
adamziel May 15, 2026
69f0730
Guard stale conflict resolution after revalidation
adamziel May 15, 2026
007eb6d
Guard stale filesystem resolution after revalidation
adamziel May 15, 2026
d234c0d
Guard stale row resolution after revalidation
adamziel May 15, 2026
7a7bf39
Cover unreadable media metadata validator conflicts
adamziel May 15, 2026
d7bba0e
Cover unsafe media metadata paths
adamziel May 15, 2026
b0d320a
Cover unsafe primary media paths
adamziel May 15, 2026
c2c86c2
Cover empty media metadata paths
adamziel May 15, 2026
0c30f79
Cover NUL-corrupted media metadata
adamziel May 15, 2026
557fda1
Hold postmeta behind explicit post IDs
adamziel May 15, 2026
5d94ead
Hold term relationships behind explicit post IDs
adamziel May 15, 2026
0381d18
Hold child posts behind explicit parent IDs
adamziel May 15, 2026
567b40f
Hold taxonomy rows behind explicit term IDs
adamziel May 15, 2026
e489ac2
Hold hierarchical taxonomy behind explicit terms
adamziel May 15, 2026
557ad53
Hold comments behind explicit post IDs
adamziel May 15, 2026
2c96402
Hold postmeta references behind explicit post IDs
adamziel May 15, 2026
13a8818
Make menu item reference guards type-aware
adamziel May 15, 2026
0708322
Cover post-type menu item held IDs
adamziel May 15, 2026
3de1bb5
Hold threaded comments behind explicit post IDs
adamziel May 15, 2026
81f0b1a
Hold term metadata behind explicit term IDs
adamziel May 15, 2026
0f38732
Clarify plugin stale audit boundary
adamziel May 15, 2026
4339005
Clarify schema stale audit boundary
adamziel May 15, 2026
83c95c2
Harden static PHP release prerequisites
adamziel May 15, 2026
1e1eb65
Pin static PHP builder input
adamziel May 15, 2026
3b5b3dc
Reconcile Git branch list after publication crash
adamziel May 15, 2026
e0dd6f8
Finalize Git branch metadata before publish
adamziel May 15, 2026
084c59c
Clean stale Git update backups
adamziel May 15, 2026
8883f26
Clear unpublished Git branch metadata on retry
adamziel May 15, 2026
3f3546b
Recover orphan Git branch storage
adamziel May 15, 2026
5f4f4a6
Clean stale Git delete backups
adamziel May 15, 2026
88174b3
Cover Git prune crash recovery
adamziel May 15, 2026
6bcb6cb
Keep crash recovery retryable after restore
adamziel May 15, 2026
5e73a60
Cover filesystem recovery retry cleanup
adamziel May 15, 2026
8f62978
Cover Git-created public link crash recovery
adamziel May 15, 2026
0f4fe25
Hold user references behind explicit user IDs
adamziel May 15, 2026
93625e9
Cover duplicate media upload ownership
adamziel May 15, 2026
324ca20
Cover stale nav menu option references
adamziel May 15, 2026
3819c32
Cover stale nav menu widget options
adamziel May 15, 2026
68e3cf6
Cover stale option attachment references
adamziel May 15, 2026
7c32a79
Cover stale core option references
adamziel May 15, 2026
0dcf5e7
Cover stale widget option references
adamziel May 15, 2026
f534832
Cover stale sidebar widget references
adamziel May 15, 2026
ad10e89
Cover serialized plugin graph validators
adamziel May 15, 2026
48a6a8e
Cover serialized plugin file references
adamziel May 15, 2026
3e6f03b
Cover WordPress comment semantic bundles
adamziel May 15, 2026
9a41929
Cover WordPress user semantic bundles
adamziel May 15, 2026
1f24b07
Cover WordPress users in semantic E2E
adamziel May 15, 2026
825fc78
Cover WordPress branch UI actions
adamziel May 15, 2026
9e04b40
Cover WordPress branch UI in E2E
adamziel May 15, 2026
be534d8
Cover pre-metadata merge crash recovery
adamziel May 15, 2026
b180731
Cover pre-target merge crash recovery
adamziel May 15, 2026
e8d582a
Hold paired deletes for out-of-band ID rewrites
adamziel May 15, 2026
9f88aba
Cover plugin out-of-band ID rewrites
adamziel May 15, 2026
c72fbc0
Recover DB-file crashes before file publish
adamziel May 15, 2026
91b8cfb
Keep whole-branch file crash recovery
adamziel May 15, 2026
e4c39b3
Revalidate changed plugin validator evidence
adamziel May 15, 2026
e67d32e
Cover plugin revalidation idempotence
adamziel May 15, 2026
0969a7d
Require pkg-config for dist builds
adamziel May 15, 2026
2e62d2f
Harden arm64 macOS dist builds
adamziel May 15, 2026
e512c52
Test dist preflight guards
adamziel May 15, 2026
412123d
Run release preflight in CI
adamziel May 15, 2026
fbe4de9
Clarify remaining crash reliability work
adamziel May 15, 2026
a1710ff
Let release preflight run without PHP headers
adamziel May 15, 2026
22c9748
Cover release preflight without PHP headers
adamziel May 15, 2026
e553562
Classify stale review revalidations
adamziel May 15, 2026
abe80df
Cover filesystem revalidation classifiers
adamziel May 15, 2026
0d04a74
Quiet unreadable manifest scans
adamziel May 15, 2026
1bcd240
Classify keyless stale replacements
adamziel May 15, 2026
d9ef341
Cover missing stale revalidations
adamziel May 15, 2026
909a578
Restore missing row conflicts after revalidation
adamziel May 15, 2026
eff7266
Classify source-drifted reviews
adamziel May 15, 2026
b95a1ce
Classify semantic row replacements
adamziel May 15, 2026
4be2205
Cover more semantic row fingerprints
adamziel May 15, 2026
63c4331
Document semantic row fingerprint coverage
adamziel May 15, 2026
537ee92
Cover WordPress row semantic fingerprints
adamziel May 15, 2026
f32ed89
Classify source semantic replacements
adamziel May 15, 2026
4ea3c53
Cover source row semantic fingerprints
adamziel May 15, 2026
3234c30
Block merges after interrupted branch reset
adamziel May 15, 2026
e946006
Clean stale branch birth artifacts before create
adamziel May 15, 2026
57b838a
Clear stale reset markers before branch create
adamziel May 15, 2026
18115fd
Cover public merge crash recovery
adamziel May 15, 2026
5af9986
Cover public filesystem crash recovery
adamziel May 15, 2026
07eab37
Cover public metadata crash recovery
adamziel May 15, 2026
2505002
Cover public before-file crash recovery
adamziel May 15, 2026
6da4c72
Cover public crash recovery cleanup retry
adamziel May 15, 2026
f8bbe39
Allow retrying interrupted branch reset
adamziel May 15, 2026
5dd7f5b
Cover public branch create crash retry
adamziel May 15, 2026
c38f523
Cover public branch reset crash retry
adamziel May 15, 2026
13c96f7
Cover reusable block refs in semantic E2E
adamziel May 15, 2026
47414e4
Document merge reliability objective audit
adamziel May 15, 2026
cfb1f2a
Fix aarch64 macOS dist build wrapper
adamziel May 15, 2026
7da00e1
Clarify remaining crash harness scope
adamziel May 15, 2026
51ffd33
Link plugin revalidation replacement conflicts
adamziel May 15, 2026
ccf5daa
Hold option refs behind explicit IDs
adamziel May 15, 2026
5f109e8
Cover explicit ID option references
adamziel May 15, 2026
852e439
Hold unsafe WordPress reference updates
adamziel May 15, 2026
b82422c
Cover unsafe WordPress reference row updates
adamziel May 15, 2026
e995c5c
Cover unsafe WordPress user reference updates
adamziel May 15, 2026
63eba1f
Hold unsafe WordPress term reference updates
adamziel May 15, 2026
74198e9
Cover unsafe WordPress commentmeta updates
adamziel May 15, 2026
48e3fdc
Cover unsafe WordPress post parent updates
adamziel May 15, 2026
ad2f4c4
Cover unsafe WordPress postmeta owner updates
adamziel May 15, 2026
8086a2c
Cover unsafe WordPress comment parent updates
adamziel May 15, 2026
87f969c
Hold unsafe WordPress term relationship owner rewrites
adamziel May 15, 2026
17702c6
Cover unsafe WordPress term parent updates
adamziel May 15, 2026
fafa1cb
Cover unsafe WordPress site icon updates
adamziel May 15, 2026
9c10478
Cover unsafe WordPress sticky post updates
adamziel May 15, 2026
ca0870e
Hold unsafe WordPress block content references
adamziel May 15, 2026
8101dbf
Cover unsafe WordPress media block references
adamziel May 15, 2026
f97497f
Cover unsafe WordPress core media block references
adamziel May 15, 2026
9a6a9e4
Parse nested WordPress block references
adamziel May 15, 2026
dabed39
Hold unsafe WordPress avatar block references
adamziel May 15, 2026
a7a658f
Hold unsafe WordPress navigation block references
adamziel May 15, 2026
d6fd2ed
Hold unsafe WordPress query block references
adamziel May 15, 2026
92ddc5e
Hold unsafe WordPress navigation ref blocks
adamziel May 15, 2026
da5db4d
Cover unsafe WordPress query tag references
adamziel May 15, 2026
9aa011e
Cover reviewed filesystem file-to-directory replacements
adamziel May 15, 2026
cff26b3
Cover safe symlinks in reviewed directory replacements
adamziel May 15, 2026
379cf68
Cover unsafe symlinks in reviewed directory replacements
adamziel May 15, 2026
7c5dbd7
Cover reviewed binary file conflict resolution
adamziel May 15, 2026
dd14268
Cover WordPress media generated path drift
adamziel May 15, 2026
de6416f
Cover empty WordPress media generated filenames
adamziel May 15, 2026
d2e59a0
Cover duplicate uploads inside attachment metadata
adamziel May 15, 2026
857882b
Cover WordPress media generated dimension drift
adamziel May 15, 2026
f4e2814
Cover WordPress media original dimension drift
adamziel May 15, 2026
4df3d43
Cover identical plugin validator reruns
adamziel May 15, 2026
d664986
Cover plugin audit revalidation CLI path
adamziel May 15, 2026
0f09eb7
Document merge reliability followups
adamziel May 15, 2026
07a16f4
Cover source-added dependent view ordering
adamziel May 15, 2026
572aecf
Cover explicit plugin import validator conflicts
adamziel May 15, 2026
fa70ab7
Cover smart HTTP Git push crash recovery
adamziel May 15, 2026
eb86fa6
Reject contradictory plugin validator output
adamziel May 15, 2026
a37f87d
Document plugin validator contract evidence
adamziel May 15, 2026
0d841b6
Harden branch UI and validator runner tests
adamziel May 15, 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
11 changes: 9 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential clang curl git pkg-config unzip \
automake build-essential clang curl git pkg-config unzip \
musl-tools php-cli composer re2c bison nodejs

- uses: dtolnay/rust-toolchain@stable
Expand All @@ -45,6 +45,9 @@ jobs:
- name: Rust unit tests (dev experiments)
run: FORKPRESS_RUNTIME_BUNDLE=/dev/null cargo test -p forkpress-cli --features dev-experiments --bin forkpress-dev

- name: Release preflight checks
run: make test-release

- name: Build production dist bundle
run: scripts/build-dist.sh
env:
Expand Down Expand Up @@ -99,9 +102,13 @@ jobs:
- name: Rust unit tests (dev experiments)
run: FORKPRESS_RUNTIME_BUNDLE=/dev/null cargo test --target ${{ matrix.target }} -p forkpress-cli --features dev-experiments --bin forkpress-dev

- name: Release preflight checks
run: make test-release

- name: Install runtime build tools
run: |
brew install composer gpatch
brew update
brew install composer gpatch automake re2c bison pkg-config
brew install php || true

- name: Build production dist bundle
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ on:
- "scripts/cow/**"
- "scripts/git/**"
- "scripts/shared/**"
- "tests/release/**"
- "installer/windows/**"
- "wp-plugin/**"
- "vendor/**"
Expand Down Expand Up @@ -50,10 +51,15 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Release preflight checks
if: matrix.os != 'windows'
run: make test-release

- name: Install toolchain (mac)
if: matrix.os == 'darwin'
run: |
brew install composer gpatch
brew update
brew install composer gpatch automake re2c bison pkg-config
# php-cli from brew drives static-php-cli
brew install php || true

Expand All @@ -62,7 +68,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential clang curl git pkg-config unzip \
automake build-essential clang curl git pkg-config unzip \
musl-tools php-cli composer re2c bison

- name: Install toolchain (windows)
Expand Down
25 changes: 18 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ PHP_DEV_DIR ?= $(firstword $(wildcard /nix/store/*-php-*-dev))
SQLITE_INC ?= $(firstword $(wildcard /nix/store/*-sqlite-*-dev/include))
SQLITE_LIB ?= $(firstword $(filter-out /nix/store/*-sqlite-*-dev/lib,$(wildcard /nix/store/*-sqlite-*/lib)))

BRANCHFS_EXT_DIR := experiments/branchfs/php-ext
BRANCHFS_EXT_SO := $(BRANCHFS_EXT_DIR)/branchfs.so
BRANCHFS_TEST_DIR := experiments/branchfs/tests
COW_TEST_DIR := tests/cow
RELEASE_TEST_DIR := tests/release
BRANCHFS_HEADER_GOALS := all init-db test test-compat test-branchfs test-all $(BRANCHFS_EXT_SO)
NEEDS_BRANCHFS_HEADERS := $(filter $(BRANCHFS_HEADER_GOALS),$(MAKECMDGOALS))
ifeq ($(strip $(MAKECMDGOALS)),)
NEEDS_BRANCHFS_HEADERS := all
endif

PHP_INCLUDE_DIR ?= $(if $(PHP_CONFIG),$(shell $(PHP_CONFIG) --include-dir 2>/dev/null))
PHP_EXTRA_INCS :=

Expand All @@ -25,7 +36,7 @@ PHP_EXTRA_INCS += -I$(PHP_DEV_DIR)/include/php \
-I$(PHP_DEV_DIR)/include/php/Zend \
-I$(PHP_DEV_DIR)/include/php/ext \
-I$(PHP_DEV_DIR)/include/php/ext/date/lib
else
else ifneq ($(strip $(NEEDS_BRANCHFS_HEADERS)),)
$(error Could not determine PHP headers. Install php-config or set PHP_DEV_DIR)
endif

Expand All @@ -47,10 +58,6 @@ CC ?= gcc
CFLAGS := -fPIC -O2 -Wall -DCOMPILE_DL_BRANCHFS -DHAVE_CONFIG_H=0 $(SQLITE_CFLAGS)
INCLUDES := $(PHP_EXTRA_INCS)
LDFLAGS := $(SQLITE_LIBS)
BRANCHFS_EXT_DIR := experiments/branchfs/php-ext
BRANCHFS_EXT_SO := $(BRANCHFS_EXT_DIR)/branchfs.so
BRANCHFS_TEST_DIR := experiments/branchfs/tests
COW_TEST_DIR := tests/cow
RUSTUP ?= $(shell command -v rustup 2>/dev/null)
UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)
Expand All @@ -68,7 +75,7 @@ else ifeq ($(UNAME_S)-$(UNAME_M),Linux-aarch64)
FORKPRESS_TARGET ?= aarch64-unknown-linux-musl
endif

.PHONY: all clean test test-compat test-branchfs test-cow init-db test-all forkpress forkpress-dev dist dist-dev
.PHONY: all clean test test-compat test-branchfs test-cow test-release init-db test-all forkpress forkpress-dev dist dist-dev

all: $(BRANCHFS_EXT_SO)

Expand Down Expand Up @@ -100,10 +107,14 @@ test-branchfs: $(BRANCHFS_EXT_SO)
test-cow:
php $(COW_TEST_DIR)/git_server.php
php $(COW_TEST_DIR)/merge.php
php $(COW_TEST_DIR)/branch_ui.php
php $(COW_TEST_DIR)/router_paths.php
php $(COW_TEST_DIR)/router_lock.php

test-all: test-branchfs test-cow
test-release:
bash $(RELEASE_TEST_DIR)/build-dist-preflight.sh

test-all: test-branchfs test-cow test-release

clean:
rm -f $(BRANCHFS_EXT_SO) /tmp/branchfs_test*.db /tmp/branchfs_wp*.db
Expand Down
Loading
Loading