1. CORE MEMBER SYSTEM

Member foundation

Django project/app setup — base project and roster app working.
Shared base.html — common navigation/layout across pages.
Django authentication — login/logout working.
Member linked to Django User — roster member can be tied to a login account.
Global current_member context processor — templates can identify the logged-in roster member.
Member status field — Active, LOA, Reserve, Inactive, Discharged currently available.

Member profile

Member detail page — provides one dossier for each roster member.
Division displayed — identifies the member's service branch.
Permanent team displayed — shows the member's standing assignment.
Appointment displayed — shows the member's current ORBAT responsibility.
Current status displayed — makes availability and service state visible.
Qualification history/details — records earned skills and their provenance.
Operation/deployment history — lists the member's recorded deployments.
Operation role summary — totals experience by deployment role.
Promotion/service history — presents dated rank and service changes.
Show team clearly — linked/styled as a dedicated assignment section. Added 2026-09-03
Show slot / appointment clearly — appointment and ORBAT slot context displayed. Added 2026-09-03
Status badge, current-period summary, and dated status timeline. — Completed 2026-09-07
Final status behavior uses the authoritative staff workflow and read-only admin history. — Completed 2026-09-07
Time in unit calculated from the member join date. — Added 2026-09-08
Optional member callsign displayed only when present. — Added 2026-09-08
Audited team and roster-slot assignment history shown in member details. — Added 2026-09-08
Dossier-style identity header and summary facts — presents rank, status, division, team, appointment, and tenure prominently. — Added 2026-09-08
Member profile tabs for Overview, Service History, Qualifications, Awards, and Operations — separates detailed records into focused views. — Added 2026-09-08
Completed member dossier visual and responsive polish — consolidates staff actions, replaces the repeated profile table with a responsive detail grid, standardizes dossier dates, and safely wraps long content. — Completed 2026-09-09
Structured recruit and candidate progression — records each recruit or candidate's branch, pipeline stage, training state, target team, trial dates, remarks, and individually verified entry requirements. — Completed 2026-09-10
Recruitment progression dossier summary — presents the member's current training or trial state, target team, deadline, and requirement status alongside the existing personnel record. — Completed 2026-09-10

2. DIVISION & RANK SYSTEM

Rank system

Rank model — stores division-specific rank definitions.
Rank ordering — defines progression within each hierarchy.
Rank promotion requirements — stores the thresholds for advancement.
Generic role-based promotion requirements — supports required experience in configured roles.
Generic num_as_role() counting — calculates experience for any approved role.
Promotion eligibility calculation — evaluates members against the next rank.
Promotion requirement remarks — provides context for configured thresholds.
Promotion sorting in Master Roster — helps staff review eligible members.

Divisions

Division model — stores organizational service branches.
Division name / abbreviation / ordering — controls division identity and sequence.
Final Ground rank hierarchy. — Confirmed 2026-09-08
Final Air rank hierarchy. — Confirmed 2026-09-08
Rank belongs to a Division — links every hierarchy to its branch.
Rank ordering scoped per division — prevents one branch changing another's progression.
Duplicate rank order prevented within a division — keeps progression unambiguous.
Duplicate abbreviation prevented within a division — keeps rank labels distinct.
next_rank remains inside current division — prevents cross-branch promotion errors.
Member exposes current division — derives branch information from rank consistently.
Division administration — allows staff to configure branches in Django admin.
Rank admin filter by division — makes large hierarchies easier to manage.
Division filter on Master Roster. — Added 2026-09-08
Master Roster grouped by division. — Added 2026-09-08
Division-aware Master Roster sorting. — Added 2026-09-08
Division-aware qualification member and rank sorting. — Added 2026-09-08
Optional division-specific rank insignia upload and display. — Added 2026-09-08
Mechanised units confirmed on the Ground division rank hierarchy — avoids maintaining a duplicate progression path for Pangolin and other mechanised teams. — Confirmed 2026-09-09
Qualification-specific rank requirements — supports mandatory named qualifications and grouped alternatives in promotion eligibility. — Completed 2026-09-09
Pilot Officer qualification policy — requires Basic Leadership, Advanced Leadership, SERE Specialist, and either Rotorcraft or Fixed-Wing Pilot qualification. — Configured 2026-09-09
Public rank progression catalogue — presents every division's ordered ranks, insignia, configured thresholds, named qualifications, tenure rules, and policy remarks. — Completed 2026-09-09
Configurable branch recruitment availability — records Open, Limited, or Closed intake for Infantry, Mechanised, Armoured, and Air and publishes it on recruitment and rank pages. — Completed 2026-09-10

