Black Pearl Pull Scoring Model v1.0

Below is a formal, numeric, weighted scoring model you can run on every WOT pull. It outputs:

  • 0–100 Overall Score
  • SAFE / CAUTION / STOP
  • Component subscores you can graph over time

It’s built to be knock- and safety-dominant (because that’s what keeps EJ205s alive).


Black Pearl Pull Scoring Model v1.0

1) Overall Score (0–100)

Soverall=0.35Sknock+0.25Sfuel+0.20Sboost+0.15Sthermal+0.05SrepeatS_{overall} = 0.35S_{knock} + 0.25S_{fuel} + 0.20S_{boost} + 0.15S_{thermal} + 0.05S_{repeat}Soverall​=0.35Sknock​+0.25Sfuel​+0.20Sboost​+0.15Sthermal​+0.05Srepeat​

Why these weights: knock + fueling are the biggest “engine-ending” failure modes on pump gas; boost control and thermal stability drive repeatability; repeatability is important but not more important than safety.


2) Subscores (each 0–100)

A) Knock Score SknockS_{knock}Sknock​ (0–100)

Use 3 penalties: IAM, FBKC, FLKC.

IAM penalty

  • Let IAMstart,IAMendIAM_{start}, IAM_{end}IAMstart​,IAMend​
  • ΔIAM=IAMstartIAMend\Delta IAM = IAM_{start} – IAM_{end}ΔIAM=IAMstart​−IAMend​

PIAM={0ΔIAM=060ΔIAM>0P_{IAM} = \begin{cases} 0 & \Delta IAM = 0 \\ 60 & \Delta IAM > 0 \end{cases}PIAM​={060​ΔIAM=0ΔIAM>0​

(Any IAM drop during/after the pull is a major red flag → heavy penalty.)

FBKC penalty

  • Let FBKCminFBKC_{min}FBKCmin​ be most negative FBKC during pull (e.g., -1.41, -2.81)

PFBKC=min(60, 20FBKCmin)P_{FBKC} = \min(60,\ 20 \cdot |FBKC_{min}|)PFBKC​=min(60, 20⋅∣FBKCmin​∣)

So: -1.41 → 28.2 penalty, -2.81 → 56.2 penalty, -4.22 caps at 60.

FLKC penalty

  • Let FLKCminFLKC_{min}FLKCmin​ be most negative learned knock in the pull region

PFLKC=min(40, 15FLKCmin)P_{FLKC} = \min(40,\ 15 \cdot |FLKC_{min}|)PFLKC​=min(40, 15⋅∣FLKCmin​∣)

Knock ScoreSknock=max(0, 100(PIAM+PFBKC+PFLKC))S_{knock} = \max(0,\ 100 – (P_{IAM}+P_{FBKC}+P_{FLKC}))Sknock​=max(0, 100−(PIAM​+PFBKC​+PFLKC​))


B) Fuel Score SfuelS_{fuel}Sfuel​ (0–100)

This score cares about AFR error + injector duty headroom.

AFR tracking penalty

You need: measured wideband AFR AFRmeasAFR_{meas}AFRmeas​ and commanded/target AFR AFRtgtAFR_{tgt}AFRtgt​ (or OL target if available).

Compute error over the pull window (e.g., 3500–6500 rpm):

  • EAFR=median(AFRmeasAFRtgt)E_{AFR} = \text{median}(|AFR_{meas} – AFR_{tgt}|)EAFR​=median(∣AFRmeas​−AFRtgt​∣)
  • EAFR,max=max(AFRmeasAFRtgt)E_{AFR,max} = \text{max}(|AFR_{meas} – AFR_{tgt}|)EAFR,max​=max(∣AFRmeas​−AFRtgt​∣)

PAFR=30EAFR+10EAFR,maxP_{AFR} = 30\cdot E_{AFR} + 10\cdot E_{AFR,max}PAFR​=30⋅EAFR​+10⋅EAFR,max​

(Example: median error 0.2 and max 0.5 → PAFR=30(0.2)+10(0.5)=11P_{AFR}=30(0.2)+10(0.5)=11PAFR​=30(0.2)+10(0.5)=11.)

IDC penalty

Let IDCmaxIDC_{max}IDCmax​ be peak injector duty cycle (%).PIDC={0IDCmax852(IDCmax85)85<IDCmax9540IDCmax>95P_{IDC} = \begin{cases} 0 & IDC_{max} \le 85 \\ 2\cdot (IDC_{max}-85) & 85 < IDC_{max} \le 95 \\ 40 & IDC_{max} > 95 \end{cases}PIDC​=⎩⎨⎧​02⋅(IDCmax​−85)40​IDCmax​≤8585<IDCmax​≤95IDCmax​>95​

Fuel ScoreSfuel=max(0, 100(PAFR+PIDC))S_{fuel} = \max(0,\ 100 – (P_{AFR} + P_{IDC}))Sfuel​=max(0, 100−(PAFR​+PIDC​))


C) Boost Control Score SboostS_{boost}Sboost​ (0–100)

Reward accurate tracking; punish overshoot and oscillation.

You need boost target BtgtB_{tgt}Btgt​ and actual BactB_{act}Bact​ (same units).

Compute:

  • Peak overshoot: O=max(BactBtgt)O = \max(B_{act}-B_{tgt})O=max(Bact​−Btgt​)
  • Mean absolute tracking error: EB=mean(BactBtgt)E_B = \text{mean}(|B_{act}-B_{tgt}|)EB​=mean(∣Bact​−Btgt​∣)
  • Oscillation proxy: J=std(ΔBact)J = \text{std}(\Delta B_{act})J=std(ΔBact​) (std of boost “rate of change”)

Povershoot=25OP_{overshoot} = 25\cdot OPovershoot​=25⋅O Ptrack=20EBP_{track} = 20\cdot E_BPtrack​=20⋅EB​ Posc=10JP_{osc} = 10\cdot JPosc​=10⋅J

Boost ScoreSboost=max(0, 100(Povershoot+Ptrack+Posc))S_{boost} = \max(0,\ 100 – (P_{overshoot}+P_{track}+P_{osc}))Sboost​=max(0, 100−(Povershoot​+Ptrack​+Posc​))

(If you don’t have a clean JJJ, skip it and redistribute weight inside boost.)


D) Thermal Score SthermalS_{thermal}Sthermal​ (0–100)

