correlate: member-aware static-event matching + GTD runtime-only → confirmed acceptance (#278 loop closed) - #53
Conversation
…ition fixtures Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MigRSeRnzZH6fo3TP9fRET
A subscription-leak finding facing a retention with identified static-event roots confirms only when its canonical event identity (event 'A.B.Holder.M') matches a root's (short holder, member); the matched root — not the array's first — is reported, plus structured root_holder/root_member. Type identity alone no longer transfers a root onto unrelated event findings; unparseable identity is conservative (static-only, retention may surface runtime-only). Non-event categories and identity-less retentions keep type-level fallback. Existing synthetic tests updated to carry consistent event identities. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MigRSeRnzZH6fo3TP9fRET
…losed One heap artifact (SerializerSim leaky hold, GTD 76 pinned by GBProperty.PropertyChanged) correlated against three Own.NET snapshots: pre-#278 -> runtime-only blind spot (zero false confirmed against GTD.cs despite its other OWN001s), exact #278 -> confirmed high at exactly GTD.cs:5192, current main identical. Evidence packet with SHAs, hashes, commands and excerpts in docs/evidence/gtd-runtime-transition.md; runtime-contract.md and collector-plan.md reconciled; new suite in CI. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MigRSeRnzZH6fo3TP9fRET
📝 WalkthroughWalkthroughThe correlator now performs member-aware matching for ChangesMember-aware correlation
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant StaticFinding
participant correlate
participant RuntimeDump
participant ConfirmedOutput
StaticFinding->>correlate: submit subscription event identity
correlate->>RuntimeDump: inspect retained static-event roots
RuntimeDump-->>correlate: return holder/member roots
correlate->>ConfirmedOutput: classify and report matching root
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Independent review verdict — APPROVED, no blocking findings. Verified on exact head 8825b38: member-aware matching applies only to subscription findings with identified static-event roots; unmatched or unparseable identities remain conservative; non-event and identity-less fallback is preserved; matched-root provenance is emitted; synthetic and real three-snapshot evidence closes the GTD runtime-only → confirmed transition at exactly GTD.cs:5192; scope is clean and CI is green. |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
docs/evidence/gtd-runtime-transition.md (1)
80-84: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueAdd language identifiers to fenced code blocks.
Both code blocks are missing language identifiers, which triggers markdown linting rules (MD040). Consider adding
textto these blocks.
docs/evidence/gtd-runtime-transition.md#L80-L84: Change```to```text.docs/evidence/gtd-runtime-transition.md#L88-L93: Change```to```text.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/evidence/gtd-runtime-transition.md` around lines 80 - 84, Add the text language identifier to both fenced code blocks in docs/evidence/gtd-runtime-transition.md: lines 80-84 and 88-93. Change each opening fence from ``` to ```text to satisfy markdown linting.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@docs/evidence/gtd-runtime-transition.md`:
- Around line 80-84: Add the text language identifier to both fenced code blocks
in docs/evidence/gtd-runtime-transition.md: lines 80-84 and 88-93. Change each
opening fence from ``` to ```text to satisfy markdown linting.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: f9385f05-5bf0-4ac8-8998-edf6e43eb08b
📒 Files selected for processing (11)
.github/workflows/ci.ymlAGENTS.mddocs/collector-plan.mddocs/evidence/gtd-runtime-transition.mddocs/runtime-contract.mdruntime/correlate.pyruntime/fixtures/gtd-transition-post.jsonruntime/fixtures/gtd-transition-pre.jsonruntime/fixtures/gtd-transition-runtime.jsonruntime/tests/test_member_aware.pyruntime/tests/test_runtime.py
Closes the collector-plan step-7 follow-up: type identity alone no longer transfers a runtime root onto unrelated event findings of the same class.
Contract (
runtime/correlate.py): asubscription-leakfinding facing a retention with identifiedstatic-eventroots confirms only when its canonical event identity (event ''A.B.Holder.Member'') equals a root''s(short(holder), member)key; the matched root is reported (message +root_holder/root_member). Unparseable identity is conservative (static-only, retention may surface runtime-only). Non-event categories and identity-less retentions keep the type-level fallback, byte-for-byte.RED:
runtime/tests/test_member_aware.py(10 cases: aliasing, holder-tail mismatch, namespace normalization, matched-root selection, fallback, conservatism, non-event invariance, synthetic GTD transition) + committed fixturesruntime/fixtures/gtd-transition-{pre,post,runtime}.json. Existing synthetic tests updated to carry consistent event identities.ACCEPTANCE (real STS, one fresh heap artifact × three Own.NET snapshots — the analyzer is the only variable):
366bbf9…GBProperty.PropertyChanged); 0 false confirmed against GTD.csa7d8499…GTD.cs:51922c30c56…KDT (
KDT.cs:60/61— the:88site under dsector line numbers) stays confirmed via the unchanged fallback. Full artifact hashes, commands and excerpts:docs/evidence/gtd-runtime-transition.md.Suites: 15/15 runtime, 10/10 member-aware (+ -O), 6/6 oracle, downstream report/dashboard suites green. Out of scope untouched: Own.NET, collector/classifier, schema version, dashboard/exec, gate policy.
🤖 Generated with Claude Code
https://claude.ai/code/session_01MigRSeRnzZH6fo3TP9fRET
Summary by CodeRabbit
Bug Fixes
Documentation
Tests