Removes internal process references so the repo is presentable to an outside audience: dropped the internal build-retrospective doc (process log with internal terms, not useful to an outside reader), and reworded remaining internal references in code comments and module docs (agents.md cards, architecture.md, MODULES.md, index.html, package.json) to generic descriptions of what changed and when, with no behavior change -- full 47/47 suite re-run green after the scrub, every edit verified comment/doc-only via diff. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
js/physics/topple/ — agents.md
Added in the physics pass (2026-09-29). Module map: MODULES.md; runtime model: architecture.md.
Installs into P: toppleBlocks, blockSupportSpan, beginTopple, integrateTopple,
landTopple, topplePathDamage, settleBack, supportStillAlive.
- Owns the board tip/topple behavior (Q1: FULL CONTINUOUS ROTATION). A resting
block whose COM lies past the x-span of its support (ground or the top face of
a block below, via
blockSupportSpan) pivots about the support-edge corner under gravity (point-mass COM,alpha = G*(comX-pivotX)/r^2). - Two endings: (a) a far corner reaches the ground line ->
landTopple(impact speed = |angVel|*r, self-damage +topplePathDamageon the footprint: blocks take impact, enemies in the footprint can be killed through the normal crush curve); (b) the pivot is too high for any end to reach the ground -> the board is a pendulum andsettleBackreturns it flat to its rest position. - Anti-livelock: a swung-and-settled board is marked
toppledand only re-tips on a real knock (displacement >= 6px) or a damaging hit (damageBlockclears the mark). Do NOT re-arm on velocity alone -- the pendulum's own swing-back speed defeats that (regression: test/knifeedge.test.mjs). - A pivoting block is EXCLUDED from linear integration, box-pair resolution and
crush in
step-- those loops must keep skippingbl.pivoting. - Consumes: WORLD, GRAVITY, REST_SPEED, MATERIALS, ENEMY_TYPES, damageBlock, damageEnemy. Tests: test/topple.test.mjs (5 arms), test/knifeedge.test.mjs (6 arms).