We’re scoring IAT and heat soak sensitivity.

Let:

  • IATstart,IATendIAT_{start}, IAT_{end}IATstart​,IATend​
  • ΔIAT=IATendIATstart\Delta IAT = IAT_{end}-IAT_{start}ΔIAT=IATend​−IATstart​

PIATlevel={0IATstart90F0.5(IATstart90)90F<IATstart130F30IATstart>130FP_{IATlevel} = \begin{cases} 0 & IAT_{start} \le 90F \\ 0.5\cdot (IAT_{start}-90) & 90F < IAT_{start} \le 130F \\ 30 & IAT_{start} > 130F \end{cases}PIATlevel​=⎩⎨⎧​00.5⋅(IATstart​−90)30​IATstart​≤90F90F<IATstart​≤130FIATstart​>130F​ PIATrise=2ΔIATP_{IATrise} = 2\cdot \Delta IATPIATrise​=2⋅ΔIAT

Thermal ScoreSthermal=max(0, 100(PIATlevel+PIATrise))S_{thermal} = \max(0,\ 100 – (P_{IATlevel}+P_{IATrise}))Sthermal​=max(0, 100−(PIATlevel​+PIATrise​))

(If you log °C, adjust thresholds accordingly.)


E) Repeatability Score SrepeatS_{repeat}Srepeat​ (0–100)

This only makes sense once you have two pulls under similar conditions.

Let:

  • ΔBpeak\Delta B_{peak}ΔBpeak​ = |peak boost pull1 – pull2|
  • ΔAFR\Delta AFRΔAFR = median |AFR error pull1 – pull2|
  • ΔFBKC\Delta FBKCΔFBKC = |FBKCmin pull1 – pull2|

Prep=20ΔBpeak+50ΔAFR+10ΔFBKCP_{rep} = 20\cdot \Delta B_{peak} + 50\cdot \Delta AFR + 10\cdot \Delta FBKCPrep​=20⋅ΔBpeak​+50⋅ΔAFR+10⋅ΔFBKC Srepeat=max(0, 100Prep)S_{repeat} = \max(0,\ 100 – P_{rep})Srepeat​=max(0, 100−Prep​)


