5.4 KiB
A3-IM07 calendar subpackage — local qualification
3 November 2026. Owner approved progression to A3-IM07 after UI06. This calendar subpackage is independently implemented and locally qualified; A3-IM07 remains open for correspondence/document presentation and combined preservation evidence. No next milestone acceptance is requested yet.
The existing /reminders route now opens a date-level agenda above the unchanged workflow reminders. Agenda is default, with a persisted owner-scoped Month toggle. Upcoming recorded dates precede earlier dates; month selection and native calendar-day buttons retain linked application access. No view action creates a provider event or alters a reminder. Earlier reminder snooze/clear/retry/focus behavior remains with RemindersView.
Added authenticated GET /api/calendar/agenda?from=YYYY-MM-DD&to=YYYY-MM-DD to the existing ApplicationCalendarController. The inclusive range is limited to62 days and translated to an exclusive next-day query boundary. Explicit owner and nondeleted filters precede a narrow projection; company labels also require matching ownership. Deadline-only Saved applications are included even though the reminder attention feed excludes them. The response contains jobApplicationId,jobTitle,companyName,kind(deadline/follow-up),date and unchanged recordedAt. There are no schema, migration, model, writer or provider changes. Existing ICS and consent-scoped provider event endpoints are unchanged.
Calendar grouping retains the stored date; the view does not convert an unzoned legacy timestamp into an inferred timezone or appointment time. Original recordedAt stays on the time element and linked application. Current data has no interview appointment date and lacks original source precision/timezone metadata; that remains an explicit capability gap. Interviews are not fabricated from stage or note text. Undated work remains in the existing reminder workflow, not a guessed event.
| Evidence | Result |
|---|---|
| Baseline | 70 existing reminders/calendar/documents/inbox cases across4 suites passed; not additional to overlapping later checks |
| New contract red | Backend compilation failed because Agenda/DTO did not exist. Frontend suite could not resolve new component. These are missing-contract red checks, not executed runtime test failures |
| Intermediate defect | Initial new month-navigation test failed: shared resource hook requires explicit dependency values, not just a new callback. Supplying from/to deps fixed actual missing month reload; no shared hook behavior changed |
| Final frontend | 25 selected cases/4 suites passed: new agenda8, existing reminder/calendar preservation and catalogue coverage. Reviewed7-case rerun overlaps and predates final upcoming-order case |
| Backend | 10 passed, zero failed/skipped. InMemory/isolated SQLite: saved deadlines, raw wall-clock date, inclusive last-day boundary, sibling-owner/deleted/outside exclusion, invalid/oversized ranges, and unchanged provider/ICS contracts. Strict provider mocks prove no calendar-read provider access |
| Types/full lint/build | Passed after source fixes. Initial typecheck found unsupported test query options and missing required error title; corrected, not relabelled passing. Final build includes TypeScript validation |
| Rendered React | 16 configs320/390/768/1440 × EN/NB × light/dark;48 whole-page axe scans/captures, zero violations/overflow/page errors/unexpected writes. Final rerun after upcoming-first order supersedes prior overlapping browser report |
| Connected controlled journey | Three occupations; agenda date provenance, month/day selection, next-month empty and previous-month read, persisted view on reload, keyboard-linked deadline to application detail/context. Every API intercepted; no live backend/provider or mutations |
| Independent review | No important/critical source findings;7 overlapping frontend cases passed. Awaiting empty state fixed reviewer's test-only act warning; no provider/backend/browser run independently repeated |
Native frontend/backend/browser evidence and source manifest are under evidence/calendar. Native API tests use the repository SDK at C:\Users\Connor.dotnet and no restore/network. Browser verifier: rtk proxy node scripts/verify-a3-calendar.mjs from job-tracker-ui against static export localhost4338. Pilot/previous-source reports overlap and are not added to totals. Selected browser fixture dates are recorded synthetic dates, never advertised as live appointments.
Rollback reverts this subpackage; no database/data rollback. Existing route, reminder rules/actions, provider consent, calendar export behavior, Career/CV/letter revisions and frozen package contracts remain. Full Phase10, Product Review, European localisation, Global Jobs, final integrated security and release acceptance remain open.
NOT RUN: real backend/browser integration, MariaDB, hosted CI, native devices/screen readers/touch/zoom, actual reminder delivery, Google/Outlook live calendar, timezone/precision migration, interview scheduling, final security/release qualification. The existing legacy follow-up export precision/timezone behavior is preserved, not newly qualified by the date-only calendar.
Next authorised work: narrowly reconcile validated document date patch ca519cac, complete document/inbox connected presentation and preservation checks, then publish complete IM07 evidence for its required Gate F. No provider activation or final UI08 gate is implied.