Monorepo Requirements Documentation
NCIA Timesheet Requirements

NCIA Timesheet Requirements

UID: NCIA-TS
AUTHOR: Nico de Jong

1. 1. Time Entry Management

TS-FR-001
1.1. Create Time Entry
UID: TS-FR-001
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user has finished a block of work, the NCIA Timesheet shall allow the user to create a time entry specifying a project, a task, a date, and a duration.

RATIONALE:

The foundational data-capture job the application exists to serve.

SOURCE:

JTBD 1.1.

TS-FR-002
1.2. Retrospective Time Entry
UID: TS-FR-002
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user recalls work done at an earlier date that was not logged at the time, the NCIA Timesheet shall allow the user to create a time entry by specifying a past date, a start time, and a duration.

RATIONALE:

Users frequently remember work after the fact and must not lose that time.

SOURCE:

JTBD 1.2.

TS-FR-003
1.3. Period Review View
UID: TS-FR-003
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user's reporting period is due, the NCIA Timesheet shall display all time entries for the selected period in a single view so the user can verify completeness and accuracy before submission.

RATIONALE:

Users need a checkpoint before submitting to avoid incomplete records.

SOURCE:

JTBD 1.3.

TS-FR-004
1.4. Edit Time Entry
UID: TS-FR-004
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user identifies an error in a time entry, the NCIA Timesheet shall allow the user to edit the project, task, date, start time, or duration of the entry without requiring administrator intervention.

RATIONALE:

Self-service correction keeps records accurate without friction.

SOURCE:

JTBD 1.4.

TS-FR-005
1.5. Delete Time Entry
UID: TS-FR-005
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user deletes a time entry, the NCIA Timesheet shall remove the entry from the active record and write a deletion record to the audit log before the removal is committed.

RATIONALE:

Deletion must be auditable to preserve a complete history.

SOURCE:

JTBD 1.4, ADR-006.

TS-FR-006
1.6. Audit Log — Record Mutations
UID: TS-FR-006
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall append an immutable record to the audit log containing the operation type, the document state before the change, the document state after the change, a UTC timestamp, and the identifier and display name of the active user profile.

RATIONALE:

The audit log must capture who changed what and when for full traceability.

SOURCE:

JTBD 1.4a, ADR-006.

TS-FR-007
1.7. Audit Log — View
UID: TS-FR-007
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user opens the audit log view, the NCIA Timesheet shall display all time entry mutations in chronological order, showing for each record the operation type, the previous value, the new value, the timestamp, and the profile that performed the change.

RATIONALE:

Users need to review their own editing history to verify corrections.

SOURCE:

JTBD 1.4a.

TS-FR-008
1.8. Duplicate Time Entry
UID: TS-FR-008
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects an existing time entry and requests a duplicate, the NCIA Timesheet shall create a new draft entry pre-populated with the same project, task, and duration, which the user can adjust before saving.

RATIONALE:

Recurring tasks should not require re-entry of the same details from scratch.

SOURCE:

JTBD 1.5.

TS-FR-063
1.9. Record Work Location per Day
UID: TS-FR-063
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user logs time for a working day, the NCIA Timesheet shall allow the user to record the location from which they are working for that date, selecting from OFFICE, HOME, or REMOTE. One location record shall be stored per profile per calendar date, independent of individual time entries.

RATIONALE:

Location tracking enables attendance pattern analysis and satisfies reporting requirements that distinguish office presence from home or remote working.

SOURCE:

JTBD 1.6.

2. 2. Timer

TS-FR-009
2.1. Start Timer
UID: TS-FR-009
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects a project and task and activates the timer, the NCIA Timesheet shall begin tracking elapsed time and display the running duration in real time on the active view.

RATIONALE:

Real-time tracking eliminates end-of-day estimation.

SOURCE:

JTBD 2.1.

TS-FR-010
2.2. Timer State Persistence
UID: TS-FR-010
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

While a timer is running, the NCIA Timesheet shall persist the timer start timestamp and accumulated duration to the local database at intervals of no more than 30 seconds so that elapsed time is recoverable if the application is closed or the device is restarted.

RATIONALE:

Timer data must not be lost on unexpected closure.

SOURCE:

JTBD 2.1, ADR-007.

TS-FR-011
2.3. Switch Active Timer
UID: TS-FR-011
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user switches to a different project or task while a timer is running, the NCIA Timesheet shall pause the current timer and start a new timer for the newly selected project and task in a single action.

RATIONALE:

Task-switching must not disrupt flow or require multiple manual steps.

SOURCE:

JTBD 2.2.

TS-FR-012
2.4. Pause Timer
UID: TS-FR-012
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user pauses the active timer, the NCIA Timesheet shall stop incrementing elapsed time, retain the accumulated duration, and display the paused state until the user explicitly resumes or stops the timer.

RATIONALE:

Break time must not be counted as productive time.

SOURCE:

JTBD 2.4.

TS-FR-013
2.5. Inactivity Alert
UID: TS-FR-013
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

While a timer is running and the elapsed time since the last recorded user interaction exceeds a configurable inactivity threshold (default: 2 hours), the NCIA Timesheet shall display a notification prompting the user to confirm, adjust, or discard the accumulated time.

RATIONALE:

Forgotten timers inflate records and must be flagged proactively.

SOURCE:

JTBD 2.3, ADR-007.

