Summary
DESC-05 (direct-dependency count) reports 0 direct dependencies for a project whose pyproject.toml declares 14. The manifest is found and listed — only the parse of its contents returns nothing.
Observed on a full audit run of provectus-barhopping/wort (engine output committed in that repo under context/audits/2026-07-13_17-44-33/).
Evidence
descriptors.json — DESC-05:
{
"check_id": "DESC-05",
"status": "INFO",
"method": "computed",
"value": {
"total_direct_deps": 0,
"by_manifest": { ".../wort/pyproject.toml": 0 }
},
"evidence": ["0 direct dependencies across 1 manifest"]
}
Ground truth — wort/pyproject.toml:
[project]
dependencies = [
"fastapi>=0.136,<1",
"uvicorn[standard]>=0.44,<1",
"sqlalchemy[asyncio]>=2.0,<3",
"asyncpg>=0.31,<1",
"alembic>=1.18,<2",
"pydantic-settings>=2.13,<3",
"slack-bolt>=1.28,<2",
"aiohttp>=3.13,<4",
"boto3>=1.42,<2",
"structlog>=25.5,<26",
"httpx>=0.28,<1",
"fastmcp>=3.2,<4",
"pymupdf4llm>=1.27,<2",
"python-docx>=1.2,<2",
]
14 entries under PEP 621 [project].dependencies, plus a 6-entry PEP 735 [dependency-groups].dev. The manifest path resolved correctly, so discovery works and extraction is what fails. Worth checking whether the parser only looks at Poetry-style [tool.poetry.dependencies] and misses [project].dependencies.
Downstream impact
Three different dependency counts appear in one audit run, all derived from the same single manifest:
| Location |
Count |
DESC-05 value + report.md "Code Scale" |
0 |
SCS-03 recommendation text |
8 |
Actual pyproject.toml |
14 |
Two consequences beyond the wrong number:
report.md publishes it. The Code Scale section renders **Direct dependencies:** 0 direct deps, which reads as "vendored / no third-party code" for a service built on FastAPI, SQLAlchemy and boto3.
SCS-03 is materially wrong, not just miscounted. The recommendation states "all 8 direct dependencies use open-ended version ranges in pyproject.toml … a dependency can silently re-resolve to a newer version between builds" and is filed P1. Every one of the 14 declarations is upper-bounded (>=0.136,<1), so the described failure mode cannot occur across a major boundary. The check appears to be reasoning about a dependency set it never successfully read.
If SCS-03 consumes DESC-05's output, fixing the parser may resolve both. If it parses independently, they are two bugs with a shared root cause.
Suggested handling
- Parse PEP 621
[project].dependencies and PEP 735 [dependency-groups] in addition to whatever is currently matched.
- Consider failing loudly rather than emitting
0: a manifest that is located but yields zero dependencies is far more likely a parser miss than a genuinely dependency-free project. An INFO check that silently reports 0 propagates into narrative text with no signal that it is unverified.
Secondary note
DESC-05.by_manifest keys on an absolute filesystem path from the machine that ran the audit (/Users/<name>/provectus/provectus-barhopping/wort/pyproject.toml). Since audit artifacts are intended to be committed, this leaks a local username and directory layout into version control. Repo-relative paths would avoid it. Happy to split this into its own issue if preferred.
Environment
- Engine version: whatever produced the 12-dimension / JSON output (newer than the marketplace
2.1.0 cached locally, which is 9 dimensions and Markdown-only)
- Audited project: Python, single
pyproject.toml, uv-managed, uv.lock present
Summary
DESC-05(direct-dependency count) reports 0 direct dependencies for a project whosepyproject.tomldeclares 14. The manifest is found and listed — only the parse of its contents returns nothing.Observed on a full audit run of
provectus-barhopping/wort(engine output committed in that repo undercontext/audits/2026-07-13_17-44-33/).Evidence
descriptors.json—DESC-05:{ "check_id": "DESC-05", "status": "INFO", "method": "computed", "value": { "total_direct_deps": 0, "by_manifest": { ".../wort/pyproject.toml": 0 } }, "evidence": ["0 direct dependencies across 1 manifest"] }Ground truth —
wort/pyproject.toml:14 entries under PEP 621
[project].dependencies, plus a 6-entry PEP 735[dependency-groups].dev. The manifest path resolved correctly, so discovery works and extraction is what fails. Worth checking whether the parser only looks at Poetry-style[tool.poetry.dependencies]and misses[project].dependencies.Downstream impact
Three different dependency counts appear in one audit run, all derived from the same single manifest:
DESC-05value +report.md"Code Scale"SCS-03recommendation textpyproject.tomlTwo consequences beyond the wrong number:
report.mdpublishes it. The Code Scale section renders**Direct dependencies:** 0 direct deps, which reads as "vendored / no third-party code" for a service built on FastAPI, SQLAlchemy and boto3.SCS-03is materially wrong, not just miscounted. The recommendation states "all 8 direct dependencies use open-ended version ranges in pyproject.toml … a dependency can silently re-resolve to a newer version between builds" and is filed P1. Every one of the 14 declarations is upper-bounded (>=0.136,<1), so the described failure mode cannot occur across a major boundary. The check appears to be reasoning about a dependency set it never successfully read.If
SCS-03consumesDESC-05's output, fixing the parser may resolve both. If it parses independently, they are two bugs with a shared root cause.Suggested handling
[project].dependenciesand PEP 735[dependency-groups]in addition to whatever is currently matched.0: a manifest that is located but yields zero dependencies is far more likely a parser miss than a genuinely dependency-free project. AnINFOcheck that silently reports0propagates into narrative text with no signal that it is unverified.Secondary note
DESC-05.by_manifestkeys on an absolute filesystem path from the machine that ran the audit (/Users/<name>/provectus/provectus-barhopping/wort/pyproject.toml). Since audit artifacts are intended to be committed, this leaks a local username and directory layout into version control. Repo-relative paths would avoid it. Happy to split this into its own issue if preferred.Environment
2.1.0cached locally, which is 9 dimensions and Markdown-only)pyproject.toml, uv-managed,uv.lockpresent