Appearance
Handoff: SVC-010-timeout-retake-result-visibility attempt-service timeout, retake, and result visibility
Scope
- Service/area:
attempt-service - Task pack:
docs/agents/service-tasks/attempt-service.md - Goal: accept the bounded
SVC-010attempt timeout, retake/idempotency, and result-visibility evidence while keeping public attempt route promotion blocked. - Non-goals: public
/api/attempts*route promotion, default route table edits, canonical exam/question mutation, real live/browser gateway 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/attempt-service.mdgo-platform/docs/agents/agent-handoff-format.mdgo-platform/docs/api/attempt-service.mdgo-platform/docs/qa/attempt-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/attempts/attempts.controller.ts/Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/src/modules/app-data/app-data.exams-attempts.ts/Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/src/modules/app-data/app-data.exam-runtime-core.ts/Users/velikho/Desktop/WORKING/HOCTAPAZ/node-platform/apps/api/prisma/schema.prisma- Legacy source was read-only evidence only; public route parity and default promotion are not claimed.
Files Changed
go-platform/docs/agents/handoffs/SVC-010-timeout-retake-result-visibility.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 attempt-service start behavior requires a trusted exam-service decision plus idempotency and correlation context.
- Existing audited retake/idempotency behavior counts prior submitted attempts and replays start keys.
- Existing audited timeout and result-visibility behavior is computed from attempt-owned state without mutating canonical exam or question data.
Tests And Verification
- Command:
GOTOOLCHAIN=go1.25.11 go test ./services/attempt-service/... -count=1 - Result: passed.
- Evidence: attempt-service usecase and HTTP packages passed, including timeout, retake, result visibility, trusted start, access denial, and idempotency replay coverage.
- Command:
make test-attempt-routes - Result: passed.
- Evidence: default and native rehearsal route tables validated while public attempts stayed legacy by default.
- Command:
ATTEMPT_LIVE_SELF_TEST=1 bash scripts/test/attempt-live-smoke.sh - Result: passed.
- Evidence: live-smoke harness self-test passed; this is not real live gateway proof.
- Command:
ATTEMPT_BROWSER_SELF_TEST=1 bash scripts/test/attempt-browser-smoke.sh - Result: passed.
- Evidence: browser-smoke harness self-test passed; this is not real browser route proof.
Route State
- Legacy route: default
/api/exams,/api/attempts, and fallback routes remain legacy-proxied indeploy/gateway/routes.json. - Native route: native attempt routes exist only in rehearsal route tables; broad exams and attempts remain legacy there too.
- Gateway state:
make test-attempt-routespassed, and live/browser self-test harnesses passed without modifying default routes. - Rollback: keep
deploy/gateway/routes.jsonas the active route table. Do not promote public attempt routes until route-specific live proof, browser proof, idempotency/count 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
- Real live gateway/browser artifacts and rollback notes are still missing.
- Public/default attempt route promotion remains blocked.
- The accepted evidence proves a bounded service-local slice, not complete attempt-service migration.
- Any future route promotion must preserve exam-service as access-decision owner and question-bank-service as canonical question owner.
Next Step
- Produce a non-default public attempt route rehearsal with real live/browser artifacts, idempotency/count proof, and rollback evidence before considering any default attempt route change.