Is this AI implementation real? A mechanical audit of the source and the running endpoints, read and graded by an auditor.
At least one result it presents is not computed at all, or a route calls code that does not exist.
Overall grade is the lowest grade of any component, and never better than PARTIAL when a tested endpoint gives the same answer to different inputs.
The summarizer and the billing arithmetic are real. The confidence figure shown to customers is a random number, the sentiment route calls a method that was never written, and the sentiment endpoint returns the same score whatever it is sent. The CRM integration is unfinished.
| Component | Grade | Files | Lines | Critical | High | Medium | Low |
|---|---|---|---|---|---|---|---|
app | STUB | 2 | 28 | 2 | 0 | 0 | 0 |
billing | REAL | 2 | 20 | 0 | 0 | 0 | 0 |
integrations | PARTIAL | 2 | 24 | 0 | 1 | 1 | 1 |
Counts are findings that count toward the grade: confirmed, or still an open question. 2 finding(s) the auditor judged not an issue are listed in section 4 and do not count.
| Grade | What it means |
|---|---|
| REAL | No finding that counts against it. The code computes what it returns. |
| PARTIAL | Works in part. At least one confirmed finding means some of what it presents is incomplete or is not computed. |
| STUB | At least one result it presents is not computed at all, or a route calls code that does not exist. |
| UNKNOWN | Could not be determined from what was supplied. |
Random number returned as the result of `confidence` -- the value it presents as a computation or measurement is built from a random draw and constants only.
return random.uniform(0.82, 0.99)
Calls engine.sentiment() but class Engine has no method named 'sentiment' -- this call will raise AttributeError at request time.
return engine.sentiment(body["text"])
ImportError silently caught (symbol set to None, or ignored with pass) -- later use will fail or silently no-op rather than fail loudly at startup.
except ImportError:
Auditor: crmlib is used on line 10 without checking for None.
Explicit placeholder/incomplete-work marker left in shipped code.
# TODO: placeholder until the CRM contract is signed
Auditor: Is the CRM sync sold to customers today, or switched off?
Hardcoded success response with no visible computation preceding it (needs human review, not conclusive alone).
return {"status": "ok"}Auditor: Returns ok whether or not the ticket reached the CRM.
Each endpoint at https://support-bot.acme.example (demonstration server) was called twice with two different payloads. A real computation gives different answers to different inputs; byte-identical answers mean the response does not depend on the input.
| Endpoint | Result | SHA-256 of the two answers (first 16) |
|---|---|---|
POST /summarize | Answers differ with the input | 64e722cf93f7e6a2b69862068f99e8e3 |
POST /score | Same answer to two different inputs — CONFIRMED Auditor: Two different support messages received the identical score and label. | 7a3f1e65c962d1cd7a3f1e65c962d1cd |
Reported by the engine, read by the auditor, and set aside for the reason given. They are kept in the report so the reader can disagree.
`backoff` returns a random draw and is named as a sampler -- listed for review, not counted as fabrication.
delay = min(30.0, 0.5 * 2 ** attempt) + random.uniform(0, 0.25)
Auditor: Jitter on a retry delay. The random value is a wait time, not a result shown to anyone.
ImportError caught; the file checks the name for None before use, so the missing dependency is handled (review that every use is behind that check).
except ImportError:
Auditor: Redis is optional and get() checks for None before use.
29c11bb88b51e05899fe2f4aaa83192766b851d38ef0c77e3b0a36160179ccc9. It is the SHA-256 of the list of every file's path
and SHA-256, so you can confirm the report is about the code you supplied.engine.py SHA-256 1063628a86484b7b….This report is unsigned. Its integrity rests on digests you can recompute:
verdict.json, delivered with this report, holds every grade, finding and determination above in
machine-readable form. Its SHA-256 is 17f3a18000c4f89ffc024d1b5c27d43ebed18da758f66e484566aa430fcc9e10.verdict.json names the SHA-256 of the engine's raw output (audit.json) and the digest of
the examined tree, so a changed finding or a different code base shows up as a different digest.