docs: add # P-016 — Deep C# fact extraction: CFG + flow lowering #86
ci.yml
on: push
lint (ruff + mypy --strict)
11s
extended codegen fuzz
34s
golden C# compiles & runs (.NET)
24s
C# leak extractor (Roslyn) -> OwnIR -> core
28s
own-check repo scan (github + msbuild) + composite action
37s
Matrix: tests
Annotations
18 errors and 14 warnings
|
OWN001:
frontend/roslyn/samples/TimerViewModel.cs#L15
[OWN001] timer '_timer.Tick' (handler 'OnTick') is started but never stopped or detached — the running timer keeps 'TimerViewModel' alive (leak) [resource: timer]
|
|
OWN001:
frontend/roslyn/samples/PooledBufferSample.cs#L12
[OWN001] pooled buffer 'leaky' is rented but never returned to the pool (leak) [resource: pooled buffer]
|
|
OWN001:
frontend/roslyn/samples/MessengerViewModel.cs#L12
[OWN001] the result of 'messenger.Subscribe' is ignored — the IDisposable subscription is never disposed, leaking 'InboxViewModel' (leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/LocalDisposableSample.cs#L12
[OWN001] local IDisposable 'leaky' (type 'MemoryStream') is created but never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
[OWN001] IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak) [resource: disposable field]
|
|
OWN001:
frontend/roslyn/samples/CustomerViewModel.cs#L10
[OWN001] event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed — the source keeps 'CustomerViewModel' alive (leak) [resource: subscription token]
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/TimerViewModel.cs#L15
timer '_timer.Tick' (handler 'OnTick') is started but never stopped or detached — the running timer keeps 'TimerViewModel' alive (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/PooledBufferSample.cs#L12
pooled buffer 'leaky' is rented but never returned to the pool (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/MessengerViewModel.cs#L12
the result of 'messenger.Subscribe' is ignored — the IDisposable subscription is never disposed, leaking 'InboxViewModel' (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/LocalDisposableSample.cs#L12
local IDisposable 'leaky' (type 'MemoryStream') is created but never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/CustomerViewModel.cs#L10
event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed — the source keeps 'CustomerViewModel' alive (leak)
|
|
OWN001:
frontend/roslyn/samples/TimerViewModel.cs#L15
[OWN001] timer '_timer.Tick' (handler 'OnTick') is started but never stopped or detached — the running timer keeps 'TimerViewModel' alive (leak) [resource: timer]
|
|
OWN001:
frontend/roslyn/samples/PooledBufferSample.cs#L12
[OWN001] pooled buffer 'leaky' is rented but never returned to the pool (leak) [resource: pooled buffer]
|
|
OWN001:
frontend/roslyn/samples/MessengerViewModel.cs#L12
[OWN001] the result of 'messenger.Subscribe' is ignored — the IDisposable subscription is never disposed, leaking 'InboxViewModel' (leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/LocalDisposableSample.cs#L12
[OWN001] local IDisposable 'leaky' (type 'MemoryStream') is created but never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
[OWN001] IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak) [resource: disposable field]
|
|
OWN001:
frontend/roslyn/samples/CustomerViewModel.cs#L10
[OWN001] event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed — the source keeps 'CustomerViewModel' alive (leak) [resource: subscription token]
|
|
tests (py3.13)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
tests (py3.11)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
tests (py3.12)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
lint (ruff + mypy --strict)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
golden C# compiles & runs (.NET)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
C# leak extractor (Roslyn) -> OwnIR -> core
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
extended codegen fuzz
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
own-check repo scan (github + msbuild) + composite action
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. Actions will be forced to run with Node.js 24 by default starting June 16th, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/TimerViewModel.cs#L15
timer '_timer.Tick' (handler 'OnTick') is started but never stopped or detached — the running timer keeps 'TimerViewModel' alive (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/PooledBufferSample.cs#L12
pooled buffer 'leaky' is rented but never returned to the pool (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/MessengerViewModel.cs#L12
the result of 'messenger.Subscribe' is ignored — the IDisposable subscription is never disposed, leaking 'InboxViewModel' (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/LocalDisposableSample.cs#L12
local IDisposable 'leaky' (type 'MemoryStream') is created but never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/CustomerViewModel.cs#L10
event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed — the source keeps 'CustomerViewModel' alive (leak)
|