Possible later promotion improvements

Time in current rank. — Added 2026-09-03
Latest promotion date. — Added 2026-09-03
Minimum time-in-rank requirements. — Added 2026-09-04
Division-transfer history. — Added 2026-09-04

3. QUALIFICATIONS

Qualification data

Qualification model — defines skills and licences tracked by the unit.
Weapon qualification category — groups weapon proficiency records.
Advanced qualification category — groups specialist and leadership skills.
Vehicle License category — groups vehicle authorization records.
MemberQualification model — links members to qualification state and history.
Qualified status — marks successfully completed qualifications.
Interested status — records member demand for future training.
Awarded On date — records when a qualification became effective.
Conducted By member — credits the responsible instructor when known.
Admin can open/close qualification interest — controls registration availability.

Qualification overview

Qualification overview matrix — compares qualification state across active members.
Split overview by category — keeps wide matrices focused and readable.
Qualified state — identifies completed training in the matrix.
Interested state — identifies requested training in the matrix.
Closed interest handling — communicates when registration is unavailable.
Logged-in member can toggle their own interest — enables member self-service requests.
Cannot toggle another member's interest — protects ownership of training preferences.
Qualified qualification cannot be toggled — prevents completed records becoming requests.
Closed qualification interest cannot be toggled — enforces staff registration controls.
Interested can toggle on/off — lets members revise their own requests.
Source-aligned qualification groups and manual display order. — Added 2026-09-08
Member qualification cooldown date with automatic availability and days remaining. — Added 2026-09-08
Grouped qualification matrix headers with configured column ordering — mirrors the reference layout and separates skill families visually. — Added 2026-09-08
Distinct Qualified, Interested, Closed, and None matrix badges — makes every state recognizable through a labelled symbol and color. — Added 2026-09-08
Qualifications Conducted history on instructor profiles — credits instructors with the qualification, recipient, and completion date. — Added 2026-09-08
Dedicated staff-only qualification award workflow — grants training records with date and optional instructor while updating existing interest records safely. — Added 2026-09-08
Searchable, category-filtered qualification catalogue — presents course descriptions, interest availability, qualified totals, and current demand. — Added 2026-09-08
Automatic one-calendar-month qualification cooldown — derives availability from the latest dated qualification and handles month-end dates correctly. — Added 2026-09-08
Expanded qualification lifecycle states — records Interested, Training, Evaluation, Qualified but not leading, Refresher, and Qualified as distinct states while synchronizing existing promotion/reporting compatibility fields. — Completed 2026-09-10
Lifecycle-aware qualification presentation — shows active development states on member dossiers, the personnel matrix, administration, and authenticated reports without counting incomplete stages as completed qualifications. — Completed 2026-09-10

4. TEAM / ORBAT SYSTEM

Core structure

Team model — stores unit teams and their division ownership.
Team photo field — supports optional team imagery.
Team remarks field — stores team-specific context.
Appointment model — defines reusable ORBAT responsibilities.
TeamSlot model — defines ordered positions within a team.
Member permanent Team attachment — records standing team membership.
Member optional TeamSlot assignment — records a member's specific position when applicable.
Members can belong to a team without a fixed slot at model level — supports attachments and flexible staffing.

Team overview

Team overview page — presents the unit's team structure.
Show TeamSlots — exposes each planned ORBAT position.
TeamSlot ordering — preserves the configured chain-of-command sequence.
Show assigned member — identifies who currently fills each position.
Show VACANT when slot is empty — highlights staffing gaps.
Team names link to Team Detail pages — connects overview and detailed records.

Team detail

Team detail URL — gives every team a stable destination.
Team detail view — assembles team roster and statistics.
Team detail template — presents the team dossier consistently.
Team photo display — shows configured team imagery.
Team remarks display — exposes team-specific context.
Slot-based member roster — presents personnel in ORBAT order.
Appointment display — labels each roster responsibility.
Rank display — provides rank context for assigned members.
Vacant slot display — makes open positions explicit.
Links to member profiles — connects team and personnel dossiers.
Show attached members without TeamSlots — includes personnel outside fixed positions.
Show member status — indicates current availability within the team.
Basic team statistics — summarizes roster occupancy.
Team member count — totals all assigned and attached members.
Filled slot count — totals occupied ORBAT positions.
Vacant slot count — totals staffing gaps.
Attached member count — totals members without fixed slots.
Empty teams and divisions hidden from the visual ORBAT. — Added 2026-09-08
Team-slot application action no longer overlaps the roster table. — Added 2026-09-08
Explicit Team ordering — gives administrators editable, deterministic control over team display order within each division. — Completed 2026-09-09
Team division identity — displays each team's owning division on overview and detail pages. — Completed 2026-09-09
Recent team operations — surfaces the five latest operations where attendance was recorded against the team. — Completed 2026-09-09
Average team attendance per operation — calculates typical turnout from recorded team deployment attendance. — Completed 2026-09-09
Team role statistics — summarizes and compares the operational roles filled while deploying with the team. — Completed 2026-09-09
Higher organizational hierarchy — models the Task Force, headquarters, platoons, squadrons, groups, teams, reserves, training centre, and wings as an ordered parent/child tree linked to existing Team and Division records. — Completed 2026-09-10
Public organization page and team breadcrumbs — presents the configured hierarchy as a responsive tree and connects represented units back to their team rosters. — Completed 2026-09-10

