make checkpoint policy advisory · Entire

Make Checkpoint Policy Advisory

652c278→main·

Treat unsupported checkpoint write policies as upgrade nudges instead of blocking attach, summary, hook, and pre-push writes.

Use the configured checkpoint version when this CLI can write it, and fall back to the default version when it cannot.

Sessions

b60f4de0a520View transcript

Changes

11

254 unmodified lines  
254 unmodified lines

// Resolve agent and transcript path.
ag, transcriptPath, err := resolveAgentAndTranscript(logCtx, w, sessionID, agentName, existingState)

writeOpts := cpkg.WriteOptions{ CheckpointID: checkpointID, SessionID: sessionID, Strategy: strategy.StrategyNameManualCommit, Transcript: redactedTranscript, Prompts: attachPrompts(meta), CheckpointsCount: attachStepCount(meta.TurnCount), AuthorName: author.Name, AuthorEmail: author.Email, Agent: ag.Type(), Model: meta.Model, TokenUsage: tokenUsage, CheckpointID: checkpointID, SessionID: sessionID, Strategy: strategy.StrategyNameManualCommit, CheckpointVersion: checkpointVersion, Transcript: redactedTranscript, Prompts: attachPrompts(meta), CheckpointsCount: attachStepCount(meta.TurnCount), AuthorName: author.Name, AuthorEmail: author.Email, Agent: ag.Type(), Model: meta.Model, TokenUsage: tokenUsage, }

68 unmodified lines  

...


var out bytes.Buffer
err = runAttach(context.Background(), &out, sessionID, agent.AgentNameClaudeCode, attachOptions{Force: true})

if err == nil { t.Fatal("expected unsupported checkpoint policy error") }

if err != nil { t.Fatalf("runAttach failed: %v", err) }

if !strings.Contains(err.Error(), checkpoint_version "refs-v1") { t.Fatalf("error = %v, want checkpoint policy version", err) }


# Test Attach Rejects Unsupported Checkpoint Write Policy

...
if err := ensureCommittedCheckpointWritePolicy(ctx, repo); err != nil { return err } checkpointVersion := committedCheckpointVersion(ctx, repo)

/* additional code sections omitted for brevity */

# Test Generate Checkpoint Summary Rejects Unsupported Checkpoint Write Policy

...
require.ErrorContains(t, err, checkpoint_version "refs-v1") require.NoError(t, err)

v1After, refErr := fixture.repo.Reference(plumbing.NewBranchReferenceName(paths.MetadataBranchName), true) require.NoError(t, refErr) require.Equal(t, fixture.v1Hash, v1After.Hash(), "v1 metadata branch must advance after UpdateSummary") }


# Conclusion
- This advisory outlines changes to the checkpoint policy regarding unsupported writes.
- It emphasizes the need for upgrades in instances where the current configuration does not allow for specific actions.