QA Gate Full Report 2026-04-28

Status: πŸ”΄ CRITICAL GAPS FOUND
Auditor: Automated multi-agent audit (5 parallel agents)
Scope: Git history, migrations, ADRs, code-to-wiki mapping, experiments, tests
Method: Source-of-truth verification against actual codebase


Executive Summary

DimensionClaimedActualCoverageStatus
Git commits documented38 major32 of 163 total19.6%πŸ”΄ CRITICAL
Database migrations910 (000–009)β€”πŸ”΄ WRONG COUNT
Database indexes documented50+31 documented, 19 missing62%🟑 PARTIAL
ADRs1212 exist, 3 inaccurate, 8 missingβ€”πŸŸ‘ PARTIAL
Source files (src/)β€”97 of 10394.2%🟒 GOOD
Test files1611 of 2839.3%πŸ”΄ CRITICAL
Scripts4630 of 3683.3%🟑 PARTIAL
Frontend filesβ€”1 of 372.7%πŸ”΄ CRITICAL
KB filesβ€”3 of 358.6%πŸ”΄ CRITICAL
Autoresearch filesβ€”11 of 2937.9%🟑 PARTIAL
Experiment rounds2914 result files, ~11 with scores48%🟑 PARTIAL
OVERALLβ€”146 of 260 files56.2%πŸ”΄ CRITICAL

Verdict: The vault is NOT comprehensive. Major gaps exist in git history (80% missing), tests (61% missing), frontend (97% missing), and KB (91% missing).


1. Git History β€” πŸ”΄ CRITICAL (19.6% coverage)

Finding

Only 32 of 163 commits are documented. 131 commits (80%) are missing.

Missing by Category

CategoryDocumentedMissingCoverage
Bug fixes1147%
Frontend work2918%
Bolagsverket impl030%
Queue/worker changes030%
Security fixes2625%
Documentation updates21017%
Bulk import1811%
API endpoints1420%
Enrichment v7 quality2529%
Mulch/Seeds tool commits0280%
Merge/WIP commits060%
Infra/Module commits050%

Critical Missing Commits

  • 2324c1f β€” Crawlee-based multi-page scraper (major feature)
  • efcb142, 4d4f66a, 87704be β€” Bolagsverket iXBRL implementation (3 commits)
  • 127c56b β€” Share single IORedis instance (architectural)
  • 714a500 β€” Decompose enrichmentEngine.v7.ts god file (major refactor)
  • c006048 β€” Scale infrastructure for 1.4M enrichment runs/year
  • 5fb7ebf, f807bbb, 072a6eb β€” Security hardening (3 commits)
  • d39f9dc through b0122f3 β€” 9 frontend commits (loading states, auth, kundkort v2)
  • 37d565c β€” Correct orgnr parsing in bulk import (data quality fix)

Action Required

Add a comprehensive commit timeline with ALL 163 commits, or at minimum all non-tool commits (excluding mulch/seeds syncs).


2. Database Schema β€” 🟑 PARTIAL

Finding 2a: Migration Count Wrong

Vault claims 9 migrations. Actual count: 10 (000–009).

Finding 2b: 19 Indexes Missing

MigrationMissing Indexes
0016 (enrichment_issues Γ—4, remediation_actions Γ—2)
0023 (idx_eq_dispatched, idx_ropa_month, idx_ropa_record)
0034 (idx_run_log_started, idx_run_log_type, idx_enrich_history_org, idx_enrich_history_run)
0062 (idx_domain_registry_trgm, idx_domain_registry_loaded_at)
0073 (idx_bv_name_trgm, idx_bv_postal_city, idx_bv_legal_form)
0082 (idx_prv_trademarks_org_nr, idx_prv_trademarks_name)
0094 (archive table indexes)

Finding 2c: Missing Columns

  • companies.quality_score (001)
  • companies.quality_checked_at (001)
  • companies.troubleshooting_status (001)

Finding 2d: Missing Extensions

  • pgvector (init.sql + 007)
  • pg_trgm (006 + 007)

Finding 2e: Missing Backfill Logic

Migrations 002 and 003 contain substantial UPDATE backfill logic not described.

Action Required

  1. Update migration count: 9 β†’ 10
  2. Add all 19 missing indexes
  3. Add 3 missing columns
  4. Add Extensions section
  5. Document backfill logic

3. Architecture Decision Records β€” 🟑 PARTIAL

Inaccurate ADRs

ADRIssueSeverity
ADR-001Claims Bun-native APIs (Bun.sql, Bun.redis) but code uses pg and ioredisMedium
ADR-001package.json has "start": "node dist/index.js" β€” uses Node.jsLow
ADR-004Serper traces remain in code; not fully removedMedium
ADR-007Claims β€œSHA-256” but code uses HMAC-SHA256 (better security)Low
ADR-012Claims β€œRLS” but NO Row Level Security is enabled; tables exist but unwiredHigh

Missing ADRs (8)

#TopicEvidence
ADR-013PostgreSQL Port 5433docker-compose.yml, src/db/index.ts
ADR-014Redis Port 6379docker-compose.yml, src/lib/redis.ts
ADR-015Keycloak Authenticationsrc/lib/keycloak.ts (426 lines), auth middleware
ADR-016Schema Migrations (bun.sql + psql)scripts/migrate.ts
ADR-017Redis Caching Layersrc/cache.ts
ADR-018Article 14 Notification Systemsrc/lib/article14Notification.ts, art14Worker.ts
ADR-019ECOAPI Integrationsrc/enrichment/ecoApiIntegration.ts
ADR-020SMTP Email Validationsrc/lib/smtpEmailValidator.ts

