Files
growqr-backend/docs/prm-80-pr12-final-audit.md
2026-06-25 12:24:50 +00:00

3.9 KiB

PRM-80 PR #12 Final Audit

Date: 2026-06-25

PR: #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:

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:

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:

docker compose build backend
Image growqr-backend-backend Built

Remote branch verification:

refs/heads/prm-80-canonical-events -> e13dfe7d468209685596385edc749e5506f9f8a2

PR page verification:

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.