Repository navigation
HUBER_BACKEND_STANDARD
Version: 0.1 Date: 2026-06-13 Status: backend standard for Phase 12 evaluation
This standard governs the Huber Astrological Psychology engine surface:
moira.huber
It covers:
- golden-section house zones
- Age Point position
- Age Point contact scanning
- Dynamic Intensity Curve evaluation
- intensity at a longitude inside a house frame
- chart-wide intensity profile
It does not govern:
- house-cusp computation itself
- house-system fallback policy
- psychological interpretation text
- counseling claims
- chart rendering
- transits, progressions, or predictive timing outside Age Point mechanics
The engine documents the Huber method through:
- Bruno and Louise Huber, Life Clock
- Bruno Huber, The Astrological Houses
- Astrological Psychology Institute tradition
The module states that Huber doctrine prescribes Koch houses. The functions
accept any HouseCusps object, so doctrinal fidelity depends on caller-supplied
house-frame truth.
The Dynamic Intensity Curve is documented as a mathematical reconstruction:
- sinusoidal shape
- maximum at cusps
- minimum at the golden-section Low Point
- asymmetric because the Low Point is at phi rather than at 0.5
The module explicitly notes that the exact formula from the primary text has not been independently verified against this reconstruction. Public transport must preserve that limitation.
The admitted backend objects are:
HouseZoneHouseZoneProfileAgePointPositionDynamicIntensityPlanetIntensityScoreChartIntensityProfile
The admitted constants are:
PHIPHI_COMPLEMENTCYCLE_YEARSYEARS_PER_HOUSE
The admitted computations are:
house_zones(house_cusps)age_point(age_years, house_cusps)age_point_contacts(house_cusps, planet_longitudes, orb=2.0, start_age=0.0, end_age=72.0, step_years=1.0 / 12.0)dynamic_intensity(house, fraction)intensity_at(longitude, house_cusps)chart_intensity_profile(points, house_cusps)
Huber analysis is not independent of house truth.
REST transport must not accept an unqualified set of house cusps without recording:
- requested house system
- effective house system
- fallback state
- fallback reason when present
- whether the effective house system is Koch
- source of the cusps: chart-backed server derivation or direct cusp input
If direct cusp input is ever admitted, it must be marked as caller-supplied geometry and must not imply Moira derived the house frame.
Any REST transport for Huber must preserve:
age_years- age-cycle number
- years per house
- house number
- fraction through the house
- Age Point longitude
- zone classification
- intensity value
- all house-zone boundary longitudes
- balance-point and low-point fractions
- house-size truth
- point names and source longitudes for chart profiles
- high/low intensity thresholds
- curve reconstruction note
- Koch-house doctrinal preference
Transport must reject:
- non-finite ages
- negative ages
- malformed house frames
- non-finite house cusps
- house frames without exactly 12 cusps
- non-finite point longitudes
- empty point names
- non-finite or negative contact orbs
- non-finite or non-positive contact scan step sizes
- reversed contact scan ranges
Transport must not:
- silently label non-Koch houses as doctrinally Huber-complete
- hide house fallback truth
- claim primary-text formula verification for the Dynamic Intensity Curve
- convert intensity scores into psychological diagnoses
- expose unbounded contact scans
The minimum backend validation corpus is:
.\.venv\Scripts\python.exe -m pytest tests\unit\test_huber.py -qThe validation corpus must continue to cover:
- golden-ratio constants
- 72-year cycle and 6-year house timing
- house-zone count and ordering
- balance-point and low-point fractions
- Age Point positions at ages 0, 18, 36, 54, and 72
- negative-age rejection
- dynamic-intensity curve bounds
- monotonic descent to the Low Point
- monotonic ascent from the Low Point
- zone classification
- chart-profile score invariants
- public
__all__surface
Route admission must add transport tests for malformed house frames, non-Koch provenance reporting, polar/fallback house behavior, non-finite numbers, and bounded contact-scan policy.
The first admissible route should be a direct or chart-backed Age Point route with explicit house-frame provenance.
Recommended sequence:
-
dynamic_intensityprimitive. -
house_zonesover an admitted house frame. -
age_pointover an admitted house frame. -
chart_intensity_profileover admitted points and house frame. - bounded
age_point_contacts.
Chart-backed routes must use the same house derivation and fallback truth as the admitted houses REST surface. Huber must not introduce a second house derivation path.
This standard does not admit:
- psychological interpretation text
- counseling claims
- health or clinical claims
- unbounded Age Point searches
- hidden house-system substitution
- independent house calculation inside Huber transport
- chart rendering
-
/v1/special/*exposure