Skip to content

Fix #288: [milestone Milestone 12] internal/symbolic/cache — Decision cache for Z3 queries: LRU cache keyed by ... - #293

Merged
telleroutlook merged 1 commit into
mainfrom
claude/issue-288
Aug 1, 2026
Merged

Fix #288: [milestone Milestone 12] internal/symbolic/cache — Decision cache for Z3 queries: LRU cache keyed by ...#293
telleroutlook merged 1 commit into
mainfrom
claude/issue-288

Conversation

@telleroutlook

Copy link
Copy Markdown
Contributor

Fixes #288

Generated by claude-bot-go worker.

…on cache for Z3 queries: LRU cache keyed by ...
@telleroutlook

Copy link
Copy Markdown
Contributor Author

Summary

Cache hits can return incorrect solver timing metadata, masking whether solving occurred.

Severity

medium

Blocking findings

  1. internal/z3/z3.go:60 On a cache hit, solutionFromDecision returns a Solution with SolverMs set to zero, so callers receive misleading solver timing metadata instead of the elapsed solver time expected from SolveConstraintsCtx.

Verdict

❌ Rejected

Merge risk

medium

Audit

  • model: opus
  • effort: high
  • tokens: input=0, output=0
{
  "approved": false,
  "severity": "medium",
  "summary": "Cache hits can return incorrect solver timing metadata, masking whether solving occurred.",
  "findings": [
    {
      "file": "internal/z3/z3.go",
      "line": 60,
      "issue": "On a cache hit, solutionFromDecision returns a Solution with SolverMs set to zero, so callers receive misleading solver timing metadata instead of the elapsed solver time expected from SolveConstraintsCtx.",
      "kind": "blocker"
    }
  ],
  "merge_risk": "medium",
  "Model": "opus",
  "model": "codex",
  "effort": "high",
  "tokens": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "same_verdict_count": 1
}

@telleroutlook

Copy link
Copy Markdown
Contributor Author

Summary

The PR appears safe to merge, with one minor cache-isolation concern.

Severity

low

Blocking findings

  1. internal/symbolic/cache/cache.go:161 cloneDecision copies the Model map only shallowly, so nested maps or slices stored as values can still be mutated through a retrieved decision and alter cached state.

Verdict

✅ Approved

Merge risk

low

Audit

  • model: opus
  • effort: high
  • tokens: input=0, output=0
{
  "approved": true,
  "severity": "low",
  "summary": "The PR appears safe to merge, with one minor cache-isolation concern.",
  "findings": [
    {
      "file": "internal/symbolic/cache/cache.go",
      "line": 161,
      "issue": "cloneDecision copies the Model map only shallowly, so nested maps or slices stored as values can still be mutated through a retrieved decision and alter cached state.",
      "kind": "suggestion"
    }
  ],
  "merge_risk": "low",
  "Model": "opus",
  "model": "codex",
  "effort": "high",
  "tokens": {
    "input_tokens": 0,
    "output_tokens": 0
  },
  "same_verdict_count": 1
}

@telleroutlook
telleroutlook merged commit 0facccc into main Aug 1, 2026
1 check passed
@telleroutlook
telleroutlook deleted the claude/issue-288 branch August 1, 2026 08:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[milestone Milestone 12] internal/symbolic/cache — Decision cache for Z3 queries: LRU cache keyed by ...

1 participant