Skip to content

Handoff: SVC-008-question-permanent-delete-worker-parity question-service permanent-delete job foundation

Scope

  • Service/area: question-service
  • Task pack: docs/agents/service-tasks/question-service.md
  • Goal: accept the bounded SVC-008 question-bank permanent-delete job foundation evidence, while explicitly keeping durable broker/worker parity and public question write route promotion blocked.
  • Non-goals: BullMQ-equivalent durable worker completion, forced deletion of exam/attempt/course-owned rows, default /api/questions* route promotion, live gateway/browser save-reload proof, rollback-after-candidate proof, or changes to legacy source under /Users/velikho/Desktop/WORKING/HOCTAPAZ/.

Docs Read

  • go-platform/docs/architecture/service-responsibility-matrix.md
  • go-platform/docs/architecture/legacy-api-map.md
  • go-platform/docs/agents/service-agent-execution-queue.json
  • go-platform/docs/agents/service-agent-closeout-ledger.json
  • go-platform/docs/agents/service-tasks/question-service.md
  • go-platform/docs/agents/agent-handoff-format.md
  • go-platform/docs/api/question-bank-service.md
  • go-platform/docs/qa/question-write-route-rehearsals.md
  • go-platform/docs/qa/service-agent-goal-completion-audit.md
  • go-platform/docs/qa/service-agent-readiness-smoke.md

Legacy Evidence Read

  • /Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/src/modules/questions/question-permanent-delete.queue.ts
  • /Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/src/modules/questions/question-permanent-delete.worker.ts
  • /Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/src/modules/questions/questions.controller.ts
  • /Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/prisma/schema.prisma
  • Legacy source was read-only evidence only; full legacy forced-delete semantics are not claimed because Go question-service must not delete exam, attempt, or course-owned data.

Files Changed

  • go-platform/docs/agents/handoffs/SVC-008-question-permanent-delete-worker-parity.md
  • go-platform/docs/agents/service-agent-closeout-ledger.json
  • go-platform/docs/agents/service-agent-closeout-ledger.md

Behavior Implemented

  • No new runtime code was implemented in this handoff.
  • Existing audited question-bank-service code exposes native permanent-delete job routes and persists service-local job state.
  • Existing audited HTTP handling creates the job and starts in-process processing; this is a service-local job foundation, not durable broker/worker parity.
  • Existing audited ownership boundaries keep canonical question data inside question-bank-service and avoid deleting exam/attempt/course-owned rows.

Tests And Verification

  • Command: GOTOOLCHAIN=go1.25.11 go test ./services/question-bank-service/... -count=1
  • Result: passed.
  • Evidence: question-bank-service packages passed for the audited native job foundation.
  • Command: make test-question-read-routes test-question-types-routes test-question-classification-apply-routes
  • Result: passed.
  • Evidence: question read, type, and classification route guards passed.
  • Command: make test-question-write-routes
  • Result: passed.
  • Evidence: question write route guard passed while default public promotion remained blocked.
  • Command: QUESTION_WRITE_SELF_TEST=1 make test-question-write-live
  • Result: passed.
  • Evidence: live-smoke harness self-test passed; this is not real live gateway proof.
  • Command: QUESTION_WRITE_BROWSER_SELF_TEST=1 make test-question-write-browser
  • Result: passed.
  • Evidence: browser-smoke harness self-test passed; this is not real browser save-reload proof.

Route State

  • Legacy route: default public question routes remain legacy-proxied in deploy/gateway/routes.json.
  • Native route: question-bank-service has native service-local job routes, but they are not promoted as default public routes.
  • Gateway state: route guards passed for read/type/classification/write rehearsals; no default route table was changed.
  • Rollback: keep deploy/gateway/routes.json as the active route table. Do not promote question write routes until durable worker parity, live/browser save-reload proof, and rollback evidence are attached.

Data Notes

  • Tables touched: none in this handoff run.
  • Migration run: none.
  • Validation report: not applicable because no live data was migrated or backfilled.

Risks / Blockers

  • Durable broker/worker parity is still open; current Go processing is request-triggered goroutine plus persisted job state.
  • Real live gateway/browser save-reload artifacts and rollback notes are still missing.
  • Go permanent delete intentionally avoids deleting exam/attempt/course data; this is boundary-correct but not forced-delete semantic parity with legacy.
  • Public question write route promotion remains blocked.

Next Step

  • Implement or assign durable permanent-delete worker parity with broker-backed retry/replay evidence, then attach real live/browser save-reload proof and rollback evidence before any public question write route promotion.

Go-platform documentation is generated from repository Markdown.