# test(e2e): rely on the real pre-push hook for remote clone tests (G1)

`9454abf`·

Soph·1w ago·2 files·+7 added/-3 removed

The remote clone tests pushed checkpoints explicitly via PushCheckpointRefs right after the user push, which would mask a broken pre-push hook. Replace those calls with AssertCheckpointsOnRemote so a plain `git push` must sync checkpoints through the installed hook end to end (A5/G1 in spirit).

No prompt text changed, so the vogon canary parser is unaffected. Verified green under both E2E_CHECKPOINT_STORE values.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>  
Claude-Session: https://claude.ai/code/session_012yi3hHGAGepwfrfjPETjGq

## Sessions

cfbc41e5de4bView transcript

[?\ Comprehensive Checkpoint Testing CoverageCodex·GPT-5.5·2 steps](/content/gh/entireio/cli/session/019f22a2-95f4-7d71-8140-4d86b0d40aa5#timeline-cfbc41e5de4b/index.html)

## Changes

2

- e2e/tests

- Mexplain_test.go+3/-1

- Mresume_remote_test.go+4/-2

```
65 unmodified lines

66
67
68
69
70
71
70
72
73
74
75

65 unmodified lines

testutil.WaitForCheckpoint(t, s, 30*time.Second)

checkpointID := testutil.AssertHasCheckpointTrailer(t, s.Dir, "HEAD")
		// Plain push runs the installed pre-push hook, which syncs checkpoints —
		// no explicit PushCheckpointRefs. This exercises the real hook end to end.
		s.Git(t, "push", "-u", "origin", "feature")
		testutil.PushCheckpointRefs(t, s.Dir)
		testutil.AssertCheckpointsOnRemote(t, s, bareDir)

cloneDir := t.TempDir()
		if resolved, symErr := filepath.EvalSymlinks(cloneDir); symErr == nil {
```

Me2e/tests/explain_test.go+3/-1

```
43 unmodified lines

44
45
46
47
47
48
49
50
49
51
52
53
54

43 unmodified lines

checkpointID := testutil.AssertHasCheckpointTrailer(t, s.Dir, "HEAD")
		sessionMeta := testutil.WaitForSessionMetadata(t, s.Dir, checkpointID, 0, 30*time.Second)

// Push feature branch and checkpoint refs to the bare remote.
		// Push the feature branch. The installed pre-push hook syncs checkpoints as
		// part of the plain push — no explicit PushCheckpointRefs — so this covers
		// the real hook end to end (A5/G1).
		s.Git(t, "push", "-u", "origin", "feature")
		testutil.PushCheckpointRefs(t, s.Dir)
		testutil.AssertCheckpointsOnRemote(t, s, bareDir)

// Clone the repo to a new directory (simulating a teammate).
		cloneDir := t.TempDir()
```

Me2e/tests/resume_remote_test.go+4/-2
