Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
33 changes: 29 additions & 4 deletions bin/check-no-pii-history.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,44 @@ trap cleanup EXIT

forbidden="HISTORY_PRIVATE_"'SENTINEL'

commit_fixture_tree() {
local target="$1" message="$2" tree parent commit ref
tree="$(git -C "$target" write-tree)"
parent="$(git -C "$target" rev-parse --verify HEAD 2>/dev/null || true)"
if [ -n "$parent" ]; then
commit="$(
printf '%s\n' "$message" |
GIT_AUTHOR_NAME="Fixture Author" GIT_AUTHOR_EMAIL="fixture@example.invalid" \
GIT_COMMITTER_NAME="Fixture Author" GIT_COMMITTER_EMAIL="fixture@example.invalid" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$target" commit-tree "$tree" -p "$parent"
)"
else
commit="$(
printf '%s\n' "$message" |
GIT_AUTHOR_NAME="Fixture Author" GIT_AUTHOR_EMAIL="fixture@example.invalid" \
GIT_COMMITTER_NAME="Fixture Author" GIT_COMMITTER_EMAIL="fixture@example.invalid" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$target" commit-tree "$tree"
)"
fi
ref="$(git -C "$target" symbolic-ref HEAD)"
git -C "$target" update-ref "$ref" "$commit"
}

make_fixture() {
local target="$1" content="$2"
mkdir -p "$target"
git -C "$target" init -q
git -C "$target" config user.name "Fixture Author"
git -C "$target" config user.email "fixture@example.invalid"
printf '%s\n' "portable fixture" >"$target/README.md"
printf '%s\n' "$content" >"$target/removed.txt"
git -C "$target" add README.md removed.txt
git -C "$target" commit -qm "seed"
# This is scanner input construction, not an agent-authored commit lifecycle. Plumbing keeps host commit
# hooks and their private provenance trailers outside the synthetic history under test.
commit_fixture_tree "$target" "seed"
rm -f -- "$target/removed.txt"
git -C "$target" add -u
git -C "$target" commit -qm "remove obsolete fixture file"
commit_fixture_tree "$target" "remove obsolete fixture file"
mv -- "$target/.git" "$target/_git"
}

Expand Down
19 changes: 15 additions & 4 deletions bin/check-vrs-scope-drift.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,21 @@ hydrate_absent() {
}

commit_mutation() {
local name="$1" message="$2"
git -C "$scratch/$name/repo" add -A
GIT_AUTHOR_DATE=2026-07-27T20:00:00Z GIT_COMMITTER_DATE=2026-07-27T20:00:00Z \
git -C "$scratch/$name/repo" commit -qm "$message"
local name="$1" message="$2" repo tree parent commit ref
repo="$scratch/$name/repo"
git -C "$repo" add -A
# These commits are deterministic judge inputs, not agent-authored product history.
tree="$(git -C "$repo" write-tree)"
parent="$(git -C "$repo" rev-parse HEAD)"
commit="$(
printf '%s\n' "$message" |
GIT_AUTHOR_NAME="Mutation Check" GIT_AUTHOR_EMAIL="mutation@example.invalid" \
GIT_COMMITTER_NAME="Mutation Check" GIT_COMMITTER_EMAIL="mutation@example.invalid" \
GIT_AUTHOR_DATE="2026-07-27T20:00:00Z" GIT_COMMITTER_DATE="2026-07-27T20:00:00Z" \
git -C "$repo" commit-tree "$tree" -p "$parent"
)"
ref="$(git -C "$repo" symbolic-ref HEAD)"
git -C "$repo" update-ref "$ref" "$commit"
}

expect_fail() {
Expand Down
19 changes: 14 additions & 5 deletions bin/check-vrs-variations.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,21 @@ hydrate() {
}

commit_change() {
local name="$1" message="$2"
local name="$1" message="$2" repo tree parent commit ref
repo="$scratch/$name/repo"
git -C "$scratch/$name/repo" add -A
GIT_AUTHOR_DATE=2026-07-28T17:00:00Z GIT_COMMITTER_DATE=2026-07-28T17:00:00Z \
git -C "$scratch/$name/repo" \
-c user.name="Mutation Check" -c user.email="mutation@example.invalid" \
commit -qm "$message"
# These commits are deterministic judge inputs, not agent-authored product history.
tree="$(git -C "$repo" write-tree)"
parent="$(git -C "$repo" rev-parse HEAD)"
commit="$(
printf '%s\n' "$message" |
GIT_AUTHOR_NAME="Mutation Check" GIT_AUTHOR_EMAIL="mutation@example.invalid" \
GIT_COMMITTER_NAME="Mutation Check" GIT_COMMITTER_EMAIL="mutation@example.invalid" \
GIT_AUTHOR_DATE="2026-07-28T17:00:00Z" GIT_COMMITTER_DATE="2026-07-28T17:00:00Z" \
git -C "$repo" commit-tree "$tree" -p "$parent"
)"
ref="$(git -C "$repo" symbolic-ref HEAD)"
git -C "$repo" update-ref "$ref" "$commit"
}

