August 6, 2026Latest
Working security contact, and a documentation accuracy pass
Our published security contact no longer goes to a dead mailbox. SECURITY.md and .well-known/security.txt advertised security@xentr.ai, but the xentr.ai domain has no inbound mail configured — any vulnerability report sent there was silently lost. Both files now point at a monitored address. We also corrected the repository documentation that had drifted away from the actual codebase, so that anyone (or any coding agent) reading it is pointed at code that still exists.
Technical details
Security contact. dig MX xentr.ai returns nothing — only send.xentr.ai has an MX record, and that is outbound-only (SES/Resend). Every address at the apex domain, including security@ and support@, was undeliverable. SECURITY.md and .well-known/security.txt now use victorlee@vigordigital.org, which is on live Lark MX and is already the destination the consultation endpoint mails to. SECURITY.md also promised advisories under a docs/security-advisories/ directory that was never created; it now points at GitHub Security Advisories. Documentation accuracy. - apps/web/CLAUDE.md routed dashboard and auth work to apps/app, an app deleted on 2026-05-17. Now points at apps/mimos. - README.md listed apps/app/ as a live directory while a later section described it as deleted, and hard-coded migration counts that were wrong (29 vs 80 Drizzle files, 3 vs 7 TimescaleDB). The repository tree is now accurate and no longer quotes counts that go stale on every migration. Its duplicate "Project layout" section was folded into the tree above it. - VIGOR-DEVIATIONS.md had three deviations whose quarterly review lapsed on 2026-07-18. Each was re-verified as still accurate (Supabase Auth in use with no BetterAuth, Drizzle with no Prisma, no GraphQL dependencies or source tree) and re-dated. - Rule 39's wording claimed AuditService is injected into every mutating *controller*; in practice it is injected at the service layer in 26 services versus 9 of 45 controllers. The two mutating-looking endpoints with no audit write — consultation/submit and device-types/match — were confirmed to be POST-shaped non-mutations and are correctly exempt. - docs/plan-edge-mtls.md cited .planning/p6-cutover-runbook.md, a path that does not exist; repointed at edge/xentr-fanuc/docs/CLOUD-CUTOVER-RUNBOOK.md. - The aidesigner skill instructions existed as two byte-identical copies; .agents/skills/… is now a symlink to the .claude/skills/… original, matching the existing AGENTS.md → CLAUDE.md pattern.





