@@ -119,13 +119,13 @@ func (s *PolicyAdminService) Create(ctx context.Context, p *policy.Policy) (*pol
119119 return nil , fmt .Errorf ("save policy: %w" , err )
120120 }
121121
122- // Persist to state.json.
122+ // Persist to state.json (best-effort: policy is already in memory store).
123+ // If persistence fails the policy works for the current session but won't survive a restart.
123124 if err := s .persistState (ctx ); err != nil {
124- s .logger .Error ("failed to persist state after create" , "policy_id" , p .ID , "error" , err )
125- return nil , fmt .Errorf ("persist state: %w" , err )
125+ s .logger .Warn ("policy will not survive restart: persist failed" , "policy_id" , p .ID , "error" , err )
126126 }
127127
128- // Trigger hot-reload of CEL rules.
128+ // ALWAYS trigger hot-reload so the CEL engine compiles the new rules.
129129 if err := s .policyService .Reload (ctx ); err != nil {
130130 s .logger .Error ("failed to reload policies after create" , "policy_id" , p .ID , "error" , err )
131131 return nil , fmt .Errorf ("reload policies: %w" , err )
@@ -183,13 +183,12 @@ func (s *PolicyAdminService) Update(ctx context.Context, id string, p *policy.Po
183183 return nil , fmt .Errorf ("save policy: %w" , err )
184184 }
185185
186- // Persist to state.json.
186+ // Persist to state.json (best-effort) .
187187 if err := s .persistState (ctx ); err != nil {
188- s .logger .Error ("failed to persist state after update" , "policy_id" , id , "error" , err )
189- return nil , fmt .Errorf ("persist state: %w" , err )
188+ s .logger .Warn ("policy update will not survive restart: persist failed" , "policy_id" , id , "error" , err )
190189 }
191190
192- // Trigger hot-reload.
191+ // ALWAYS trigger hot-reload.
193192 if err := s .policyService .Reload (ctx ); err != nil {
194193 s .logger .Error ("failed to reload policies after update" , "policy_id" , id , "error" , err )
195194 return nil , fmt .Errorf ("reload policies: %w" , err )
@@ -226,13 +225,12 @@ func (s *PolicyAdminService) Delete(ctx context.Context, id string) error {
226225 return fmt .Errorf ("delete policy: %w" , err )
227226 }
228227
229- // Persist to state.json.
228+ // Persist to state.json (best-effort) .
230229 if err := s .persistState (ctx ); err != nil {
231- s .logger .Error ("failed to persist state after delete" , "policy_id" , id , "error" , err )
232- return fmt .Errorf ("persist state: %w" , err )
230+ s .logger .Warn ("policy deletion will not survive restart: persist failed" , "policy_id" , id , "error" , err )
233231 }
234232
235- // Trigger hot-reload.
233+ // ALWAYS trigger hot-reload.
236234 if err := s .policyService .Reload (ctx ); err != nil {
237235 s .logger .Error ("failed to reload policies after delete" , "policy_id" , id , "error" , err )
238236 return fmt .Errorf ("reload policies: %w" , err )
@@ -273,13 +271,12 @@ func (s *PolicyAdminService) DeleteRule(ctx context.Context, policyID, ruleID st
273271 return fmt .Errorf ("delete rule: %w" , err )
274272 }
275273
276- // Persist to state.json.
274+ // Persist to state.json (best-effort) .
277275 if err := s .persistState (ctx ); err != nil {
278- s .logger .Error ("failed to persist state after delete rule" , "policy_id" , policyID , "rule_id" , ruleID , "error" , err )
279- return fmt .Errorf ("persist state: %w" , err )
276+ s .logger .Warn ("rule deletion will not survive restart: persist failed" , "policy_id" , policyID , "rule_id" , ruleID , "error" , err )
280277 }
281278
282- // Trigger hot-reload.
279+ // ALWAYS trigger hot-reload.
283280 if err := s .policyService .Reload (ctx ); err != nil {
284281 s .logger .Error ("failed to reload policies after delete rule" , "policy_id" , policyID , "rule_id" , ruleID , "error" , err )
285282 return fmt .Errorf ("reload policies: %w" , err )
0 commit comments