2.0 KiB
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.