Loading report…
← nittim
[](https://nittim.com)Shippable once the listed conditions are addressed.You can make it live once the listed conditions are handled.Handle the listed conditions, then ship.
This verdict covers the <1% of your repository we read — see what we didn’t read below.This result is based on the <1% of your project’s code we actually read — see what we didn’t read below.Covers <1% of your repo — see what we didn’t read below.
This audit read 220 of your 47767 files — the ones most likely to hurt you first. The snapshot was truncated — this audit's size limit was reached.
The scores and findings above cover only those files. The rest of the repository hasn’t been audited yet. The denominator counts every file in the repository — images, generated output, vendored and build directories included.
account_document_import_mixin.py`rollbackable_transaction` and `_extend_with_attachments` commit the cursor mid-request; docstrings explicitly warn that a later SerializationError causes the whole request to retry and 'may cause some things to be duplicated.'220 of 47767 files were audited. This audit's size or file-count limit was reached, so some source and configuration files were left unread. The denominator counts every file in the repository — images, generated output, vendored and build directories included.
This audit's size limit was reached before it read the whole repository. The verdict and every score on this report were computed from what it did read — read them as evidence about that sample, not a clean bill of health for the rest.
AI Code Confidence capped at 15
This is a snapshot of Odoo (odoo/odoo, branch 19.0), a mature, widely-deployed open-source ERP, with the audit focused on the large `account` (Invoicing/Accounting) addon. The code is clearly human-authored by an experienced team: it is internally consistent, deliberate, heavily commented around non-obvious logic, and follows consistent ORM/framework idioms throughout. The deterministic scanners surfaced no live secrets (only test-fixture passwords) and no known-vulnerable dependencies. Security-sensitive paths (portal controllers, document downloads, audit-trail enforcement, lock dates, hash-chained journal integrity) are implemented thoughtfully with access-token verification, `check_access`, and sudo discipline. The principal limitation of this audit is scope: only 220 of 47,767 files were visible, so CI/CD configuration, container/infra hardening, full test coverage, and observability wiring could not be directly assessed and are not penalized. The repository is intentionally public under LGPL-3, so the IP lens is largely moot — any novel mechanisms here are published by design. Overall this presents as production-grade software; findings are mostly low/informational and reflect snapshot-visibility gaps rather than concrete defects.
addons/account/controllers/portal.pyexposes `/my/invoices/<id>` and `/my/journal/<id>/unsubscribe` with auth='public', gated by `_document_check_access(access_token)` and `verify_hash_signed(...)` with explicit 403/410/404 responses; download_docs.py calls `attachments.check_access('read')` and asserts res_model.account_move_line.py(~186KB), chart_template.py (~80KB), account_account.py (~81KB), account_journal.py (~65KB), account_payment.py (~59KB) per the truncation markers — single files spanning thousands of lines.Weighted blend of 4 dimensions → ~73/100. Dimensions are weighted by importance (Security and Privacy weigh heaviest). Published figures are approximate; nittim's exact weighting and precise scoring are proprietary, while the verdict is computed on exact internal values.4 categories combine into ~73/100. Some categories count for more than others (Security and Privacy count the most). The published numbers are approximate; nittim's exact math is kept private, while the verdict itself is worked out from the exact internal numbers.Weighted blend of 4 dimensions → ~73/100 (Security and Privacy weigh heaviest). Published figures are approximate; nittim's exact weighting is proprietary. The verdict runs on exact internal values.
IP Protection is an independent IP-defensibility lens and is excluded from this blend.IP Protection (checking whether your ideas are exposed) is judged separately and isn’t
part of this combined number.IP Protection is judged separately, excluded from this blend.
Scores are a judgement, not a measurement: a re-audit of the same commit can land a few
points either side of this figure. The evidence underneath it is deterministic — the same
commit always yields the same committed-secret and vulnerable-dependency findings.Scores are a judgment call, not an exact measurement: checking the same saved snapshot of
your code twice can land a few points either side of this number. The evidence underneath
it is not — the same snapshot always turns up the same passwords-in-code and known-security-bug
findings.Scores are a judgment, not a measurement — a re-audit can land a few points either side. The evidence underneath is deterministic: the same commit always yields the same secret and vulnerable-dependency findings.
Each score is the model's overall assessment of the dimensions it covers, across everything it reviewed — not a tally of the findings in this report. Findings are the subset worth acting on, so a score can sit above or below what the listed findings alone would suggest.Each score is the AI's overall judgment of everything it reviewed in that category — not a
count of the problems listed in this report. The listed problems are the ones worth acting
on, so a score can sit above or below what they alone would suggest.Each score is the model's overall assessment across everything it reviewed — not a tally of this report's findings. A score can sit above or below what the findings alone suggest.
Verdict rationale — Why this verdict — Verdict rationale — The audited code is mature, deliberate, internally consistent professional software with sound security gating (signed tokens, access checks, audit-trail and lock-date integrity), good data-layer hygiene, no live secrets, and no known-vulnerable dependencies — a strong production baseline that runs in many businesses today. It is rated 'ready_with_conditions' rather than 'production_ready' only because the snapshot was heavily truncated (220 of 47,767 files), so CI/CD, container/infra hardening, secrets lifecycle, full test coverage, and observability wiring could not be directly verified, and because the mid-transaction commit pattern in the document-import flow carries an acknowledged duplication risk under concurrency that warrants idempotency safeguards. None of the IP-exposure findings affect this verdict: the repository is intentionally public under LGPL-3, so disclosure of its novel mechanisms is by design, not a production risk.