Commit Graph
12 Commits
Author SHA1 Message Date
spencermandClaude Opus 5.5 8fb0818092 Remove the vsql certificate script, its tests and its DEPLOY.md procedure
ci / frontend (pull_request) Successful in 1m36s
ci / server (pull_request) Successful in 14m22s
ci / image (pull_request) Skipped
ci / e2e (pull_request) Failing after 35s
IT issues and binds the vsql certificate by hand. Gitea issue 5 still
tracks the switch to VISUAL_ENCRYPT=yes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-03 14:24:47 -07:00
spencermandClaude Opus 5.5 45a1d1a42a Native VM install kit: systemd units, launcher, install and upgrade scripts; backups, restore and doctor without docker exec; DEPLOY.md VM, NPM and NFS sections
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 18:08:48 -06:00
spencermandClaude Opus 5.5 a82e056b6a Phase 9: Admin completion, reconcile, notifications, integrity, backups
ci / frontend (pull_request) Successful in 1m11s
ci / server (pull_request) Successful in 12m2s
ci / image (pull_request) Skipped
ci / e2e (pull_request) Successful in 6m1s
Admin: Departments (name and stations; add shows the three groups IT must
create), Profiles (welder stamp, station limits, active) with a CSV import
that previews and applies only when clean, Checklists (weld and plain),
Security (session, lockout and rate-limit settings with bounds, alerts for
the last 24 hours, the integrity result), Access log with filters and a
guarded CSV, Who is in, Stamp check, Notifications, and the employeeID
flags. Every Admin change is audited.

Worker: ad-reconcile (nightly and on "refresh from AD now"), session-refresh
(15 minutes), integrity (seals, asset hashes, missing and orphan files, the
audit chain), backup-check, notify-send and notify-digest. Notifications
route per event type to AD groups, users, mailboxes or the department
Supervisor group, immediately or in a daily digest, over STARTTLS verified
against the PESCO CA, with dry run on the test stack.

Backups: scripts/backup/ps-backup.sh and ps-restore.sh with a systemd timer
at 02:00 America/Denver. Restore rehearsed on the test stack 2026-10-21.
CI: pip-audit and npm audit. pypdf 6.21.1 and certifi 2026.10.19.

Migration 0010. Closes the app part of I6, M3, O1, O2 and S3.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 18:27:09 -06:00
spencermandClaude Opus 5.5 ba0720eb2e scripts: vsql rollback selection consults RestartPending again
ci / frontend (push) Successful in 1m5s
ci / server (push) Successful in 12m25s
ci / image (push) Successful in 13s
ci / e2e (push) Failing after 4m12s
b7c22e1 shipped without the RestartPending check in the snapshot selection:
a mutation test on the tests' own predicate failed to restore the file before
the commit. A snapshot is open again while an instance is unrestored or its
restart has not succeeded, so -Rollback -RestartInstances retries it.

Pester green on this exact file: PowerShell 7.6 (63) and 5.1 (62, 1 skipped).
The three retry tests fail without the check (mutation run on a copy).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 21:59:07 -06:00
spencermandClaude Opus 5.5 b7c22e1988 scripts: vsql certificate script recovery paths from the second review
ci / frontend (push) Successful in 41s
ci / server (push) Successful in 11m2s
ci / image (push) Successful in 57s
ci / e2e (push) Failing after 4m25s
- A rollback record now says which restarts succeeded. A snapshot stays open
  while an instance is unrestored or its restart failed (or was declined), so
  -Rollback -RestartInstances retries exactly those instead of reporting done
  or stepping back to an older deployment.
- Running dependents (SQL Server Agent) are written to dependents-<service>.json
  before the stop and removed once they run again, so a failed restart does not
  leave Agent stopped for good.
- GetRegValue returns $null only for a value confirmed absent; a missing key or
  read error throws, so it is never snapshotted or verified as absent.
- Instances come from the value names of Instance Names\SQL; the 'PS*' filter
  dropped names such as PSREPORTING.

Tests for each, including the real registry operations on an HKCU test key.
Pester green on PowerShell 7.6 (63) and Windows PowerShell 5.1 (62, 1 skipped).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 21:50:34 -06:00
spencermandClaude Opus 5.5 90adcebc44 scripts: vsql certificate script fixes the six review findings, with a Pester suite on PowerShell 5.1 and 7
ci / frontend (push) Successful in 43s
ci / server (push) Successful in 11m3s
ci / image (push) Successful in 12s
ci / e2e (push) Failing after 4m2s
- Admin check uses -not (IsAdmin); the old call passed -eq $false as arguments.
- Named instances: WQL filter Name='MSSQL$DEV' unescaped, lookup errors surface.
- SANs decoded from the raw extension (DER walk) and matched as whole names.
- Immutable deploy-, request- and rollback- records; already-bound instances
  get no snapshot; -Rollback takes the newest snapshot not yet rolled back,
  -Snapshot picks one.