Action Required

  1. Fix 5 inaccurate ADRs
  2. Add 8 missing ADRs

4. Code-to-Wiki Mapping β€” πŸ”΄ CRITICAL (56.2% overall)

4a. src/ β€” 🟒 GOOD (94.2%)

Missing 6 files:

src/mocks/newsApi.ts
src/mocks/officialRegistries.ts
src/queues/scheduled-jobs.ts
src/services/websiteScraperService.ts
src/validation/layers/newsLayer.ts
src/validation/layers/registryLayer.ts

Note: mocks and validation layers are noted as unused in vault β€” acceptable omission.

4b. tests/ β€” πŸ”΄ CRITICAL (20%)

Missing 16 of 20 files:

Missing TestWhat It TestsLines
tests/api/auth.test.tsAuthentication API (reg, login, tokens, rate limiting)317
tests/api/companies.test.tsCompanies CRUD, pagination, filtering, RoPA472
tests/api/documents.test.tsDocuments CRUD, embeddings, similarity search468
tests/api/index.test.tsEnd-to-end all APIs655
tests/api/kundkort-enrich.test.tsKundkort enrich endpoint88
tests/api/leads.test.tsLeads CRUD, filtering, validation536
tests/api/organizations.test.tsOrganizations CRUD, UUID validation308
tests/api/projects.test.tsProjects CRUD, org filtering322
tests/api/search.test.tsSearch basic + advanced filters332
tests/api/security.test.tsJWT forgery, env vars, CSV injection134
tests/api/structure.test.tsHandler exports validation85
tests/api/users.test.tsUsers CRUD, email/password validation343
tests/enrichment/board-members-integration.test.tsBV board members in pipeline31
tests/enrichment/crawlee-quality.test.tsCrawlee extraction quality308
tests/enrichment/firecrawl.test.tsFirecrawl extractor512
tests/enrichment/processors.test.tsRole inference, email, phone, scoring183

Total missing test lines: ~4,994

4c. scripts/ β€” 🟑 PARTIAL (83.3%)

Missing 6 files:

scripts/archives/enrich-and-save.ts
scripts/archives/enrich-company-fixed.ts
scripts/archives/enrich-detail.ts
scripts/archives/quality-check.ts
scripts/indexer/load-registry.ts
scripts/test-prat-pr-scraper-fixed.ts

4d. frontend/ β€” πŸ”΄ CRITICAL (2.7%)

Missing 36 of 37 files. Only types/kundkort.ts is ambiguously referenced.

Entire frontend stack undocumented:

  • 15 React components (sections + UI)
  • 4 custom hooks
  • 1 service client
  • 1 utility
  • App entry, HTML, CSS, Tailwind config

4e. autoresearch/ β€” 🟑 PARTIAL (37.9%)

Missing 18 of 29 files. All result/data files absent from vault.

4f. KB/ β€” πŸ”΄ CRITICAL (8.6%)

Missing 32 of 35 files. Entire React component layer, hooks, and most KB articles undocumented.


5. Experiment History β€” 🟑 PARTIAL

Finding

Vault claims β€œ29 enrichment optimization rounds” but:

  • Only 14 result files have vault entries
  • Only ~11 files have actual score data
  • .jsonl history files are essentially empty (1 entry each)
  • No evidence of 29 rounds in filesystem

Missing Result Files in Vault

  • fixed-test.json β€” exists but undocumented
  • continuous-history.jsonl β€” 1 entry, undocumented
  • history.jsonl β€” 1 entry, undocumented
  • latest.json β€” symlink/duplicate, undocumented

Action Required

Correct β€œ29 rounds” claim to reflect actual preserved artifacts (~14 files, ~11 with scores).


6. Previously Fixed Issues (from earlier QA)

These were found and fixed in earlier QA passes:

IssueStatus
ReklamspΓ€rr IS in workers (triple-gated)βœ… Fixed
Art.14 fires at collection (not export)βœ… Fixed
mocks/validation.ts doesn’t existβœ… Fixed
Uses HMAC-SHA256 (not plain SHA-256)βœ… Fixed
Uses pg.Pool (not Bun.sql)βœ… Fixed
enriched_data stores full contactsβœ… Fixed
3 orphaned notes added to Indexβœ… Fixed

Action Plan

P0 β€” Critical (Must Fix)

  1. Git History: Document all 131 missing commits or add comprehensive timeline
  2. tests/: Document all 16 missing test files (4,994 lines of tests)
  3. frontend/: Document all 36 missing frontend files
  4. KB/: Document all 32 missing KB files

P1 β€” High (Should Fix)

  1. Migrations: Fix count (9β†’10), add 19 missing indexes, 3 columns, extensions
  2. ADRs: Fix 5 inaccurate ADRs, add 8 missing ADRs
  3. Experiments: Correct β€œ29 rounds” claim
  4. scripts/: Document 6 missing archive/indexer scripts

P2 β€” Medium (Nice to Have)

  1. autoresearch/results/: Document 18 missing result files
  2. src/: Document 6 missing files (mocks, scheduled-jobs)
  3. Code comments: Add inline references to vault notes

Appendix: Audit Methodology

AgentTaskStatus
Agent 1Git history completenessβœ… Complete
Agent 2Experiment data completenessβœ… Complete
Agent 3Migration historyβœ… Complete
Agent 4ADR accuracy vs codeβœ… Complete
Agent 5Code-to-wiki mapping (all dirs)βœ… Complete
Agent 6Test coverage in vaultβœ… Complete

All agents verified against actual source code in ./.