Validation / hierarchy

Visual ORBAT page. — Added 2026-09-04

5. OPERATIONS & ATTENDANCE

Operation model — stores the unified event and deployment archive.
Operation date — anchors deployment records chronologically.
Operation name — gives each deployment a recognizable identity.
Operation remarks — stores mission context and notes.
Operations overview page — provides a browsable deployment archive.
Operation detail page — presents one operation and its roster.
Staff can create an operation — enables controlled deployment entry.
Staff can edit an existing operation — supports authorized corrections.

Attendance

OperationAttendance model — links a member, operation, squad, and role.
Member attendance records — records who deployed on each operation.
Operation squad assignment — preserves the team served with for that mission.
Operation-specific role assignment — preserves the responsibility performed that mission.
Squad selection uses actual Team records — keeps operation assignments linked to the ORBAT.
Multiple squad blocks during attendance entry — supports efficient whole-operation roster entry.
Operation detail grouped by squad — presents the mission roster in operational structure.
Role sorting within each squad — keeps command roles ahead of operators.
Member operation history — presents deployments in the member dossier.
Operation links from member profile — opens the corresponding mission record.
Total operation count per member — summarizes deployment experience.
Role-specific counts per member — summarizes experience by responsibility.
Attendance changes immediately affect promotion calculations — keeps eligibility current.

Roles

Central operation role choices — keeps forms, reports, and ordering consistent.
Operator — records baseline deployed personnel.
Squad Leader — records section-command experience.
2IC — records section second-in-command experience.
Platoon Commander — records platoon command experience.
Platoon Sergeant — records senior platoon support experience.
Full ORBAT operation roles, including command, aircrew, crew, and team roles. — Added 2026-09-08
Deployment role statistics include reconciled operator counts and every recorded role. — Added 2026-09-08
Team Leader and Team 2IC excluded after requirements review — keeps recorded roles aligned with the approved ORBAT. — Confirmed 2026-09-08
Role ordering generated from the central role choices — keeps forms and attendance displays in one consistent sequence. — Confirmed 2026-09-08
Operation attendance defaults and fallbacks use OPERATOR — removes reliance on the obsolete MEMBER role key. — Confirmed 2026-09-08

Attendance corrections

Manual total operation adjustment — reconciles verified legacy deployments that lack individual attendance records.
Generic operation count adjustments for total, assigned-team, and any non-operator role — replaces dedicated SL/2IC correction fields. — Added 2026-09-08
Dated adjustment reasons and acting-member audit information — explains every correction and identifies who recorded it. — Added 2026-09-08
Append-only adjustment administration and member dossier history — protects prior corrections while keeping them reviewable. — Added 2026-09-08
Existing legacy adjustment values migrated without changing member totals or role counts — preserves the imported historical roster. — Added 2026-09-08

Event system

