Skip to content

fix: resolve structural mutation ownership from scopes - #172

Merged
alxxjohn merged 19 commits into
mainfrom
fix/structural-origin-classification
Aug 30, 2026
Merged

fix: resolve structural mutation ownership from scopes#172
alxxjohn merged 19 commits into
mainfrom
fix/structural-origin-classification

Conversation

@alxxjohn

Copy link
Copy Markdown
Contributor

Summary

  • replace guessed Go and C++ mutation ownership with declaration-, lexical-scope-, and bounded alias-based evidence
  • keep unresolved symbols as non-baselinable diagnostics with per-language counts instead of promoting them to global/shared findings
  • make structural fingerprints independent of diagnostic prose and evidence metadata while retaining pre-v2 baseline lookup compatibility
  • preserve genuine receiver, argument, global, escaped, persistence, network, event, and shared-state findings
  • add source-shaped regressions for crumb helpers, Overture resolvers, DuckDB hierarchy code, C++ builders, and DbRow::integer

Precision coverage

  • Go imports, package globals, shadowing, nested closures, value/reference-backed fields, conversions, branch/loop state, and multi-hop aliases
  • C++ locals, auto, constexpr, constructors, member initializers, references, pointers, moves, templates, lambdas, namespace-qualified owners, and compact assignments
  • TypeScript nested-capture compatibility uses lexical visibility without restoring unknown-as-global guessing
  • command/effect classification uses terminal-method and grammatical command evidence rather than repository allowlists

Verification

  • go test ./... — 27/27 packages passed
  • go vet ./... — passed
  • golangci-lint v2.12.2 — 0 issues
  • build and diff checks — passed
  • independent task reviews and final scoped review — no remaining Critical or Important findings

crumb-app acceptance note

The read-only repaired scan reports 302 unsuppressed findings: 121 Go and 181 C++. It also reports 5,401 suppressed findings and unresolved diagnostics for both languages. Three genuine caller-owned Go findings were restored during final review.

The requested full-scan threshold of at most 19 cannot be evaluated as written against the supplied crumb-app revision/profile. A pre-repair control on the same checkout has 193 non-structural unsuppressed findings before structural findings are counted; 19 is the smell.message-chain count, not the full scan total. Baseline control reports 887 stale entries, while detector precision repairs necessarily change active/stale matching; the final read-only audit reports 5,267 active and 1,293 stale entries. No crumb files, suppressions, or baseline entries were modified.

@alxxjohn
alxxjohn merged commit cdac600 into main Aug 30, 2026
16 checks passed
@alxxjohn
alxxjohn deleted the fix/structural-origin-classification branch August 30, 2026 04:50
alxxjohn added a commit that referenced this pull request Aug 30, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.8.3](v1.8.2...v1.8.3)
(2026-08-30)


### Bug Fixes

* avoid conversion shape shadow
([4d23d58](4d23d58))
* bound TypeScript captures to lexical scope
([cb4f157](cb4f157))
* close C++ scope and namespace gaps
([abdb752](abdb752))
* close structural acceptance parser gaps
([202c57f](202c57f))
* close structural evidence compatibility gaps
([7a5210a](7a5210a))
* close structural origin review findings
([9cfe717](9cfe717))
* harden C++ structural ownership resolution
([5fb8c7d](5fb8c7d))
* harden Go structural ownership state
([2f2c286](2f2c286))
* merge Go field semantics and fallthrough state
([ea8fa30](ea8fa30))
* preserve Go conversion ownership
([cbaa5e9](cbaa5e9))
* refine structural effect grammar
([7c759d2](7c759d2))
* resolve C++ structural mutation ownership
([84f1265](84f1265))
* resolve Go structural mutation ownership
([085af1a](085af1a))
* resolve indexed Go conversions
([394689b](394689b))
* resolve structural mutation ownership from scopes
([#172](#172))
([cdac600](cdac600))
* stabilize structural finding identity
([14fe1d4](14fe1d4))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
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.

1 participant