From 592bbf0f57d309fa4b8a7d8e6fd16b97b3b3f391 Mon Sep 17 00:00:00 2001 From: Sai-karthik Date: Thu, 25 Jun 2026 12:24:50 +0000 Subject: [PATCH] docs: add PRM-80 final PR audit --- docs/prm-80-pr12-final-audit.md | 121 ++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docs/prm-80-pr12-final-audit.md diff --git a/docs/prm-80-pr12-final-audit.md b/docs/prm-80-pr12-final-audit.md new file mode 100644 index 0000000..823f0a3 --- /dev/null +++ b/docs/prm-80-pr12-final-audit.md @@ -0,0 +1,121 @@ +# PRM-80 PR #12 Final Audit + +Date: 2026-06-25 + +PR: https://git.openputer.com/growqr-app/growqr-backend/pulls/12 + +Branch: `prm-80-canonical-events` -> `staging` + +Latest verified code commit before this audit doc: `e13dfe7d468209685596385edc749e5506f9f8a2` + +## Commits In PR + +- `b895d6b` - `fix: emit canonical service events for PRM-80` +- `e13dfe7` - `fix: keep qscore out of curator tasks` + +## Scope + +This PR now covers the PRM-80 canonical Grow Events contract work plus the curator task policy update requested after QA: + +- Workflow/service events are normalized into canonical PRM-80 event names before ingestion. +- Workflow bridge events carry `subject` and service identity details instead of storing `subject: null`. +- Resume, roleplay, QScore analytics/read, and matchmaking workflow paths emit or bridge their canonical service events into `grow_events`. +- Duplicate canonical service events are kept idempotent through deterministic dedupe behavior. +- Curator no longer assigns `qscore-service` as a task or handoff service. + +## Curator QScore Policy Change + +QScore remains available as a scoring/readiness projection service for dashboard and backend consumers. It is no longer offered as a curator task. + +Files changed: + +- `src/v1/curator/curator-store.ts` +- `src/v1/curator/curator-tools.ts` + +Behavior added: + +- Curator seed generation remaps `qscore-service` tasks to non-QScore services. +- Measurement tasks that previously pointed at QScore now point at `assessment-service`. +- Proof tasks that previously pointed at QScore now point at `resume-service`. +- Practice tasks that previously pointed at QScore now point at `interview-service`. +- Recovery tasks that previously pointed at QScore now point at `roleplay-service`. +- Curator capability listing filters out `qscore-service`. +- `prepare_qscore_review` is disabled for curator task handoffs and returns `qscore_curator_handoff_disabled`. + +## Curator Services Allowed After Change + +- `interview-service` +- `roleplay-service` +- `resume-service` +- `cover-letter-service` +- `courses-service` +- `assessment-service` +- `matchmaking-service` +- `social-branding-service` + +Excluded from curator task assignment: + +- `qscore-service` + +## Runtime Verification + +Backend container: + +- `growqr-backend` rebuilt successfully with Docker. +- `growqr-backend` restarted and is healthy. +- Root backend health response returned `200 application/json` with `{"name":"growqr-backend","status":"ok","env":"production"}`. + +Curator today API verification: + +```text +task_count 3 +qscore_task_count 0 + +measurement | assessment-service | Assessment | Check whether confidence is improving | Open assessment +proof | resume-service | Resume | Generate a cleaner role-fit artifact | Open resume workspace +practice | interview-service | Interview | Run one focused interview rep | Open interview preview +``` + +Curator 30-day sprint verification: + +```text +planned_service_count 90 +planned_qscore_count 0 +task_qscore_count 0 + +assessment-service: 30 +interview-service: 11 +matchmaking-service: 11 +resume-service: 21 +roleplay-service: 8 +social-branding-service: 9 +``` + +Build verification: + +```text +docker compose build backend +Image growqr-backend-backend Built +``` + +Remote branch verification: + +```text +refs/heads/prm-80-canonical-events -> e13dfe7d468209685596385edc749e5506f9f8a2 +``` + +PR page verification: + +```text +https://git.openputer.com/growqr-app/growqr-backend/pulls/12 +HTTP/2 200 +PR title: #12 - PRM-80: Emit canonical service events for Grow Events +Latest commit visible: e13dfe7 fix: keep qscore out of curator tasks +``` + +## Audit Notes + +- Only the intended tracked files were committed for the curator update. +- VPS has untracked `.bak.*` backup files from prior QA/debug work; these were intentionally not staged or committed. +- QScore was not removed from the service registry because dashboard scoring, backend QScore reads, and projection consumers still depend on it. +- The change is limited to curator task assignment/handoff behavior.