← All Pull Requests

Teach component wiki authors about fan GLB motion states #8

Merged Released in 0.8.43 on 9 Oct 2026 opened by John Lauer
Merges component-motion-states → master

Extend wiki-component guidance from LED model swaps to continuous fan motion: typed RPM state variable, static STEP/off fallback, animated GLB with named rotor/stationary branches and timeline, hash/provenance, per-instance playback mapping, simulation/telemetry separation and unsupported-consumer handling.

This documents a proposed additive adom/component-motion@1 extension, not a claim of deployed ecosystem support. Tested fan example: https://wiki.adom.inc/adom/mf40200v1-1000u-g99 . Existing Adom Babylon viewer demonstration rotates only the rotor, with explicit simulated RPM and slow-motion scale.

Base ea4ea4e8ed5064eff77d2514c632a3c0940af42c. One appended skill section; existing LED rules preserved. Preflight passed and focused diff reviewed. Docs-only: no binaries or runtime changes. Please coordinate schema review with component-widgets and adom-aiflow-probing, then merge/publish the skill package separately.

Diff Skip to comments (2)

skills/wiki-component/SKILL.md+8
@@ -994,3 +994,11 @@ Validate the actual written LOD transforms and visible MPNs; micrometre offsets ## Ship the bench with a board or project page  A board, molecule or project page can carry its author's Hydrogen layout: `hydrogen/workspace.json` in the page repo, with the 3D layout pane, the KiCad or Altium dashboard, the parts search and the project page arranged the way you work. Export it from a live Hydrogen with `adom-cli hydrogen workspace export --out hydrogen/workspace.json`, push it with `adom-wiki repo push <owner>/<slug> --files hydrogen/workspace.json`, and readers of a fork or clone open it with `adom-cli hydrogen workspace apply <owner>/<slug>` (Hydrogen Cloud lists it under Project workspaces with an Apply button). Apps are referenced by wiki page, never by URL; declare each in `page.json` `dependencies`. The full contract and the `WORKSPACE_*` hints are in the wiki-workspaces skill.++## Moving component states (proposed extension)++Fans and other moving parts need more than LED-style model swaps. Preserve `adom/component-states@1` and add a versioned `motion` object (`adom/component-motion@1`) plus typed variables such as speed in RPM. Publish an off static GLB, an animated GLB, unique stationary/rotor node names, named animation timelines, local axes/pivots, model hashes, cycle duration and revolutions per cycle. Continuous motion belongs in GLB/runtime; STEP remains the static mechanical asset. Do not claim full digital-twin fidelity for illustrative blades or missing leads.++Use the existing Adom viewer, resolve bindings per imported instance, and play only the rotor animation. One revolution per second maps to speedRatio = RPM/60. Label any slow-motion time scale separately from actual/simulated RPM and warn about high-speed aliasing. Default off. Stale/invalid measured data pauses and labels UNKNOWN rather than claiming OFF. Animation must never control physical hardware. Preserve static fallback when a consumer lacks motion capability.++Reference proposal and executable fan example: [MF40200V1-1000U-G99 motion contract](https://wiki.adom.inc/adom/mf40200v1-1000u-g99/files/docs/component-motion.md). The component-widgets change emits simulated state/variable events; it does not imply every installed widget or probing simulator already supports animated playback. Verify each consumer and report proposed/source/released/installed states separately. Include component-specific skills, generator, GLB structural and runtime checks, and recorded off/on/speed/off evidence.

Comments

Colby Knox ·

Reviewed against the current head (ea4ea4e, so it applies cleanly). It's docs-only, appends one section, leaves the LED rules untouched, and prose-lint passes.

One thing blocks the merge: both links in the new section point at adom/mf40200v1-1000u-g99, which is private. The skillpack is public and installed widely, so every reader who follows the reference gets a 404, and the section depends on that example. Either make the fan page public (at least its docs/component-motion.md), or move the motion contract into the skillpack itself (for example skills/wiki-component/docs/component-motion.md) and link there.

As your description asks, I'm also holding the merge until the schema has been reviewed with component-widgets and adom-aiflow-probing, since the section teaches authors a contract that no consumer plays yet. Once the link is fixed and that review is done, I'll merge and publish the skillpack from a fresh download.

Colby Knox ·

Merged as 3d47cd4 and published in 0.8.43. The fan page is public now, so both links resolve for readers. John's 'Gentle state demonstrations in component heroes' section (2ff05d1) landed at the same spot after this branch was cut, so I rebuilt component-motion-states off master with your section placed after his, unchanged; your original branch is kept as component-motion-states-orig. The two sections fit together: his covers the hero presentation clip, yours the operational motion contract, and they agree on static STEP, labeled presentation speed, unknown telemetry and no hardware control. The companion widget PR (component-widgets#1) is still open for its schema review.

Log in to comment.