Skip to content

T1.13 §94.10 Omni-Pioneer Body Generator — replace Protocol Layer 2 split morphology with [WORK,CARRY,MOVE] triads #83

@grgisme

Description

@grgisme

Summary

Tier: T1.13
Backlog: §94.10
Component: BootstrappingOverlord.ts

Problem

Elite Screeps codebases (Overmind, TooAngel, Tigga) universally use Omni-Pioneers [WORK, CARRY, MOVE] during blackout, not split morphologies. The reason is simple: if one half of a split morphology dies, the other half is permanently useless — mathematical deadlock. Omni-Pioneers are slightly less energy-efficient per tick but are mathematically impossible to deadlock.

Implementation

/**
 * Generates a bootstrap body of [WORK, CARRY, MOVE] triads
 * scaled to available energy. Minimum 1 triad (200e) for RCL 1.
 */
function generateBootstrapBody(energy: number): BodyPartConstant[] {
    const triads = Math.min(Math.floor(energy / 200), 16); // max 16 triads = 48 parts
    const body: BodyPartConstant[] = [];
    for (let i = 0; i < triads; i++) body.push(WORK, CARRY, MOVE);
    return body;
}

Cleanup required:

  • Delete all Protocol Layer 2 code (25-tile-rule drop-miner + relay-hauler split)
  • Remove SpawnMorphology.DROP_MINER and SpawnMorphology.RELAY_HAULER from bootstrapping paths
  • Replace all bootstrap body-generation calls with generateBootstrapBody(room.energyAvailable)

Benefits

  • Eliminates §94.2 (T0.6) split-morphology deadlock permanently
  • Eliminates §94.3 (T0.7) zero-capacity freeze permanently
  • Simpler code: one body type handles all blackout scenarios

Related

  • Prerequisite for: T1.12 (Parallelized Recovery)
  • Resolves: T0.6 (Split-Morphology De-Sync)
  • Resolves: T0.7 (Zero-Capacity State Machine Freeze)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions