Files
sales-trainer/docs/engineering-log/2026-08-14-sprint-2-4-verification.md

2.9 KiB
Raw Blame History

2026-08-14 — Sprint 24 current-tree verification

Scope

Completed the remaining local implementation packets for persona/session correctness, trainee weak-area loops, private personas, report redaction, and production runtime foundations. No commit, push, deploy, credential rotation, JWT rotation, or public-access change was performed.

Implemented

  • Canonical session identity, resume/finish idempotency, per-turn/final judge invariants, preview isolation, and private-group race protection.
  • Natural-text persona reply normalization with bounded visible output and internal-state redaction.
  • Deterministic auto-15 persona cardinality contract (5 per tier), no append generation, initiation/channel contracts, and lineage-safe variants.
  • Weak-area analysis and private persona generation UI/API; human-readable redacted group report.
  • Production foundations: /ready, Gunicorn WSGI entrypoint, Docker healthcheck, explicit CORS_ORIGINS, .dockerignore, and .gitea/workflows/ci.yml.
  • Reviewer remediation: added re-entrant per-record transaction locks for session/group mutations, serialized chat send/finish and group analysis, bound export links to the current user/org/role, fixed SessionDetail API wiring and group-summary channel serialization, made session initialization atomic, and serialized variant appends.
  • Production artifact flow: Docker now builds the Vue SPA inside a Node builder stage; CI builds to a temporary artifact and verifies all referenced assets, so clean clones do not depend on stale checked-in hashed bundles.

Verification evidence

  • Backend pytest: 152 passed (backend/tests; the repository-wide default also collects executable scripts, so the canonical suite is explicit), including 5 final-review regression tests.
  • Executable backend scripts: 12 passed.
  • Frontend production build: 1,778 modules transformed, success; asset reference check: 2 references, 0 missing (built in a temporary output directory).
  • Python compileall and git diff --check: passed.
  • Earlier exact-current-tree reviewer before the final remediation failed on stale export scope, non-reproducible checked-in dist, session initialization race, unlocked variant append, draft-group exposure, reversed hardest-persona ranking, ready-state publication ordering, cascade deletion locking, and org/bootstrap races. Those findings were remediated and covered by regression tests. A fresh bounded exact-current-tree reviewer then passed with empty security and logic blocker arrays; see docs/engineering-log/2026-08-14-final-review.md.

Explicit limits

Docker is unavailable on this Mac, so image build/runtime was not exercised locally; CI now builds the multi-stage image and smoke-tests /ready. Real-provider QA, browser E2E, mobile visual QA, PostgreSQL migration, and production authenticated smoke remain operational/future gates. The Sprint 1 live gate remains blocked pending explicit approval for restricted deploy and secret rotations.