Date: 2026-07-27
Scope: moira/ engine truth first; transport, product composition, and website
work only at their named later gates.
This is the current six-gate Hellenistic roadmap. It supersedes the phase numbering in the older additive completion roadmap for current work. In particular, “Phase 2” here means doctrine decisions, not the historical “Bounds Expansion and Halb” phase.
All six engine gates are complete. Hermetic star attribution/geometry, Decennial L3/L4, and Valens distribution interpretation are closed exclusions from that completed contract. They must not be copied into a gap list, version plan, or release blocker. The Hermetic catalog may remain available by direct research import, but no Hermetic product transport is admitted.
The only post-6.0 engine delta recorded here is the dated monthly-profection contract below. Any future proposal to expand a closed exclusion is a new research-and-admission project, not unfinished Hellenistic completion work.
| Phase | Gate | Status | Boundary |
|---|---|---|---|
| 1 | False-output containment | Complete | Incorrect or unadmitted Hellenistic outputs fail closed; Decennial L3/L4 and Hermetic public surfaces are closed exclusions. |
| 2 | Doctrine decisions | Complete | The disputed profection, Decennial, Halb/Hayz, ZR, lot, and Hermetic-catalog rules have explicit source or policy decisions. |
| 3 | Typed truth composition | Complete | Every admitted atomic family has a governing raw receipt; excluded families are structurally absent. Compatibility labels and booleans are projections, not the source of truth. |
| 4 | Contract parity | Complete | Phase 3 policy and raw receipts now have identity-preserving engine exports, full facade forwarding, explicit serializers, typed REST models, and OpenAPI schemas. |
| 5 | Unified Hellenistic profile | Complete | HellenisticChartProfile composes a score-free chart profile from exact admitted atomic receipts and names every excluded branch. |
| 6 | Validation and documentation regeneration | Complete | Independent source-owned goldens, generated capability/API inventories, canonical validation docs, and archived historical claims now form the engine gate. Website implementation remains separate. |
Annual profection schedules use completed civil anniversaries in the natal timezone. February 29 births require an explicit February 28 or March 1 policy. Elapsed fractional Julian years are not used as civil age.
Decennials preserves two coordinates instead of collapsing them:
sequence_origin_jdProjected JDs are not represented as civil-month anniversaries. L3/L4 and both named deep-subdivision candidates are outside the closed admitted contract.
Halb uses the admitted al-Qabisi/Bonatti sect-relative hemisphere rule. Hayz adds the planet’s own sign gender. Mars is feminine; Mercury is neutral and requires explicit sect-phase truth rather than a fabricated default.
Valens, Anthologies IV.4 governs two source fixtures:
The Gemini fixture reaches Sagittarius after 211 months, remains there for 12 months, and uses the final 17 months in Capricorn. The source prose and explanatory note govern; the inconsistent intervening numerical table does not.
Engine receipt: tests/golden/hellenistic_zr_valens_iv4.json.
PartDefinition now carries an explicit projector and directed-versus-shortest
arc policy. Computation truth preserves both.
Theft (Valens) projects Mercury→Mars from Saturn by day and reverses the
operands at night.Basis (Valens) projects the shorter Fortune/Spirit interval from the
Ascendant.Debt (Valens) and Debt (Abu Mashar via al-Biruni) remain distinct
source-named formulas.Knowledge, True or False (Abu Mashar via al-Biruni) is the source-specific
Jupiter→Moon formula without night reversal.Research receipt:
wiki/05_research/lots/LOTS_SOURCE_VERIFICATION.md.
The 36-name catalog has been reconstructed from Wilhelm Gundel, Dekane und Dekansternbilder (1936), pp. 379-383, “Die lateinische Dekanliste des Hermes Trismegistos,” transcribing British Library Harley MS 3731, ff. 1r-50r.
The engine preserves each entry’s sign, ordinal, name, planetary face, edition page, and source identifier. The identified edition does not supply the former fixed-star assignments, so those accessors fail closed. The full text supports Aries-starting 10-degree segmentation. The tropical-frame and rising projections remain direct-import research only and are closed product exclusions. The unsupported night-hour experiment has been removed from executable code.
Engine receipt: moira/hermetic_decans.py.
Standard: wiki/02_standards/DECANS_BACKEND_STANDARD.md.
Phase 2 is closed only because:
The first Phase 3 slice establishes the composition contract without claiming the gate complete:
DignityHorizonFrame makes chart sect and body hemisphere independent of
selected house-system cusp numbering;evaluate_lots returns typed receipts for unresolved catalogue entries
instead of silently erasing them;not_evaluable without admitted doctrine.At this start checkpoint, Phase 3 remained open for the collapsed/default- bearing Hellenistic families and a final atomic-truth gate audit. Phase 4 parity, Phase 5 profile composition, and website work were not implied by this start receipt.
The 2026-07-26 engine pass found the following remaining composition work. This is an implementation inventory, not a capability or correctness claim:
| Atomic family | Current collapse or default | Phase 3 disposition |
|---|---|---|
| Oriental/Occidental phase | The compatibility helper returned str | None, exact conjunction and opposition were forced into oriental, and policy suppression erased the available geometry. |
Closed in the second Phase 3 slice with PlanetarySolarPhaseTruth; boundaries are typed not_evaluable, and only evaluated truth may assemble a condition or score. |
| Solar proximity | SolarConditionTruth.present=False conflated an evaluated clear band, a non-applicable Sun, a default-suppressed Moon, and policy-suppressed conditions. |
Closed in the third Phase 3 slice with exclusive SolarProximityTruth; raw geometry is preserved separately from policy assembly, and the Sun fails closed as non-applicable. |
| Besieging | tuple | None conflated evaluated absence, incomplete chart dependencies, same-degree neighbour ambiguity, and missing chart context. |
Closed in the third Phase 3 slice with BesiegingDependencyCompletenessTruth and BesiegingTruth; incomplete or ambiguous geometry cannot score. |
| Profection activation | activated_planets=[] means either no conjunctions or no natal positions were supplied. |
Closed in the fourth Phase 3 slice with ProfectionActivationTruth; absent dependencies are typed not_evaluable, while an explicit empty mapping and evaluated absence remain evaluated results. |
| Decennial sequence | The final ordered tuple carries no atomic starting/ordering receipt, and equal non-sect-light longitudes fall through to private planet order. | Closed in the fourth Phase 3 slice with DecennialSequenceAssemblyTruth; every Classic 7 arc is preserved and non-sect-light longitude ties fail closed instead of using private order. |
| ZR Fortune angularity | Missing Fortune leaves angularity_class=None but projects is_peak_period=False, collapsing “not evaluable” into “not peak.” |
Closed in the fourth Phase 3 slice with ZRFortuneAngularityTruth; raw missing-Fortune peak truth is None, while the legacy field remains a compatibility False. |
| Aspect direction and overcoming | Direction uses enum-or-None applicability and overcoming uses a scalar boolean without a shared typed Hellenistic superiority receipt. |
Closed in the fourth Phase 3 slice with HellenisticSuperiorityTruth; typed direction applicability and winner-or-neither overcoming share one ordered-pair receipt and introduce no score. |
| Hermetic decans and Decennial L3/L4 | These surfaces are closed exclusions rather than composition-ready. | Keep excluded; Phase 3 does not reopen source admission. |
Triplicity assignment, admitted bounds, ordinary decanate position, essential dignity components, horizon/sect/Mercury phase, and lot dependency evaluation already expose sufficient atomic witnesses for this gate’s current inventory. Their legacy scalar helpers remain compatibility projections and must not become the source of later composition.
planetary_solar_phase_truth() now governs the five admitted non-luminary
planetary phase classifications. Its assembly doctrine is:
not_evaluable at exact conjunction, exact opposition, or for
a body outside the admitted set;oriental_occidental() remains a compatibility projection. It returns
None for non-evaluable truth rather than fabricating one side of a boundary.
At that checkpoint, Phase 3 remained in progress.
solar_proximity_truth() now preserves one exclusive Cazimi, Combust, Under
Sunbeams, or Clear band before accidental policy assembly. The Sun is typed
not_evaluable; Moon geometry remains available even when the default
luminary policy suppresses its condition. Policy fall-through remains a
compatibility behavior and cannot rewrite the raw band.
besieging_truth() now requires complete classical chart dependencies and
preserves the target, nearest backward and forward neighbours, directed
distances, and configured orb. Missing bodies, unresolved target identity,
same-degree neighbours, directional ties, and side-boundary ambiguity fail
closed. Only an evaluated Mars/Saturn enclosure within orb can assemble the
legacy condition and score. is_besieged() remains a flattened compatibility
projection.
The engine vessels, public dignity exports, chart assembly, compatibility helpers, and existing REST serialization path are regression-covered for this slice. That serialization evidence is not the Phase 4 parity receipt. Phase 3 remained in progress at that checkpoint.
profection_activation_truth() now preserves each supplied body’s normalized
longitude, minimum distance from the profected Ascendant, activation orb, and
activation boolean. Missing natal positions are typed not_evaluable;
explicitly supplied empty dependencies and evaluated charts with no activated
bodies remain distinct evaluated receipts. activated_planets is a
compatibility projection.
decennial_sequence_truth() preserves the Classic 7 dependency geometry from
the sect light and makes the final ordering inspectable. The sect light remains
the starting lord; equal non-sect-light longitudes are typed
not_evaluable, and generation fails closed instead of falling through to a
private planet order. Every generated L1/L2 period preserves the same
evaluated receipt. The closed L1/L2 depth boundary is unchanged.
zr_fortune_angularity_truth() preserves Fortune dependency completeness,
inclusive place, angularity class, and raw peak truth. Missing Fortune carries
raw is_peak_period=None; the legacy period field remains False only as a
compatibility projection.
hellenistic_superiority_truth() composes two independent components for one
ordered body pair. Direction preserves sinister/dexter applicability and typed
boundary reasons. Overcoming preserves both inclusive sign places and an
evaluated body1, body2, or neither relation. No additive dignity or
superiority score was introduced.
Phase 3 is complete because:
not_evaluable
rather than collapsed into false, empty, or a private ordering default;git diff --check also passed.At the Phase 3 checkpoint this closure covered engine truth composition only: the new names were direct module surfaces and did not yet claim root/classical/facade, serializer, REST-model, OpenAPI, or website parity. Phase 4 below closes the first five of those contract gaps; website parity remains outside this engine roadmap gate.
Phase 4 closes the contract gap without composing a chart-wide Hellenistic profile:
moira, moira.classical, and moira.facade;Moira exposes the admitted raw helpers, evaluate_lots(), and complete
aspect/profection policy forwarding instead of narrowing caller policy;dict[str, Any];/v1/lots/chart transports the full LotsEvaluation, including
not_evaluable entries and aggregate counts, instead of silently dropping
unresolved catalogue entries;This receipt does not admit Firdaria into a Hellenistic profile, reinterpret a typed result, add a synthetic score, regenerate the Phase 6 capability matrix, or authorize website work.
Phase 5 is complete through the new moira.hellenistic composition boundary:
hellenistic_chart_profile() requires all seven classical planets, one
finite speed per planet, exact zodiac-boundary Whole Sign cusps, the actual
Ascendant and Midheaven, and timezone-aware natal/current datetimes;not_evaluable results remain visible in their owning receipt and
in profile provenance; the composer does not replace them with false,
empty, or inferred defaults;HellenisticProfilePolicy freezes Classic-7 dignity doctrine, Dorothean
triplicity, skip-and-report lot failure behavior, and the admitted
Decennial L1/L2 policy while preserving admitted bounds, ZR, profection,
and component selectors; Decennial L3/L4 remains unselectable;HellenisticProfileProvenance records method, lineage, sources, input
semantics, the chart position frame, calendar/timescale, engine and kernel
identity/coverage when available, warnings, and non-evaluable receipts;moira,
moira.classical, and moira.facade; Moira.hellenistic_chart_profile()
derives a no-fallback Whole Sign chart profile without recomputing doctrine;POST /v1/hellenistic/chart-profile uses explicit request, response,
serializer, service, route, and OpenAPI types. Its reachable response graph
contains no score field and exposes no selectable Decennial deep method.The implementation pass also closed four composition hazards found during the gate:
not_evaluable outside the generated circuit. It never reuses the
final expired period as current truth.The profile explicitly excludes Firdaria, medieval almutens, later electional rules, unscoped primary directions, Decennial L3/L4, Hermetic-decan geometry, and Valens distribution interpretation. It contains no chart-wide score, ranking, recommendation, or interpretive narrative.
Validation on 2026-07-26 passed the 950-test Hellenistic dependency and
transport gate under strict known-issues mode, Python compilation, REST
inventory synchronization, documentation consistency, and git diff --check.
The literal configured repository suite exceeded a ten-minute local command
window without a terminal result. A bounded release/governance follow-up
passed 80 tests and reproduced only the pre-existing _FamilyCatalog
docstring violation in unchanged moira/asteroid_families.py; that unrelated
baseline issue is not part of the Phase 5 changeset.
Phase 6 is complete at the engine and transport documentation boundary:
tests/golden/hellenistic_source_tables.json is a hand-authored,
runtime-independent corpus for the full Dorothean triplicity table,
planetary joys, all four admitted bounds doctrines, the ordinary 36-face
cycle, the four unified-profile lots, and Decennial L1/L2 source arithmetic;tests/golden/, records its source ownership explicitly, and is
not generated from engine output;tests/unit/test_hellenistic_source_goldens.py checks every source table,
every bounds segment start and midpoint, all 36 faces, concrete day/night
lot outputs, and Decennial L1/L2 arithmetic;scripts/generate_hellenistic_inventory.py verifies runtime anchors,
curated export identities, registered OpenAPI operations, request/response
schemas, and prohibited public paths;The source audit preserves the hard qualifications: ordinary faces currently use a later Agrippa witness; joy houses use a modern synthesis with identified ancient locations; civil profection projection and proximity/enclosure thresholds are policies; Halb/Hayz is medieval; only four profile lots are source-goldened; Hermetic geometry, Decennial L3/L4, Triacontaeteris, and interpretation remain outside the completed contract.
Validation on 2026-07-26 passed:
MOIRA_TEST_MODE=1 and
MOIRA_STRICT_KNOWN_ISSUES=1;git diff --check.This closes the six engine gates. It does not update or publish website documentation, deploy a server, or admit interpretive Hellenistic product claims. Any website implementation is a separate release scope built from these engine-owned artifacts.
The post-gate release hardening pass on 2026-07-26:
git diff --check; andThis closeout does not admit Hermetic star attribution or geometry, Decennial L3/L4, Triacontaeteris, Valens distribution interpretation, synthetic scoring, or website product composition. Those exclusions are not unfinished engine work.
The website Phase 3 continuity audit exposed one contract gap after the 6.0.0 engine gates: Moira supplied the ordered twelve monthly lords but no authoritative dated product intervals.
The source checkpoint now closes that implementation gap:
profection_chronology() resolves exact consecutive civil anniversaries in
an explicit IANA timezone and emits twelve contiguous half-open intervals;MonthlyProfectionIntervalPolicy freezes the sole admitted projection as
equal_twelfths_of_civil_anniversary_year;ProfectionChronologyMethod labels the result
computational_projection, explicitly excluding any claim that it is
Valens IV.28’s separate day-Sun/night-Moon distance method;zoneinfo interface,
fails closed if the host lacks the requested entry, and records its source
without claiming an unavailable database version;ProfectionResult, root/classical/facade exports, Moira, serializers,
REST models, the unified Hellenistic profile, and OpenAPI preserve the same
effective policy and exact boundaries; andDoctrine:
wiki/01_doctrines/timelords/monthly_profection_chronology_doctrine.md.
This is a source checkpoint, not a publication claim. The hosted Phase 3 gate
closes only after a new Moira release containing this contract is built,
published, installed in staging, promoted as the exact tested artifact, and
verified through the live website timeline. The immutable v6.0.0
documentation bundle must not be regenerated from this post-release source;
the chronology contract requires a new release identity.