Smooth convoy startup and record Workshop 0.0.153
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-11-10 15:34:24 +01:00
parent d8352136e8
commit 2390f77554
72 changed files with 15088 additions and 161 deletions
+10 -4
View File
@@ -10,9 +10,9 @@ The existing `automaticConvoyEnabled` switch remains supported. A saved zero con
## Vehicles, soldiers and cargo
Each USSR convoy uses the original order: PKM UAZ, ammunition Ural, troop Ural, PKM UAZ, BMP-1, PKM UAZ. There are **25 original soldiers**: eleven vehicle crew and all fourteen Ural passenger seats, alternating between two independent seven-person infantry teams. Drivers and gunners stay in separate vehicle groups. The groups use the successor's memberless prefab, not the original framework's group-spawn hooks.
Each USSR convoy has **five vehicles and ten original crew**: three PKM UAZs, an ammunition Ural and a BMP-1. The former troop-transport slot is retired; that transport and infantry belong to the hunter roster. Drivers and gunners stay in separate vehicle groups using the mission's memberless prefab.
One finite receipt reserves eight groups and 25 bodies before creation. Partial creation consumes that slot and preserves surviving entities. The production budget permits the existing 60-body allowance plus 25 bodies per configured convoy, within the shared 256-formation ledger. Losses never refund convoy slots. This is an admission ceiling, not a performance guarantee for twenty simultaneous convoys.
One finite receipt reserves five groups and ten bodies before creation. Partial creation consumes that slot and preserves surviving entities. The production budget permits the existing 60-body allowance plus 25 bodies per configured convoy, within the shared 256-formation ledger. Losses never refund convoy slots. This is an admission ceiling, not a performance guarantee for twenty simultaneous convoys.
The ammo truck receives eight random weapons from the convoy faction's native arsenal and six matching magazines/projectiles per muzzle of each successfully inserted weapon. The batch has a 96-ammunition-request ceiling and is issued once. Storage failures reduce the actual load; there is no refill after looting. Vehicle contents, casualties and surviving soldiers remain physical after controller release. The later [infantry resupply integration](multiconvoy-resupply.md) captures actual faction-independent magazine identities after both cargo phases and supports each admitted convoy's original ammo truck, with shared demand replay/cooldown guards.
@@ -26,7 +26,11 @@ These frozen originals now feed the existing coordinator's narrow [one-to-two mi
## Travel and combat
After prison escape and existing force admission, automatic deployment begins after a 30-second grace period. Every five seconds it tests up to eight road formations, for at most 120 startup passes. It uses friendly military outpost, depot and radio-site road approaches within 500 metres, deduplicated at 300 metres. Starting formations are separated by up to one kilometre and retain all existing road, terrain and obstruction checks.
After prison escape and existing force admission, automatic deployment begins after a 30-second grace period. Each startup pass tries up to eight road-search seeds, with at most 120 passes. A new pass waits five seconds after the preceding queued survey completes. Friendly military outpost, depot and radio-site approaches are surveyed separately, within 500 metres and deduplicated at 300 metres. Starting formations are separated by up to one kilometre and retain all existing road, terrain and obstruction checks.
Road searching now yields every callback: at most eight query/setup/candidate pieces per 20 ms callback, with a cooperative 2 ms work target. A single native call cannot be interrupted. Physical creation then submits at most one group, vehicle or crew-member spawn per 50 ms callback, rechecking placement and ownership as the world changes. The native-readiness deadline starts after physical creation finishes. Initial cargo submits at most two inventory requests per 50 ms callback; the original finite choices and callback barriers remain intact. Pending work pauses on empty servers and is canceled when the mission stops. Dense or obstructed terrain can delay completion; no smaller or unsafe convoy substitutes for a failed plan.
Performance logs separate `convoy_intercept_ms`, `convoy_runtime_ms` and `convoy_startup_ms` inside the existing `hq_convoys_ms` total. Queued work is measured separately as `convoy_survey_ms`, `convoy_create_ms` and `convoy_cargo_ms`; include those and global `update_interval_ms` when assessing stalls. Moving work out of the HQ tick alone is not evidence that a stall disappeared. These are wall timings, not CPU utilization; parent and child scopes overlap.
The initial road route feeds an ongoing circuit between different friendly bases. One travel controller paces each column: the lead vehicle follows the route and each follower targets the preceding surviving vehicle. After combat or a new base leg, travel order follows physical approach to the destination while vehicle identities and combat roles remain unchanged. The leader waits when a neighbour gap exceeds 160 metres and resumes below 90 metres; followers regulate their speed and retain stable movement targets. Arrival requires the lead vehicle to physically reach the route endpoint and the followers to close up in order. A timeout never counts as arrival. Commanded vehicles with no five-metre progress retry native navigation after 45 seconds; after three minutes without progress they leave the column, preserving their physical crew and cargo. Combat, boarding, intentional spacing waits and supply stops do not consume that timer. Convoys pause 45–90 seconds after physical arrival before selecting their next destination. The original carried supplies between bases but did not unload or regenerate them; no artificial unloading is added here.
@@ -36,7 +40,9 @@ After three minutes without a fresh contact, the teams reboard under escort cove
## Validation
`tests/test_convoy_column.py` executes the production spacing, stable-target, physical-arrival, leader-promotion, supply-ownership and stuck-recovery controller against native-boundary doubles. `tests/test_supply_convoys.py` executes production startup, base selection, arrival, circuit timing, contact freshness and perception boundaries, scoped crew-abandonment priorities, combat quiet time, boarding interruption, timeout and truck-loss policies. The receipt tests cover all eight groups and configured fleets through twenty convoys, including no replacement after losses. Existing dispatch, native seat allocation, cargo, HQ radio and force-ledger regressions remain in the main check suite.
The [10 November startup investigation](evidence/convoy-startup-performance-2026-11-10/README.md) records the queued startup changes, 25 targeted regression programs and a native before/after startup comparison. It does not qualify later driving or multiplayer performance.
`tests/test_convoy_column.py` executes the production spacing, stable-target, physical-arrival, leader-promotion, supply-ownership and stuck-recovery controller against native-boundary doubles. `tests/test_supply_convoys.py` executes production startup, base selection, arrival, circuit timing, contact freshness and perception boundaries, scoped crew-abandonment priorities, combat quiet time, boarding interruption, timeout and truck-loss policies. The receipt tests cover the five active vehicle groups, retired transport slot and configured fleets through twenty convoys, including no replacement after losses. Existing dispatch, native seat allocation, cargo, HQ radio and force-ledger regressions remain in the main check suite.
`tools/headless_workbench.py --project chat --smoke supply-convoys --rounds 1 --timeout 900` exercises production automatic startup and physical AI in an isolated Workbench profile. Its final controlled contact explicitly tests native dismount/reboarding rather than claiming that an injected report proves perception. Remote-client replication and twenty-convoy performance require dedicated-server testing. Earlier one-convoy evidence in `convoy-migration.md` and `convoy-startup.md` remains historical evidence for those earlier sources.