Files
jobtrackingapp/docs/verification/core-002-route-uniqueness.md
T

2.0 KiB

CORE-002 — application route uniqueness verification

Date: 2026-08-02

Result

IMPLEMENTED — NOT VERIFIED. Backend route ambiguity and tenant behavior are verified locally. Browser and production checks remain.

Contract

Method/path Single owner Response purpose
GET /api/jobapplications/{id}/timeline ApplicationIntelligenceController grouped/filterable application timeline
GET /api/jobapplications/{id}/interview-prep InterviewPrepController editable durable interview-prep board
GET /api/jobapplications/{id}/interview-prep/brief JobApplicationsController cached generated brief with attachment context and explicit refresh

The unused legacy flat timeline action/DTO were deleted. The generated brief moved because both interview representations are live and intentionally incompatible; neither was silently discarded or overloaded by query parameters.

Evidence

  • Reflection regression checks every public controller action and fails on duplicate normalized HTTP method/route pairs.
  • Focused backend timeline/interview/route suite: 31/31 passed.
  • Full backend: 511/511 passed.
  • Focused frontend route/timeline/interview suites: 21/21 passed.
  • Full frontend: 45 suites, 153/153 passed; production build passed.
  • Isolated SQLite HTTP matrix using synthetic users:
Path Owner Other user Anonymous
/timeline 200 404 401
/interview-prep 200 404 401
/interview-prep/brief 200 404 401

The exact isolated API process was stopped and port 5304 was confirmed closed. Logs are under docs/audits/evidence/core-001-runtime/core-002.*.log.

Limitations

  • In-app browser localhost remains blocked by administrator policy, so direct/deep-link, Back/Forward and rendered-panel behavior is not claimed.
  • No production deployment or MariaDB HTTP smoke was performed.
  • The route move is an API contract change for undocumented direct consumers of the old generated-brief URL; repository callers and documentation are updated.