---
title: "Human Design"
description: "BodyGraph on /human-design. Gate 41 at 302 degrees, Design at Sun minus 88, Layer 1 astronomy-engine socket, computed-by-this-engine fixtures."
locale: "en"
---
# Human Design

`/human-design` is the pack page for a real BodyGraph. Personality is birth **UTC**. Design is the instant when the Sun sits at **Personality Sun longitude minus 88 degrees**, solved by Layer 1 `solveSunLongitudeTime`. Pack owns interpretation. Layer 1 only returns longitudes.

Until time, timezone, latitude, and longitude exist, the engine returns `buildHumanDesignPlaceholder` with `pending_inputs` or `pending_tz`. It never invents Type.

## Layer 1 socket

`ring/web/lib/astro/ephemeris.ts` wraps MIT `astronomy-engine` `^2.1.19`:

| Function | Role |
|----------|------|
| `eclipticLongitudes(utc)` | Sun, Moon, Mercury through Pluto, geocentric true ecliptic of date via `Ecliptic(GeoVector(..., true))` |
| `moonTrueNodeLongitude(utc)` | Osculating node: geometric vectors at `t` and `t+60s`, `h = r × v`, `atan2(hx, -hy)` |
| `solveSunLongitudeTime(targetLon, nearUtc)` | `SearchSunLongitude` plus bisection; covers the Sun-minus-88 wrap |
| `moonIllumination(utc)` | `Illumination(Body.Moon).phase_fraction` |

`tz-lookup` `^6.1.25` is **CC0-1.0** (not MIT), used to infer IANA tz from coordinates. Tests: `ring/web/lib/astro/__tests__/ephemeris.test.ts` (J2000 Sun, illumination range, solver within 60s, node in `[0,360)`).

## Pack engine

| Module | Contract |
|--------|----------|
| `wheel.ts` | Gate **41** starts at **302°** (2° Aquarius), 5.625° per gate, six lines of 0.9375°. Gate **25** straddles 0° Aries. |
| `graph.ts` | 64 `GATE_CENTER` map, **36 channels** (includes 34-57), nine centers, motors, definition type via connected components |
| `typing.ts` | Type, authority ladder, 12 profiles, cross-angle keys (Right / Juxtaposition / Left). Cross **names** (192) are out of scope. |
| `local-time.ts` | `localBirthToUtc` two-pass Intl offset (`HHmm` without colon accepted) |
| `index.ts` | 13 bodies per side: Sun, Earth (Sun+180), Moon, North Node, South Node (node+180), Mercury through Pluto |

Type: Reflector if no centers; Generator if Sacral without motor-to-Throat; Manifesting Generator if Sacral plus motor-to-Throat; Manifestor if motor-to-Throat without Sacral; Projector otherwise.

Authority ladder: Emotional (Solar Plexus), Sacral, Splenic, Ego Manifested (Heart plus Heart-Throat), Ego Projected, Self Projected (G to Throat), Mental (Ajna or Head), Lunar.

`strategyKey` is a **string** (`inform`, `wait_to_respond`, `wait_for_invitation`, `wait_a_lunar_cycle`), not the whole `strategyFromType` object. Fixture tests assert `typeof chart.strategyKey === 'string'`.

## Page

`BodyGraph` SVG highlights defined centers and channels and prints gate numbers. Cards use `meanings.humanDesign.type|strategy|authority|profile|center|gate|notSelf` with English fallback. Profile key `5/1` is requested as `5-1` for next-intl. Show-math lists `birth_utc`, `design_utc`, each body `gate.line` and longitude. Status `ready` uses `t('status.ready')`.

Council: HD **type** votes `today_practice` at confidence `0.4`. HD **authority** votes `decision_style`. Family maps are in `council-mappings.json`.

## Fixtures and honesty

Public-chart JSON under `lib/human-design/__tests__/fixtures/` is labeled **`computed-by-this-engine`**. Dual-calculator verify is still pending. Ra Uru Hu on this engine: **Manifestor 5/1 Splenic**. Published charts often say Emotional Manifestor 5/1. Type and profile match; authority does not. Do not silently "fix" the math. Synthetic Reflector is `reflector.json` (empty activations → Lunar, definition `none`).

Color, tone, base, and incarnation cross titles are out of scope.

Truth lens: `metaphysics-human-design-specialist`.

  
  

  
- [n9life/chart-and-inputs](/docs/n9life/chart-and-inputs.md) — Prerequisite: time, tz, lat, lng

  
- [n9life/knowledge-council](/docs/n9life/knowledge-council.md) — Next-step: type and authority as council voters

  
- [n9life/today-and-calendar](/docs/n9life/today-and-calendar.md) — See-also: moonIllumination shares the same L1 socket