run_judge() {
Expand Down
14 changes: 10 additions & 4 deletions cells/hook-integrity/fixture/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ catalog="${CATALOG:?CATALOG must be set}/net"
for workspace in "$catalog/workspace" "$catalog/codex-workspace"; do
git -C "$workspace" init -q -b main
git -C "$workspace" add README.md
git -C "$workspace" \
-c user.name=eval \
-c user.email=eval@local \
commit -q -m "seed hook materialization workspace"
# Seed history is fixture data; plumbing keeps agent commit hooks out of immutable setup.
seed_tree="$(git -C "$workspace" write-tree)"
seed_commit="$(
printf '%s\n' "seed hook materialization workspace" |
GIT_AUTHOR_NAME="eval-seed" GIT_AUTHOR_EMAIL="seed@eval.local" \
GIT_COMMITTER_NAME="eval-seed" GIT_COMMITTER_EMAIL="seed@eval.local" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$workspace" commit-tree "$seed_tree"
)"
git -C "$workspace" update-ref refs/heads/main "$seed_commit"

test -z "$(git -C "$workspace" status --porcelain)"
printf 'seeded clean workspace: %s\n' "$workspace"
Expand Down
12 changes: 10 additions & 2 deletions cells/render-target-safety/fixture/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@ net="${CATALOG:?CATALOG must be set}/net"
for workspace in "$net/good-workspace" "$net/bad-workspace"; do
git -C "$workspace" init -q -b main
git -C "$workspace" add README.md
git -C "$workspace" -c user.name=eval -c user.email=eval@local \
commit -q -m "seed render target"
# Seed history is fixture data; plumbing keeps agent commit hooks out of immutable setup.
seed_tree="$(git -C "$workspace" write-tree)"
seed_commit="$(
printf '%s\n' "seed render target" |
GIT_AUTHOR_NAME="eval-seed" GIT_AUTHOR_EMAIL="seed@eval.local" \
GIT_COMMITTER_NAME="eval-seed" GIT_COMMITTER_EMAIL="seed@eval.local" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$workspace" commit-tree "$seed_tree"
)"
git -C "$workspace" update-ref refs/heads/main "$seed_commit"
test -z "$(git -C "$workspace" status --porcelain)"
done
11 changes: 10 additions & 1 deletion cells/signal-rename-codex/fixture/materialize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,16 @@ GI
echo "== git init seed + bare origin =="
git -C "$SEED" init -q -b main
git -C "$SEED" add -A
git -C "$SEED" -c user.name="eval-seed" -c user.email="seed@local" commit -q -m "seed: synthetic signal workspace (base + relay + hub + config)"
# Seed history is fixture data; plumbing keeps agent commit hooks out of immutable setup.
seed_tree="$(git -C "$SEED" write-tree)"
seed_commit="$(
printf '%s\n' "seed: synthetic signal workspace (base + relay + hub + config)" |
GIT_AUTHOR_NAME="eval-seed" GIT_AUTHOR_EMAIL="seed@local" \
GIT_COMMITTER_NAME="eval-seed" GIT_COMMITTER_EMAIL="seed@local" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$SEED" commit-tree "$seed_tree"
)"
git -C "$SEED" update-ref refs/heads/main "$seed_commit"
git clone -q --bare "$SEED" "$SB/origin.git"

