# support unsetting checkpoint policy fields

`f4bced8` → [main](/content/gh/entireio/cli/commits/main/index.html)·

pfleidi·3w ago·8 files·+157 added/-28 removed

Add explicit unset flags for checkpoint_version and checkpoint_min_version.

Persist unset fields as omitted JSON and derive effective defaults with policy normalization where needed.

## Sessions

303f7958de64View transcript

Enforce Checkpoint Policies in CLICodex·GPT-5.5·5 steps

## Changes

8

- cmd/entire/cli

- Mcheckpoint_policy.go+25/-11

- Mcheckpoint_policy_test.go+26/-2

- checkpointpolicy

- Mpolicy.go+2/-2

- Mremote_test.go+2/-1

- Mstore.go+2/-3

- Mstore_test.go+41/-1

- Mupdate.go+29/-8

- Mupdate_test.go+30

```  
10 unmodified lines

```

type checkpointPolicyOptions struct {
	version    string
	minVersion string
	force      bool
	version         string
	minVersion      string
	unsetVersion    bool
	unsetMinVersion bool
	force           bool
}

func newCheckpointPolicyCmd() *cobra.Command {
	6 unmodified lines

checkpoint_version selects the checkpoint metadata format used for new writes.
	If no policy is configured, Entire uses the CLI default. If this CLI reads a
	configured checkpoint_version it cannot write, it warns and writes the default
	version instead.
	version instead. Unset checkpoint_version to inherit the CLI default.

checkpoint_min_version is an upgrade nudge. Clients that cannot read that
	version warn users to upgrade, but policy alone does not block checkpoint writes
	or app usage.
	Unset checkpoint_min_version to inherit the CLI default.
```

```  
	Hidden: true,
	Args:   cobra.NoArgs,
	RunE: func(cmd *cobra.Command, _ []string) error {
	3 unmodified lines

cmd.Flags().StringVar(&opts.version, "checkpoint-version", "", "Set the checkpoint version used for new writes")
		cmd.Flags().StringVar(&opts.minVersion, "checkpoint-min-version", "", "Set the checkpoint version used for upgrade warnings")
		cmd.Flags().BoolVar(&opts.unsetVersion, "unset-checkpoint-version", false, "Unset checkpoint_version so new writes use the CLI default")
		cmd.Flags().BoolVar(&opts.unsetMinVersion, "unset-checkpoint-min-version", false, "Unset checkpoint_min_version so upgrade warnings use the CLI default")
		cmd.Flags().BoolVar(&opts.force, "force", false, "Allow checkpoint policy version downgrades")
		return cmd
	}
}

var state checkpointpolicy.State
if hasCheckpointPolicyUpdate(opts) {
	state, err = checkpointpolicy.Update(ctx, repo, target, checkpointpolicy.UpdateOptions{
		CheckpointVersion:    opts.version,
		CheckpointMinVersion: opts.minVersion,
		Force:                opts.force,
		CheckpointVersion:    opts.version,
		CheckpointMinVersion: opts.minVersion,
		UnsetCheckpointVersion:    opts.unsetVersion,
		UnsetCheckpointMinVersion: opts.unsetMinVersion,
		Force:                     opts.force,
	})
	if err != nil {
		return checkpointPolicyError("update checkpoint policy", err)
	}
}

fmt.Fprintf(cmd.OutOrStdout(), "checkpoint_version: %s\n", state.Policy.CheckpointVersion)
fmt.Fprintf(cmd.OutOrStdout(), "checkpoint_min_version: %s\n", state.Policy.CheckpointMinVersion)
effectivePolicy := checkpointpolicy.Normalize(state.Policy)
fmt.Fprintf(cmd.OutOrStdout(), "checkpoint_version: %s\n", formatCheckpointPolicyValue(state.Policy.CheckpointVersion, effectivePolicy.CheckpointVersion))
fmt.Fprintf(cmd.OutOrStdout(), "checkpoint_min_version: %s\n", formatCheckpointPolicyValue(state.Policy.CheckpointMinVersion, effectivePolicy.CheckpointMinVersion))
fmt.Fprintf(cmd.OutOrStdout(), "source: %s\n", state.Source)
return nil
}

func hasCheckpointPolicyUpdate(opts checkpointPolicyOptions) bool {
	return opts.version != "" || opts.minVersion != ""
}

func formatCheckpointPolicyValue(configured, effective string) string {
	if configured == "" {
		return effective + " (default)"
	}
	return configured
}

func checkpointPolicyError(message string, err error) error {

```

Mcmd/entire/cli/checkpoint_policy.go+25/-11

```

```  
21 unmodified lines

```

```

```  
```

```

### \n}`
