Verification run logs, publication/deployment history, and editorial reconciliation notes for the Chrisian technical prototype portfolio. This is engineering record-keeping, not product documentation — see the main portfolio page for the five featured demonstrations, the 54-app catalog, validation discipline, and the current acceptance-criteria scorecard.
Pass counts here are test pass counts, not end-to-end accuracy — they confirm the pure logic (anchor verification, schema validation, numbering-gap detection, domain checks) behaves correctly against hand-built fixtures and tamper cases. None of this portfolio measures accuracy against a held-out, independently labeled dataset; no such dataset exists for any of these five demos.
Run 2026-11-04, 10:12 PST, against the local working tree on top of commit f5d7db3, including the uncommitted semantic-tagging-linking export fix (see main page §08) — all of it was committed afterward as a217ed4. Reproduce with cd apps/<app> && npm install && npm test for each.
| App | Tests | Pass | Fail | Fixture hash (sha256, first 16 hex) |
|---|---|---|---|---|
| Semantic Tagging & Linking | 11 | 11 | 0 | 91f69608ebf51f3a |
| OA Journal JATS/NLM Conversion | 9 | 9 | 0 | d8bd07e15475d0ce |
| Academic PDF Parsing | 12 | 12 | 0 | b3e9840b77f53ba2 |
| Lease Abstraction | 12 | 12 | 0 | 83a54679959a76df |
| Content Detector | 12 | 12 | 0 | 838a05371e0d4fe6 |
Total: 56 of 56 committed tests passed. Build/lint also re-run clean across all five apps the same session (one pre-existing, unrelated ESLint warning in jats-nlm-conversion — an unused export — not introduced by that revision).
Where a README claims a result from a live call to the real Anthropic API, it is labeled Described on the main page's §08 and was not re-run during the 2026-11-04 local review pass — re-running it would call the real API and was out of scope for that pass. No live Anthropic API call was made during that local review pass. Every "Tested" result from that pass is a real, committed test that does not call the live API. (Separately, live spot-checks including real API calls were later run after deployment — see §A3 below.)
The homepage metrics grid previously read "14" QA catches while the verification section below it said "Eleven." Resolved by checking the one thing that's actually enumerable: the real .card entries in that section itself. There are eleven. The metric box now reads 11, matching what the page can actually show, not a number carried over from an earlier draft that can no longer be reconciled against a specific list.
site/portfolio_summary.html and site/index.html had been.Superseded by later work — see the main page's current AC-02/AC-09 scorecard rows for what has since been checked.
Both static pages (portfolio_summary.html, index.html) were deployed to poc.chrisianinc.com (previous live versions backed up on the server first). The 5 featured apps' code — the sample-only enforcement, the matchAiFindings extraction, and the semantic-tagging-linking export fix — was then pulled, rebuilt, and restarted on the live server, one app at a time, checking memory headroom between each restart rather than all at once. Every app was re-verified against the real live endpoint after restart, not assumed working from a clean restart alone: an unapproved request still correctly returns HTTP 400 on all 5, and the real bundled sample runs end to end through the real Anthropic API on all 5 (confirmed by reading each real response body, not just a 200 status). No other prototype on the shared host was disrupted by the restarts.
AC-03's backend rule was extended from the 5 featured apps to all 54. Every app's job-creation route was rewritten to accept only an approved fixture/sample identifier and resolve all job content (file bytes, pasted text, structured config, and — for the two apps that fetch a real external source — the URL/query itself) from a bundled constant or file on disk; none of the 54 routes read real content from the request body anymore. For the ~44 apps with no pre-existing bundled sample, one small, clearly-synthetic sample was written and bundled per app (fictional companies, people, and case names — never real data). npx tsc --noEmit is clean across all 54 apps.
Deployed the same day. All 49 apps were pulled, rebuilt, and restarted on the live server, one at a time, checking memory headroom between restarts — the same discipline used for the first 5. Every one of the 49 was re-verified directly against its real live endpoint after restart, not sampled: an unapproved/bogus-fixtureId request still correctly returns HTTP 400 on all 49. A further handful were run to completion against the real live endpoint, including both freshly-generated binary fixtures (confirming the files themselves survived the deploy) and one real live Anthropic API call. All 60 processes on the shared host stayed online throughout, swap usage dropped rather than climbed, and PayEngine was confirmed unaffected.