support unsetting checkpoint policy fields · Entire
support unsetting checkpoint policy fields
f4bced8 → main·
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