- certreq -new, -submit, -accept and the key grants go through ShouldProcess;
  a declined or failed prerequisite binds nothing.
- Rollback and automatic restore work per instance, read back, report failures.

Also found while testing: PowerShell 7 returns RSACng for a CSP key, so the
provider check now reads CERT_KEY_PROV_INFO; ForEach-Object member form returned
nothing under -WhatIf; stderr capture under Stop threw on 5.1; LocalSystem and
NetworkService accounts go to icacls as SIDs; SQL Agent is started again after
a restart; signature checked by OID.

DEPLOY.md gains the run procedure: preflight, DEV, docker-1 checks, production, rollback.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 21:41:03 -06:00
spencermandClaude Fable 5.1 850e1da3a9 scripts: vsql certificate request uses the legacy SChannel CSP with an exchange key, validates before binding, scopes key access, saves bindings for rollback, resumes pending requests
ci / frontend (push) Successful in 42s
ci / server (push) Successful in 11m30s
ci / image (push) Successful in 13s
ci / e2e (push) Failing after 9s
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-18 21:19:39 -06:00
spencermandClaude Fable 5.1 fdfb8ae40f scripts: Request-VsqlServerCertificate.ps1 requests and installs a SQL Server TLS certificate from PESCO-PSYLOCKE-CA
ci / frontend (push) Successful in 42s
ci / server (push) Successful in 11m13s
ci / image (push) Successful in 13s
ci / e2e (push) Failing after 3m50s
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-18 21:15:49 -06:00
spencermandClaude Fable 5.1 3623dca77b scripts: gitea_issues.py drives the tea CLI; 38 decision issues opened on Gitea
ci / frontend (push) Successful in 43s
ci / server (push) Successful in 11m6s
ci / image (push) Successful in 14s
ci / e2e (push) Failing after 4m3s
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-18 20:50:34 -06:00
spencermandClaude Fable 5.1 5ca83f48c3 scripts: gitea_issues.py opens one Gitea issue per open decision in PLAN.md
ci / frontend (push) Successful in 43s
ci / server (push) Successful in 11m2s
ci / image (push) Successful in 14s
ci / e2e (push) Failing after 4m6s
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-18 20:25:29 -06:00
spencermandClaude Fable 5.1 94008ceed0 scripts: Export-PescoCaBundle.ps1 exports the PESCO CA chain from Windows and copies it to docker-1
ci / frontend (push) Successful in 35s
ci / server (push) Successful in 18m3s
ci / image (push) Successful in 13s
ci / e2e (push) Successful in 1m44s
Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 12:04:10 -06:00
spencermandClaude Fable 5.1 0b663bb2b2 Phase 0: repo skeleton, image, compose stacks, doctor, migration runner, frontend shell
New repo for the Packet Station rebuild (Python 3.12, FastAPI, PostgreSQL 16,
React, VisualKit, MFilesKit, Docker Compose on docker-1). Nothing is migrated
from the M: install.

- CLAUDE.md with the safety rules, README, CHANGELOG, docs (BRIEF, PLAN,
  SECURITY rewritten for the server with the requirement ID table, DEPLOY,
  stubs for FEED, POLICY, SCHEMA, GO-LIVE, PAPER-FALLBACK).
- packetstation CLI: app, worker (heartbeat stub), migrate, doctor, version,
  healthcheck. Settings from the environment with secret files. Stack guard
  (test never points at VISUAL production). Security headers and CSP.
  Trusted proxy resolved by name. JSON logs with redaction.
- Migration runner and 0001_base: settings, append-only audit_events with
  hash chain, ps_notify, grants for ps_app.
- Multi-stage Dockerfile (ODBC Driver 18, PESCO libraries from the Gitea
  index only), compose base, proxy overlay for npm_default, CI overlay,
  postgres initdb roles, env examples, NPM proxy host notes, Gitea Actions.
- Frontend: Vite, React, TypeScript, the PESCO dark theme ported with
  self-hosted fonts, placeholder sign-in and home.
- Verified on docker-1: image builds, CI stack comes up healthy, doctor
  database checks pass, 77 server tests pass against PostgreSQL.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-15 23:08:47 -06:00