Skip to content

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-010 attempt 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.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/attempt-service.md
  • go-platform/docs/agents/agent-handoff-format.md
  • go-platform/docs/api/attempt-service.md
  • go-platform/docs/qa/attempt-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/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.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 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 in deploy/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-routes passed, and live/browser self-test harnesses passed without modifying default routes.
  • Rollback: keep deploy/gateway/routes.json as 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.

Go-platform documentation is generated from repository Markdown.