Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.appliedaifoundation.org/llms.txt

Use this file to discover all available pages before exploring further.

The Planned Maintenance System produces something deceptively simple: a list of jobs, with due dates. The work is interpreting that list. A vessel with 200 overdue routine jobs is in better shape than a vessel with 5 overdue critical-machinery jobs. A vessel with falling closure rate and steady open count is heading toward the first state. The pipeline below scores all of that and produces the one number a Technical Superintendent actually needs: where this vessel ranks against the rest of the fleet.

Where the data comes from

SourceWhat it provides
Vessel ERP (PMS module)Job register, due dates, completion records, criticality tags
Engine running-hours feedCounter readings — drives counter-based job due dates
PMS counter forms (vessel-side)Manual counter updation when telemetry isn’t available
Critical spares inventory (ERP)Stock vs minimum levels — feeds the compliance snapshot
PMS data lives entirely in the ERP. The pipeline reads job records and reconciles counter freshness against engine running-hours from the noon-report stream — discrepancies between the two surface as counter-updation gaps.

How PMS jobs are tracked

Maintenance jobs come in two flavours:
Job typeTriggerDue-date driver
Counter-basedEngine running hours, generator hours, compressor cyclesHjobHcurrentH_\text{job} - H_\text{current}
Calendar-basedWall-clock interval (monthly, quarterly, annual)DdueDtodayD_\text{due} - D_\text{today}
The pipeline handles both with the same threshold logic but reports them separately, because a vessel idle in port might not be falling behind on counter-based jobs even if the calendar says it should be.

Counter-based overdue

For an engine running 18 hours a day, every day matters: Overdue Hours=HcurrentHjob_due\text{Overdue Hours} = H_\text{current} - H_\text{job\_due} When negative, the job is still ahead of schedule. When positive, the job is overdue by that many running hours — convert to days at the vessel’s average running profile to get the operational pressure.

Calendar-based overdue

Δdays=Djob_dueDtoday\Delta_\text{days} = D_\text{job\_due} - D_\text{today}
Δdays\Delta_\text{days}Status
0\leq 0Overdue
00 to 3030Due Soon
>30> 30In Order

The four major-machinery rollups

The PMS surveillance produces five views the reviewer reads in order. Four of them are major-machinery rollups, each computed identically but on a different equipment family:
The most expensive equipment to defer maintenance on. Job cycle times are long (top-ends, mid-life, major overhauls). A delayed cylinder overhaul shows up as cylinder asymmetry on the ME performance review before it shows up as engine failure.
Each rollup produces the same shape of output:
CodeTitleEquipmentDue HoursCurrent HoursOverdue Hours
ME-CYL-OHCylinder overhaulME Cyl 524,00024,820820
ME-FUEL-INJFuel injector replacementME Cyl 38,0008,180180
ME-TC-WASHTurbocharger water-washME T/C1,5001,420
The major-machinery rollup templates emit precisely this shape, with the job code rendered as a hyperlink to the ERP record:
def add_jobcode_links(df):
    df["jobCode"] = df.apply(
        lambda x: (
            f"<a href=\"{x['link']}\" target=\"_blank\">{x['jobCode']}</a>"
            if pd.notna(x["link"]) and x["link"] != ""
            else x["jobCode"]
        ),
        axis=1,
    )
    return df

def filter_and_rename_columns(df):
    df = df[["jobCode", "jobTitle", "component",
             "jobDueCounter", "currentCounter", "overdue", "imo"]].rename(
        columns={
            "jobCode": "Code", "jobTitle": "Title", "component": "Equipment",
            "jobDueCounter": "Due Hours", "currentCounter": "Current Hours",
            "overdue": "Overdue Hours",
        }
    )
    return df
The fifth view is the all-machinery overdue summary, which deliberately filters to the four major families above — because that’s where deferred maintenance becomes safety risk.

The maintenance-debt index

Every vessel gets a single composite score that ranks it against the rest of the fleet. The index combines four signals:
SignalWeight
Open critical jobs5
Open major jobs2
Open routine jobs1
Chronic overrun (3+ periods on same job)+3 multiplier
Debt index=5Ncritical+2Nmajor+1Nroutine+3Nchronic\text{Debt index} = 5 \cdot N_\text{critical} + 2 \cdot N_\text{major} + 1 \cdot N_\text{routine} + 3 \cdot N_\text{chronic} The index is reported alongside the period-on-period delta:
  • Index falling — maintenance team is closing faster than opening; the vessel is recovering
  • Index stable — steady state; closure rate matches arrival rate
  • Index rising — drift; closure rate is below arrival rate, and the gap will compound
