# Torqestra Match Lab 0.2.0

Experimental browser simulator, 31 October 2026. Implements an interpretation of founding specification 0.1.2, not a certified competitive engine.

## Included
Three robots per side, shared garage construction limits, three rounds of up to 180 seconds, full restoration between rounds and exchanged sides in round two. Uncontested zones award one point per full second; each disabled opposing machine awards 20 points once per round. Elimination ends a round immediately. Match totals can draw.

Movement, turn limits, component masses, power allocation, battery use, heat and cooling affect play. Four armour sectors absorb damage before core, drive or weapon integrity. Pulse projectiles use swept intersection tests; solid cover and disabled machines block them. Friendly fire is possible. Weapon focus deals 75% damage and does not fire at a target whose weapon is already destroyed.

Balanced, pressure and control are simple team-wide autonomous controllers. Orange loads the saved garage team from the same browser and origin; Sage uses the starter team. Changes apply only after Load match. Replay resets the loaded inputs. Export event log downloads a JSON file with builds, tactics, events and a state checksum. Nothing is sent to a server.

## Numerical and rules limitations
- Fixed 20 Hz ticks, controllers updated at 5 Hz. Positions rounded to millimetres. JavaScript floating-point trigonometry remains; cross-browser bitwise equality is not guaranteed. This is not a fixed-point reference implementation.
- Circular collision bodies, approximate iterative separation, immediate braking when commands stop and a deterministic obstacle detour. No momentum transfer, contact damage or 3D physics. Dense collisions and exact ties can retain order bias.
- Simultaneous hits share sector armour proportionally, then apply component damage together. The log's internalDamage is damage offered to the component, including overkill; it is not capped at remaining integrity.
- Heat and power are simplified game rules. Weapon power is charged for the firing tick, not continuously during cooldown. Disabled machines remain fixed obstacles.
- No per-robot tactic editor, changes between rounds, playoff overtime, replay scrubbing/import, multiplayer, official fixtures or standings.
- FNV checksums are debugging aids, not tamper-proof signatures. Logs and outcomes can be modified by visitors and are unsuitable for ranked results.
- No balance claim. Identical inputs deliberately yield the same match within the tested runtime.

## Validation
Node tests: 110 full matches across all nine tactic pairings, 100 default-match repeatability comparisons, score reconciliation, bounded positions, nonnegative component/battery values, finite heat, maximum duration, geometry intersections, full-second zone timing, contested-zone scoring and illegal build rejection.
Default starter balanced vs starter pressure: 144–180, 1,245 ticks, checksum f3f1584d. Browser playback at 60x produced the same final score. These checks are not exhaustive collision or balance verification.

Run source tests from the unpacked package: `node tests.cjs` (Node 18+).