TS-FR-014
2.6. Stale Timer Recovery on Start
UID: TS-FR-014
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the application starts and a running timer is found whose last heartbeat timestamp is older than the configured inactivity threshold, the NCIA Timesheet shall prompt the user to confirm, adjust, or discard the elapsed time before creating a time entry.

RATIONALE:

The timer must be trustworthy even after the application was closed unexpectedly.

SOURCE:

JTBD 2.3, ADR-007.

TS-FR-015
2.7. Stop Timer and Create Draft Entry
UID: TS-FR-015
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user stops the active timer, the NCIA Timesheet shall create a draft time entry pre-populated with the elapsed duration, the project, and the task and present it to the user for review and confirmation before saving.

RATIONALE:

Users should be able to verify and annotate timer-generated entries before committing.

SOURCE:

JTBD 2.1.

3. 3. Projects and Tasks

TS-FR-016
3.1. Project Types
UID: TS-FR-016
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall classify all projects as one of three types: FORMAL (defined by the organisation), PROVISIONAL (created by the user), or OVERHEAD (system-defined for non-project time), and shall display this classification visually in all project and task lists.

RATIONALE:

Users must clearly distinguish official codes from personal placeholders.

SOURCE:

JTBD 3.6, ADR-008.

TS-FR-017
3.2. Create Provisional Project
UID: TS-FR-017
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user is working on an initiative without a formal project code, the NCIA Timesheet shall allow the user to create a provisional project with a user-defined name and log time against it immediately.

RATIONALE:

Time must never be lost waiting for project administration to complete.

SOURCE:

JTBD 3.1, ADR-008.

TS-FR-018
3.3. Bulk Reassign Provisional Entries to Formal Project
UID: TS-FR-018
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When a formal project code becomes available, the NCIA Timesheet shall allow the user to select one or more provisional projects and reassign all associated time entries to the formal project in a single operation, retaining the original provisional projects with a resolved timestamp for audit purposes.

RATIONALE:

Retroactive assignment must be atomic and auditable.

SOURCE:

JTBD 3.2, ADR-008.

TS-FR-019
3.4. Overhead Codes
UID: TS-FR-019
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall provide a set of pre-defined OVERHEAD codes including at minimum: meetings, administration, training, and leave, against which the user can log time that does not belong to a specific project.

RATIONALE:

A full working day must always be accountable, even for non-project activity.

SOURCE:

JTBD 3.3, ADR-008.

TS-FR-020
3.5. Split Time Entry Across Projects
UID: TS-FR-020
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When logging time that spans multiple projects, the NCIA Timesheet shall allow the user to split a single time block across multiple projects by specifying a percentage or an explicit duration for each project.

RATIONALE:

Effort shared across projects must be distributable without creating multiple manual entries.

SOURCE:

JTBD 3.4.

TS-FR-021
3.6. Unassigned Provisional Entries View
UID: TS-FR-021
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall provide a view listing all provisional projects that have time entries and have not yet been reassigned to a formal project, enabling the user to identify and resolve outstanding unallocated time.

RATIONALE:

Users need a systematic way to clear their allocation backlog.

SOURCE:

JTBD 3.5.

TS-FR-022
3.7. Map Custom Task to Formal Project
UID: TS-FR-022
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user creates a custom task, the NCIA Timesheet shall allow the user to optionally map the task to a formal project so that reports can aggregate hours by the formal taxonomy while retaining the custom task detail in drill-down views.

RATIONALE:

Personal shortcuts must co-exist with the official reporting taxonomy.

SOURCE:

JTBD 3.7, ADR-008.

4. 4. Allocations and Budget

TS-FR-023
4.1. Record Estimated and Allocated Hours
UID: TS-FR-023
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user creates or edits a project or task, the NCIA Timesheet shall allow the user to record an estimated number of hours and, independently, an allocated number of hours representing the formally approved commitment.

RATIONALE:

Planned effort and approved budget are distinct values that evolve at different points in a project lifecycle.

SOURCE:

JTBD 4.6, ADR-009.

TS-FR-024
4.2. Display Remaining Hours
UID: TS-FR-024
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall display remaining hours for each project as allocated hours minus hours logged where allocated hours are set, or estimated hours minus hours logged where only estimated hours are set.

RATIONALE:

Remaining capacity must be visible without manual calculation.

SOURCE:

JTBD 4.1, ADR-009.

TS-FR-025
4.3. Budget Warning Notification
UID: TS-FR-025
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the hours logged against a project reach a configurable warning threshold (default: 80%) of the applicable ceiling, the NCIA Timesheet shall display an in-app notification alerting the user that the budget is approaching its limit.

RATIONALE:

Early warning prevents silent overruns.

SOURCE:

JTBD 4.2, ADR-009.

TS-FR-026
4.4. Budget Exceeded Notification
UID: TS-FR-026
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

If the hours logged against a project exceed the applicable allocated or estimated hours ceiling, the NCIA Timesheet shall display a persistent in-app notification indicating that the budget has been exceeded.

RATIONALE:

A exceeded budget must remain visible until acknowledged.

SOURCE:

JTBD 4.2, ADR-009.

TS-FR-027
4.5. Capacity Status by Period
UID: TS-FR-027
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user requests a capacity status view, the NCIA Timesheet shall display hours consumed and hours remaining for each active project, filterable by day, week, month, or year.

RATIONALE:

Status must be expressible at the granularity needed for the conversation at hand.

SOURCE:

JTBD 4.3, ADR-010.

