JAIMINI_PROFILE_ASSESSMENT_STANDARD - TheDaniel166/moira GitHub Wiki
Source-defined Chara and Argala profiles
Date: 12 October 2026. Owners: moira.chara_profiles,
moira.argala_assessment, moira.jaimini_profile_policy. Package: VED-013.
See the source packet,
decisions and implementation plan
and validation receipt.
Discovery and input precision
list_jaimini_profiles() identifies six executable bounded profiles, two legacy
operations and five research-only candidates. Each record includes its source
rules, required inputs, capabilities, limitations and applicable conflicts.
research_required is not an executable selector.
JaiminiChart(basis, positions, lagna) snapshots a body map into an immutable
canonical tuple. basis='signs' requires actual integers 0-11.
basis='sidereal_longitudes' requires finite Python numbers in [0,360).
Booleans, numeric strings, nonfinite values, missing/extra bodies and mixed
representations fail. No degree is invented for a sign-only chart. These are
caller-supplied sidereal inputs; no ayanamsa, birth time or ephemeris is inferred.
Chara requires exactly the seven classical planets. Argala requires all nine including both nodes. New Argala references are explicit Lagna, house 1-12 or named planet; one to twenty-two distinct identities are admitted and ordered canonically. A node and its occupied house remain different references.
Chara arithmetic
The three profile IDs are:
rangacharya_2007_method1_classical7_v1rangacharya_2007_method2_male_classical7_v1rangacharya_2007_female_prose_classical7_v1
They implement the manual's separate seed, sequence, counting direction and duration rules. Callers select a recipe; demographic information does not. Source authority is the 2007 manual, not an independently collated older commentary implied by a lineage label.
evaluate_chara_profile(chart, profile_id=..., projection=None) returns twelve
arithmetic rows, each with lord/count/exception/dignity witnesses and cumulative
integer years. Method 1 gives own-sign twelve before dignity adjustments and
retains a zero-year result. The female recipe selects the own-sign prose rule
over the example's conflicting Cancer ten; C04 records both values.
CharaProjection(epoch_jd) explicitly selects
moira_fixed_365_25_day_projection_v1. This Moira engineering convention maps
cumulative source years to caller-owned JD with 365.25 days per year. It is not
an ancient or tropical-solar calendar attribution. Positive intervals are
half-open and reference their arithmetic row; zero rows remain in arithmetic
and are listed as unscheduled. Nonrepresentable positive spans fail.
No antardashas, node co-lords or second cycle are admitted for these recipes.
Result validation binds the seed and complete sequence to the selected recipe and Lagna. Each row's count direction, inclusive count, base years, exception and dignity adjustment must follow that recipe and the actual lord placement; consistent totals alone do not establish a valid derivation.
Argala profiles and component separation
assess_argala(chart, profile_id=..., references=...) preserves formation,
count, character, obstruction qualification and effective assessment separately.
| Profile | Selected coverage |
|---|---|
bphs_santhanam_31_literal_assessment_v1 |
Four pairs; none/limited/medium/excellent count grades; node-reference reversal; three-malefic special third; directed quarter qualification |
pvr_2000_argala_count_first_v1 |
Four pairs; Ketu-occupied-reference reversal; unequal counts decide, equal counts require an unadmitted strength comparison |
rath_argala_article_assessment_v1 |
Nine-body subset; six pairs including 8/6 and 7/1; Ketu reversal; own-sign and Jupiter rasi-aspect factor witnesses |
BPHS's greater-causer-count alternative is independent of strength. When that does not decide, the literal quarter component permits only Q1/Q4 and Q2/Q3 directed causer/blocker pairs, each quarter spanning 7.5 degrees. No qualifying pair leaves the intervention unobstructed; all-qualified pairs still require strength, and mixed matrices preserve unresolved aggregation. Missing degrees are explicit. No epsilon moves a binary input between half-open partitions.
PVR's count priority is not imported into BPHS. Rath factors are not an invented numeric or lexicographic ranking. In its standard nativity, Jupiter in Pisces casts rasi aspects to both Gemini and Sagittarius; C12 preserves the source's winner separately from these symmetric factor witnesses. Empty signs and upagrahas are outside this bounded planetary intervention profile.
No universal strength comparator is admitted. Equal counts/factors do not
establish equal strength, and the current result enum does not manufacture a
balanced outcome. Exact reason codes distinguish missing degrees, unavailable
strength, mixed quarter aggregation and unspecified factor priority. Neither
unknown nor not-assessed becomes false, zero or a deleted response row.
The separate character component is
bphs_santhanam_3_11_root_same_sign_v1. It includes nine-body natural character,
Moon bright/dark half and Mercury's same-sign malefic association. Its explicit
elongation intervals are [0,180) and [180,360). Sign-only Moon phase remains
unknown; Mercury and group/special-third uncertainty are propagated. This
root-verse composition does not claim the translator's additional Moon relief
or Rangacharya's contextual Venus treatment. BPHS's special-third result
coexists with the raw third-house blocker role and preserves its distinct
source-described favourable effect.
Whole-result validation binds character reasons, group character, exact within-sign quarter degrees, effect/reason/comparison state, special-third occupants and bounds, and Rath factors to the admitted chart and profile. Only Rath carries strength factors, exactly one for each side. A locally valid quarter witness with a degree different from the chart is rejected even when it stays inside the same quarter.
REST and compatibility
GET /v1/jaimini/extended/profiles exposes discovery.
POST /v1/jaimini/extended/chara-dasha/profile and
POST /v1/jaimini/extended/argala/assessment accept one explicit profile per
request and discriminated sign/longitude charts. Projection, when requested,
requires its explicit ID in JSON. Requests forbid unknown fields, custom scores,
unsupported cycles/antardashas and research-only selectors. Models expose bounded
identities and uncertainty through OpenAPI. HTTP invalid inputs return 422;
corrupt result invariants are internal failures, not client validation failures.
After input admission, evaluator construction failures and serializer contract
failures raise JaiminiInvariantError, a RuntimeError subclass owned by
moira._jaimini_profile_results; REST returns HTTP 500 without exposing the
internal evidence error. Input admission and nonrepresentable caller epochs
retain ValueError/HTTP 422. Manual invalid result construction continues to
raise ValueError; the evaluator boundary distinguishes engine-produced
contradictions from those caller-created objects. Serialization revalidates
the complete result, so bypassing frozen constructors does not bypass transport
validation. This adds no source rule, selector or response field.
Module, root, Vedic namespace, facade methods and REST use the same owners. Serialization adds derived counts but recomputes no source decision. All source evidence is returned; there is no evidence-hiding response filter.
The legacy Chara operation retains its original
one/two cycles and antardashas. Legacy argala retains valid arithmetic, seven
occupants, two-malefic special threshold and optional empty/partial node maps.
Its direct API now rejects boolean Lagna/nodes, nonfinite nodes and unknown node
keys like REST. Its corrected lineage and additive ArgalaComputation identify
the retained Moira convention. Legacy manual positional construction remains
valid with computation=None; engine calls always return the receipt.
Remaining admissions
Full BPHS Chara, PVR 2014 Chara, Rath Narayana, Rangacharya Yogada and general Argala strength resolution retain their concrete gates in discovery and the work register. The selected local package is complete only with its validation receipt; source publication, release and deployment are separate events.