@agentikos/omega-os 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/bin/omega-os.js +48 -0
  4. package/bootstrap/lib/common.sh +73 -0
  5. package/bootstrap/lib/steps.sh +153 -0
  6. package/bootstrap/manifest.example.yaml +45 -0
  7. package/docs/ACCOUNT-AND-BILLING.md +95 -0
  8. package/docs/ARCHITECTURE.md +225 -0
  9. package/docs/AUTONOMOUS-AGENTS.md +128 -0
  10. package/docs/ENGINE-SPEC.md +174 -0
  11. package/docs/INSTALL.md +106 -0
  12. package/docs/MCP-AND-PLUGINS.md +121 -0
  13. package/docs/RUNTIME-PLAN.md +63 -0
  14. package/install.sh +54 -0
  15. package/omega/Agentik_Coding/README.md +21 -0
  16. package/omega/Agentik_Engine/README.md +58 -0
  17. package/omega/Agentik_Engine/omega_engine/__init__.py +58 -0
  18. package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
  19. package/omega/Agentik_Engine/omega_engine/__pycache__/audit.cpython-313.pyc +0 -0
  20. package/omega/Agentik_Engine/omega_engine/__pycache__/audit_arsenal.cpython-313.pyc +0 -0
  21. package/omega/Agentik_Engine/omega_engine/__pycache__/barrier.cpython-313.pyc +0 -0
  22. package/omega/Agentik_Engine/omega_engine/__pycache__/bus.cpython-313.pyc +0 -0
  23. package/omega/Agentik_Engine/omega_engine/__pycache__/cli.cpython-313.pyc +0 -0
  24. package/omega/Agentik_Engine/omega_engine/__pycache__/events.cpython-313.pyc +0 -0
  25. package/omega/Agentik_Engine/omega_engine/__pycache__/executor.cpython-313.pyc +0 -0
  26. package/omega/Agentik_Engine/omega_engine/__pycache__/mission.cpython-313.pyc +0 -0
  27. package/omega/Agentik_Engine/omega_engine/__pycache__/progress.cpython-313.pyc +0 -0
  28. package/omega/Agentik_Engine/omega_engine/__pycache__/project.cpython-313.pyc +0 -0
  29. package/omega/Agentik_Engine/omega_engine/__pycache__/provider.cpython-313.pyc +0 -0
  30. package/omega/Agentik_Engine/omega_engine/__pycache__/reducer.cpython-313.pyc +0 -0
  31. package/omega/Agentik_Engine/omega_engine/__pycache__/report.cpython-313.pyc +0 -0
  32. package/omega/Agentik_Engine/omega_engine/__pycache__/router.cpython-313.pyc +0 -0
  33. package/omega/Agentik_Engine/omega_engine/__pycache__/store.cpython-313.pyc +0 -0
  34. package/omega/Agentik_Engine/omega_engine/__pycache__/supervisor.cpython-313.pyc +0 -0
  35. package/omega/Agentik_Engine/omega_engine/__pycache__/task.cpython-313.pyc +0 -0
  36. package/omega/Agentik_Engine/omega_engine/__pycache__/telegram.cpython-313.pyc +0 -0
  37. package/omega/Agentik_Engine/omega_engine/audit.py +96 -0
  38. package/omega/Agentik_Engine/omega_engine/audit_arsenal.py +314 -0
  39. package/omega/Agentik_Engine/omega_engine/barrier.py +45 -0
  40. package/omega/Agentik_Engine/omega_engine/bus.py +45 -0
  41. package/omega/Agentik_Engine/omega_engine/cli.py +158 -0
  42. package/omega/Agentik_Engine/omega_engine/events.py +60 -0
  43. package/omega/Agentik_Engine/omega_engine/executor.py +167 -0
  44. package/omega/Agentik_Engine/omega_engine/mission.py +145 -0
  45. package/omega/Agentik_Engine/omega_engine/progress.py +75 -0
  46. package/omega/Agentik_Engine/omega_engine/project.py +92 -0
  47. package/omega/Agentik_Engine/omega_engine/provider.py +139 -0
  48. package/omega/Agentik_Engine/omega_engine/reducer.py +76 -0
  49. package/omega/Agentik_Engine/omega_engine/report.py +146 -0
  50. package/omega/Agentik_Engine/omega_engine/router.py +34 -0
  51. package/omega/Agentik_Engine/omega_engine/store.py +97 -0
  52. package/omega/Agentik_Engine/omega_engine/supervisor.py +69 -0
  53. package/omega/Agentik_Engine/omega_engine/task.py +91 -0
  54. package/omega/Agentik_Engine/omega_engine/telegram.py +115 -0
  55. package/omega/Agentik_Engine/pyproject.toml +31 -0
  56. package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313.pyc +0 -0
  57. package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313.pyc +0 -0
  58. package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313.pyc +0 -0
  59. package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313.pyc +0 -0
  60. package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313.pyc +0 -0
  61. package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313.pyc +0 -0
  62. package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313.pyc +0 -0
  63. package/omega/Agentik_Engine/tests/test_audit_arsenal.py +80 -0
  64. package/omega/Agentik_Engine/tests/test_executor.py +96 -0
  65. package/omega/Agentik_Engine/tests/test_mission.py +64 -0
  66. package/omega/Agentik_Engine/tests/test_progress.py +69 -0
  67. package/omega/Agentik_Engine/tests/test_project.py +61 -0
  68. package/omega/Agentik_Engine/tests/test_reducer.py +144 -0
  69. package/omega/Agentik_Engine/tests/test_report.py +88 -0
  70. package/omega/Agentik_Extra/README.md +37 -0
  71. package/omega/Agentik_Extra/etc/agentik.env.example +19 -0
  72. package/omega/Agentik_Extra/etc/structure.yaml +46 -0
  73. package/omega/Agentik_Orchestration/README.md +43 -0
  74. package/omega/Agentik_Orchestration/autonomous/README.md +29 -0
  75. package/omega/Agentik_Orchestration/autonomous/example-agents.yaml +85 -0
  76. package/omega/Agentik_Orchestration/educators/README.md +55 -0
  77. package/omega/Agentik_Orchestration/topologies/aisb-oracle-worker.yaml +42 -0
  78. package/omega/Agentik_Orchestration/verifier/audit-router.yaml +26 -0
  79. package/omega/Agentik_Providers/README.md +62 -0
  80. package/omega/Agentik_Providers/claude/accounts.example.yaml +28 -0
  81. package/omega/Agentik_Providers/registry.yaml +30 -0
  82. package/omega/Agentik_Runtime/README.md +30 -0
  83. package/omega/Agentik_SSOT/README.md +36 -0
  84. package/omega/Agentik_SSOT/VERSION +1 -0
  85. package/omega/Agentik_SSOT/audits/a11yaudit.yaml +69 -0
  86. package/omega/Agentik_SSOT/audits/apiaudit.yaml +71 -0
  87. package/omega/Agentik_SSOT/audits/automationaudit.yaml +77 -0
  88. package/omega/Agentik_SSOT/audits/codeaudit.yaml +63 -0
  89. package/omega/Agentik_SSOT/audits/copyaudit.yaml +68 -0
  90. package/omega/Agentik_SSOT/audits/dataaudit.yaml +76 -0
  91. package/omega/Agentik_SSOT/audits/debugaudit.yaml +75 -0
  92. package/omega/Agentik_SSOT/audits/dxaudit.yaml +78 -0
  93. package/omega/Agentik_SSOT/audits/featureaudit.yaml +73 -0
  94. package/omega/Agentik_SSOT/audits/flowaudit.yaml +72 -0
  95. package/omega/Agentik_SSOT/audits/logicaudit.yaml +75 -0
  96. package/omega/Agentik_SSOT/audits/motionaudit.yaml +67 -0
  97. package/omega/Agentik_SSOT/audits/perfaudit.yaml +71 -0
  98. package/omega/Agentik_SSOT/audits/refontaudit.yaml +77 -0
  99. package/omega/Agentik_SSOT/audits/retentionaudit.yaml +84 -0
  100. package/omega/Agentik_SSOT/audits/secaudit.yaml +73 -0
  101. package/omega/Agentik_SSOT/audits/seoaudit.yaml +75 -0
  102. package/omega/Agentik_SSOT/audits/uiuxaudit.yaml +61 -0
  103. package/omega/Agentik_SSOT/mcp/mcp-catalog.yaml +136 -0
  104. package/omega/Agentik_SSOT/rules/constitution.md +44 -0
  105. package/omega/Agentik_SSOT/schemas/event.schema.json +45 -0
  106. package/omega/Agentik_SSOT/schemas/task.schema.json +54 -0
  107. package/omega/Agentik_Tools/README.md +42 -0
  108. package/omega/Agentik_Tools/registry.json +15 -0
  109. package/package.json +43 -0