Generic Event model foundation — introduced typed unit activity before consolidation into Operation. — Added 2026-09-04; superseded 2026-09-09
Event type: Operation. — Added 2026-09-04
Event type: Training. — Added 2026-09-04
Event type: Special Operation — replaces the earlier Optional Operation label in the unified taxonomy. — Completed 2026-09-09
Event type: Joint Operation — distinguishes deployments conducted with partner units. — Completed 2026-09-09
Event type: Meeting. — Added 2026-09-04
Event type: Other — records unit activity outside the predefined categories. — Added 2026-09-08
Event attendance statuses for Present, Absent, Excused, and LOA — distinguishes accountable attendance from approved non-attendance. — Added 2026-09-08
Training attendance count on member dossiers — summarizes completed training participation. — Added 2026-09-08
Overall event attendance percentage — calculates Present against Present plus Absent while excluding Excused and LOA. — Added 2026-09-08
Event attendance administration and member history — supports unified entry in admin and review from the Operations tab. — Added 2026-09-08; consolidated 2026-09-09
Configurable event attendance weight and weighted member rate — supports policy-driven event importance across the unified activity archive. — Completed 2026-09-09
Confirmed staff operation deletion — removes the operation and cascading attendance while derived deployment, team, role, analytics, and promotion totals recalculate from remaining records. — Completed 2026-09-09
One attendance record with labeled split-role segments — credits both roles in role experience and analytics without double-counting the member's operation attendance. — Completed 2026-09-09
Compact unlimited attendance role segments with selectable role credit — hides the default Present status and extra segments from the entry table, stores any number of ordered role changes with optional remarks, defaults credit to the primary role, and lets staff select another counted role while retaining one operation per member. — Completed 2026-09-10
Unified Event and Operation model — migrates existing generic events into the operational archive and removes the duplicate model without losing activity data. — Completed 2026-09-09
Unified attendance records and statuses — preserves Present, Absent, Excused, and LOA alongside squad, role, split-role, weight, and attendance remarks. — Completed 2026-09-09
Explicit counts-as-operation policy — defaults new records to counting while excluding unchecked events and non-present attendance from deployment totals, role experience, analytics, and promotion requirements. — Completed 2026-09-09
Expanded event taxonomy — supports Operation, Special Operation, Joint Operation, Training, Meeting, and Other in one workflow. — Completed 2026-09-09
Scheduled event times and duration — records paired HH:MM start/end values, validates incomplete schedules, and calculates same-day or overnight duration. — Completed 2026-09-09
Member operational-hours summary — totals recorded durations for Present attendance on events that count as operations, following the UTF combat-record reference. — Completed 2026-09-09
Member event-type attendance matrix — displays attended totals for every supported activity type and retains weighted and accountable attendance rates. — Completed 2026-09-09
Unified event archive and dossier presentation — adds type, count-policy, schedule, duration, status, and event-history details using the supplied Website Template aesthetics. — Completed 2026-09-09
Per-member participation times — adds editable HH:MM start/end controls to every attendance row so reconnaissance, late arrival, and early departure time is recorded accurately. — Completed 2026-09-09
Event-to-member time defaults — propagates changed event-level times into untouched attendance rows while preserving manually overridden participation times. — Completed 2026-09-09
Historical operation time baseline — backfills current event and attendance records to 21:30-00:00, representing 2.5 hours across midnight unless staff records an override. — Completed 2026-09-09
Participation-aware operational hours — calculates each member's operational hours from their attendance-row times, with the event schedule retained as a fallback. — Completed 2026-09-09
Delegated team attendance submission — gives the Team SL/2IC access group a dedicated permission and team-scoped event editor while preserving unrestricted event and attendance management for authorized operations staff. — Completed 2026-09-25
Team attendance isolation and audit trail — restricts SL/2IC submissions to members of their permanent team, preserves every other team's records, rejects duplicate cross-team attendance, and audits each submission. — Completed 2026-09-25

6. PROMOTION / SERVICE HISTORY

Promotion eligibility

Determine next rank — finds the next rank within the member's division.
Total operation requirement — enforces minimum deployment experience.
Weapon qualification requirement — enforces minimum weapon proficiency.
Advanced qualification requirement — enforces minimum specialist training.
Generic operation-role requirements — enforces configured leadership or specialist experience.
Promotion eligibility indicator — gives staff an immediate readiness result.
Promotion requirement breakdown — explains met and unmet thresholds.
Staff-only promotion information on Master Roster — protects internal progression data.
Assigned-team operation requirement and correction field. — Added 2026-09-08
LCP requirements corrected to 11 total operations and 6 "with your assigned team". — Added 2026-09-08

Promotion history

PromotionHistory model — preserves each dated rank change.
Member — links the promotion to its recipient.
Previous Rank — records the rank held before the change.
New Rank — records the rank granted by the change.
Promotion Date — records when the promotion took effect.
Promoted/Approved By — identifies the approving member when known.
Remarks — stores supporting promotion context.
Promotion history shown on member profile — makes progression reviewable in the dossier.
Service history section — groups career records chronologically.

* [x] Unified member service timeline - combines promotions, status/LOA periods, team assignments, division transfers, and relevant roster audits into one chronological dossier view. - Completed 2026-09-11

Promotion workflow