echo "== clone one full workspace per agent (distinct authors) + drop its persona =="
Expand Down
1 change: 0 additions & 1 deletion cells/signal-rename-codex/judges/isolation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ while read -r sha; do
*sig-relay@*) bad=$(echo "$files" | grep -vE '^(signal-relay|beacon-relay)/' || true) ;;
*sig-hub@*) bad=$(echo "$files" | grep -vE '^(signal-hub|beacon-hub)/' || true) ;;
*sig-sup@*) bad=$(echo "$files" | grep -vE '^(config/|package\.json|README\.md|\.gitignore)' || true) ;;
*seed@local*) bad="" ;;
*) echo " FAIL: commit $sha by UNEXPECTED author $ae (not a pinned lane owner)"; lane_ok=0; bad="" ;;
esac
if [ -n "$bad" ]; then echo " FAIL: ${ae%%@*} changed out-of-lane files in $sha: $(echo "$bad" | tr '\n' ' ')"; lane_ok=0; fi
Expand Down
11 changes: 10 additions & 1 deletion cells/signal-rename/fixture/materialize.sh
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,16 @@ GI
echo "== git init seed + bare origin =="
git -C "$SEED" init -q -b main
git -C "$SEED" add -A
git -C "$SEED" -c user.name="eval-seed" -c user.email="seed@local" commit -q -m "seed: synthetic signal workspace (base + relay + hub + config)"
# Seed history is fixture data; plumbing keeps agent commit hooks out of immutable setup.
seed_tree="$(git -C "$SEED" write-tree)"
seed_commit="$(
printf '%s\n' "seed: synthetic signal workspace (base + relay + hub + config)" |
GIT_AUTHOR_NAME="eval-seed" GIT_AUTHOR_EMAIL="seed@local" \
GIT_COMMITTER_NAME="eval-seed" GIT_COMMITTER_EMAIL="seed@local" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$SEED" commit-tree "$seed_tree"
)"
git -C "$SEED" update-ref refs/heads/main "$seed_commit"
git clone -q --bare "$SEED" "$SB/origin.git"

echo "== clone one full workspace per agent (distinct authors) + drop its persona =="
Expand Down
1 change: 0 additions & 1 deletion cells/signal-rename/judges/isolation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ while read -r sha; do
*sig-relay@*) bad=$(echo "$files" | grep -vE '^(signal-relay|beacon-relay)/' || true) ;;
*sig-hub@*) bad=$(echo "$files" | grep -vE '^(signal-hub|beacon-hub)/' || true) ;;
*sig-sup@*) bad=$(echo "$files" | grep -vE '^(config/|package\.json|README\.md|\.gitignore)' || true) ;;
*seed@local*) bad="" ;;
*) echo " FAIL: commit $sha by UNEXPECTED author $ae (not a pinned lane owner)"; lane_ok=0; bad="" ;;
esac
if [ -n "$bad" ]; then echo " FAIL: ${ae%%@*} changed out-of-lane files in $sha: $(echo "$bad" | tr '\n' ' ')"; lane_ok=0; fi
Expand Down
23 changes: 18 additions & 5 deletions cells/weird-git-setup/fixture/setup-megarepo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ set -euo pipefail
SB="${CATALOG:?CATALOG must be set — st2 eval provides it to run steps}"
cd "$SB"
SEED="$SB/.seed"
WORKTREE_ACTOR_NAME="Eval Worktree Actor"
WORKTREE_ACTOR_EMAIL="worktree-actor@eval.invalid"

echo "== seed clampkit (a tiny Node lib with a PLANTED above-range bug + a RED test) =="
mkdir -p "$SEED/src" "$SEED/test"
Expand Down Expand Up @@ -47,7 +49,16 @@ MD
echo "== git init seed -> bare canonical.git (the shared object store + refs) =="
git -C "$SEED" init -q -b main
git -C "$SEED" add -A
git -C "$SEED" -c user.name="eval-seed" -c user.email="seed@eval.local" commit -q -m "clampkit: initial (has a planted above-range bug)"
# Seed history is fixture data; plumbing keeps agent commit hooks out of immutable setup.
seed_tree="$(git -C "$SEED" write-tree)"
seed_commit="$(
printf '%s\n' "clampkit: initial (has a planted above-range bug)" |
GIT_AUTHOR_NAME="eval-seed" GIT_AUTHOR_EMAIL="seed@eval.local" \
GIT_COMMITTER_NAME="eval-seed" GIT_COMMITTER_EMAIL="seed@eval.local" \
GIT_AUTHOR_DATE="2026-07-30T00:00:00Z" GIT_COMMITTER_DATE="2026-07-30T00:00:00Z" \
git -C "$SEED" commit-tree "$seed_tree"
)"
git -C "$SEED" update-ref refs/heads/main "$seed_commit"
git clone -q --bare "$SEED" "$SB/canonical.git"