3) Classification Rules (hard gates + score bands)

Even if the weighted score looks okay, these gates override:

STOP (immediate)

  • ΔIAM>0\Delta IAM > 0ΔIAM>0 (IAM drop)
  • FBKCmin2.8FBKC_{min} \le -2.8FBKCmin​≤−2.8 in the WOT load cells
  • AFR goes lean beyond a hard limit you set (example: > 0.8 AFR lean vs target at high load)
  • IDCmax>95%IDC_{max} > 95\%IDCmax​>95%

CAUTION

  • FBKCminFBKC_{min}FBKCmin​ between -1.4 and -2.8
  • Any FLKC in the WOT region
  • Boost overshoot > 1.0 psi (or equivalent)
  • Thermal score < 70

SAFE

  • No IAM drop, minimal/no knock, fueling and boost stable

Score bands

  • SAFE: Soverall85S_{overall} \ge 85Soverall​≥85
  • CAUTION: 70–84
  • STOP: <70 or any STOP gate triggered

4) How you use it (the money part)

Every revision gets a line item like:

  • v1.07: Overall 78 (CAUTION) → “Reduce timing 0.5° @ 4.2g/rev 4200–5200, fix WGDC overshoot”
  • v1.08: Overall 89 (SAFE) → “Proceed to small WGDC +1% in midrange”

This turns your tuning into a measurable product and your videos into evidence-based episodes.


Quick probing questions (so we set the right thresholds)

  1. Are you logging wideband AFR into the ECU/log, or is it external only?
  2. What units are you using for boost (psi or kPa), and do you have boost target logged?
  3. What’s your typical fuel (91/93, ethanol blend, etc.)?

Answer those and I’ll tailor the hard limits + coefficients so the scoring matches your exact setup.


Fuel Profiles (choose one per pull/session)

Profile A — 91 Pump (most conservative)

  • Knock penalties harsher
  • Lean events less tolerated
  • IDC headroom more protected

Profile B — 93 Pump

  • Moderately conservative

Profile C — Ethanol Blend (assume E30 unless you specify)

  • Knock tolerance can be slightly wider
  • Still zero tolerance for IAM drops and major knock
  • Fuel system limits matter more (ethanol increases fuel demand)

1) Weights (slightly revised for ethanol)

91 / 93

Soverall=0.38Sknock+0.25Sfuel+0.20Sboost+0.12Sthermal+0.05SrepeatS_{overall} = 0.38S_{knock} + 0.25S_{fuel} + 0.20S_{boost} + 0.12S_{thermal} + 0.05S_{repeat}Soverall​=0.38Sknock​+0.25Sfuel​+0.20Sboost​+0.12Sthermal​+0.05Srepeat​

Ethanol blend (E30 default)

Soverall=0.34Sknock+0.30Sfuel+0.18Sboost+0.13Sthermal+0.05SrepeatS_{overall} = 0.34S_{knock} + 0.30S_{fuel} + 0.18S_{boost} + 0.13S_{thermal} + 0.05S_{repeat}Soverall​=0.34Sknock​+0.30Sfuel​+0.18Sboost​+0.13Sthermal​+0.05Srepeat​

Why: ethanol usually improves knock margin, but it stresses fueling capacity, so fueling gets more weight.


2) Hard STOP Gates (these do not negotiate)

All fuels (91/93/E-blend)

STOP immediately if any:

  • IAM drops during/after pull
  • FBKC ≤ -2.8 in WOT/load region
  • IDC > 95%
  • Boost overshoot > 2.0 psi (or equivalent) with oscillation

Fueling STOP (AFR error vs your target)

This uses error vs commanded, not absolute AFR.

  • 91: STOP if max error ≥ +0.6 AFR lean
  • 93: STOP if max error ≥ +0.7 AFR lean
  • E30: STOP if max error ≥ +0.8 AFR lean
    (Still not “safe,” just slightly more tolerant before hard stop.)

3) Knock Score SknockS_{knock}Sknock​ (fuel-adjusted penalties)

IAM penalty (unchanged)

