You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
chore: re-check the 1.0 gates against main and list what blocks them #351
The gate report is in the comments (2026-11-03, against 03c3c43): four gates pass, gate 2 fails on wording only, and the follow-up is #357. Once #357 rewords the gate, this issue's acceptance criteria are met.
Phase order is a release plan, not a rule against picking up independent work early. Comment on this issue before you start so two people don't build the same thing.
I’ll inspect the release-gate notes, API reference, deprecation tests, and linked issue decisions first; then I’ll run the exact gate commands and assemble the report with their output summaries.
Search for ## \[1\.0\.0\] - TBD|Notes|gate|Gate
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\docs\reference\index.md"
}
Read , lines 78 to 210
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\docs\reference\index.md",
"view_range": [
78,
210
]
}
Read , lines 430 to 510
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_public_api_contract.py",
"view_range": [
430,
510
]
}
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\philanthropy\preprocessing\init.py"
}
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\philanthropy\init.py"
}
Search for def test_stability_tier|_TIER_HEADINGS|tier table|mid-deprecation|__version__...
Search for 0\.7\.0|__version__|py\.typed|wheel
The checkout is exactly the current origin/main commit. Issue #110 is still open; its latest comment proposes documenting the limitation now and deferring per-gift keying, but does not record a settled decision. I’m now checking the gates as executable checks, including the version/tag and wheel metadata conditions.
Ran terminal command: git tag --list v0.7.0; git diff --stat v0.7.0..origin/main -- tests/test_public_api_contract.py; git diff --unified=3 v0.7.0..origin/main -- tests/test_public_api_contract.py
Discovering tests...
Tool execution failed: No VS Code tests matched the requested files. The request has not been validated.
Configuring a Python Environment
Completed with input: {
"resourcePath": "C:\Users\Jahnavi H J\PhilanthroPy",
"pythonPath": "C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe"
}
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_deprecations.py -q
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import importlib.metadata as m, philanthropy; installed=m.version('philanthropy'); print(f'version={philanthropy.version}; metadata={installed}'); assert philanthropy.version == installed"; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $out = Join-Path $env:TEMP 'philanthropy-1-0-gate-wheel'; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m build --wheel --no-isolation --outdir $out; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $wheel = Get-ChildItem $out -Filter '*.whl' | Select-Object -First 1; if (-not $wheel) { Write-Error 'No wheel was produced'; exit 1 }; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import sys,zipfile; p=sys.argv[1]; z=zipfile.ZipFile(p); names=z.namelist(); found=any(n.endswith('philanthropy/py.typed') for n in names); print('wheel='+p); print('philanthropy/py.typed='+str(found)); assert found" $wheel.FullName; exit $LASTEXITCODE
Tool execution failed with exit code 1
The API contract suite passes, but the history comparison finds three new exemptions since v0.7.0, so that compound gate is not satisfied. The only live package deprecation is SolicitationWindowTransformer, which the index assigns Tier 2; I’m running the tier-table-only selector once for a distinct gate result and confirming the build left the checkout clean.
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q -k 'reference_index_declares_all_three_tiers or stability_tier_table_covers_every_public_symbol or tier_table_names_no_symbol_that_is_no_longer_public'
Ran terminal command: git status --short --branch; git rev-parse --short origin/main; git rev-parse --short HEAD
5 Gates Execution Results
Audited origin/main at 03c3c43 (same commit as the checkout).
2. Public API contract green; no exemption added since 0.7.0
FAIL
& 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q Output: 116 passed, 11 skipped, 7 warnings in 2.30s — the test is green. However, comparison with v0.7.0 found three added exemptions: GiftIntervalCalibrator, EncounterTransformer, and MatchingGiftFeaturizer. The “no exemption added” condition therefore fails.
3. No deprecated_alias in philanthropy/
PASS
Command: $matches = rg -n 'deprecated_alias' philanthropy; if ($LASTEXITCODE -eq 1) { 'PASS: no deprecated_alias occurrences in philanthropy/'; exit 0 } elseif ($LASTEXITCODE -eq 0) { $matches; exit 1 } else { exit $LASTEXITCODE } Output: PASS: no deprecated_alias occurrences in philanthropy/
4. Version metadata matches; wheel contains py.typed
PASS
Version command output: __version__=0.9.0; metadata=0.9.0 Built with & 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pip wheel --no-deps --no-build-isolation --wheel-dir $out . Output: wheel philanthropy-0.9.0-py3-none-any.whl built; inspection reported philanthropy/py.typed=True. The first build attempt found missing build tooling; after installing setuptools>=77 in the existing venv, the wheel check passed.
5. Every public symbol has a tier; no Tier 1 symbol is mid-deprecation
PASS
& 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q -k 'reference_index_declares_all_three_tiers or stability_tier_table_covers_every_public_symbol or tier_table_names_no_symbol_that_is_no_longer_public' Output: 12 passed, 115 deselected, 2 warnings in 0.39s. The separate deprecation audit found no Tier 1 symbol emitting a deprecation warning.
philanthropy.preprocessing.SolicitationWindowTransformer warns on attribute access; it was introduced as deprecated in 0.7.0, is scheduled for removal in 1.0.0, and recommends DischargeToSolicitationWindowTransformer. Its Tier 2 status means it is not a Tier 1 deprecation blocker.
The public API test run also reported two asyncio deprecation warnings from the nbmake pytest plugin; these are environment/plugin warnings, not warnings from Tier 1 package symbols.
Recommended Blockers / Follow-up Issues to Open
Reconcile the exemption gate. The contract test passes, but the stated no-new-exemptions condition fails due to the three additions above. Open a follow-up to review their rationale and decide whether to remove them or explicitly revise/ratify the gate.
Settle design decision #110. It remains open. Its latest comment proposes documenting latest-discharge keying as a limitation and deferring per-gift keying, but no decision or documentation change is recorded. Resolve the decision and link the outcome from #351; avoid opening a duplicate issue for the same decision.
Summary: Four of the five listed gates pass; the no-new-exemptions condition fails. Issue #110 also remains an unresolved 1.0 dependency.
Activity
Jahnavi-HJ commentedon Nov 3, 2026
Hi! I'd like to work on this audit issue.
Jahnavi-HJ commentedon Nov 3, 2026
I’ll inspect the release-gate notes, API reference, deprecation tests, and linked issue decisions first; then I’ll run the exact gate commands and assemble the report with their output summaries.
Search for
## \[1\.0\.0\] - TBD|Notes|gate|GateRead
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\docs\reference\index.md"
}
"Get issue details" failed
Completed with input: {
"owner": "Jahnavi-HJ",
"repo": "PhilanthroPy",
"issue_number": 351,
"method": "get"
}
Tool execution failed: MCP server 'github-mcp-server': failed to get issue: GET https://api.github.com/repos/Jahnavi-HJ/PhilanthroPy/issues/351: 404 Not Found []
"Get issue details" failed
Completed with input: {
"owner": "Jahnavi-HJ",
"repo": "PhilanthroPy",
"issue_number": 110,
"method": "get"
}
Tool execution failed: MCP server 'github-mcp-server': failed to get issue: GET https://api.github.com/repos/Jahnavi-HJ/PhilanthroPy/issues/110: 404 Not Found []
Search for
DeprecationWarning|deprecated|deprecatSearch for
\[1\.0\.0\] - TBDRead
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_deprecations.py"
}
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_public_api_contract.py"
}
Search for
GratefulPatientFeaturizer|EncounterTransformer|110|PHI-free|index-encounterRan terminal command: git status --short --branch; git branch --show-current; git remote -v
Get issue details
Completed with input: {
"owner": "PhilanthroPy-Project",
"repo": "PhilanthroPy",
"issue_number": 351,
"method": "get"
}
Get issue details
Completed with input: {
"owner": "PhilanthroPy-Project",
"repo": "PhilanthroPy",
"issue_number": 110,
"method": "get"
}
Search for
1\.0 gate|release gate|gate command|deprecated_alias|metadata\.version|py\.ty...Search for
^\| `|Tier 1|Tier 2|Tier 3|Unclear|unclear|deprecatFind files matching
philanthropy/**/__init__.pySearch for
deprecated_aliasRead , lines 1 to 210
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\docs\reference\index.md",
"view_range": [
1,
210
]
}
Read , lines 1 to 120
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_public_api_contract.py",
"view_range": [
1,
120
]
}
Read , lines 350 to 430
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_public_api_contract.py",
"view_range": [
350,
430
]
}
Read , lines 1 to 220
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\RELEASING.md",
"view_range": [
1,
220
]
}
Get issue details
Completed with input: {
"owner": "PhilanthroPy-Project",
"repo": "PhilanthroPy",
"issue_number": 351,
"method": "get_comments",
"perPage": 20
}
Get issue details
Completed with input: {
"owner": "PhilanthroPy-Project",
"repo": "PhilanthroPy",
"issue_number": 110,
"method": "get_comments",
"perPage": 20
}
Ran terminal command: git branch -a --no-color; git rev-parse HEAD; git rev-parse origin/main; git log -1 --format="%h %ad %s" --date=iso-strict origin/main
Read , lines 78 to 210
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\docs\reference\index.md",
"view_range": [
78,
210
]
}
Read , lines 430 to 510
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\tests\test_public_api_contract.py",
"view_range": [
430,
510
]
}
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\philanthropy\preprocessing\init.py"
}
Read
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\philanthropy\init.py"
}
Search for
def test_stability_tier|_TIER_HEADINGS|tier table|mid-deprecation|__version__...Search for
0\.7\.0|__version__|py\.typed|wheelThe checkout is exactly the current
origin/maincommit. Issue #110 is still open; its latest comment proposes documenting the limitation now and deferring per-gift keying, but does not record a settled decision. I’m now checking the gates as executable checks, including the version/tag and wheel metadata conditions.Ran terminal command: git tag --list v0.7.0; git diff --stat v0.7.0..origin/main -- tests/test_public_api_contract.py; git diff --unified=3 v0.7.0..origin/main -- tests/test_public_api_contract.py
Ran terminal command: $r = Invoke-RestMethod -Uri 'https://pypi.org/pypi/philanthropy/0.7.0/json'; "PyPI release: $($r.info.name) $ ($r.info.version); published files: $ ($r.urls.Count)"
Ran terminal command: git status --short; Get-Content pyproject.toml | Select-String -Pattern '^version\s*=|^[tool.setuptools|packages|package-data' -Context 0,1; Get-ChildItem philanthropy -Filter py.typed -Recurse | Select-Object -ExpandProperty FullName
Configuring a Python Environment
Completed with input: {
"resourcePath": "C:\Users\Jahnavi H J\PhilanthroPy"
}
Creating a Virtual Environment
Completed with input: {
"resourcePath": "C:\Users\Jahnavi H J\PhilanthroPy"
}
Search for
^\+\s+"[A-Za-z][A-Za-z0-9_]*":|^\+.*_EXEMPT|^\+.*exemption|^\+.*gateRan terminal command: & 'C:\Users\Jahnavi H J\AppData\Local\Python\pythoncore-3.14-64\python.exe' -m pytest tests/test_public_api_contract.py -q
Tool execution failed with exit code 1
Ran terminal command: & 'C:\Users\Jahnavi H J\AppData\Local\Python\pythoncore-3.14-64\python.exe' -m pytest tests/test_deprecations.py -q
Tool execution failed with exit code 1
Ran terminal command: $matches = rg -n 'deprecated_alias' philanthropy; if ($LASTEXITCODE -eq 1) { 'PASS: no deprecated_alias occurrences in philanthropy/'; exit 0 } elseif ($LASTEXITCODE -eq 0) { $matches; exit 1 } else { exit $LASTEXITCODE }
Ran terminal command: Get-ChildItem -Force | Select-Object Name,Mode; Get-Command pytest -All -ErrorAction SilentlyContinue | Select-Object Source,CommandType; Get-Command python, py -All -ErrorAction SilentlyContinue | Select-Object Name,Source
Search for
SolicitationWindowTransformer|deprecated alias|removed in 1\.0\.0|0\.9\.0Ran terminal command: git log --format="%h %ad %s" --date=short v0.7.0..origin/main -S '"EncounterTransformer": (' -- tests/test_public_api_contract.py; git log --format="%h %ad %s" --date=short v0.7.0..origin/main -S '"MatchingGiftFeaturizer": (' -- tests/test_public_api_contract.py; git log --format="%h %ad %s" --date=short v0.7.0..origin/main -S '"GiftIntervalCalibrator": (' -- tests/test_public_api_contract.py
Discovering tests...
Tool execution failed: No VS Code tests matched the requested files. The request has not been validated.
Configuring a Python Environment
Completed with input: {
"resourcePath": "C:\Users\Jahnavi H J\PhilanthroPy",
"pythonPath": "C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe"
}
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_deprecations.py -q
Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import importlib.metadata as m, philanthropy; installed=m.version('philanthropy'); print(f'version={philanthropy.version}; metadata={installed}'); assert philanthropy.version == installed"; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $out = Join-Path $env:TEMP 'philanthropy-1-0-gate-wheel'; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m build --wheel --no-isolation --outdir $out; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $wheel = Get-ChildItem $out -Filter '*.whl' | Select-Object -First 1; if (-not $wheel) { Write-Error 'No wheel was produced'; exit 1 }; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import sys,zipfile; p=sys.argv[1]; z=zipfile.ZipFile(p); names=z.namelist(); found=any(n.endswith('philanthropy/py.typed') for n in names); print('wheel='+p); print('philanthropy/py.typed='+str(found)); assert found" $wheel.FullName; exit $LASTEXITCODE
Tool execution failed with exit code 1
Ran terminal command: git diff --unified=0 v0.7.0..origin/main -- tests/test_public_api_contract.py | Select-String -Pattern '^+.*"(GiftIntervalCalibrator|EncounterTransformer|MatchingGiftFeaturizer)"'; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Ran terminal command: $out = Join-Path $env:TEMP 'philanthropy-1-0-gate-wheel'; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pip wheel --no-deps --no-build-isolation --wheel-dir $out .; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $wheel = Get-ChildItem $out -Filter '*.whl' | Select-Object -First 1; if (-not $wheel) { Write-Error 'No wheel was produced'; exit 1 }; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import sys,zipfile; p=sys.argv[1]; z=zipfile.ZipFile(p); found=any(n.endswith('philanthropy/py.typed') for n in z.namelist()); print('wheel='+p); print('philanthropy/py.typed='+str(found)); assert found" $wheel.FullName; exit $LASTEXITCODE
Tool execution failed with exit code 2
Read , lines 1575 to 1660
Completed with input: {
"path": "C:\Users\Jahnavi H J\PhilanthroPy\CHANGELOG.md",
"view_range": [
1575,
1660
]
}
Ran terminal command: git status --short --branch; git diff --stat; git tag --contains origin/main v0.7.0
Installing setuptools>=77 in .venv (3.14.5)
Completed with input: {
"packageList": [
"setuptools>=77"
],
"resourcePath": "C:\Users\Jahnavi H J\PhilanthroPy"
}
Ran terminal command: $out = Join-Path $env:TEMP 'philanthropy-1-0-gate-wheel'; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pip wheel --no-deps --no-build-isolation --wheel-dir $out .; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; $wheel = Get-ChildItem $out -Filter '*.whl' | Select-Object -First 1; if (-not $wheel) { Write-Error 'No wheel was produced'; exit 1 }; & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -c "import sys,zipfile; p=sys.argv[1]; z=zipfile.ZipFile(p); found=any(n.endswith('philanthropy/py.typed') for n in z.namelist()); print('wheel='+p); print('philanthropy/py.typed='+str(found)); assert found" $wheel.FullName; $result=$LASTEXITCODE; Remove-Item -LiteralPath $out -Recurse -Force; exit $result
Search for
^## \[0\.[0-9]+\.[0-9]+\]|SolicitationWindowTransformer.*deprecated|deprecate...Ran terminal command: git diff --unified=0 v0.7.0..origin/main -- tests/test_public_api_contract.py | Select-String -Pattern '^+\s+"[A-Za-z][A-Za-z0-9_]*": ('; if ($LASTEXITCODE -gt 1) { exit $LASTEXITCODE }; 'Added exemption entries listed above; current count: 3'
Ran terminal command: $r = Invoke-RestMethod -Uri 'https://pypi.org/pypi/philanthropy/0.7.0/json'; "Command result: HTTP success; package=$($r.info.name); version=$ ($r.info.version); files=$ ($r.urls.Count)"
The API contract suite passes, but the history comparison finds three new exemptions since
v0.7.0, so that compound gate is not satisfied. The only live package deprecation isSolicitationWindowTransformer, which the index assigns Tier 2; I’m running the tier-table-only selector once for a distinct gate result and confirming the build left the checkout clean.Ran terminal command: & 'C:\Users\Jahnavi H J\PhilanthroPy.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q -k 'reference_index_declares_all_three_tiers or stability_tier_table_covers_every_public_symbol or tier_table_names_no_symbol_that_is_no_longer_public'
Ran terminal command: git status --short --branch; git rev-parse --short origin/main; git rev-parse --short HEAD
5 Gates Execution Results
Audited
origin/mainat03c3c43(same commit as the checkout).0.7.0published$r = Invoke-RestMethod -Uri 'https://pypi.org/pypi/philanthropy/0.7.0/json'; "PyPI release: $($r.info.name) $($r.info.version); published files: $($r.urls.Count)"Output:
PyPI release: philanthropy 0.7.0; published files: 20.7.0& 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -qOutput:
116 passed, 11 skipped, 7 warnings in 2.30s— the test is green. However, comparison withv0.7.0found three added exemptions:GiftIntervalCalibrator,EncounterTransformer, andMatchingGiftFeaturizer. The “no exemption added” condition therefore fails.deprecated_aliasinphilanthropy/$matches = rg -n 'deprecated_alias' philanthropy; if ($LASTEXITCODE -eq 1) { 'PASS: no deprecated_alias occurrences in philanthropy/'; exit 0 } elseif ($LASTEXITCODE -eq 0) { $matches; exit 1 } else { exit $LASTEXITCODE }Output:
PASS: no deprecated_alias occurrences in philanthropy/py.typed__version__=0.9.0; metadata=0.9.0Built with
& 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pip wheel --no-deps --no-build-isolation --wheel-dir $out .Output: wheel
philanthropy-0.9.0-py3-none-any.whlbuilt; inspection reportedphilanthropy/py.typed=True. The first build attempt found missing build tooling; after installingsetuptools>=77in the existing venv, the wheel check passed.& 'C:\Users\Jahnavi H J\PhilanthroPy\.venv\Scripts\python.exe' -m pytest tests/test_public_api_contract.py -q -k 'reference_index_declares_all_three_tiers or stability_tier_table_covers_every_public_symbol or tier_table_names_no_symbol_that_is_no_longer_public'Output:
12 passed, 115 deselected, 2 warnings in 0.39s. The separate deprecation audit found no Tier 1 symbol emitting a deprecation warning.Public API Symbol & Tier Audit
Compared the subpackage
__all__exports with the tier tables indocs/reference/index.mdusing the tier-table tests intests/test_public_api_contract.py.SolicitationWindowTransformeris mid-deprecation but is designated Tier 2, not Tier 1.Deprecation Warnings Audit
tests/test_deprecations.pypassed: 4 passed. It registers one live package deprecation:philanthropy.preprocessing.SolicitationWindowTransformerwarns on attribute access; it was introduced as deprecated in 0.7.0, is scheduled for removal in 1.0.0, and recommendsDischargeToSolicitationWindowTransformer. Its Tier 2 status means it is not a Tier 1 deprecation blocker.The public API test run also reported two
asynciodeprecation warnings from thenbmakepytest plugin; these are environment/plugin warnings, not warnings from Tier 1 package symbols.Recommended Blockers / Follow-up Issues to Open
Summary: Four of the five listed gates pass; the no-new-exemptions condition fails. Issue #110 also remains an unresolved 1.0 dependency.