TSO UNIT MANAGEMENT — TODO

Legend

Done / working
Partially done / needs refinement
To do
Optional / later

Last reconciled against the implementation, test suite, and authoritative Master List: 2026-09-10.

Project references

* [United Task Force deployment record](https://unitedtaskforce.net/dossier/auth/320/deployments) — functional end-state reference for member combat records, deployment timelines, and cumulative operational hours.

* references/TSO Master list (2).zip — authoritative source for the 30 August 2026 roster snapshot: members, ranks, qualifications, teams, radio plans, and staff assignments. See references/MASTER_LIST_MAPPING.md for field mapping and source precedence.

* records.txt — dated update history used only where an entry is later than the Master List snapshot or supplies history the spreadsheet does not retain.

* references/Temasek_Spec_Ops_Website_Template.zip — visual reference for the site's layout, typography, colors, component styling, and responsive presentation; Django remains the source of truth for data and workflows.

1. CORE MEMBER SYSTEM

Member profile

The member dossier and its responsive presentation are complete.

2. DIVISION & RANK SYSTEM

Rank configuration and correctness

Mechanised units use the existing Ground division rank hierarchy. Rank-specific qualification rules and the public progression catalogue are complete.

3. QUALIFICATIONS

The qualification catalogue, personnel matrix, instructor history, staff award workflow, and automatic cooldown are complete.

4. TEAM / ORBAT SYSTEM

Team overview

Teams now use an administrator-controlled order within each division, with name as the deterministic fallback.

Team detail

The team detail page now presents its division, roster, vacancies, attached members, image, remarks, recent deployments, average turnout, and operational role distribution.

Validation / hierarchy

Assignment integrity work is complete under Admin / Data Management. Task Force, platoon, squadron, group, team, reserve, and training-centre relationships are now represented by a linked organizational tree.

5. OPERATIONS & ATTENDANCE

Operations and generic events now share one typed activity and attendance workflow. Deployment totals, role experience, analytics, and promotion requirements include only Present attendance on records explicitly configured to count as operations.

6. PROMOTION / SERVICE HISTORY

No remaining promotion workflow items are currently tracked. Future permission-to-role mapping remains under Permissions & Security.

7. LOA / MEMBER STATUS HISTORY

The audited status-history workflow, including discharge metadata, is complete.

8. DASHBOARD & ANALYTICS

The command dashboard now covers personnel readiness, training demand, upcoming activity, and recent unit outcomes.

9. MASTER ROSTER

Presentation

The Master Roster now provides responsive table and card views, clear status/division indicators, persistent combined filters and sorting, and pagination for larger datasets. Mechanised units follow the Ground division rank hierarchy.

10. PERMISSIONS & SECURITY

Permission policy configuration

The superuser-only staff permission matrix and its Django groups are implemented under Staff Organization & Access. This section now tracks the policy choices that still need to be entered into that matrix.

Configure Normal Member permissions — establishes the baseline actions available to roster members outside staff groups.
Configure Training Staff roles — authorizes qualification and training workflows without unrestricted administration.
Configure Leadership roles — authorizes personnel and operational decisions for command staff.
Configure the Web Admin role — defines the final system-configuration permissions granted in addition to admin login.

Application permissions and authorization

Finalize qualification authorization policy — maps qualification-definition CRUD permissions and the existing award_qualification workflow permission to the approved staff roles.
Review all URLs for authorization/IDOR protection — prevents users accessing records by guessing identifiers.
Decide the public/private boundary for roster pages, then add login_required where required — aligns the internal management app with the intended public-facing site.

Long term, is_staff should mostly mean Django admin access, while app actions should use dedicated permissions.

11. UI / UX

Improvements / end-state presentation

All currently scoped presentation improvements are complete. New UI work should be added here as it is identified.

The supplied static template is a visual/end-state reference only. The Django app remains the source of truth for authentication, permissions, data and workflows.

12. ADMIN / DATA MANAGEMENT

Improvements

All currently scoped report exports are complete. New administrative data-management work should be added here as it is identified.

Existing backup/dev workflow

The Windows scripts now support local fixture backups and validated live-to-local synchronization.

13. DATA IMPORT / MIGRATION

The canonical fixture is reconciled against the 30 August 2026 Master List, with later dated records.txt changes retained. The field mapping and precedence rules are documented in references/MASTER_LIST_MAPPING.md; what remains is repeatable import automation.

Create a repeatable dry-run import command — validates a source export and reports proposed changes before writing data.
Automate imported-reference, duplicate, and count-total validation — makes the current one-time reconciliation checks repeatable before applying a future import.
Import historical operations when a reliable source is available — reconstructs deployment and role experience beyond audited adjustments.
Import additional promotion/service history when a reliable source is available — preserves career progression not already recorded.

14. LATER FEATURES

Training courses — groups qualifications into scheduled instruction with attendance and outcomes.
Award detail pages — show the award description and members who have received it.
Recruitment/application system — manages prospective members from application through acceptance.
Public enlistment/application page — collects candidate information outside the private roster.
Application review workflow — gives recruiters a controlled review and decision process.
Operation signup — lets members declare availability before an operation.
Mission slotting — assigns signed-up members to mission-specific positions.
AAR records — stores after-action reports alongside operations.
Zeus / mission statistics — tracks mission-making and game-master contributions.
Documents / SOP library — centralizes controlled unit reference material.
Leadership/staff notes — stores restricted internal personnel or planning notes.
Notifications — alerts members to relevant roster, qualification, and event changes.
Discord integration — connects roster workflows to the unit's communication platform.
Audit/activity timeline across entire unit — provides one chronological record of significant changes.
Suggestion thread by players

15. OTHERS (CUSTOM)

Master List features not yet modelled

Team radio plans and callsigns — stores the command, team, primary, and alternate frequencies plus appointment callsigns defined in Callsigns.html; these are organizational identifiers, separate from Member.callsign.

Pending data-reconciliation confirmation

These records remain unchanged until their history or intended application behavior is confirmed:

P-M2 — reconcile Tokyo's 2SG Ground rank to Sqn Ldr Air rank change dated 5 July 2026 as a division transfer plus a separately documented rank conversion, rather than a cross-division promotion.
P-M3 — confirm whether Amtiel's Ground-to-Mechanised conversion to ME-4 took effect on 25 or 26 July 2026 and how the separate Military Expert rank track should coexist with Mechanised using the Ground hierarchy.
P-M4 — reconstruct the applicable Ground promotion history for Poh, Pac, Viola, and Danz before recording their later Air transfers; retained source last-promotion dates are Poh 7 November 2025, Pac 25 January 2026, Viola 2 August 2026, and Danz 12 July 2026.
P-M5 — confirm whether Alfredo's move to OCdt on 12 July 2026 represents an Air promotion, a division transfer, or both, while retaining the existing LCP to CPL promotion dated 5 July 2026.
S-M — confirm LOA start dates for Mamba, Ben F., Ricky, Hattori, Wiowa, Lepus, and Nuri and decide how Reserve assignment and LOA status should overlap before creating status-history rows.
A-A — replace baseline-only team assignment histories with the evidenced movement dates in records.txt, retaining the 8 September 2026 baseline only where no earlier source exists.
D-A — add division-transfer history for confirmed Air and Mechanised moves after the effective dates and rank-conversion policy are approved.
Add an Air sortie adjustment or statistic — represents Alfredo's four source sorties separately from ordinary operation attendance.
Resolve Zray's driving-licence discrepancy — confirms whether the detailed vehicle sheet or the qualification tally controls before changing the qualified state.

Qualification trainer authorization

Reference source: records.txt trainer licences, designations, and training-type matrix. The implementation must distinguish application permissions from authorization to conduct a particular qualification.

Add configurable TrainerLicense levels — models ST (Master/Senior Trainer), T1 (Trainer), T2 (Assistant Trainer), RST (Reserved Master/Senior Trainer), RT (Reserved Trainer), and DST (Designated Squad Trainer).
Add dated member trainer-licence assignments — records who holds each licence, its effective date, active/reserved/revoked state, approving member, review date, and remarks.
Add qualification-specific trainer authorizations — maps individual trainers to the exact qualifications or training modules they may conduct or evaluate.
Reconcile reference training types with Qualification records — maps BCT, AT, MG, Grenadier, Marksman, Sniper, RTO, JTAC, Medic, Zeus, BLC, ALC, Armored, pilot, Airborne, Combat Diver, Engineer, and specialist modules without relying on ambiguous text matching.
Seed the current trainer and training-type matrix from records.txt — imports the listed ST, T1, T2, RST, and DST holders plus their named module authorizations.
Define licence inheritance policy — decides whether ST/T1/T2/RST/RT levels grant default modules or whether every trainer-module authorization must remain explicit.
Enforce DST scope — limits Designated Squad Trainers to BCT for new recruits in their assigned squad unless a broader authorization is explicitly granted.
Define reserved-trainer activation rules — determines when RST and RT holders may conduct or evaluate training and whether activation must be recorded.
Enforce qualification availability — prevents awards for closed modules such as Sniper or Combat Diver unless an authorized override and reason are recorded.
Filter qualification award forms by authorization — only shows qualifications the selected conductor may evaluate and only lists authorized conductors for the selected qualification.
Enforce authorization server-side — rejects crafted or stale award submissions when the conductor lacks an active authorization, regardless of what the form displayed.
Decide self-evaluation policy — determines whether trainers may award themselves qualifications and which role, approval, or audit exception is required.
Add authorized-trainer visibility — shows available evaluators and their licence level on qualification pages and the member-focused qualification display.
Add trainer authorization administration — supports ordered licence configuration, individual/bulk module grants, review dates, suspension, revocation, and clear validation errors.
Add audited trainer authorization history — preserves who granted, changed, suspended, reviewed, or revoked each licence/module authorization and why.
Add trainer evaluation and remediation workflow — records feedback, required re-evaluation, retained/revoked outcomes, and the reviewer without exposing restricted notes publicly.
Model operational approvals separately — tracks pre-approved pilots plus Armored and unmanned-aircraft OIC authority without treating them as qualification-evaluator permissions.
Add authorization regression tests — covers unauthorized direct POSTs, expired/revoked/reserved licences, DST scope, closed modules, self-evaluation policy, overrides, and historical attribution.

16. STAFF ORGANIZATION & ACCESS

Reference source: references/TSO Master list (2).zip → TSO Master list/Staff.html. The confirmed reference structure is implemented as configurable database records.

Staff refinements

Current staff appointments now appear above the member dossier rank/name. S-4 trainer titles and the Hafiz-to-Frost rename are reconciled against records.txt.

Staff page

The responsive Staff directory is currently public and read-only, consistent with the roster and ORBAT pages. Final visibility remains part of the pending permission mapping.

Permission matrix

The Django admin now provides one matrix row per distinct department/role plus a separate Web Admin role. Only superusers can see or update it. Each column is an individual Django model permission or custom workflow action, and every checked permission synchronizes to the linked Django group. Users are assigned to those groups manually, and staff appointments do not grant access automatically.

Features awaiting permission mapping

Map Staff page and staff-directory visibility.
Map staff department and position configuration.
Map staff appointment, transfer, and removal.
Map member creation and profile editing.
Map member status, LOA, reserve, and discharge workflows.
Map promotion and promotion-revert workflows.
Map qualification configuration and qualification awards.
Map operation creation, editing, attendance, and deletion.
Map awards and medals management.
Map team, slot, and transfer-application management.
Map access to Django administration and unrestricted maintenance.

CURRENT RECOMMENDED PRIORITY

Given what is already complete, the active roadmap is now:

Permissions policy

Configure the staff role/permission selections in the permission matrix.
Decide and enforce which roster pages require authentication.

Data import safety

Repeatable dry-run spreadsheet import — provides a validated migration path from the reference roster.

Later end-state modules

Recruitment / application system — manages prospective members and decisions.
Operation signup / mission slotting — manages availability and mission assignments.