TS-FR-028
4.6. Total Remaining Capacity Summary
UID: TS-FR-028
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall provide a summary showing total remaining hours across all active project allocations so the user can assess overall availability before accepting new work.

RATIONALE:

Capacity decisions require a cross-project view, not just per-project data.

SOURCE:

JTBD 4.4.

TS-FR-029
4.7. Flag Overrun with Note
UID: TS-FR-029
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When a time entry causes logged hours to exceed the allocated or estimated ceiling for a project, the NCIA Timesheet shall allow the user to attach a note explaining the reason for the overrun, stored with the project record.

RATIONALE:

Overruns need context to be meaningful in retrospective reviews.

SOURCE:

JTBD 4.5.

TS-FR-030
4.8. Allocation Mismatch Warning
UID: TS-FR-030
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

If the allocated hours for a project are set lower than the estimated hours, the NCIA Timesheet shall display a visual indicator on the project record alerting the user to the discrepancy between planning intent and approved budget.

RATIONALE:

A planning-vs-allocation mismatch should be surfaced, not silently accepted.

SOURCE:

ADR-009.

5. 5. Leave and Attendance

TS-FR-031
5.1. Log Leave by Type
UID: TS-FR-031
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall allow the user to log absence against configurable leave types including at minimum: annual leave, sick leave, training leave, and public holiday.

RATIONALE:

Different leave types carry different entitlements and must be tracked separately.

SOURCE:

JTBD 5.6.

TS-FR-032
5.2. Leave Balance Display
UID: TS-FR-032
STATUS: Superseded
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement minus the days logged against that type in the current leave year.

RATIONALE:

Users must know their remaining entitlement before planning time off.

COMMENT:

Superseded by TS-FR-032A — unit changed from days to hours, carry-forward added.

SOURCE:

JTBD 5.1.

TS-FR-033
5.3. Annual Hours Progress
UID: TS-FR-033
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall display total productive hours worked by the user in the current year alongside the configured annual required hours target, showing the difference as a surplus or deficit.

RATIONALE:

Annual compliance requires knowing how actual hours track against the target at all times.

SOURCE:

JTBD 5.2.

TS-FR-034
5.4. Record Overtime Separately
UID: TS-FR-034
STATUS: Superseded
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

When the user logs hours that cause the total for a working day to exceed the configured standard working day length, the NCIA Timesheet shall record the excess as overtime, separate from standard hours.

RATIONALE:

Overtime must be tracked distinctly for time-in-lieu and compensation purposes.

COMMENT:

Superseded by TS-FR-034A — overtime threshold now derived from contracted hours profile (TS-FR-070, TS-FR-076).

SOURCE:

JTBD 5.3.

TS-FR-035
5.5. Attendance Summary Report
UID: TS-FR-035
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user requests an attendance summary for a selected period, the NCIA Timesheet shall display total standard hours worked, overtime hours, leave taken by type, and public holidays within that period.

RATIONALE:

HR and management reviews require a consolidated attendance breakdown, not raw entries.

SOURCE:

JTBD 5.4.

TS-FR-036
5.6. Public Holiday Calendar
UID: TS-FR-036
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall maintain a configurable list of public holidays per year and shall automatically reduce the required hours target for any period containing a public holiday by the duration of one standard working day per holiday.

RATIONALE:

Required hours targets must reflect the actual working calendar, not a theoretical total.

SOURCE:

JTBD 5.5.

TS-FR-064
5.7. Work Location Breakdown in Attendance Summary
UID: TS-FR-064
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user requests an attendance summary for a selected period, the NCIA Timesheet shall include a count of working days by location type (OFFICE, HOME, REMOTE) for that period, derived from the work location records associated with the user's profile.

RATIONALE:

Location summaries enable the user to review compliance with office attendance policies and share location data with HR or management on request.

SOURCE:

JTBD 1.6.

TS-FR-065
5.8. Clock or Decimal Format for Reports and Exports
UID: TS-FR-065
CLASSIFICATION: NATO Public
DATE: 2026-03-11
STATEMENT:

Time entries are always entered in hours and minutes (HH:MM). There is no decimal entry mode. When reporting and exporting, the NCIA Timesheet shall allow the user to choose between two display formats via a persistent profile-level preference: Clock format (HH:MM) or Decimal format (hours as a decimal number, e.g. 1.5 for 1h 30m). The selected format shall apply to all duration and total values on the Reports page, the Monthly Prescribed Hours Status Dashboard, and all CSV/Excel exports. Changing the format shall not alter any stored time entry values — only the display representation in reports and exports changes.

RATIONALE:

The NCIA EPM submission system accepts decimal hours only. Users who reason in hours-and-minutes need both representations available to verify accuracy before submission. Entry remains in HH:MM to avoid rounding confusion; the format choice applies only to output.

SOURCE:

Excel template — parallel Jan / Jan-in-decimals sheets.

TS-FR-066
5.9. Extended Absence Code Set
UID: TS-FR-066
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall support the following absence types in addition to annual leave and sick leave already required by TS-FR-031: TDY (T), Special Leave (SL), Home Leave (HL), Unpaid Leave (UL), Compassionate Leave (CL), Family Leave (FL), and Special Administrative Absence (SAA). Each code shall be selectable when recording absence and shall be included in attendance summaries and exports.

RATIONALE:

NATO staff are entitled to a broader range of absence types than the basic annual/sick leave pair; all entitlement types must be recordable to produce accurate attendance records for HR and payroll.

SOURCE:

Excel template — Codes for Absence legend.

