emit policy-blocked telemetry from git hooks · Entire

emit policy-blocked telemetry from git hooks

6866100→main·

pfleidi·2w ago·2 files·+40 added/-0 removed

Git hooks that skip Entire checkpoint work because the checkpoint policy is unsupported or unreadable now report a checkpoint_policy_blocked event, gated on the existing opt-in telemetry setting.

Sessions

bc757a66bf7dView transcript

[?
Add Checkpoint Policy Blocked TelemetryClaude Code·1 step](/content/gh/entireio/cli/session/59674bd8-9edc-47fc-adae-9e93955ab9af#timeline-bc757a66bf7d/index.html)

Changes

2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

package cli

import (
    "context"

"github.com/entireio/cli/cmd/entire/cli/telemetry"
    "github.com/entireio/cli/cmd/entire/cli/versioninfo"
)

// emitCheckpointPolicyBlocked reports a checkpoint_policy_blocked telemetry
// event when telemetry is opted in (settings.Telemetry == true). Best-effort
// and non-blocking; failures to load settings simply suppress the event.
func emitCheckpointPolicyBlocked(ctx context.Context, event telemetry.CheckpointPolicyBlockedEvent) {
    s, err := LoadEntireSettings(ctx)
    if err != nil || s.Telemetry == nil || !*s.Telemetry {
        return
    }
    telemetry.TrackCheckpointPolicyBlocked(event, versioninfo.Version)
}

Acmd/entire/cli/checkpoint_policy_telemetry.go+19

13 unmodified lines

14
15
16
17
18
19
20
55 unmodified lines

76
77
78
79
80
81
82
83
84
85
86
87
5 unmodified lines

93
94
95
96
97
98
99
100
101
102
103
104
11 unmodified lines

116
117
118
119
120
121
122
123
124
125
126
127
128
129

13 unmodified lines

"github.com/entireio/cli/cmd/entire/cli/logging"
    "github.com/entireio/cli/cmd/entire/cli/settings"
    "github.com/entireio/cli/cmd/entire/cli/strategy"
    "github.com/entireio/cli/cmd/entire/cli/telemetry"
    "github.com/entireio/cli/cmd/entire/cli/versioncheck"
    "github.com/entireio/cli/cmd/entire/cli/versioninfo"
    "github.com/entireio/cli/perf"
55 unmodified lines

if interactive.CanPromptInteractively() {
        fmt.Fprintf(os.Stderr, "[entire] Could not read checkpoint policy; skipping Entire checkpoint work: %v\n", err)
    }
    emitCheckpointPolicyBlocked(g.ctx, telemetry.CheckpointPolicyBlockedEvent{
        Hook:     g.hookName,
        HookType: telemetry.PolicyBlockedHookTypeGit,
        Reason:   telemetry.PolicyBlockedReasonUnreadable,
        Outcome:  telemetry.PolicyBlockedOutcomeSkipped,
    })
    return true
}

def repo.Close()
5 unmodified lines

11 unmodified lines

versioncheck.UpdateCommandForCurrentBinary(versioninfo.Version),
    ))
    }
    emitCheckpointPolicyBlocked(g.ctx, telemetry.CheckpointPolicyBlockedEvent{
        Hook:                 g.hookName,
        HookType:             telemetry.PolicyBlockedHookTypeGit,
        Reason:               telemetry.PolicyBlockedReasonUnsupported,
        Outcome:              telemetry.PolicyBlockedOutcomeSkipped,
        CheckpointVersion:    policy.CheckpointVersion,
        CheckpointMinVersion: policy.CheckpointMinVersion,
    })
    return true
}

Mcmd/entire/cli/hooks_git_cmd.go+21