PIAM={0ΔIAM=070ΔIAM>0P_{IAM} = \begin{cases} 0 & \Delta IAM = 0 \\ 70 & \Delta IAM > 0 \end{cases}PIAM​={070​ΔIAM=0ΔIAM>0​

FBKC penalty coefficient by fuel

Let FBKCminFBKC_{min}FBKCmin​ be most negative value.

  • 91:   PFBKC=min(70, 25FBKCmin)\;P_{FBKC} = \min(70,\ 25\cdot |FBKC_{min}|)PFBKC​=min(70, 25⋅∣FBKCmin​∣)
  • 93:   PFBKC=min(65, 22FBKCmin)\;P_{FBKC} = \min(65,\ 22\cdot |FBKC_{min}|)PFBKC​=min(65, 22⋅∣FBKCmin​∣)
  • E30:   PFBKC=min(60, 18FBKCmin)\;P_{FBKC} = \min(60,\ 18\cdot |FBKC_{min}|)PFBKC​=min(60, 18⋅∣FBKCmin​∣)

FLKC penalty coefficient by fuel

  • 91:   PFLKC=min(50, 18FLKCmin)\;P_{FLKC} = \min(50,\ 18\cdot |FLKC_{min}|)PFLKC​=min(50, 18⋅∣FLKCmin​∣)
  • 93:   PFLKC=min(45, 16FLKCmin)\;P_{FLKC} = \min(45,\ 16\cdot |FLKC_{min}|)PFLKC​=min(45, 16⋅∣FLKCmin​∣)
  • E30:   PFLKC=min(40, 12FLKCmin)\;P_{FLKC} = \min(40,\ 12\cdot |FLKC_{min}|)PFLKC​=min(40, 12⋅∣FLKCmin​∣)

Sknock=max(0, 100(PIAM+PFBKC+PFLKC))S_{knock} = \max(0,\ 100 – (P_{IAM}+P_{FBKC}+P_{FLKC}))Sknock​=max(0, 100−(PIAM​+PFBKC​+PFLKC​))


4) Fuel Score SfuelS_{fuel}Sfuel​ (ethanol tightens IDC rules)

AFR penalty (same math, different sensitivity)

Let:

  • EAFR=median(AFRmeasAFRtgt)E_{AFR} = median(|AFR_{meas}-AFR_{tgt}|)EAFR​=median(∣AFRmeas​−AFRtgt​∣)
  • EAFR,max=max(AFRmeasAFRtgt)E_{AFR,max} = max(|AFR_{meas}-AFR_{tgt}|)EAFR,max​=max(∣AFRmeas​−AFRtgt​∣)
  • 91: PAFR=35EAFR+12EAFR,maxP_{AFR} = 35E_{AFR} + 12E_{AFR,max}PAFR​=35EAFR​+12EAFR,max​
  • 93: PAFR=32EAFR+11EAFR,maxP_{AFR} = 32E_{AFR} + 11E_{AFR,max}PAFR​=32EAFR​+11EAFR,max​
  • E30: PAFR=30EAFR+10EAFR,maxP_{AFR} = 30E_{AFR} + 10E_{AFR,max}PAFR​=30EAFR​+10EAFR,max​

IDC penalty (this is where ethanol gets strict)

Let IDCmaxIDC_{max}IDCmax​ be peak IDC.

91 / 93

  • 0 penalty ≤ 85%
  • linear penalty 85–95%
  • hard cap >95%

PIDC={0IDCmax852.2(IDCmax85)85<IDCmax9545IDCmax>95P_{IDC} = \begin{cases} 0 & IDC_{max} \le 85 \\ 2.2\cdot (IDC_{max}-85) & 85 < IDC_{max} \le 95 \\ 45 & IDC_{max} > 95 \end{cases}PIDC​=⎩⎨⎧​02.2⋅(IDCmax​−85)45​IDCmax​≤8585<IDCmax​≤95IDCmax​>95​

E30 (more fuel required → protect headroom)

  • 0 penalty ≤ 82%
  • linear penalty 82–92%
  • hard cap >92% (because you’ll run out of injector fast with E content swings)

PIDC,E30={0IDCmax822.8(IDCmax82)82<IDCmax9255IDCmax>92P_{IDC,E30} = \begin{cases} 0 & IDC_{max} \le 82 \\ 2.8\cdot (IDC_{max}-82) & 82 < IDC_{max} \le 92 \\ 55 & IDC_{max} > 92 \end{cases}PIDC,E30​=⎩⎨⎧​02.8⋅(IDCmax​−82)55​IDCmax​≤8282<IDCmax​≤92IDCmax​>92​ Sfuel=max(0, 100(PAFR+PIDC))S_{fuel} = \max(0,\ 100 – (P_{AFR} + P_{IDC}))Sfuel​=max(0, 100−(PAFR​+PIDC​))


5) Boost Score SboostS_{boost}Sboost​ (keep it tight on all fuels)

Same structure, but overshoot matters slightly less on ethanol only if knock is clean (still not a free pass).

  • All fuels:
    Povershoot=25O,Ptrack=20EBP_{overshoot} = 25O,\quad P_{track} = 20E_BPovershoot​=25O,Ptrack​=20EB​
  • Oscillation penalty stays:
    Posc=10JP_{osc} = 10JPosc​=10J

Sboost=max(0, 100(Povershoot+Ptrack+Posc))S_{boost} = \max(0,\ 100 – (P_{overshoot}+P_{track}+P_{osc}))Sboost​=max(0, 100−(Povershoot​+Ptrack​+Posc​))


6) Thermal Score SthermalS_{thermal}Sthermal​ (ethanol still heat-soaks)

Keep thermal strict. Ethanol helps knock, not physics.

Use your existing IAT-based penalties, but trigger CAUTION earlier if:

  • Thermal score < 75 (all fuels)
  • Or IAT rise is steep pull-to-pull

7) Classification Bands (same, but smarter)

  • SAFE: Soverall85S_{overall} \ge 85Soverall​≥85 and no gates triggered
  • CAUTION: 70–84
  • STOP: <70 or any STOP gate

