# 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.