Dedicated staff Promote Member page — provides a controlled advancement workflow.
Previous rank automatically uses current rank — prevents inconsistent history input.
New rank automatically uses next_rank — keeps progression inside the configured hierarchy.
Promotion history record created — preserves the completed action for review.
Member current rank updated — keeps the live roster synchronized.
Transaction-safe promotion — prevents partial rank and history updates.
Promotion automatically moves eligibility calculation to the next rank — refreshes future requirements immediately.
Revert latest promotion workflow — provides controlled correction of the latest promotion.
Reverting restores previous rank — returns the live roster to its prior state.
Reverting appends a correction record — restores the prior rank without deleting the original promotion audit record. — Updated 2026-09-09
Revert workflow safely redirects when no promotion history exists — avoids failing on an empty history.
Immutable manual rank-history facts and disabled deletion — keeps exceptional corrections append-only and auditable. — Completed 2026-09-09
Duplicate promotion submission protection — validates the locked member's expected and target ranks before recording one transaction-safe promotion. — Completed 2026-09-09
Dedicated rank-management permission — separates promotion, demotion, correction, and recommendation authority from generic staff status. — Completed 2026-09-09
Promotion recommendation queue — lists active, fully eligible members for authorized leadership review. — Completed 2026-09-09
Audited demotion and promotion-correction records — preserves earlier history while synchronizing the member's current rank. — Completed 2026-09-09

7. LOA / MEMBER STATUS HISTORY

Statuses

Active — marks members available for normal unit activity.
LOA — marks an approved temporary absence.
Reserve — marks members serving outside the active roster.
Inactive — marks members not currently participating.
Discharged — marks members whose unit service has ended.

Planned

MemberStatusHistory / LOA model. — Added 2026-09-04
Member. — Added 2026-09-04
Status. — Added 2026-09-04
Start date. — Added 2026-09-04
End date. — Added 2026-09-04
Reason. — Added 2026-09-04
Approved By / changed by. — Added 2026-09-04
Current LOA shown on profile. — Added 2026-09-04
LOA history. — Added 2026-09-04
Status history / timeline. — Added 2026-09-04
Dedicated staff status-change workflow. — Added 2026-09-07
Existing member status-history backfill. — Added 2026-09-07
Automatic prior-period closing and Member.status synchronization. — Added 2026-09-07
Status history protected from direct admin editing/deletion. — Added 2026-09-07
Discharge date recorded from the status effective date — preserves when unit service ended. — Added 2026-09-08
Required discharge reason in the audited status workflow — preserves the explanation for departure. — Added 2026-09-08
Honorable, Administrative, and Other discharge types — classifies departures consistently. — Added 2026-09-08
Existing discharged members backfilled from their dated roster remarks — structures Eli and Boomer's historical departure records. — Added 2026-09-08

8. DASHBOARD & ANALYTICS

Dashboard basics

Dashboard page — provides a concise operational landing view.
Active member count — summarizes currently available personnel.
LOA member count — summarizes approved temporary absences.
Reserve member count — summarizes reserve strength.
Total member count — summarizes all roster records.

Operation dashboard

Total operations recorded — shows the size of the deployment archive.
Average operation attendance — summarizes typical mission turnout.
Latest operation — surfaces the newest deployment record.
Latest operation attendance count — shows turnout for the newest mission.
Overall operation role counts — summarizes unit-wide deployed experience.

Operation analytics

Dedicated operation analytics page. — Added 2026-09-08
Attendance trend over time — data added 2026-09-04; 12-operation visual chart completed 2026-09-08
Most active members — data added 2026-09-04; ranked activity view completed 2026-09-08
Team participation — data added 2026-09-04; deployment and assignment comparison completed 2026-09-08
Member role experience ranking — data added 2026-09-04; per-role leaders completed 2026-09-08
Squad/team usage across operations. — Added 2026-09-04
Richer operation card/list presentation. — Added 2026-09-07

Command dashboard

Vacant TeamSlots summary — highlights open ORBAT positions and links to their teams. — Added 2026-09-08
Qualification interest summary — ranks active training demand without exposing individual interests. — Added 2026-09-08
Recent promotions — surfaces the latest personnel progression with dossier links. — Added 2026-09-08
Recent qualifications awarded — shows the latest dated training outcomes. — Added 2026-09-08
Upcoming events and next-operation summary — gives members a concise forward schedule. — Added 2026-09-08
Merged recent activity feed — combines promotions, qualifications, assignments, division transfers, and statuses, with adjustment audits for staff. — Added 2026-09-08
Public-facing command overview — establishes stronger unit identity and a responsive, task-focused first screen. — Added 2026-09-08

9. MASTER ROSTER

Baseline

