# Dataforth DOS — Project State

> READ THIS before starting work on this project.
> UPDATE THIS when you begin work (claim a lock) and when you finish (release lock + log changes).
> Last updated: 2026-05-12

---

## Active Session Locks

| Session | Working On | Status | Started |
|---------|-----------|--------|---------|
| _(none active)_ | | | |

**How to claim a lock:** Add a row before starting work. Remove it when done. Locks older than 2 hours with no update are considered stale.

---

## Current State

**Status:** ACTIVE / DEPLOYED
**Last Activity:** 2026-05-12

Pipeline is healthy and fully operational. testdatadb service running on AD2 (PostgreSQL backend, 469K records, 458K on website). Daily scheduled task (`DataforthTestDatasheetUploader`) runs at 02:30 AM and ran clean this morning (16 created, 9 updated, 0 errors). Email notification code deployed — blocked on M365 SMTP AUTH configuration (AJ must enable "Authenticated SMTP" for sysadmin@dataforth.com in Exchange Admin Center, or create an Entra app with Mail.Send). See CONTEXT.md for details.

---

## Infrastructure / Access

| Component | IP/Location | Notes |
|-----------|-------------|-------|
| AD2 (primary) | 192.168.0.6 | Windows Server 2022, hosts testdatadb service on port 3000 |
| AD1 | 192.168.0.27 | Hosts Engineering share at \\AD1\Engineering |
| D2TESTNAS | 192.168.0.9 | SMB1 only — bridge for DOS test stations |
| VPN required | FortiClient | Must be connected to reach 192.168.0.x |

**Service:** `testdatadb` on AD2, account `INTRANET\svc_testdatadb`, working dir `C:\Shares\testdatadb`, API port 3000.
**Database:** SQLite at `C:\Shares\testdatadb\database/testdata.db` (4.1 GB, not in git).
**Web output:** `\\ad2\webshare\For_Web` (NOT `X:\For_Web` in SSH sessions).

**Credentials:**
```bash
# AD2 password (strip backslash escape)
bash D:/vault/scripts/vault.sh get-field clients/dataforth/ad2.sops.yaml credentials.password | sed 's/\\//g'
# AD1 password
bash D:/vault/scripts/vault.sh get-field clients/dataforth/ad1.sops.yaml credentials.password
```

**Anti-patterns:** See `CONTEXT.md` — especially: no X: drive in SSH, no 50+ args on PowerShell, no hardcoded passwords, no SMB1 on AD2.

---

## Pending / Next Up

- [ ] **BLOCKER (email):** AJ enable "Authenticated SMTP" for sysadmin@dataforth.com in Exchange Admin Center (https://admin.exchange.microsoft.com → Mailboxes → sysadmin → Manage mail flow settings → Authenticated SMTP). Once done, re-run test email to confirm, then add jlehman@dataforth.com to TO list in notify.js and run-pipeline.ps1.
- [ ] After email confirmed working: add John Lehman (jlehman@dataforth.com) to notify.js `TO` constant and run-pipeline.ps1 `SendEmail -To` list. Redeploy both.
- [ ] Clean vault entry: ad2.sops.yaml has stale backslash in password (remove `\` escape)
- [ ] Clean up diagnostic scripts from C:\Shares\testdatadb\database\ (all underscore-prefixed files from 2026-04-15 session)

---

## Recent Changes

| Date | By | Change | Status |
|------|-----|--------|--------|
| 2026-05-12 | Mike | Email notifications: nodemailer deployed, credentials.json SMTP creds, run-pipeline.ps1 summary email, TEST-DATASHEET-PROCESS.md docs, CONTEXT.md updated | DEPLOYED (blocked on M365 SMTP AUTH) |
| 2026-04-22 | Mike | Modifications to import.js, notify.js, upload-to-api.js (undocumented session) | DEPLOYED |
| 2026-04-15 | Mike | DB dedup (2.89M→469K), FAIL→PASS rule, For_Web eliminated, 170,984 records pushed to Hoffman, dashboard UI | DEPLOYED |
| 2026-04-12 | Mike | SCMVAS/SCMHVAS pipeline: new VASLOG parser, accuracy-only template, 27,503 records backfilled, 434 ENG txt files imported | DEPLOYED |
| 2026-04-11 | Mike | Discovery session: explored VASLOG .DAT format, hvin.dat binary structure | RESEARCH |

---

## How to Update

**When starting:** Add your session to Active Session Locks (Session = "User/Machine", e.g. "Mike/DESKTOP-0O8A1RL").
**When finishing:** Remove your lock row, add entries to Recent Changes, update Current State if needed.
