S1 Personnel Section

Man the force. Personnel accountability, strength reporting, casualty operations, replacement flow, and personnel services for the task force.

CONCEPT
The Design in One Paragraph

The S1 lands as the fourth instance of the house pattern: a personnel running estimate at /s1 (facts and assumptions, strength rollup ribbon, CA_S1 conclusions line that joins the S4 and S6 staff inputs on the commander's update), with boards underneath feeding it: PERSTAT, the casualty workflow, the replacement pipeline, and the suspense roster. Per FM 1-0, the section runs on four competencies: man the force, provide HR services, coordinate personnel support, and conduct HR planning and operations. It is an operations-process section: it consumes the common picture and produces personnel staff work for paragraph 4 of the order.

Build contract: docs/specs/S1_SECTION_DESIGN_2026_06_10.md · PerClient seam at src/lib/per/ · PER_* tables in schema-per.ts · Foundry twin branch s1-per-proto.

Planned: PERSTAT Board (/s1/perstat)
UnitAssignedPDYPosture
1st Combined Arms Bn (fictional)620581 (94%)Green
2d Cavalry Sqdn (fictional)540452 (84%)Amber
3d Infantry Bn (fictional)600564 (94%)Greenlate report
Battle Group East (fictional)480449 (94%)Green
Forward Support Co (fictional)180171 (95%)Green

Fictional preview numbers. Daily report upsert per unit (the LOGSTAT pattern); PDY percent drives the posture chip; reports older than 24 hours flag as late.

Planned: Casualty Workflow (/s1/casualty)
ReportedVerifiedNotification In ProgressTrackedClosed

A gated lifecycle (canTransitionCasualty, audited through the generalized routing_log) modeling the workflow the section runs: collect, verify, support notification, track, close.

Sanitization is strictest here by design: status flow only. No names, no identifying fields anywhere in the schema, placeholder categories like [INJURY] and [NONBATTLE]. The object demonstrates the process, never the person.

Planned: Replacement Pipeline (/s1/replacements, second wave)
3
Forecast
2
In Transit
1
Arrived
4
Assigned

Inbound gains by duty position (never by person), moving Forecast → In Transit → Arrived → Assigned. The movement-board shape, reused.

Planned: Awards and Evaluations Suspenses (/s1/suspenses, second wave)

Quarterly awards board packet

Award

due 2026-06-14

Evaluation suspense, rating cycle

Evaluation

due 2026-06-24

Personnel action review

Personnel Action

due 2026-07-02

Overdue is derived from the due date, never stored (the S6 COMSEC suspense pattern).

Planned Data Model (PER_*)
per_statusPERSTAT: assigned, present for duty, gains and losses by unit, posture derived from PDY percent
casualty_eventCasualty WORKFLOW record with a gated lifecycle. Placeholder categories, no identifying fields by schema design
replacementInbound gain moving Forecast to Assigned. Duty positions, never people
suspense_actionAwards, evaluations, and actions with due dates; Overdue derived, never stored

Plus the shared constructs every section already uses: estimate_note rows with section 'S1' (ids S1F-N / S1A-N) and the CA_S1 assessment line the commander's update reads.

Build Path

First wave (one session): PerClient seam, schema-per.ts, Blue Town seed plus additive migration, /s1 running estimate, /s1/perstat with report upsert, /s1/casualty with the gated lifecycle.

Second wave: replacement pipeline, suspense roster, /api/personnel-assist drafting the paragraph 4 personnel subparagraph, PDY percent on the S3 unit cards.

Foundry: PER_* object types on an s1-per-proto branch, cross-branch links to OPS_Unit only, casualty transitions enforced by Action submission criteria.

The running-estimate page shape is proven three times (S2, S4, S6); the S1 build is pattern execution, not design work.