Master Roster page — provides the authoritative personnel list.
Rank-based sorting — presents members in hierarchy order.
Name sorting — supports quick alphabetical lookup.
Promotion eligibility sorting — groups members ready for review.
Staff-only promotion information — limits internal progression details.
Team information — shows standing assignments in the roster.
Member links — connects roster rows to full dossiers.
Team sorting and populated-team/division filters. — Added 2026-09-08
Name/callsign search with team, rank, status, and division filters — supports combined roster narrowing without resetting active criteria. — Added 2026-09-08
Empty roster result spans all staff and non-staff table columns correctly. — Added 2026-09-08
Scannable Master Roster table — adds constrained columns, consistent dates, assignment structure, and clear status/division indicators while retaining staff-only promotion details. — Completed 2026-09-09
Master Roster card view and Table/Cards toggle — provides a responsive alternative presentation while preserving active filters, sorting, and staff-only information. — Completed 2026-09-09
Master Roster pagination — limits each page to 25 members and preserves the active search, filters, sorting, and display mode between pages. — Completed 2026-09-09

10. PERMISSIONS & SECURITY

Existing

Django authentication — provides account and session security.
Login/logout — lets users begin and end authenticated sessions.
Admin navbar hidden from non-staff — avoids exposing irrelevant privileged navigation.
Staff-only operation creation — protects deployment record creation.
Staff-only operation editing — protects deployment corrections.
Permission-controlled promotion and correction workflow — protects rank-changing actions with dedicated authorization. — Updated 2026-09-09
Qualification interest restricted to logged-in member — limits self-service to the account owner.
Member cannot toggle someone else's qualification interests — blocks cross-member changes.
CSRF protection on POST forms — prevents forged state-changing requests.
Dedicated roster workflow permissions — controls status/LOA, qualification awards, operations, and ORBAT management independently from broad staff status. — Completed 2026-09-09
Permission-aware workflow guards and action visibility — applies configured Django permissions to sensitive views and their corresponding controls. — Completed 2026-09-09

11. UI / UX

Existing

Dark theme — establishes the application's visual system.
Shared navbar — provides consistent navigation across pages.
Styled cards/tables/forms — gives core controls a consistent presentation.
Dashboard cards — makes headline statistics easy to scan.
Master roster table — presents dense personnel data efficiently.
Qualification matrix — compares training state across members.
Operation pages — presents deployment lists, records, and entry workflows.
Promotion pages — presents promotion and correction workflows consistently.
Member dossier header, summary facts, and tabbed record navigation — implements the core profile structure from the end-state reference. — Added 2026-09-08
Member status badge and responsive navigation — establishes reusable status styling and narrow-screen navigation behavior. — Added 2026-09-08
Searchable qualification catalogue and labelled matrix state badges — provides the completed catalogue and qualification-state presentation. — Added 2026-09-08
Public-facing command dashboard presentation — gives the application a useful, unit-focused first screen. — Added 2026-09-08
Responsive member profile detail grid and staff toolbar — keeps dossier identity, actions, assignments, and long records readable on narrow screens. — Completed 2026-09-09
Consistent status badges across roster, team, attendance, and staff review pages — gives availability and workflow states the same visual meaning throughout the application. — Completed 2026-09-10
Optional qualification iconography with compact initial fallbacks — displays admin-managed icons across the catalogue, personnel matrix, and member dossier without requiring an image. — Completed 2026-09-10
Reusable division indicators — distinguishes Ground, Air, Mechanised, and future divisions with labelled, accessible visual markers. — Completed 2026-09-10
Service-history timeline polish — strengthens chronological lines, markers, current-period emphasis, and section hierarchy across long personnel histories. — Completed 2026-09-10
Optional member profile photographs with initial fallbacks — adds admin-managed photographs to dossiers, roster cards, and staff assignments while preserving a complete no-image state. — Completed 2026-09-10
Consistent human-readable date formatting — standardizes visible record dates as d M Y and review timestamps as d M Y, H:i. — Completed 2026-09-10
Shared workflow form presentation — provides consistent labels, controls, help text, validation errors, focus states, and action groups across account and staff workflows. — Completed 2026-09-10
Standardized empty states — applies the shared empty-state treatment to remaining team, attendance, qualification, event-history, promotion, and transfer views. — Completed 2026-09-10
Mobile-friendly tables and navigation — completes the responsive table audit with overflow containment and preserves usable navigation on narrow screens. — Completed 2026-09-10
Responsive operation entry — reflows event details and each attendance record into compact mobile grids while retaining unlimited role segments and time overrides. — Completed 2026-09-10
Optional Master Roster card/grid view — provides a responsive visual browsing mode with a persistent Table/Cards toggle, filters, and pagination. — Completed 2026-09-10
Collapsible site and administration navigation — keeps Dashboard always visible, moves remaining public links into a responsive menu, and gives Django admin users a separate permission-aware administration menu. — Completed 2026-09-10