The one detail I need to lock this down

When you say ethanol blend, are you usually:

  • E20–E30, or
  • E40–E60, or
  • “whatever the pump gives” (variable)?

Because IDC limits and AFR tolerance need different ceilings once you push past ~E30. If you tell me your typical blend range, I’ll finalize the E-profile into E30 vs E50 with correct IDC headroom rules.

🔵 Fuel Profile 1 — 91 Octane (Most Conservative)

Intended Use

  • Daily driving
  • Hot weather
  • Long pulls
  • Worst-case fuel quality

Target Philosophy

  • Stability > output
  • Slightly richer under load
  • Lower peak boost
  • Conservative timing

Recommended Calibration Envelope (EJ205 Safe Bias)

  • Peak Boost: ~15–16 psi (VF22 dependent)
  • WOT AFR target: 10.8–11.0
  • Timing ramp conservative midrange
  • Zero tolerance for repeat knock
  • Injector duty ceiling: 90%

Scoring Sensitivity

  • Highest knock penalty
  • Tightest AFR lean tolerance
  • CAUTION if any FLKC in WOT

Use this profile when ambient temps are high or fuel quality is questionable.


🔵 Fuel Profile 2 — 93 Octane (Primary Power Target)

Intended Use

  • Performance street
  • Controlled pulls
  • Main 305whp attempt baseline

Target Philosophy

  • Controlled midrange torque
  • Smooth boost ramp
  • Clean combustion

Recommended Calibration Envelope

  • Peak Boost: ~17–18 psi (depending on turbo efficiency)
  • WOT AFR target: 10.8–11.2
  • Timing modest but progressive
  • Injector duty ceiling: 92–93%

Scoring Sensitivity

  • Moderate knock penalty
  • AFR tracking must stay tight
  • Boost overshoot tolerance slightly higher than 91

This should be your primary tuning fuel for developing the 305whp calibration.


🔵 Fuel Profile 3 — E30 Blend (Controlled Ethanol Strategy)

This is where things get serious — but also risky if fuel system isn’t upgraded.

Intended Use

  • Maximum safe pump-based output
  • Knock resistance increase
  • Thermal stability improvement

Target Philosophy

  • Maintain knock margin
  • Protect fuel system headroom
  • Do not chase timing aggressively