echo "== add TWO linked worktrees off the bare canonical (the megarepo shape) =="
Expand All @@ -61,10 +72,12 @@ git -C "$SB/canonical.git" config extensions.worktreeConfig true
# refuse commit ("must be run in a work tree"). Override core.bare=false per-worktree so the checkouts work.
git -C "$SB/wt/feature" config --worktree core.bare false
git -C "$SB/wt/main" config --worktree core.bare false
git -C "$SB/wt/feature" config --worktree user.name "wt-feature"
git -C "$SB/wt/feature" config --worktree user.email "wt-feature@eval.local"
git -C "$SB/wt/main" config --worktree user.name "wt-main"
git -C "$SB/wt/main" config --worktree user.email "wt-main@eval.local"
# This fixture owns the declared actor policy for ordinary agent-authored product commits. It is intentionally
# distinct from the deterministic plumbing identity used above to construct immutable seed history.
git -C "$SB/wt/feature" config --worktree user.name "$WORKTREE_ACTOR_NAME"
git -C "$SB/wt/feature" config --worktree user.email "$WORKTREE_ACTOR_EMAIL"
git -C "$SB/wt/main" config --worktree user.name "$WORKTREE_ACTOR_NAME"
git -C "$SB/wt/main" config --worktree user.email "$WORKTREE_ACTOR_EMAIL"

echo "== drop the worker persona into wt/feature (git-excluded so it never shows in the agent's status) =="
cp "$SB/persona/CLAUDE.md" "$SB/persona/PERSONA.md" "$SB/wt/feature/"
Expand Down
21 changes: 14 additions & 7 deletions cells/weird-git-setup/judges/fix-on-feature.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
#!/usr/bin/env bash
# THE DISCRIMINATOR: the fix is committed ON `feature` (ahead of the seed) AND authored by the worktree's pinned
# author (wt-feature@) — proving the agent resolved the worktree layout and committed HERE, not nowhere useful.
# THE DISCRIMINATOR: the fix is committed ON `feature` (ahead of the seed) AND its author matches the identity
# pinned in that worktree — proving the agent resolved the worktree layout and committed HERE, not nowhere useful.
set -uo pipefail
SB="${CATALOG:?CATALOG not set}"; WT="$SB/wt/feature"; BARE="$SB/canonical.git"
SEED="$(git -C "$BARE" rev-list --max-parents=0 main 2>/dev/null | tail -1)"
ahead="$(git -C "$WT" rev-list --count "$SEED"..HEAD 2>/dev/null || echo 0)"
[ "${ahead:-0}" -ge 1 ] || { echo "FAIL: no commit on 'feature' beyond the seed — nothing landed on this branch"; exit 1; }
branch="$(git -C "$WT" branch --show-current 2>/dev/null)"
[ "$branch" = "feature" ] || { echo "FAIL: fix landed on '$branch', expected 'feature'"; exit 1; }
expected_name="$(git -C "$WT" config --worktree --get user.name 2>/dev/null)"
expected_email="$(git -C "$WT" config --worktree --get user.email 2>/dev/null)"
an="$(git -C "$WT" show -s --format='%an' HEAD 2>/dev/null)"
ae="$(git -C "$WT" show -s --format='%ae' HEAD 2>/dev/null)"
case "$ae" in
wt-feature@*) echo "PASS: fix committed on 'feature' ($ahead beyond seed), authored by the worktree's pinned author ($ae)"; exit 0 ;;
*seed@*) echo "FAIL: feature tip is still the seed commit (no agent work landed on this branch)"; exit 1 ;;
*) echo "FAIL: feature tip authored by '$ae' (expected wt-feature@…) — wrong/absent author"; exit 1 ;;
esac
if [ -n "$expected_name" ] && [ -n "$expected_email" ] &&
[ "$an" = "$expected_name" ] && [ "$ae" = "$expected_email" ]; then
echo "PASS: fix committed on 'feature' ($ahead beyond seed), authored by its pinned worktree identity ($an <$ae>)"
exit 0
fi
echo "FAIL: feature tip author '$an <$ae>' does not match its pinned worktree identity '$expected_name <$expected_email>'"
exit 1