12. ADMIN / DATA MANAGEMENT

Existing

Member admin — manages roster identity and current assignments.
Rank admin — manages division hierarchies and requirements.
Team admin — manages team identity and structure.
Appointment admin — manages reusable ORBAT responsibilities.
TeamSlot admin — manages ordered team positions.
Qualification admin — manages skills, groups, order, and availability.
MemberQualification admin — manages member training records.
Operation admin — manages deployment records and rosters.
Attendance admin — manages member deployment assignments.
PromotionHistory admin — manages exceptional history corrections.
Rank role requirements manageable through admin — configures role experience thresholds.
Admin searching/filtering exists for several models — speeds up routine record lookup.

Improvements

TeamSlot inline under Team. — Added 2026-09-04
Better MemberQualification inline under Member. — Added 2026-09-04
Audited generic operation adjustment administration — allows new corrections while preventing edits and deletion of history. — Added 2026-09-08
Event attendance inline and filtered administration — supports efficient event roll entry and review. — Added 2026-09-08
Faster roster/team assignment editing — adds current-member slot editing and vacancy visibility directly inside Team administration while preserving assignment history. — Completed 2026-09-09
Better rank/division administration — adds inline rank hierarchy editing, editable thresholds, counts, filtering, and search. — Completed 2026-09-09
Better bulk qualification management — adds filtered list editing and bulk qualified/interested actions for training staff. — Completed 2026-09-09
Member team/slot consistency validation — rejects permanent slots that do not belong to the member's selected team at model and admin-form level. — Completed 2026-09-09
Qualification state validation — prevents qualified-and-interested conflicts, metadata on unqualified records, and future award dates while retaining legacy unknown award dates. — Completed 2026-09-09
TeamSlot duplicate constraint review — permits repeated appointment types but enforces one deterministic display order per team. — Completed 2026-09-09
Unique member attendance per operation — reconciles historical duplicates and enforces one deployment row per member and operation while split-role records preserve role changes. — Completed 2026-09-09
Sensitive roster change audit — records the acting user, timestamp, model, object, action, and changed values in an immutable admin audit log. — Completed 2026-09-09
Superuser-only graphical data model map — renders grouped Mermaid relationship views from a structured static information file, provides linked Django admin destinations and a textual relationship index, and hides both the page and navigation entry from non-superusers. — Completed 2026-09-10
Authenticated CSV report exports — allows logged-in users to download filtered Master Roster, event-attendance, qualification, and staff-assignment records with spreadsheet formula-injection protection. — Completed 2026-09-10
Formatted Excel report workbook — gives logged-in users a filterable .xlsx workbook with a summary and separate Master Roster, attendance, qualification, and staff-assignment sheets. — Completed 2026-09-10

Existing backup/dev workflow

dumpdata roster fixtures — exports roster records for versioned backup.
dumpdata users — exports account records separately from roster data.
loaddata — restores exported fixture records.
Git-based save/load workflow concept — keeps code and canonical fixture changes reviewable together.
Validated Neon-to-local synchronization — exports the live users and roster through a read-only connection before preparing a migrated SQLite replacement. — Added 2026-09-08
Local pre-sync database backup — retains the previous SQLite database for recovery before installing live data. — Added 2026-09-08
Production deploys preserve user changes — runs migrations without automatically reloading versioned fixtures over live records. — Added 2026-09-08

13. DATA IMPORT / MIGRATION

Authoritative Master List mapping — documents sheet-to-model ownership, the 30 August snapshot boundary, later records.txt precedence, and fields that must remain application-owned. — Completed 2026-09-10
Canonical roster fixture reconciliation — checks every supplied sheet, restores authoritative member and qualification values, removes identified live demo records, and retains newer dated operational history. — Completed 2026-09-10
Structured historical roster-data reconciliation — migrates approved last-promotion dates, LOA periods, and legacy Platoon Commander totals into functional history records while cleaning duplicated member remarks and retaining unresolved source facts. — Completed 2026-09-10

14. LATER FEATURES

Awards / medals. — Added 2026-09-04
Awards catalogue page. — Added 2026-09-04
Member awards displayed in dossier. — Added 2026-09-04
Visual ORBAT. — Added 2026-09-04

15. OTHERS (CUSTOM)