TS-FR-067
5.10. Flex Time Surplus and Deficit Tracking
UID: TS-FR-067
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

For each calendar month, the Monthly Prescribed Hours Status Dashboard (TS-FR-072) shall display informational flex time values derived from the contracted hours profile (TS-FR-076): - Flex time gained: total hours worked in the month minus required hours for the month (where positive). - Flex time used: total hours recorded against the Flex Leave (FL) absence code in that month. Required hours for the month equals the number of working days (excluding official holidays for the user's duty location per TS-FR-075) multiplied by the standard day length derived from the contracted hours profile (TS-FR-070). The application shall not maintain a managed flex budget, shall not enforce a balance, and shall not prevent recording Flex Leave regardless of surplus. All values are informational.

RATIONALE:

Staff accrue informal flex credit when they consistently work beyond contracted hours. Displaying the monthly flex time gained and used on the monthly report gives the user and their line manager visibility of flex patterns before Flex Leave is requested or approved.

SOURCE:

Excel template — Flex Time section (Plus, Minus, Brought Forward, Carry Forward).

TS-FR-070
5.11. Standard Day Length Derived from Contracted Hours
UID: TS-FR-070
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall derive the standard working day length as contracted hours per week (TS-FR-076) divided by standard workweek days (TS-FR-076). This derived value shall be used solely for the display of period totals, including required hours per week, month, and year; flex surplus or deficit (TS-FR-067); and the notional duration subtracted from required hours for each official holiday (TS-FR-036, TS-FR-072). It shall not enforce a cap on daily entries, shall not prevent time logging on any day, and shall not trigger automatic entries.

RATIONALE:

Displaying meaningful required hours and flex totals requires a reference day length. Deriving it from the contracted hours keeps the value consistent with the user's contract without requiring a separate per-day configuration field.

SOURCE:

Excel template STATUS sheet — hours/day derived from contracted week.

TS-FR-071
5.12. Annual Leave Entitlement Carry-Forward
UID: TS-FR-071
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall allow the user to record an annual leave entitlement carried forward from the previous leave year, stored in hours per profile per leave year. The displayed leave balance shall be calculated as carried-forward hours plus current-year entitlement hours minus hours logged against annual leave in the current leave year.

RATIONALE:

Staff who did not exhaust their leave in the previous year may carry hours forward under their contract. Without capturing the carried-forward balance, the remaining entitlement displayed from the start of the leave year will be understated.

SOURCE:

Excel template STATUS sheet — Enter Leave From last Year and Enter Leave From this Year fields.

TS-FR-073
5.13. Working Day and Official Holiday Count on Week View
UID: TS-FR-073
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

On the weekly time entry view, the NCIA Timesheet shall display for the selected week: total working days in the week (Monday to Friday, i.e. 5 for a full week), and the number of those days that are official holidays for the user's duty location (TS-FR-075). These counts are informational. They shall not alter, lock, or pre-fill any time entry fields for days that coincide with official holidays.

RATIONALE:

Showing working day and holiday counts on the week view gives the user immediate context for the week's required hours without navigating to the annual status dashboard.

SOURCE:

Excel template monthly header — No. of work days plus Official Holidays equals total.

TS-FR-074
5.14. Official Holiday Indicator on Day
UID: TS-FR-074
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

When a date in the time entry view coincides with an official holiday in the calendar applicable to the user's duty location (TS-FR-075), the NCIA Timesheet shall display a visual indicator (icon or label) next to that date identifying it as an official holiday. Time entries may still be created, edited, and deleted on official holiday dates without restriction. No hours shall be automatically attributed to the day as a result of the official holiday status. Holiday dates are managed by the user in a dedicated Holiday Calendar management UI. Users can add dates one at a time (date picker, year selector) or import from a CSV file (date, name, location columns). Dates are stored per duty location per year. The service provides a lookup API used by the day indicator, week view counts, and required hours derivation.

RATIONALE:

Users must be able to see at a glance which days are official holidays without consulting an external calendar, while remaining free to log time on those days if they choose to work. A user-managed holiday calendar ensures dates can be kept up to date without application updates.

SOURCE:

Excel template — OH marker auto-placed on matching dates.

TS-FR-032A
5.15. Leave Balance Display — Amendment: hours unit
UID: TS-FR-032A
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall display the user's remaining balance per leave type, calculated as the configured annual entitlement in hours minus the hours logged against that type in the current leave year, plus any hours carried forward from the previous leave year (TS-FR-071).

RATIONALE:

The original requirement uses days as the unit of measurement. All time in the application is tracked in hours. Leave entitlements, carry-forward balances, and logged absence are all stored and displayed in hours.

SOURCE:

Excel template — amendment to TS-FR-032.

TS-FR-034A
5.16. Record Overtime Separately — Amendment: threshold source
UID: TS-FR-034A
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

When the total hours logged by the user for a calendar day exceeds the standard day length derived from the contracted hours profile (contracted hours per week divided by workweek days, per TS-FR-070 and TS-FR-076), the NCIA Timesheet shall record and display the excess as overtime, separate from standard hours in all period totals and the monthly status dashboard (TS-FR-072). The overtime threshold is derived solely from the contracted hours profile and is not a separately configurable value. No entry shall be prevented or auto-split on account of the overtime threshold; the classification is for display purposes only.

RATIONALE:

The original requirement refers to a configured standard working day length as if it were an independent setting. Day length is derived from contracted hours divided by workweek days (TS-FR-076). The amendment aligns the overtime threshold with that derivation and confirms the classification is informational.

SOURCE:

Excel template — amendment to TS-FR-034.

TS-FR-075
5.17. Duty Location on User Profile
UID: TS-FR-075
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
STATEMENT:

The NCIA Timesheet shall require each user profile to specify a duty location, selecting from at minimum: Braine-l'Alleud (Belgium), Brussels (Belgium), Mons (Belgium), The Hague (Netherlands). The selected duty location shall determine which official holiday calendar is applied to that profile for all views and calculations that reference official holidays, including the day indicator (TS-FR-074), the working day counts (TS-FR-073), required hours derivation (TS-FR-070), and the monthly status dashboard (TS-FR-072).

RATIONALE:

NCIA sites observe different national and local public holidays. Applying the wrong calendar produces incorrect required hours totals and misleading day indicators.

SOURCE:

User requirement — official holiday calendar varies by NCIA site.

6. 6. Reporting and Analysis

TS-FR-037
6.1. Period Report
UID: TS-FR-037
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

When the user selects a period type (day, week, month, or year) and a period value, the NCIA Timesheet shall display hours logged per project and task for that period.

RATIONALE:

A single parameterised report covers all granularities without separate code paths.

SOURCE:

JTBD 6.1, ADR-010.

TS-FR-038
6.2. Inline Actual versus Planned Display
UID: TS-FR-038
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall display actual hours alongside estimated hours and allocated hours for each project on the period report without requiring the user to navigate to a separate view.

RATIONALE:

Budget health must be immediately visible when reviewing time data.

SOURCE:

JTBD 6.1, ADR-009.

TS-FR-039
6.3. Variance Notification
UID: TS-FR-039
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the variance between actual hours and the applicable ceiling for a project exceeds a configurable threshold, the NCIA Timesheet shall notify the user with an in-app alert identifying the project and the variance amount.

RATIONALE:

Escalating variances must be raised proactively, not discovered in periodic reviews.

SOURCE:

JTBD 6.2.

TS-FR-040
6.4. Project Status CSV Export
UID: TS-FR-040
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user requests a project status report, the NCIA Timesheet shall generate a CSV file containing one row per project with columns for project name, estimated hours, allocated hours, actual hours logged, and variance.

RATIONALE:

Stakeholders need an exportable, structured comparison for review and planning.

SOURCE:

JTBD 6.3.

TS-FR-041
6.5. Historical Actual versus Planned Reference
UID: TS-FR-041
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall retain actual-versus-planned data for all past periods and make it accessible in a historical view so the user can reference it when estimating future work.

RATIONALE:

Past performance data improves the accuracy of future estimates.

SOURCE:

JTBD 6.5.

TS-FR-042
6.6. Update Allocation Baseline
UID: TS-FR-042
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user updates the estimated or allocated hours for a project, the NCIA Timesheet shall record the previous and new values in the project history and recalculate all variance figures from the point of the update.

RATIONALE:

Scope changes require a new baseline; comparisons must remain meaningful after the change.

SOURCE:

JTBD 6.6.

TS-FR-043
6.7. Multi-Period Consolidation
UID: TS-FR-043
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects multiple periods, the NCIA Timesheet shall aggregate the time data across all selected periods into a single consolidated view showing totals per project and a period-by-period breakdown.

RATIONALE:

Long-range reviews require aggregation across multiple reporting periods.

SOURCE:

JTBD 7.6, ADR-010.

TS-FR-072
6.8. Monthly Prescribed Hours Status Dashboard
UID: TS-FR-072
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
STATEMENT:

The NCIA Timesheet shall provide an annual status dashboard showing, for each calendar month of the selected year, the following columns: required hours (working days in the month, excluding official holidays for the user's duty location per TS-FR-075, multiplied by the standard day length derived from the contracted hours profile per TS-FR-070); hours worked (sum of all productive non-absence hours logged in that month); percentage (hours worked divided by required hours); surplus or deficit (hours worked minus required hours in decimal hours). The dashboard shall also display per month: standard hours total, overtime hours, flex leave taken, annual leave taken, sick leave taken, and other absence. The dashboard shall show an annual totals row beneath the twelve monthly rows. All values are informational and derived from logged entries. The application shall not prevent the user from logging entries that would produce unexpected totals.

RATIONALE:

A month-by-month view of hours compliance is essential for annual reviews and for identifying months where a deficit must be recovered.

SOURCE:

Excel template STATUS sheet — Prescribed Working Hours table.

7. 7. Export and Import

TS-FR-044
7.1. CSV Export — Encoding and Format
UID: TS-FR-044
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the NCIA Timesheet generates any CSV export file, it shall encode the file as UTF-8 with a byte-order mark, format all dates as ISO 8601 (YYYY-MM-DD), and include column headers in English.

RATIONALE:

These settings ensure the file opens correctly in Microsoft Excel on Windows without any manual configuration.

SOURCE:

ADR-004.

TS-FR-045
7.2. Period Time Entry Export
UID: TS-FR-045
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects a period and requests a time entries export, the NCIA Timesheet shall generate a CSV file containing one row per time entry for the selected period with all entry fields included.

RATIONALE:

Raw entry exports support both personal review and submission to external systems.

SOURCE:

JTBD 7.1, ADR-004.

TS-FR-046
7.3. Period Summary Export
UID: TS-FR-046
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user requests a period summary export, the NCIA Timesheet shall generate a CSV file aggregating total hours per project per day for the selected period, suitable for direct entry into an HR or payroll system.

RATIONALE:

Payroll systems require aggregated daily totals, not individual time entries.

SOURCE:

JTBD 7.1, 7.3.

TS-FR-047
7.4. Scoped Export by Project or Task
UID: TS-FR-047
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user applies a project or task filter before exporting, the NCIA Timesheet shall restrict the exported records to entries matching that filter.

RATIONALE:

Client-facing reports must contain only data relevant to that client's project.

SOURCE:

JTBD 7.4.

TS-FR-048
7.5. Visual Period Breakdown
UID: TS-FR-048
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects a period, the NCIA Timesheet shall display a chart showing time distribution by project and task for that period alongside the tabular data.

RATIONALE:

Visual breakdowns reveal allocation patterns that are not immediately apparent from raw tables.

SOURCE:

JTBD 7.5.

TS-FR-049
7.6. CSV Import with Preview
UID: TS-FR-049
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user selects a CSV file for import, the NCIA Timesheet shall parse the file, display a preview of all records to be imported, report any rows that cannot be imported with the reason for rejection, and require explicit user confirmation before committing any changes.

RATIONALE:

Imports are destructive operations that must give the user full visibility and control before data is written.

SOURCE:

ADR-004.

TS-FR-050
7.7. Full Backup Export
UID: TS-FR-050
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall provide a full-backup export option that produces a set of CSV files covering all data collections: time entries, projects, allocations, leave records, user profiles, and the audit log.

RATIONALE:

Users must be able to back up and transfer their complete dataset without data loss.

SOURCE:

ADR-004.

8. 8. Desktop Application Shell

TS-FR-051
8.1. Native Desktop Window
UID: TS-FR-051
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall run as a native desktop application on Windows 10 version 1803 or later and Windows 11, displaying in a dedicated native window without a browser address bar, navigation controls, or tab strip.

RATIONALE:

A browser-like appearance erodes trust in the application as a professional tool and increases the risk of the window being lost among browser tabs.

SOURCE:

JTBD 8.1, ADR-011.

TS-FR-052
8.2. Standard Window Controls
UID: TS-FR-052
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet application window shall support standard Windows window operations: minimise to taskbar, maximise to full screen, restore to previous size and position, free resize by dragging edges, and close.

RATIONALE:

Standard OS window behaviour is expected by all Windows users.

SOURCE:

JTBD 8.3, 8.5, ADR-011.

TS-FR-053
8.3. Keep Window on Top
UID: TS-FR-053
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user activates the keep-on-top control, the NCIA Timesheet window shall remain in front of all other application windows until the user explicitly deactivates the control.

RATIONALE:

Users tracking active time need the timer visible without switching applications. This capability is only achievable via a native desktop shell and cannot be provided by a browser-based HTML file.

SOURCE:

JTBD 8.2, ADR-011.

TS-FR-054
8.4. Window Position Restore After Minimise
UID: TS-FR-054
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user restores the NCIA Timesheet window after minimising it, the application shall restore the window to the same screen position and dimensions it occupied before minimisation.

RATIONALE:

Restoring a window to an unexpected position or size disrupts the user's screen layout.

SOURCE:

JTBD 8.4.

TS-FR-055
8.5. Portable Executable Distribution
UID: TS-FR-055
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall be distributable as a single portable executable file that runs on Windows without requiring installation, an installer package, or administrator privileges.

RATIONALE:

The application must reach users who cannot or should not install software through formal IT channels.

SOURCE:

JTBD 8.6, ADR-011.

TS-FR-056
8.6. Quick-Add Entry Mode
UID: TS-FR-056
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall provide a quick-add entry mode accessible from any view, allowing the user to select a project and task and enter a duration in a single compact form without navigating away from the current view.

RATIONALE:

Low-friction entry encourages logging time at the moment it occurs rather than deferring to end-of-day reconstruction.

SOURCE:

JTBD 8.7.

TS-FR-057
8.7. Day View and Week View for Multi-Entry Editing
UID: TS-FR-057
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-26
RELATIONS (Child):
STATEMENT:

When the user wants to review or edit multiple entries, the NCIA Timesheet shall provide a day view and a week view that display all time entries for the selected period in an editable grid. The week view shall present seven columns (Monday through Sunday) for the selected ISO week, one row per project-and-task combination, with an editable decimal-hours cell at each day intersection. A daily subtotal row shall appear beneath all project rows showing the sum of hours logged per day. A weekly subtotal cell shall appear at the right of the daily subtotal row showing the sum across all seven days. The user may add a new project-and-task row at any time during the week session. Saving any cell shall persist the change immediately without requiring a separate submit action. Official holiday dates shall be visually indicated on their column header per TS-FR-074 and working-day and holiday counts shall be shown per TS-FR-073.

RATIONALE:

A structured 7-column grid with per-project rows and daily/weekly subtotals is the standard spreadsheet mental model for weekly timesheet entry and is far more efficient than individual entry forms for recurring work patterns.

SOURCE:

JTBD 8.7.

TS-FR-058
8.8. Copy Projects and Tasks from a Previous Week
UID: TS-FR-058
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

When the user opens a week view that contains no time entries, the NCIA Timesheet shall offer the option to copy all projects and tasks from the immediately preceding week or from a user-specified week number.

RATIONALE:

Recurring work patterns should not require re-selection of the same projects and tasks each week.

SOURCE:

JTBD 8.8.

TS-FR-059
8.9. Copy Week — Structural or Inclusive of Hours
UID: TS-FR-059
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

When the user copies projects and tasks from a previous week, the NCIA Timesheet shall allow the user to choose between copying the structure only with zero hours for all entries, or copying the full entries inclusive of the hours recorded in the source week.

RATIONALE:

Both use cases are valid: using a past week as a blank template versus replicating a typical week exactly.

SOURCE:

JTBD 8.9.

TS-FR-077
8.10. Weekly Time Entry Grid Route
UID: TS-FR-077
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-26
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall provide a dedicated Weekly Time Entry screen accessible from the main navigation as "Weekly" under the Time Entries section. The screen shall default to the ISO week containing today's date and shall allow the user to navigate to any other week by week picker or previous/next arrows. The grid shall display seven columns (Mon–Sun) with the calendar date beneath each day name. Each row represents one project-and-task combination; the user may add a new row by selecting a project and task from dropdown controls in an empty row at the bottom of the grid. Each intersection cell accepts a decimal hours value (e.g. 7.6). A sticky "Day total" row at the bottom of the grid shall show the sum of all project hours for each day column. A "Week total" cell at the far right of the day total row shall show the grand total for the week. The user may delete a project row if all its hours are zero. Official holidays in the user's duty-location calendar shall be indicated on the column header with an icon per TS-FR-074, and the working-day and holiday count summary from TS-FR-073 shall appear above the grid. All edits shall be auto-saved on cell blur.

RATIONALE:

The grid-per-week mental model matches the Excel timesheet template that users already understand and is substantially faster for recurring weekly patterns than adding individual entries one at a time.

SOURCE:

Pencil design section 19 screen 4 — WEEKLY VIEW.

TS-FR-078
8.11. Weekly Report View in Reports Screen
UID: TS-FR-078
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-26
RELATIONS (Parent):
STATEMENT:

When the user selects "Week" as the period type on the Reports screen and chooses an ISO week, the NCIA Timesheet shall render a read-only weekly summary table showing: one row per project-and-task combination that has at least one logged hour in the selected week; seven day columns (Mon–Sun) with the calendar date beneath the day name; each cell showing the decimal hours logged to that project on that day; a "Week total" column showing the row sum; a "Day total" row at the bottom of the table summing all project hours per day; a "Week grand total" cell at the intersection of the day total row and the week total column. Below the project rows the table shall show a separate leave-and-absence section with one row per leave type (annual leave, sick leave, overtime, flex leave taken, TDY, other absence) for any type that has a non-zero value in the selected week. The full table shall be exportable to CSV via the existing export mechanism (TS-FR-044).

RATIONALE:

A day-by-day breakdown of a single week in the reports screen lets the user cross-check their weekly grid input against the official record before submission and is more readable than a flat list of entries for a week.

SOURCE:

Pencil design section 19 screen 7 — REPORTS; TS-FR-037 Week period type.

TS-FR-079
8.12. Consolidated Navigation Structure
UID: TS-FR-079
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-26
STATEMENT:

The NCIA Timesheet shall organise its primary navigation into five top-level sections as follows:

  1. Dashboard — the summary landing page (TS-FR-003).
  2. Time Entries — contains: List view (day view and week list), Weekly Grid (TS-FR-077, TS-FR-057), and Leave & Attendance (TS-FR-031 to TS-FR-036, TS-FR-063). Leave logging is a time-valued activity and shall not require navigating outside the time entry area.
  3. Projects — contains: Project Overview and Overhead Codes (TS-FR-016 to TS-FR-022), and Project Allocations (TS-FR-023 to TS-FR-030). Allocations are a property of projects and shall be accessible from within the Projects section.
  4. Reports — contains: Period Report (TS-FR-037), Weekly Report (TS-FR-078), Multi-Period Consolidation (TS-FR-043), Monthly Prescribed Hours Status Dashboard (TS-FR-072), Audit Log (TS-FR-006 to TS-FR-007), and Export & Import (TS-FR-044 to TS-FR-050). Export is a reporting output and the audit log is a reporting view; both shall be accessible from within the Reports section.
  5. Settings — contains: User Profile settings (TS-FR-060 to TS-FR-076) and Official Holiday Calendar management (TS-FR-075). The holiday calendar is a configuration input and shall be managed in Settings, not as a standalone top-level page.

The application shall not expose /allocations, /leave, /holiday-calendar, /status-dashboard, /audit-log, or /export as independent top-level navigation items. These destinations shall be reachable only through their parent section described above.

RATIONALE:

Grouping related functionality under five coherent sections reduces navigation depth, aligns with the user's mental model (time = time entries; projects + budgets = projects; all outputs = reports; configuration = settings), and eliminates the need for eleven top-level nav items.

SOURCE:

UX review 2026-03-26.

9. 9. User Profiles

TS-FR-060
9.1. Create Local User Profile
UID: TS-FR-060
CLASSIFICATION: NATO Public
DATE: 2026-03-01
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall allow the user to create one or more named local user profiles without requiring a password, a network connection, or an external account.

RATIONALE:

The application is a personal productivity tool; authentication adds friction with no meaningful security benefit in this deployment model.

SOURCE:

ADR-005.

TS-FR-061
9.2. Active Profile Display and Switching
UID: TS-FR-061
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall display the active user profile at all times in the application shell and shall allow the user to switch to a different profile with a single action.

RATIONALE:

Users on a shared machine must be able to identify and switch the active profile without navigating into settings.

SOURCE:

ADR-005.

TS-FR-062
9.3. Profile Attribution on Write Operations
UID: TS-FR-062
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the user creates, edits, or deletes a time entry, the NCIA Timesheet shall tag the resulting audit log record with the identifier and display name of the active user profile at the time of the operation.

RATIONALE:

Audit records must be attributable to a named person even in the absence of authentication.

SOURCE:

ADR-005, ADR-006.

TS-FR-068
9.4. Personnel Submission Metadata (Supervisor, Sponsor, Area)
UID: TS-FR-068
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall allow each user profile to store the following submission metadata fields: Supervisor name, Sponsor name, and Area. These fields shall be pre-populated on any exported monthly timesheet report and shall be editable within the profile settings without affecting time entry data.

RATIONALE:

Contractor timesheet submissions require supervisor, sponsor, and area to be present on each monthly submission. Storing them in the profile avoids re-entry every month and reduces the risk of inconsistency between submissions.

SOURCE:

Excel template — monthly header fields (NAME, SUPERVISOR, SPONSOR, AREA).

TS-FR-069
9.5. Employment and Contract Type Classification
UID: TS-FR-069
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Parent):
STATEMENT:

The NCIA Timesheet shall allow each user profile to be classified with a contract or employment type, selecting from at minimum: IWC (Individual Wage Contractor), PBC (Performance-Based Contractor), NIC (NATO International Civilian). The selected type shall be stored in the profile and displayed on exported timesheet reports.

RATIONALE:

Different employment categories carry different leave entitlements, required hours targets, and submission obligations. The application must store the employment type to apply the correct rules per profile and to label exported reports accurately.

COMMENT:

MIL (Military) staff are explicitly out of scope at this stage. The type field is designed to accommodate additional values in future without requiring a schema change.

SOURCE:

Excel template (IWC/PBC contractor scope); user requirement to extend to NIC.

TS-FR-076
9.6. Contracted Hours and Standard Workweek on Profile
UID: TS-FR-076
STATUS: Draft
CLASSIFICATION: NATO Public
DATE: 2026-03-11
RELATIONS (Child):
STATEMENT:

The NCIA Timesheet shall allow each user profile to store the following contract work schedule fields: contracted hours per week (the total number of hours per week specified in the user's contract, default 38) and standard workweek days (the number of working days per week, default 5). Both fields shall be editable in profile settings at any time. Changes take effect immediately on all display totals but do not alter any existing time entries. These fields are informational. The application shall use them solely to derive the standard day length (TS-FR-070) for the purpose of displaying period totals (required hours, overtime, flex surplus/deficit). The application shall not enforce contracted hours, shall not prevent the user from logging more or fewer hours than contracted on any day, and shall not auto-fill or auto-deduct entries.

RATIONALE:

Displaying meaningful required hours, overtime, and flex totals requires a reference workweek. A 38-hour week over 5 days yields 7.6 hours per day — this is the standard NCIA contractor schedule. Making both values configurable covers staff on different contracts without hard-coding any assumption.

SOURCE:

Excel template STATUS sheet — hours/day times days/week.

10. 10. Non-Functional Requirements

TS-NFR-001
10.1. Full Offline Operation
UID: TS-NFR-001
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall operate fully without a network connection. No feature shall require internet access or contact any external server at runtime.

RATIONALE:

The application is intended for use in environments where network access may be restricted or unavailable.

SOURCE:

C4 Context Diagram, ADR-002.

TS-NFR-002
10.2. Data Persistence Across Restarts
UID: TS-NFR-002
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall retain all user data across application restarts and device reboots without requiring any manual save action from the user.

RATIONALE:

Implicit persistence is a baseline expectation for any desktop application.

SOURCE:

ADR-002, ADR-007.

TS-NFR-003
10.3. Data Location Independence
UID: TS-NFR-003
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall store all application data in the operating system user data directory independent of the location of the executable file, so that moving or renaming the executable does not result in data loss or inaccessibility.

RATIONALE:

Portable executables are frequently moved by users; data tied to the executable path is a reliability failure.

SOURCE:

ADR-011.

TS-NFR-004
10.4. No Installation Required
UID: TS-NFR-004
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

The NCIA Timesheet shall run on Windows 10 version 1803 or later and Windows 11 without requiring the user or an administrator to run an installer, register the application with the operating system, or modify system configuration.

RATIONALE:

The distribution model requires the application to be usable immediately on any compatible Windows machine.

SOURCE:

ADR-011, JTBD 8.6.

TS-NFR-005
10.5. Excel CSV Compatibility
UID: TS-NFR-005
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

All CSV files exported by the NCIA Timesheet shall open correctly in Microsoft Excel on Windows without requiring the user to perform an import wizard, adjust encoding settings, or apply any manual transformation.

RATIONALE:

Excel is the universal tool available to target users; any friction in opening exports defeats the purpose of exporting.

SOURCE:

ADR-004.

TS-NFR-006
10.6. Schema Migration on Update
UID: TS-NFR-006
CLASSIFICATION: NATO Public
DATE: 2026-03-01
STATEMENT:

When the NCIA Timesheet is updated to a version with a changed local database schema, the application shall automatically migrate all existing data to the new schema on first launch without data loss and without requiring user action.

RATIONALE:

Local-first applications must manage schema evolution transparently; users must never face a broken application after an update.

SOURCE:

ADR-002.