@@ -0,0 +1,71 @@
1
+ # apiaudit — OmegaOS Quality Arsenal definition.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: apiaudit
6
+ domain: api
7
+ question: "Does the API work CORRECTLY, CONSISTENTLY and SAFELY for every caller?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["**/api/**", "**/routes/**", "**/resolvers/**", "**/handlers/**", "*.openapi.yaml", "openapi.yaml", "swagger.json", "schema.graphql", "convex/**"]
14
+
15
+ # GATHER — deterministic API/contract tools, run first, no LLM.
16
+ gather:
17
+ - name: openapi-validate
18
+ cmd: "npx --no-install @redocly/cli lint {path} --format json || npx --no-install swagger-cli validate {path} || true"
19
+ when: "openapi.yaml,*.openapi.yaml,swagger.json"
20
+ - name: spectral-lint
21
+ cmd: "npx --no-install spectral lint {path} -f json || true"
22
+ when: "openapi.yaml,*.openapi.yaml,swagger.json,schema.graphql"
23
+ - name: route-grep
24
+ cmd: "grep -rnE \"(app|router)\\.(get|post|put|patch|delete)|export (async )?function (GET|POST|PUT|PATCH|DELETE)|@(app\\.)?(route|get|post)\" {path} || true"
25
+ when: "*.ts,*.tsx,*.js,*.py,*.go"
26
+ - name: auth-import-scan
27
+ cmd: "grep -rnE \"(getAuth|auth\\(\\)|requireAuth|withAuth|verifyToken|ctx\\.auth|passport|clerkMiddleware)\" {path} || true"
28
+ when: "*.ts,*.tsx,*.js,*.py"
29
+ - name: tsc
30
+ cmd: "npx --no-install tsc --noEmit || true"
31
+ when: "*.ts,*.tsx"
32
+
33
+ # PHASES — the agentic falsification pass investigates each.
34
+ phases:
35
+ - id: endpoint-inventory
36
+ checks: "Enumerate every route with its HTTP method; classify public vs authenticated vs admin; flag debug/test routes live in prod, duplicate routes, and verbs-in-paths breaking REST nouns."
37
+ - id: hinge-authentication
38
+ checks: "HINGE — for EVERY endpoint verify auth is enforced BEFORE any data access; send no-token / expired / malformed / other-user's-token; any 200 with data instead of 401/403 is a critical breach. Catch routes accidentally public via missing middleware."
39
+ - id: hinge-authorization
40
+ checks: "HINGE — test every endpoint with every role; admin routes reject regular users, user routes reject guests; resource-level ownership enforced (no IDOR); no privilege escalation via body params; field-level authz on sensitive fields; no mass assignment."
41
+ - id: input-validation
42
+ checks: "Every parameter on every endpoint — type, boundary (min/max length, range, array size, nesting depth), format (email/url/uuid), enum whitelist; Content-Type matches body; injection chars (SQL, NoSQL $ops, ../, shell) rejected."
43
+ - id: contract-compliance
44
+ checks: "Response envelope identical across endpoints (data/errors/meta); ISO-8601 dates; consistent null-vs-missing handling; no breaking changes (field removal, type change, new required field); GraphQL depth/complexity limits, introspection off in prod."
45
+ - id: status-codes
46
+ checks: "Correct codes per outcome — 201+Location on create, 204 on delete, 400 validation, 401 unauthenticated, 403 unauthorised, 404 missing, 409 conflict, 422 semantic, 429 rate-limited; never 200 for errors, never 500 for client mistakes."
47
+ - id: error-format
48
+ checks: "Every error has status + machine-parseable code + message; validation errors list ALL invalid fields; no stack traces / DB errors / internal paths leaked; no user enumeration (same error for existing vs non-existing); Retry-After on 429."
49
+ - id: rate-limiting
50
+ checks: "Global per-IP/user limit plus per-endpoint limits on expensive and auth operations; X-RateLimit-* and Retry-After headers present; tiered fairness for authenticated/paid callers; limits not bypassable via header spoofing."
51
+ - id: pagination
52
+ checks: "Every list endpoint paginated with a sane default and enforced max page size; cursor- or offset-based consistently; page metadata (cursor/total/hasNext) returned; empty page returns [] not 404."
53
+ - id: idempotency
54
+ checks: "GET/HEAD/OPTIONS truly side-effect free; PUT and DELETE idempotent on repeat; POST supports idempotency keys for money/critical ops; timeout+retry never creates duplicates or corrupts state."
55
+ - id: n-plus-one-perf
56
+ checks: "Count DB queries per API call — find N+1 (list endpoint issuing one query per row); dataloader/batching for GraphQL, eager loading for ORM relations; no SELECT *; response times within p95<1s budget."
57
+ - id: cors-webhooks
58
+ checks: "CORS Allow-Origin is a specific allowlist (no wildcard with credentials), only needed methods/headers; webhooks verify HMAC signature, enforce HTTPS, include event type + timestamp, retry with backoff."
59
+ - id: versioning-deprecation
60
+ checks: "API version communicated consistently; backward compatibility preserved or sunset announced; deprecated endpoints emit Deprecation/Sunset headers, still function during the window, and point callers to the replacement."
61
+
62
+ falsification: >
63
+ "It works in Postman" proves nothing — Postman has the token, correct headers
64
+ and the happy path. Every PASS must cite >=3 concrete requests run (no auth,
65
+ wrong role, malformed body, boundary value, concurrent calls) with verbatim
66
+ status + body. Categorise findings as HAPPY-vs-EDGE, ADMIN-vs-USER,
67
+ SINGLE-vs-CONCURRENT, SPEC-vs-REALITY or POSTMAN-vs-PRODUCTION. A static scan
68
+ reporting an "unauthenticated endpoint" must be confirmed by reading the
69
+ handler — auth may live in middleware the scan cannot see. Bias toward FAIL.
70
+
71
+ fix_loop: true
@@ -0,0 +1,77 @@
1
+ # automationaudit — OmegaOS Quality Arsenal definition.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: automationaudit
6
+ domain: automation
7
+ question: "Every cron is a promise, every script a liability, every daemon a lie — do they hold?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["*.sh", "*.py", "*.service", "*.timer", "Dockerfile", "*.yml", "*.yaml", "crontab", "*cron*"]
14
+
15
+ # GATHER — deterministic tools, run first, no LLM. Machine-checkable findings.
16
+ gather:
17
+ - name: shellcheck
18
+ cmd: "shellcheck -f json {path} 2>/dev/null || true"
19
+ when: "*.sh"
20
+ - name: bash-syntax
21
+ cmd: "bash -n {path} 2>&1 || true"
22
+ when: "*.sh"
23
+ - name: crontab-dump
24
+ cmd: "crontab -l 2>/dev/null || true"
25
+ when: "*"
26
+ - name: systemd-timers
27
+ cmd: "systemctl list-timers --all --no-pager 2>/dev/null || true"
28
+ when: "*.service,*.timer"
29
+ - name: secret-scan
30
+ cmd: "gitleaks detect --no-git --no-banner --report-format json --source {path} 2>/dev/null || grep -rnEi '(api[_-]?key|secret|password|passwd|token)[\"'\\'' ]*[:=][\"'\\'' ]*[A-Za-z0-9/+_-]{12,}' {path} || true"
31
+ when: "*.sh,*.py,*.yml,*.yaml"
32
+ - name: silenced-output
33
+ cmd: "grep -nE '>\\s*/dev/null\\s+2>&1|2>&1\\s*>\\s*/dev/null' {path} || true"
34
+ when: "*.sh"
35
+ - name: missing-strict-mode
36
+ cmd: "for f in {path}; do grep -q 'set -[a-z]*e' \"$f\" 2>/dev/null || echo \"$f: no 'set -e' strict mode\"; done || true"
37
+ when: "*.sh"
38
+
39
+ # PHASES — the agentic falsification pass investigates each, domain-specific.
40
+ phases:
41
+ - id: cron-health
42
+ checks: "Cron expressions valid; DST/timezone traps; journalctl proves actual run count matches schedule (gaps = silent failures); output captured not '>/dev/null'; overlap-locked; failure alerts wired."
43
+ - id: script-quality
44
+ checks: "Shebang correct; 'set -euo pipefail' present; passes shellcheck; variables quoted; 'cd' guarded with '|| exit'; Python venv + imports valid; bare-except swallows nothing."
45
+ - id: dependency-order
46
+ checks: "Map the timeline — script B reading A's output must have an EXPLICIT dependency (not 'scheduled 5min later'); pipeline stages gate on SUCCESS not just completion; clock-skew safe."
47
+ - id: error-recovery
48
+ checks: "Transient failures retried with bounded exponential backoff; partial failures logged-and-continued not aborted; killed mid-run can resume from checkpoint; timeouts set on curl/ssh; reboot survival."
49
+ - id: idempotency
50
+ checks: "Running twice produces no duplicates / double notifications / lock-collision crash; catch-up after downtime is safe (24 missed runs ≠ 24 simultaneous API calls); INSERT vs UPSERT correct."
51
+ - id: logging-monitoring
52
+ checks: "Every automation writes a timestamped structured log; log rotation configured (no unbounded disk bomb); failure escalates log→monitor→alert→human; dead-man's-switch alerts on non-execution."
53
+ - id: secret-exposure
54
+ checks: "No hardcoded keys/passwords/connection-strings in scripts; gitleaks clean on history; secrets not echoed in logs or 'set -x' traces; .env files chmod 600 and gitignored; rotation plan exists."
55
+ - id: daemon-health
56
+ checks: "Daemon actually running and systemd-enabled; CPU/RSS/FD not leaking; output/heartbeat fresh; Restart=on-failure policy; SIGTERM flushes buffers and releases locks; no OOM-kill history."
57
+ - id: race-conditions
58
+ checks: "Automations sharing files/APIs/tables/repos are flock-protected; atomic write (.tmp then mv); concurrent git access locked; API schedules staggered to avoid combined rate-limit breach."
59
+ - id: dead-automations
60
+ checks: "Cron entries point to existing scripts; no scripts that never ran (no log, stale mtime); commented-out crons explained; no orphaned log files; no deprecated automation still running alongside its replacement."
61
+ - id: dispatch-chains
62
+ checks: "Every dispatch chain (trigger→worker→completion) verifies completion via done-signal/exit-code; failure propagates not fire-and-forget; backpressure caps concurrency; orphaned workers detected."
63
+ - id: failure-cascade
64
+ checks: "Build the dependency graph; identify SPOFs and blast radius; disk-full/network-down/token-expired common failure modes; circuit breakers back off instead of hammering; global freeze switch exists."
65
+ - id: lock-management
66
+ checks: "Lock files have a max-age/staleness check (PID alive via 'kill -0'); cleanup trap on EXIT and crash; reboot clears stale locks; granularity avoids deadlock between mutually-waiting scripts."
67
+ - id: backup-portability
68
+ checks: "Backups exist, offsite, integrity-verified, restore actually tested with documented RTO/RPO; scripts use full tool paths (cron's minimal PATH); correct shebang vs syntax; tool availability checked."
69
+
70
+ falsification: >
71
+ Every automation lies — the cron says "every 5min" (prove it with journalctl), the log
72
+ says "completed successfully" (prove the output file is stale/empty), the daemon "is alive"
73
+ (prove the heartbeat is stale). Exit code 0 is NOT success. Categorise findings as
74
+ SCHEDULE-vs-REALITY, LOG-vs-TRUTH, DEPENDENCY-vs-ORDER, IDEMPOTENT-vs-DESTRUCTIVE,
75
+ ALIVE-vs-ZOMBIE, or SECRET-vs-EXPOSED. Every PASS cites ≥3 concrete commands with output.
76
+
77
+ fix_loop: true
@@ -0,0 +1,63 @@
1
+ # codeaudit — the reference Quality Arsenal definition for OmegaOS.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: codeaudit
6
+ domain: code
7
+ question: "Is the code SOLID — does every claim the code makes hold at runtime?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["*.py", "*.ts", "*.tsx", "*.js", "*.jsx", "*.go", "*.rs"]
14
+
15
+ # GATHER — deterministic tools, run first, no LLM. Machine-checkable findings.
16
+ gather:
17
+ - name: ruff
18
+ cmd: "ruff check --output-format=json {path} || true"
19
+ when: "*.py"
20
+ - name: py-compile
21
+ cmd: "python3 -m compileall -q {path} || true"
22
+ when: "*.py"
23
+ - name: eslint
24
+ cmd: "npx --no-install eslint -f json {path} || true"
25
+ when: "*.ts,*.tsx,*.js,*.jsx"
26
+ - name: tsc
27
+ cmd: "npx --no-install tsc --noEmit || true"
28
+ when: "*.ts,*.tsx"
29
+
30
+ # PHASES — the agentic falsification pass investigates each.
31
+ phases:
32
+ - id: phantoms
33
+ checks: "Dead code, unreachable branches, unused exports, orphan files, commented-out blocks."
34
+ - id: contracts
35
+ checks: "Names vs behaviour — does `validate` validate? does `save` persist? does `delete` remove?"
36
+ - id: data-flow
37
+ checks: "Trace every external input to its sink — find untrusted data reaching a query, shell, path or render unguarded."
38
+ - id: state-mutation
39
+ checks: "Shared mutable state, hidden globals, mutation through aliases, unenforced ordering assumptions."
40
+ - id: concurrency
41
+ checks: "Races, missing locks/awaits, parent finishing before children, double-execution, lost updates."
42
+ - id: error-propagation
43
+ checks: "Swallowed exceptions, errors logged but not handled, failure paths that silently succeed."
44
+ - id: blast-radius
45
+ checks: "If this module breaks, what else dies? Identify the hinge point; prove its defenses exist."
46
+ - id: time-bombs
47
+ checks: "Hardcoded dates, expiring tokens, size limits, retry loops with no ceiling, resources never released."
48
+ - id: contract-vs-type
49
+ checks: "Type annotations vs runtime reality — a `str` param that receives `None`; a return shape the type denies."
50
+ - id: feature-verification
51
+ checks: "Does the feature the code claims actually work end to end, or is it a stub wired to nothing?"
52
+ - id: test-coverage
53
+ checks: "Are failure modes tested, or only the happy path? Do tests assert behaviour or merely run it?"
54
+ - id: resilience
55
+ checks: "Behaviour under bad input, network failure, empty data, concurrent callers — what breaks first?"
56
+
57
+ falsification: >
58
+ Every PASS must cite at least 3 concrete checks with their actual output.
59
+ Categorise every finding as CLAIM-vs-REALITY, PROMISE-vs-DELIVERY, or
60
+ CONTRACT-vs-BEHAVIOUR. Bias toward FAIL — a 100 is earned by finding zero
61
+ falsifiable claims, never assumed.
62
+
63
+ fix_loop: true
@@ -0,0 +1,68 @@
1
+ # copyaudit — Quality Arsenal definition for OmegaOS.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: copyaudit
6
+ domain: copy
7
+ question: "Is the copy CLEAR — does every word earn its place and every claim hold?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["*.tsx", "*.jsx", "*.html", "*.md", "*.mdx", "*.json"]
14
+
15
+ # GATHER — deterministic copy detectors, run first, no LLM. Machine-checkable findings.
16
+ gather:
17
+ - name: hardcoded-strings
18
+ cmd: "grep -rnE '>[A-Z][a-z]+[ A-Za-z]{6,}<|placeholder=\"[A-Z]' {path} || true"
19
+ when: "*.tsx,*.jsx"
20
+ - name: i18n-wrappers
21
+ cmd: "grep -rnE 't\\(|i18n|<Trans|useTranslation|__\\(' {path} || true"
22
+ when: "*.tsx,*.jsx,*.ts,*.js"
23
+ - name: banned-marketing-phrases
24
+ cmd: "grep -rniE 'something went wrong|click here|learn more|cutting-edge|revolutionary|blazing fast|world.?class|game.?changer' {path} || true"
25
+ when: "*"
26
+ - name: generic-cta-labels
27
+ cmd: "grep -rnE '>(Submit|Click here|Learn more|Get Started|Continue|OK)<' {path} || true"
28
+ when: "*.tsx,*.jsx,*.html"
29
+
30
+ # PHASES — the agentic falsification pass investigates each.
31
+ phases:
32
+ - id: headline-clarity
33
+ checks: "The 5-second test on every H1 — can a stranger answer what/who/why in 5 seconds? No 'Welcome to' or 'About Us' as H1."
34
+ - id: value-proposition
35
+ checks: "Is the value prop stated, consistent across pages, differentiated, and ACTUALLY deliverable in a new user's first session?"
36
+ - id: claim-verification
37
+ checks: "THE HINGE — every factual/subjective/social-proof/comparison claim falsified; PROMISE-vs-REALITY. 'fast' must be fast, 'secure' must have security."
38
+ - id: cta-effectiveness
39
+ checks: "Action+benefit labels not 'Submit'; CTA destination matches the label ('Get Started' goes to getting started, not pricing); one primary CTA per section."
40
+ - id: tone-consistency
41
+ checks: "One brand voice across marketing, product, errors, email — no 'fun and casual' marketing with 'cold and corporate' product copy."
42
+ - id: technical-accuracy
43
+ checks: "Every described feature exists and behaves as described; screenshots show current UI; comparison tables fair and current."
44
+ - id: grammar-spelling
45
+ checks: "Zero typos and grammatical errors in user-facing copy; consistent punctuation, capitalization, number and date formats; product name spelled correctly."
46
+ - id: reading-level
47
+ checks: "Flesch-Kincaid grade <=8 marketing / <=10 product; sentences <20 words; active voice; jargon simplified or explained; acronyms expanded on first use."
48
+ - id: microcopy
49
+ checks: "Button labels describe their action; error messages say what went wrong AND how to fix it; empty states teach; success states confirm and suggest next step."
50
+ - id: social-proof
51
+ checks: "Testimonials from real identifiable people; user counts and ratings accurate and current; 'as seen in' logos correspond to actual coverage."
52
+ - id: legal-compliance
53
+ checks: "Required disclaimers (pricing taxes/billing, trial auto-renewal); no deceptive dark patterns in copy; no false competitor claims; unsubscribe instructions clear."
54
+ - id: copy-accessibility
55
+ checks: "Link text makes sense out of context; inclusive non-ableist gender-neutral language; instructions simple and direct; diverse names in examples."
56
+ - id: brand-voice
57
+ checks: "Voice recognizable without seeing the brand, appropriate for the audience, never sacrificing clarity for personality."
58
+ - id: i18n-readiness
59
+ checks: "User-facing strings extractable via t()/_()/<Trans> when the project has i18n infrastructure; hardcoded English strings flagged."
60
+
61
+ falsification: >
62
+ Every claim is a hypothesis — attempt to disprove it. Every PASS must cite at
63
+ least 3 concrete checks with actual output. Categorise findings as
64
+ PROMISE-vs-REALITY, CLARITY-vs-CONFUSION, TONE-vs-AUDIENCE, CLAIM-vs-EVIDENCE,
65
+ or CTA-vs-ACTION. "Nobody reads the copy" is never the user's fault — it means
66
+ the copy failed. Bias toward FAIL — a claim without evidence is a lie until proven.
67
+
68
+ fix_loop: true
@@ -0,0 +1,76 @@
1
+ # dataaudit — OmegaOS Quality Arsenal definition.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+ # DESTRUCTIVE-AWARE: any fix that mutates data must snapshot/backup first.
5
+
6
+ id: dataaudit
7
+ domain: data
8
+ question: "Is the data TRUTHFUL — every reference valid, every type correct, every transaction whole?"
9
+ weight: 1.0
10
+ threshold: 85
11
+
12
+ applies_to:
13
+ roles: [worker]
14
+ changed: ["**/schema.ts", "**/schema.prisma", "prisma/**", "**/migrations/**", "*.sql", "**/db/**", "convex/schema.ts", "**/models/**"]
15
+
16
+ # GATHER — deterministic schema/migration tools, run first, no LLM.
17
+ gather:
18
+ - name: prisma-validate
19
+ cmd: "npx --no-install prisma validate --schema {path} || true"
20
+ when: "schema.prisma,**/schema.prisma"
21
+ - name: drizzle-check
22
+ cmd: "npx --no-install drizzle-kit check || true"
23
+ when: "**/db/**,drizzle.config.ts"
24
+ - name: convex-schema-check
25
+ cmd: "npx --no-install convex dev --once --skip-push || true"
26
+ when: "convex/schema.ts"
27
+ - name: sql-ddl-scan
28
+ cmd: "grep -rncE \"CREATE TABLE|CREATE INDEX|FOREIGN KEY|REFERENCES|NOT NULL|ON DELETE\" {path} || true"
29
+ when: "*.sql"
30
+ - name: migration-inventory
31
+ cmd: "ls -la {path} 2>/dev/null || true"
32
+ when: "**/migrations/**"
33
+ - name: sqlite-integrity
34
+ cmd: "for f in $(find {path} -name '*.db' -o -name '*.sqlite' 2>/dev/null); do sqlite3 \"$f\" 'PRAGMA integrity_check; PRAGMA foreign_key_check;'; done || true"
35
+ when: "*"
36
+
37
+ # PHASES — the agentic falsification pass investigates each.
38
+ phases:
39
+ - id: schema-validation
40
+ checks: "Schema definitions match the TypeScript/Python types and the columns the code references; NOT NULL / UNIQUE / CHECK / DEFAULT constraints present where business logic demands; consistent naming; enums in schema match enums in code."
41
+ - id: migration-status
42
+ checks: "All migrations applied in order, none pending/failed/stuck; new columns backfilled for existing rows; renamed columns migrated; destructive migrations have a rollback path and were batched for large tables."
43
+ - id: hinge-orphaned-records
44
+ checks: "HINGE — for every foreign key/reference run the LEFT JOIN where the referenced row is NULL; count orphans, date when they appeared, find root cause (missing cascade, race, bug); include file/storage refs pointing to nothing and soft-delete orphans."
45
+ - id: hinge-referential-integrity
46
+ checks: "HINGE — FK constraints enforced at DB level not just app; cross-table aggregates match details (order_total = SUM(items)); temporal sanity (created_at <= updated_at, child not before parent); every business invariant holds in actual data."
47
+ - id: type-safety
48
+ checks: "Runtime values match declared types — string columns holding JSON/numbers, number columns holding strings, booleans as 0/1, dates as strings; Convex v.* validators and v.optional() match reality; coercion risks (string sort on numeric column)."
49
+ - id: null-handling
50
+ checks: "Null percentage per column; required fields containing nulls; nullable fields that should be required; consistent null semantics (not-set vs N/A vs unknown); empty-string-vs-null and 0-vs-null picked consistently; null behaviour in aggregates and joins."
51
+ - id: data-consistency
52
+ checks: "Denormalised/cached values match source of truth (full_name vs first+last, post_count vs COUNT); cross-service data matches (auth provider, payment provider, search index); enum values current, no deprecated values lingering; format consistency."
53
+ - id: duplicate-detection
54
+ checks: "Exact duplicates (same entity, different IDs), near-duplicates (casing/formatting differences in email/phone); unique indexes on natural keys; idempotency keys on writes; a defined merge strategy when duplicates exist."
55
+ - id: cascade-behavior
56
+ checks: "Parent deletion cascades correctly without creating orphans and without cascading too broadly; status/key changes propagate; RESTRICT/SET NULL/SET DEFAULT chosen deliberately per relationship; soft-delete cascade respected."
57
+ - id: transaction-integrity
58
+ checks: "Multi-step operations (payment+order, user+profile) wrapped in transactions; optimistic locking prevents lost updates; counter increments and inventory decrements atomic; failed transactions fully rolled back; webhook/import handlers idempotent."
59
+ - id: index-and-query
60
+ checks: "Columns in WHERE/JOIN/ORDER BY and all FK columns indexed; no unused or duplicate indexes; composite index column order matches query patterns; full table scans and N+1 query patterns identified."
61
+ - id: pii-lifecycle-backup
62
+ checks: "Inventory every PII column; PII encrypted at rest and masked in non-prod, not leaking into logs/errors/search indexes; TTL on sessions/tokens/logs; retention policy and GDPR right-to-deletion implemented; automated backups exist and a restore was actually tested."
63
+ - id: seed-data-separation
64
+ checks: "No seed/test data in production (test@example.com accounts, Lorem ipsum, default passwords); production data absent from dev DBs or anonymised; no production credentials in test fixtures."
65
+
66
+ falsification: >
67
+ "No errors in production" means nobody counted. Every PASS must cite >=3
68
+ concrete queries run (the orphan LEFT JOIN with row count, the invariant
69
+ check, the type cast attempt) with verbatim output — never assume integrity.
70
+ Categorise findings as SCHEMA-vs-REALITY, REFERENCE-vs-EXISTENCE,
71
+ TYPE-vs-VALUE, MIGRATION-vs-STATE or DEV-vs-PROD. A reported orphan must be
72
+ verified: confirm the FK was meant to cascade or that an actual user action
73
+ deleted the parent. Any data-mutating fix MUST snapshot the DB first; restore
74
+ on any post-fix check failure. Bias toward FAIL — data loss is permanent.
75
+
76
+ fix_loop: true
@@ -0,0 +1,75 @@
1
+ # debugaudit — OmegaOS Quality Arsenal definition.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: debugaudit
6
+ domain: runtime
7
+ question: "What is already BROKEN right now — and nobody noticed because it failed silently?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ # Runtime bugs can hide behind any change — always run this audit.
12
+ applies_to:
13
+ roles: [worker]
14
+ changed: ["*"]
15
+
16
+ # GATHER — deterministic tools, run first, no LLM. Machine-checkable findings.
17
+ gather:
18
+ - name: tsc
19
+ cmd: "npx --no-install tsc --noEmit 2>&1 || true"
20
+ when: "*.ts,*.tsx"
21
+ - name: build
22
+ cmd: "npm run build 2>&1 | tail -60 || true"
23
+ when: "*.ts,*.tsx,*.js,*.jsx"
24
+ - name: py-syntax
25
+ cmd: "python3 -m compileall -q {path} 2>&1 || true"
26
+ when: "*.py"
27
+ - name: dep-vulns
28
+ cmd: "npm audit --json 2>/dev/null || true"
29
+ when: "package.json,*.ts,*.tsx,*.js,*.jsx"
30
+ - name: env-placeholders
31
+ cmd: "grep -rnEi '(TODO|change-?me|xxx+|your-?key-?here|placeholder)' .env .env.local .env.production 2>/dev/null || true"
32
+ when: "*"
33
+ - name: swallowed-errors
34
+ cmd: "grep -rnE 'catch *\\([a-zA-Z_]*\\) *\\{ *\\}|\\.catch\\(\\(\\) *=> *(null|undefined|\\{\\}|\\[\\])\\)' --include='*.ts' --include='*.tsx' --include='*.js' --include='*.jsx' {path} || true"
35
+ when: "*.ts,*.tsx,*.js,*.jsx"
36
+
37
+ # PHASES — the agentic falsification pass investigates each, domain-specific.
38
+ phases:
39
+ - id: console-errors
40
+ checks: "Load every page; capture console errors, warnings, unhandled rejections, framework errors (hydration, key warnings); separate load-time from interaction-time failures."
41
+ - id: network-failures
42
+ checks: "Capture all requests; flag 4xx/5xx, requests >3s, hung requests, duplicate fetches, CORS errors, mixed content, expected API calls that never fire."
43
+ - id: visual-regressions
44
+ checks: "Screenshot each page; detect horizontal overflow, overlapping elements, cut-off text, broken images, stuck loading states, misaligned/off-grid elements, FOUC."
45
+ - id: responsive-breakage
46
+ checks: "Test 320/375/768/1024/1440/1920; flag horizontal overflow, touch targets <44px, unreadable text, broken hamburger nav, modals overflowing the viewport."
47
+ - id: dead-features
48
+ checks: "Click every button/link — does the expected thing happen with feedback? Forms submit, validate, reset; nav links lead somewhere; no handlers wired to nothing."
49
+ - id: state-corruption
50
+ checks: "Create/update then refresh — does data persist? Two tabs stay consistent? Optimistic updates actually committed and reverted on failure? Sessions survive reload."
51
+ - id: race-conditions
52
+ checks: "Double-click submit/delete; rapid navigation; concurrent edits in two tabs; interrupt async ops mid-flight — find duplicate creation, stale data, orphan state."
53
+ - id: security-injection
54
+ checks: "XSS payloads in every input/param/hash (script, img onerror, template {{7*7}}); SQL/NoSQL injection in filters; IDOR via predictable IDs; CSRF token presence; open redirects."
55
+ - id: auth-bypass
56
+ checks: "Protected routes redirect unauthenticated; expired/tampered tokens rejected; role escalation blocked at API not just UI; sessions rotate on login and die on logout."
57
+ - id: api-contract-drift
58
+ checks: "Frontend types vs actual response shape; null/undefined/missing-field inconsistency; error format consistency across endpoints; HTTP status correctness (200-on-error is a lie)."
59
+ - id: data-integrity
60
+ checks: "Roundtrip: create then read back — special chars, unicode, numbers preserved exactly? Delete-parent cascade behaviour; created items immediately searchable."
61
+ - id: error-handling
62
+ checks: "Kill an API mid-request, return malformed JSON, force 500 — does the app degrade gracefully or white-screen? Error boundaries show recoverable messages? Offline handled?"
63
+ - id: log-forensics
64
+ checks: "Read the last 1000 log lines; repeated identical errors = systemic; retry storms; OOM/connection-pool warnings; verify logger level is INFO+ (WARNING-only = 80% blind)."
65
+ - id: chaos-edge-cases
66
+ checks: "Max file upload, 10k-char input, 1000 items; throttled 3G; empty strings and NULL in every field; epoch/far-future dates; 0.00 and MAX currency values — what crashes?"
67
+
68
+ falsification: >
69
+ The system lies — "no console errors" means errors are swallowed, "all green" means
70
+ monitoring missed the silent failure. Categorise findings as HEALTH-vs-REALITY,
71
+ LOG-vs-TRUTH, UI-vs-DATA, RESPONSE-vs-EXPECTATION, or SPEED-vs-ACCEPTABLE. For every
72
+ "healthy" claim construct a falsification test that COULD fail; if it cannot fail it is
73
+ useless. Bias toward finding the silent failure — loud failures were already caught.
74
+
75
+ fix_loop: true
@@ -0,0 +1,78 @@
1
+ # dxaudit — Quality Arsenal definition for OmegaOS.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: dxaudit
6
+ domain: dx
7
+ question: "Is the DX SMOOTH — can a new developer go from git clone to first contribution within a day?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["*"]
14
+
15
+ # GATHER — deterministic DX-surface detectors, run first, no LLM. Machine-checkable findings.
16
+ gather:
17
+ - name: readme-present
18
+ cmd: "ls -1 README.md README.rst readme.md 2>/dev/null && wc -l README.md 2>/dev/null || true"
19
+ when: "*"
20
+ - name: dx-docs
21
+ cmd: "ls -1 CONTRIBUTING.md CHANGELOG.md SECURITY.md CODE_OF_CONDUCT.md .env.example .env.template .editorconfig 2>/dev/null || true"
22
+ when: "*"
23
+ - name: tsconfig-strict
24
+ cmd: "grep -nE 'strict|noImplicitAny|strictNullChecks|noUncheckedIndexedAccess' tsconfig.json 2>/dev/null || true"
25
+ when: "*.ts,*.tsx"
26
+ - name: type-escape-hatches
27
+ cmd: "grep -rnE ': any\\b|@ts-ignore|@ts-nocheck|# type: ignore' {path} || true"
28
+ when: "*.ts,*.tsx,*.py"
29
+ - name: ci-config
30
+ cmd: "ls -1 .github/workflows/ .gitlab-ci.yml .circleci/ 2>/dev/null || true"
31
+ when: "*"
32
+ - name: lockfile-and-hooks
33
+ cmd: "ls -1 package-lock.json pnpm-lock.yaml bun.lockb yarn.lock poetry.lock .husky/ .pre-commit-config.yaml 2>/dev/null || true"
34
+ when: "*"
35
+ - name: dep-audit
36
+ cmd: "npm audit --json 2>/dev/null || true"
37
+ when: "*.ts,*.tsx,*.js,*.jsx"
38
+
39
+ # PHASES — the agentic falsification pass investigates each.
40
+ phases:
41
+ - id: readme-quality
42
+ checks: "THE HINGE — README has description, prerequisites, copy-pasteable install/run, env vars, architecture, troubleshooting; can a dev reach a running app in <10 min?"
43
+ - id: setup-complexity
44
+ checks: "THE HINGE — count manual steps from clone to running (target <5); .env.example exists with every var documented; Docker Compose for local services; one-command setup."
45
+ - id: error-messages
46
+ checks: "Build/runtime errors give actionable guidance — name the missing var/service/dependency and how to fix it, not 'ENOENT' or a raw stack trace."
47
+ - id: typescript-strictness
48
+ checks: "tsconfig strict:true (or mypy/clippy strict); no widespread 'any'; no @ts-ignore without a comment; explicit return types on exported functions."
49
+ - id: code-documentation
50
+ checks: "Exported functions have JSDoc/docstrings with params and returns; architecture documented; 'why' comments on non-obvious logic; docs match current code."
51
+ - id: testing-infrastructure
52
+ checks: "Test runner works with one command; coverage reported; tests deterministic, fast (<5min), independent; watch mode and single-test runnable."
53
+ - id: ci-cd-pipeline
54
+ checks: "All PRs run CI (lint+typecheck+test+build); CI <10min; CD automated on merge; main branch protected; no flaky CI."
55
+ - id: dependency-management
56
+ checks: "Lock file committed; no critical vulnerabilities; no abandoned deps (last release >2y); Renovate/Dependabot configured; pinning strategy defined."
57
+ - id: dev-tooling
58
+ checks: "Linter and formatter configured and run automatically; pre-commit hooks fast (<10s); .editorconfig present; recommended editor extensions documented."
59
+ - id: environment-parity
60
+ checks: "Dev/staging/prod differences documented; same runtime and DB versions; no hardcoded URLs/ports/credentials; config validated on startup (fail fast)."
61
+ - id: debug-tooling
62
+ checks: "Structured logging with levels; debugger config (launch.json) checked in; source maps work; DB queries and API requests visible in dev."
63
+ - id: monorepo-structure
64
+ checks: "Workspace config if monorepo with clear package boundaries and build cache; logical feature-organized directory structure; no circular deps; no utils dumping ground."
65
+ - id: migration-changelog
66
+ checks: "Major-version upgrade guides with breaking changes and fixes; CHANGELOG maintained in Keep-a-Changelog format; reversible versioned DB migrations."
67
+ - id: contribution-guide
68
+ checks: "CONTRIBUTING.md with bug/feature/PR process, branch and commit conventions; 'good first issue' path; architecture overview for newcomers."
69
+
70
+ falsification: >
71
+ The README lies until proven true — follow every setup instruction LITERALLY
72
+ on a fresh clone; any step that fails, is unclear, or is missing means the
73
+ README failed. Every PASS must cite at least 3 concrete checks with actual
74
+ output. Categorise findings as README-vs-REALITY, LOCAL-vs-CI, FIRST-vs-REPEAT,
75
+ HAPPY-vs-ERROR, or EXPERT-vs-NEWCOMER. "Ask in Slack" is not documentation —
76
+ if knowledge is not in the repo it does not exist. Bias toward FAIL.
77
+
78
+ fix_loop: true
@@ -0,0 +1,73 @@
1
+ # featureaudit — Quality Arsenal definition for OmegaOS.
2
+ # Compact + structured: the Gestalt-Popper shell lives in omega_engine.audit_arsenal;
3
+ # this file supplies only the domain — gather tools, phases, falsification rules.
4
+
5
+ id: featureaudit
6
+ domain: features
7
+ question: "Is the product COMPLETE — does everything that SHOULD exist actually exist and run deep?"
8
+ weight: 1.0
9
+ threshold: 85
10
+
11
+ applies_to:
12
+ roles: [worker]
13
+ changed: ["*"]
14
+
15
+ # GATHER — deterministic stub/gap detectors, run first, no LLM. Machine-checkable findings.
16
+ gather:
17
+ - name: stub-markers
18
+ cmd: "grep -rnE 'coming soon|not implemented|not yet|placeholder|TODO|FIXME|XXX|HACK|WIP' {path} || true"
19
+ when: "*"
20
+ - name: noop-handlers
21
+ cmd: "grep -rnE 'on[A-Z][A-Za-z]+=\\{?\\(\\s*\\)\\s*=>\\s*\\{?\\s*\\}|return null|return NextResponse.json\\(\\{\\}\\)|return new Response\\(\\)' {path} || true"
22
+ when: "*.tsx,*.jsx,*.ts,*.js"
23
+ - name: mock-data
24
+ cmd: "grep -rnE 'mockData|fakeData|dummyData|MOCK_|FAKE_|TEST_DATA|lorem ipsum|hardcoded' {path} || true"
25
+ when: "*"
26
+ - name: feature-flags
27
+ cmd: "grep -rnE 'featureFlag|FEATURE_|isEnabled|flags\\.' {path} || true"
28
+ when: "*.ts,*.tsx,*.js,*.jsx,*.py"
29
+ - name: prd-sources
30
+ cmd: "ls -1 VISION.md PRD.md docs/PRD.md docs/prd.md README.md 2>/dev/null || true"
31
+ when: "*"
32
+
33
+ # PHASES — the agentic falsification pass investigates each.
34
+ phases:
35
+ - id: hinge-capability
36
+ checks: "Identify the ONE capability this product must do better than anything else; is it implemented end-to-end and deep, or shallow?"
37
+ - id: prd-compliance
38
+ checks: "For every feature promised in PRD/VISION/README, find a code trace; PROMISED-vs-BUILT — does it work AS described, not a different interpretation?"
39
+ - id: empty-implementation
40
+ checks: "Stub routes, no-op handlers, buttons that do nothing, handlers returning success but persisting nothing — visible but non-functional."
41
+ - id: feature-depth
42
+ checks: "For each feature score depth: happy path, edge cases, error handling, configuration, integration — SHALLOW-vs-DEEP."
43
+ - id: edge-case-coverage
44
+ checks: "The Universal 10 per feature — zero/one/many/overflow states, special chars, long text, concurrent, mobile, offline; does each non-happy input survive?"
45
+ - id: partial-crud
46
+ checks: "For each entity, do all of Create/Read/Update/Delete exist? Partial CRUD, partial export/import, partial search are LABELED-vs-CAPABLE gaps."
47
+ - id: competitive-parity
48
+ checks: "Table-stakes features all competitors have but this product lacks; differentiators hidden from the UI — MARKETED-vs-DELIVERED."
49
+ - id: discoverability
50
+ checks: "Clicks from main page to each feature, primary-nav presence, search/command-palette access, onboarding mention — a feature nobody finds is unused."
51
+ - id: feature-coherence
52
+ checks: "Do features share data and patterns, or are they silos with duplicate data entry and inconsistent interactions?"
53
+ - id: api-surface
54
+ checks: "CRUD coverage, query/filter/sort capability, bulk ops, webhook/event emission — if it is not in the API it does not exist for power users."
55
+ - id: permission-matrix
56
+ checks: "For every entity x operation x role, is access enforced? Missing permission checks, over-permissive defaults, missing role tiers."
57
+ - id: data-model-gaps
58
+ checks: "Schema gaps — missing tenancy field, audit trail, soft-delete, version field, indexes on filtered columns."
59
+ - id: scaling-readiness
60
+ checks: "Features that work now but break at 10x — unpaginated lists, full-table scans, sync ops that should be async, no rate limiting."
61
+ - id: feature-entropy
62
+ checks: "Terminology drift, verb drift, inconsistent confirm/save patterns, mixed modal/drawer/route for the same flow."
63
+
64
+ falsification: >
65
+ The product claims to be ready/launched/v1 — DISPROVE it. Every PASS must
66
+ cite at least 3 concrete checks with actual output (route renders non-placeholder
67
+ content, handler persists to real backend, sub-requirements have code branches).
68
+ Categorise findings as PROMISED-vs-BUILT, VISIBLE-vs-FUNCTIONAL, SHALLOW-vs-DEEP,
69
+ or LABELED-vs-CAPABLE. TODO comments, "coming soon" strings, permanently-off flags,
70
+ and routes returning 404/501 are NOT evidence of a feature. Bias toward FAIL —
71
+ the product is incomplete until proven complete.
72
+
73
+ fix_loop: true