Team transfer application form. — Added 2026-09-04
Staff transfer application review page. — Added 2026-09-04
Beta development progress page — exposes the active roadmap and completed history as a navigation tab backed by the repository TODO. — Completed 2026-09-09
Roadmap commit history tab — displays every available Git commit, including one-line commits, with its date, hash, subject, and commit-message details. — Completed 2026-09-09
Deployment-independent Roadmap commit history — merges the runtime Git log with a versioned history snapshot refreshed by save.bat, so shallow production checkouts still display earlier commits. — Completed 2026-09-09
Member completed qualifications and qualification interests — presents earned qualifications as responsive, icon-led cards grouped by training family and lists requested training separately with current open or closed availability. — Completed 2026-09-10
Documented live/local data workflow — explains the read-only Neon synchronization, validated temporary restore, local backup, fixture replacement, and migration-only production deployment process. — Completed 2026-09-10
Versioned role loadout catalogue — stores 12 source-defined role presets, 201 populated equipment fields, available Arma export classes, effective dates, and immutable numbered revisions with a responsive public catalogue. — Completed 2026-09-10
Optional external member identifiers — stores provider-specific account identifiers with uniqueness, verification metadata, private-by-default visibility, member/admin management, and source Discord IDs for Eli and Boomer. — Completed 2026-09-10
Current S-4 qualification conductors — limits the qualification-award conductor list and submitted values to active members holding a current active S-4 Training & Doctrines staff assignment. — Completed 2026-09-25

16. STAFF ORGANIZATION & ACCESS

Staff organization roadmap and permission-mapping template — captures the departments and positions from the supplied Staff reference while leaving authorization policy explicitly editable and unassigned. — Completed 2026-09-09
Referenced staff structure confirmed — implements S-1 Community Affairs, S-1a Content Creators, S-2 Unit Safety, S-3 Zeus & Operations, and S-4 Training & Doctrines in reference order. — Confirmed 2026-09-09
Multi-position staff membership confirmed — allows one member to hold multiple staff appointments independently of rank, division, team, and ORBAT assignment. — Confirmed 2026-09-09
Configurable StaffDepartment and StaffPosition records — stores department hierarchy, identity, images, ordered repeated slots, head markers, vacancies, and active states. — Completed 2026-09-09
Current and historical StaffAssignment records — enforces one current holder per slot and records appointment dates, removal dates, approving members, and remarks. — Completed 2026-09-09
Staff administration — supports ordered department and position configuration plus assignment management from Django administration. — Completed 2026-09-09
Reference staff data migration — seeds five departments, 33 positions, matched current holders, and explicit vacancies without creating missing roster members. — Completed 2026-09-09
Public responsive Staff directory — displays department identity, hierarchy, fill totals, heads, holders, vacancies, and member dossier links. — Completed 2026-09-09
Member dossier staff appointment tagline — lists and links every current staff role above the member's normal rank and name. — Completed 2026-09-09
S-4 trainer designation reconciliation — expands ST to Master/Senior Trainer and RST to Reserved Master/Senior Trainer, with Kabuki as T1 Trainer and Alfredo as T2 Assistant Trainer. — Completed 2026-09-09
Hafiz-to-Frost staff assignment reconciliation — assigns the referenced Content Creator slot to the renamed current roster member. — Completed 2026-09-09
Superuser-only staff permission matrix — presents distinct staff roles against individual Django permissions and synchronizes each selection to a linked Django group. — Completed 2026-09-09
Granular CRUD and workflow permission columns — exposes View, Add, Change, Delete, and custom workflow actions as independently selectable permissions grouped by function. — Completed 2026-09-09
Consolidated staff access roles — maps repeated organizational slots to one department/role access row without coupling staff appointments to application authorization. — Completed 2026-09-09
Web Admin access role — adds a dedicated Django group whose membership controls admin-login eligibility while final feature permissions remain configurable in the matrix. — Completed 2026-09-09
Manual user-to-group access workflow — keeps group assignment in Django User administration and recalculates admin eligibility when access-role membership changes. — Completed 2026-09-09
Permission-aware fixture backup — preserves Django groups, group permissions, and user memberships alongside account data in the normal save and live-sync workflows. — Completed 2026-09-09
Superuser-only member permission tab — shows a linked member's assigned Django groups and mapped staff access roles without exposing authorization details to ordinary staff or public viewers. — Completed 2026-09-25
Team SL/2IC attendance access role — adds a permission-matrix role and Django group for scoped team attendance submission, seeds currently linked SL/2IC accounts, and retains explicit administrator control of future group membership. — Completed 2026-09-25