Recommended Calibration Envelope

  • Peak Boost: ~18–19 psi (only if airflow supports it safely)
  • WOT AFR target: 11.3–11.5 equivalent gasoline scale
  • Timing slightly increased vs 93, but incremental
  • Injector duty ceiling: 90–92% max (ethanol consumes more fuel)

Critical Rule

If IDC exceeds 92% at E30 → stop increasing boost immediately.

Ethanol gives knock headroom.
It does NOT give fuel system headroom.


⚠️ Fuel Strategy Doctrine

Never Tune on Mixed Unknown Fuel

If you don’t know ethanol content, treat it as 93.

Never Increase Timing and Boost in the Same Revision

Especially on E blends.

Always Log Before Power Escalation

Fuel trims, IAM stability, and IDC must be clean first.


🧠 Strategic Recommendation

For Project Black Pearl:

  • Develop base stability on 93
  • Validate repeatability
  • Then introduce controlled E30 map
  • Compare log scores side-by-side

That gives you:

  • Content
  • Data
  • A monetizable comparison framework
  • A safety buffer

Black Pearl Fuel Doctrine (Injector-Limited Edition)

✅ Allowed Operating Profiles (with 440cc injectors)

1) 91 Octane Map (Daily / Hot Weather / Worst Fuel)

Purpose: survive anything.

  • Boost: conservative
  • Timing: conservative
  • Goal: reliability + knock-free

IDC guardrail: keep ≤ 85–88% at WOT.


2) 93 Octane Map (Primary Performance Map)

This is your best path to ~305whp if the hardware/turbo supports it.

  • Boost: moderate-high but controlled
  • Timing: incremental
  • Fueling: stable and rich enough to protect

IDC guardrail: keep ≤ 90–92% (absolute).


3) “Light Ethanol” Blend Only (E10–E20 max)

This is the only ethanol strategy that makes sense on 440s unless you accept high risk.

Target range: E10–E20

  • Use it for knock margin and consistency
  • Not for turning the boost knob to the sky

IDC guardrail: keep ≤ 88–90%.

E30? On 440s: not recommended for WOT tuning unless you’re okay with living on the edge.


🚫 Prohibited Profile (for your current setup)

E30 “Power Map” on 440cc injectors

Hard no as a repeatable strategy.
If you do it anyway, the scoring model should treat:

  • IDC > 92% as STOP
  • Any lean deviation as STOP
  • Any IAM drop as STOP

Because you have no headroom, and ethanol content variation will bite you.


Update to the Scoring Model for Your Setup

Injector Duty STOP Gates (tightened)

Because injectors are old and small:

  • STOP if IDC > 92% (all fuels)
  • CAUTION if IDC 88–92%
  • SAFE zone ≤ 88%

(Yes, this is stricter than before — that’s what “20-year-old 440s” demands.)

Fuel Profile Weights (injector-limited)

Even on pump gas, fueling deserves more weight because you’re near the ceiling.Soverall=0.36Sknock+0.30Sfuel+0.18Sboost+0.11Sthermal+0.05SrepeatS_{overall} = 0.36S_{knock} + 0.30S_{fuel} + 0.18S_{boost} + 0.11S_{thermal} + 0.05S_{repeat}Soverall​=0.36Sknock​+0.30Sfuel​+0.18Sboost​+0.11Sthermal​+0.05Srepeat​


What this means for your 305whp target (realistic)

With 440cc injectors, the build is usually capped by:

  • IDC headroom
  • AFR stability at high airflow
  • consistency between cylinders (old injectors)

You can still build a fast WRX, but 305whp is “possible but not guaranteed” depending on turbo efficiency, intercooling, and your boost curve.

If you want 305whp reliably and safely, injectors are the next mandatory move.


The smartest money move (ROI)

Option A — Replace injectors with something modern

  • STI “pinks” (565cc) if you want simple and proven
  • ID1050x / similar if you want future flex / bigger turbo headroom

Option A is the move that prevents you from wasting time “tuning around” injector limits.

Option B — Keep 440s and cap the mission

  • Focus on response and midrange
  • Target a lower whp goal but very reliable
  • Build the rally drivability angle

Leave a Reply

Your email address will not be published. Required fields are marked *