Appearance
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-008question-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.mdgo-platform/docs/architecture/legacy-api-map.mdgo-platform/docs/agents/service-agent-execution-queue.jsongo-platform/docs/agents/service-agent-closeout-ledger.jsongo-platform/docs/agents/service-tasks/question-service.mdgo-platform/docs/agents/agent-handoff-format.mdgo-platform/docs/api/question-bank-service.mdgo-platform/docs/qa/question-write-route-rehearsals.mdgo-platform/docs/qa/service-agent-goal-completion-audit.mdgo-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.mdgo-platform/docs/agents/service-agent-closeout-ledger.jsongo-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.jsonas 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.