Two weeks of “rising” is enough to escalate even if the absolute index is below the fleet median — direction matters as much as magnitude.

Compliance snapshot — the PMS Summary view

Beyond the jobs themselves, the PMS Summary template assembles five compliance views into one document:
1

Maintenance jobs

Open and overdue jobs by criticality and machinery family. Same shape as the rollups above, but at the vessel level.
2

Certificates

Certificates expired or about to expire — cross-references the class pipeline so a class-certificate gap and a PMS gap show up in the same brief.
3

Critical spares

Spares marked critical with current quantity below minimum level. A critical-spares stockout is a future maintenance overrun the vessel doesn’t know about yet.
4

Machinery defects

Open defects on the main and auxiliary engine families — cross-references the defects pipeline for severity and age.
5

Counter updation

Whether the vessel has been updating engine counters at the expected cadence. Stale counters means the entire counter-based PMS view is unreliable, which is itself a compliance issue.
A reviewer reading the Summary sees all five at once. A vessel can pass any one of them and still fail the review — the Summary is graded on the worst of the five, not the average.

Vessel-level compliance percentage

For the headline number on the dashboard: Compliance %=Njobs completed on scheduleNmandatory jobs in period×100\text{Compliance \%} = \frac{N_\text{jobs completed on schedule}}{N_\text{mandatory jobs in period}} \times 100 Threshold: below 90% is flagged. Below 80% triggers escalation regardless of the criticality breakdown — at that point the maintenance system itself is the issue.

A real fleet snapshot

A weekly run across a 14-vessel fleet produces something like:
VesselCompliance %Debt indexTrendCritical openVerdict
POSUN96.4%311OK
AQUILA91.2%673Monitor
OCEAN88.7%1246Escalate
NEXUS94.1%220OK
The reviewer’s first action is on OCEAN — falling compliance, rising debt index, six critical jobs open. Two of the three vessels above 90% are healthy; AQUILA is the borderline case. The pipeline routes OCEAN to TSI automatically and flags AQUILA for next-week revisit.

What the senior review contains

  1. Headline — compliance %, debt index, fleet rank.
  2. Major-machinery rollups — Main Engine, AEs (per engine), Purifiers, Compressors.
  3. Overdue summary — across all machinery, ranked by criticality-weighted age.
  4. Compliance snapshot — the five PMS Summary views, with the worst of them highlighted.
  5. Debt-index trend — period-on-period chart with the verdict (falling / stable / rising).
  6. Recommendations — focused on the chronic overruns and the systemic gaps, not the individual late jobs.
  7. Escalation decision — to whom, and why.

Escalation triggers

TriggerSeverity
Any CRITICAL job overdueCRITICAL
Compliance below 80%HIGH
Chronic overrun (3+ periods) on any safety-critical jobCRITICAL
Equipment cluster (3+ jobs same major-machinery family)HIGH
Class item overdue past deadlineCRITICAL
Counter updation lapse (stale counters > 14 days)HIGH

A note on counter discipline

The single biggest data-integrity risk in PMS is stale counters. If the engineers haven’t updated the engine running hours in the ERP for two weeks, every counter-based due-hours calculation is wrong by however many hours the engine actually ran. The pipeline checks counter freshness against noon-report engine running hours and flags discrepancies — usually the noon report is right and the ERP is behind.
The fastest way to improve PMS compliance numbers is to fix counter updation. Half of “overdue” jobs on a stale-counter vessel are not actually overdue — they just look that way because the ERP thinks the engine has run more hours than it actually has.

References

Templates: pms-maintenance

PMS-maintenance suite — major-machinery rollups (Main Engine, Aux Engine, Purifier, Compressor), all-machinery overdue summary, PMS compliance summary, and supporting views (saturday LSA / FFA, machinery details, vessel particulars).

Related: Defects

PMS overruns and defects often share equipment families — cross-referencing finds the systemic issues.

Related: ME / AE performance

Cylinder asymmetry usually appears before the corresponding cylinder overhaul is officially overdue.

Related: Class

Class CMS items are PMS items with class consequences if missed.