The first exact-boundary format printed local clock times; a generated
hour:minute collided with a private marker the repo scan forbids. Boundaries
are now start_ts / end_ts (UTC epoch seconds) beside the engine's local days;
no time string is printed. Goldens recaptured (evidence card TTL=0).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- BUG-1758: the card's affliction layer is a source ledger: one entry per fact
with its input, effect (conflicts / not_executed) and every house it bears
on; a fact shared by two houses is one source, never two votes.
- BUG-1763: output acceptance after the one repair: a professional answer
without the Technique Audit Table, or any answer without the engine audit
rows (plain mode's evidence entry), fails as incomplete (kept text, no charge).
- BUG-1752: engine rows carry exact local start/end with UTC offset, parent
start, cycle, and a meta block (365.25-day years, zone, [start, end)); the
chart page copies them. Tests: midnight crossing, birth balance, second
cycle, zero-length rows and 0-year Narayana / Chara MDs never current.
- Goldens recaptured (evidence card TTL=0; chart-view dasha from the engine).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- BUG-1758: the model card drops affliction_evidence.houses.*.signal_count
(backend field kept); S-09, the pressure basis line and the professional
voice name the sources and never a count.
- BUG-1763: a professional answer that stopped on its own without the
Technique Audit Table gets one table-only continuation.
- BUG-1764: the backtest harness passes the answer mode (agent context,
user-turn shape, length continuation); CONSULT_BACKTEST_ANSWER_MODE=plain.
- BUG-1752: /api/chart carries dasha.antardasha_timeline from
chart_dasha.birth_moment.sub_period_timeline; the chart page copies the
engine AD/PD rows and no longer cuts periods by year proportions.
- Goldens: chart-view golden dasha recomputed from birth_moment; evidence-card
golden recaptured with TTL=0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Product approved 2026-11-08 (astrologer round-5 rulings 1, 3; same basis as
the report and the chat card):
- functional roles: drop the bphs_exception_profile pin at the three scoring
call sites (+ research mirror); default pvr_table_30 with Moon paksha.
- Narayana: narayana_rath.calc_narayana_rath (two cycles) / antardasha, ages
via narayana_age from the candidate birth moment; probes date from the birth
moment. A blocked source step makes the layer unavailable, never the old
algorithm. Blocked count on all three datasets: 0.
- Reseal: sealed 20, offset 900, live v5 231 under the new tag; identical to
measurement variant (c) trial by trial. float_split / 166d kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Combines BUG-1741..1743 (Narayana named profiles) with BUG-1746..1752
(PVR functional table, Shadbala, KP first segment, Mudda wording).
BUG_HISTORY entries kept in number order; runtime contract keeps the
round-5 Mudda sentence and the profile-based Narayana rule; evidence-card
golden recaptured with TTL 0 / PYTHONHASHSEED=0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- Functional default = PVR Table 30 (functional_profile=pvr_table_30); the former
product table is bphs_exception_profile, scored only when named (rectification
names it, scores unchanged). profile_divergence shows both roles side by side;
movable-lagna Moon by the table's paksha note; dual-lordship note; prior rulings
BUG-1570/1590/#166 Q4 checked against Table 30.
- Shadbala: six open items labelled parameter_sensitive; every option combination
computed; only planets whose pass/fail flips get minimum_check=parameter_sensitive.
- Vimshottari AD/PD rows carry parent_period_start / visible_period_start; the
consult card cuts the balance MD from its full parent and clips at birth.
- KP DBA: full first parent, clipped at birth (no balance rescale).
- Mudda: balance fields + balance_method (angle default, time comparison apart),
nominal_year_days, her crossing wording; Harsha combined blocked reason lists items.
- D30 _meta describes the unequal parts (as her r40).
- Golden recaptured with TTL=0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer round-5 ruling 1 (2026-11-08, B3/B4): seed, years, dual lord,
AD direction and start are separate named profiles (Sanjay Rath source
version). Each comparison profile is recomputed with one step swapped; the
step is disputed when the running MD/AD changes, blocked when the source
cannot decide. method_status names exactly those steps with her round-5
sentence; B3/B4 open item removed. Undecided years now block the layer.
The narayana-dasha CLI passes the birth moment. Engine values on the three
public charts are unchanged; Drig and rectification scoring unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
The r2 re-eval showed 14/70 answers naming 起运/年数 as this chart's
undetermined step, copied from the open-item sentence, while the card said
unknown or ad_direction. The sentence now names no step and says not to
infer one. Golden recaptured with TTL=0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- BUG-1729 (P0): the execution receipt capped methodologySections at 12 while
the loader allows 32; a wealth turn delivers 14 and every receipt failed.
The cap now lives in consultation-methodology-limits.ts and both read it;
a sweep of all 2509 domain combinations x 3 questions passes the receipt.
- BUG-1730 (tooling): the offline model-input manifest moves to
tests/helpers (scripts must not import tests, BUG-1140); the fact-checker
reads the timing route's nested slow_transits.
- BUG-1731: the card carries the engine's calendar_year (both Tajika years
and the splitting return); runtime contract rule A-08 (her Q2).
- BUG-1732: narayana_method_status names the undetermined / disputed step
(seed, years, dual_lord, ad_direction) from the engine, "unknown" when it
cannot; B3/B4 recorded as open; chat_use single_system_candidate /
no_judgment; her Q1 sentence in the contract; B-02 rewritten.
- BUG-1733: the conclusion's first sentence answers the question; the
frozen time range follows it (her Q5).
- Golden recaptured with TTL=0 (method_status; VedAstro offline reason is
environment-dependent).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Sealed 20 and reported-offset 900 rerun with the protocol's own scripts
(exported from c1a69445^, baseline reproduced 166d 20/20 and 900/900),
overlay recorded in the .patch. Old 166d records kept. Live astrologer
stage v5 77x3 sensitivity script added. Sensitivity numbers, not accuracy.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Product approved 2026-11-08. _active_vimshottari, the candidate context
timeline, chart_choice astrologer and every event_probes Vimshottari start
now use birth_moment.mahadashas from the candidate birth moment and
birth_moment.split_period for AD/PD, replacing build_dasha_timeline
(00:00 of the birth date) and the integer-day build_antardasha. Frozen
dasha_analyzer.py / domain_calculation_service.py unchanged. Research
mirrors follow. A bare date string now raises TypeError.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
8th part lordless; night starts from the lord of the 5th weekday; Gulika at
the start of Saturn's part; weekday from the period start. PVR Table 10 /
PyJHora order kept as a named alternative profile; Maandi midpoint marked a
separate method not approved by the ruling. Kaala / Mrityu / Artha Praharaka /
Yama Ghantaka move on 12 of 14 rows; Saturn's part unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
(a) raw_periods / raw_antardasha_periods untruncated (ten groups);
(b) nominal_year 365.25 d and its end; (c) coverage_interval = actual solar
return -> next actual return. periods is the view over (c) (原值: cut at the
365.25-day end, 5-15 min before the next return). Annual package, report facts
and consult card carry the view label and the astrologer's crossing-segment
wording; consult layer adds the calendar-year span over two Tajika years.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Tables unchanged in value (equal to PyJHora const and PVR Table 10); the
lordless-share position (BPHS 8th vs PVR after Saturn) is recorded as an open
ruling; 14 weekday x day/night cases tested.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
reference_transparency_contract: birth-moment MDs + birth_moment.antardashas
instead of the date-anchored frozen service + integer-day build_antardasha.
KP monthly: elapsed years from the full-precision MD start (total_seconds).
birth_moment.split_period: generic float split, last end pinned to parent.
Frozen dasha_analyzer / domain_calculation_service untouched; rectification
scoring keeps the integer split pending a product decision.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
jyotish_engine applicable-yoga filter: equivalent (diagnostic rows never enter detected_yogas).
report_source_translation: ported into pl9_full_data_export EN sanitizer.
yoga_engine category: ported to not_implemented and evaluation_failure rows.
Kalachakra appendix patch: not applicable (her local renderer only).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- _consultation_dasha_sub_periods rebuilds mahadashas from the birth moment
(only when they reproduce the chart's shown periods) and cuts antardashas with
chart_dasha.birth_moment.antardashas instead of the frozen
dasha_analyzer.build_antardasha (integer days from midnight starts).
- Pratyantar cut from the antardasha's full-precision clock; the merged-field
bridge keeps that ready timeline. Output shape unchanged.
- Regression test against cmd_dasha for two public charts; golden recaptured.
- BUG_HISTORY: BUG-1715..1718.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- A1: ashtakavarga_shodhana.calc_sodhita_av (her entry; ashtakavarga.py frozen),
level=not_calibrated + prediction_scoring_allowed=False on the chain; legacy
subtraction stays removed (BUG-1209).
- A2: select_narayana_seed_sign strength_profile rath_empty_sign_lord_strength_v1,
shared by source-aware seed, MD and AD (matches her function on 6000 draws).
- A3: preflight of logical branches; placeholder not an implementation;
reference_only rules listed; 71 not_implemented; cmd_yoga not_implemented_count.
- A4: neechabhanga_kendra name/category per her handoff.
- 9e971559: Vimshottari AD record lord and native current PD in dasa convergence.
- B10: Argala equal count stays strength_comparison_required (no Narayana borrow).
- B11: full-reading bhava_bala.reference_relative_points, labelled
product_relative_points_not_traditional, no bands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
产品 2026-11-07 同步占星师 Yoga 规则批次:
- lord(a) != lord(b) guard on ten two-lord rules (raja 1_4, 1_10, 4_9, 5_9,
7_9, 2_10, 2_7; dhana 5_11, 2_5; kalatra 7_1); Jobs raja_yoga_1_10 and
Presley dhana_yoga_2_5 no longer form, matching her output.
- 23 rules become structural_observation "(Observation)" rows; old effects
move to traditional_effects; engine rows carry claim_kind, legacy_name,
condition_evidence, strength 'observation', strength_basis.
- formation contracts + assess_yoga_formation, formation_checks /
formation_assessment / strength_factors on every JSON-rule row;
participants_expr support; natal yoga context chart_type D1.
- consultation: compact rows, sieve hits and yoga_conditions carry
claim_kind / formation / formation_checks; observation status is
structural_observation; card yogas_detail copies them plus formation_rule.
- reports: personal report never lists an observation as a formed
combination; annual facts rank observations last and the evidence lists
them under 结构观察, not 格局; PL9 tables print 结构观察 for strength /
category and group observations as mixed.
- governed rules (BUG-1207, 1205, 1187/1206, 1596/1624, 1597/1625, 1571)
untouched; Parvata stays disabled; 69 not_implemented unchanged.
- card golden recaptured.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Ported from handoff/product-parity-20261107 (28823446, 99076dad):
- Ashtottari: cycle index counts from the balance-shifted first MD (no
gap before the 108th birthday); dasha_balance_at_birth / dasha_at_birth /
timeline_basis now emitted (the report already read them).
- Bhava Chalit MC in the natal frame (_bhava_midheaven_in_natal_frame).
- Narayana current lookup: no modulo replay outside the two generated
cycles; status selected / outside_generated_timeline.
- Bhava Bala: no unvalidated absolute level; _meta.score_unit = Virupas.
- Field names lined up with hers: required_strength_pct (+ semantics
marker, via shadbala_display sidecar; shadbala.py stays frozen),
Harsha missing_inputs / score_range, cmd_yoga evaluation_error_count.
Already equivalent: yoga failures (BUG-1571), Drik determinism (BUG-1576),
standalone transit ephemeris path, Chara dignity location (BUG-1566), Harsha
max 20 / unknown day-night. Tests: tests/test_handoff_99076dad_sync.py.
Golden recaptured (Narayana status field only).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer third-round review 2026-11-07, items 4b-4d.
- Shadbala: the ratio total rupas / minimum is labelled a sufficiency
ratio (not auspiciousness, not ishta_phala) on the card, in the annual
package (sufficiency_ratio_pct, rank_by_total_rupas), the report facts
(ranking_basis, ratio_meaning, ranking_by_ratio) and the annual report
text. Chesta reference packet rows carry values_scope on every row.
- Argala: the layer and card say supported is a structural intervention
only; ties broken by the Narayana strength selector carry
ruling_pending / tie_break_ruling_pending (behaviour unchanged).
- Tajika: each annual pack field lists what partial_verified covers
(formula / order / boundary_dates / full_chart); dates_verified is false
and the consultation layer projects it.
The consultation evidence card golden is recaptured for the new layer
fields (start_at / end_at, not_evaluated, verification scope, labels).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Upstream ba8e36ec adds sections.transit for every route. Here the annual route
promises a "transit" label; a real but ungated section broke the evidence-gate
parity test. The section stays for finance/wealth, where the finance support
review reads it; the health override is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer third-round review 2026-11-07, item 3. timeline_boundaries
checks end == next start on full timestamps (start inclusive, end
exclusive) and lists every gap or overlap. The solar-return report and
annual pack expose the real return interval (this return to the next
actual return, computed), the Mudda 365.25-day year and the shown window
separately. The annual package checks the year chain, each year's Mudda,
Patyayini, monthly and Varsha Narayana rows, natal Vimshottari / Narayana,
and Mudda across years (a ~8-minute hole the fixed year leaves before the
next return). Consultation dasha rows gain start_at / end_at with the
birth offset and a per-system continuity check; the card carries
continuity_issue only when a table is not continuous.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer third-round review 2026-11-07, item 2. With is_daytime unknown
the fourth Harsha component is None (status unknown), the total is
withheld and only the known three-component sum (out of 15) is given.
The annual pack, report facts, interpretation rows and the parity
strength table carry the incomplete state instead of a full score.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Product 2026-11-07: sync the astrologer's working branch (ea2a9d65..d09feab7).
- 0266b6ad: year lord picks by the native five-fold Panchavargiya only; a
PyJHora score (research switch) is attached per candidate as
external_oracle_comparison (observation_only_not_selection_input) and
never selects. panchavargiya_selection_policy on the result; candidate_list
and the reader-report candidate table carry the five components and raw total.
The legacy Sun/Mars/Saturn table relabel is not applicable: calc_sodhita_av
was already removed here (BUG-1209).
- 8c4bff8a + a5b75886: Sodhita no longer votes in finance adjudication; the
bridge keeps raw 2/11 scores with prediction_scoring_allowed false.
- ba8e36ec: finance delivery inventory (raw, no vote), wrapped producer status
counts as blocked in machine-evidence sections, transit section, report gate
evidence_claims bindings, finance support review readiness.
- 5962368d: dispositor chain dispositor_sign is the dispositor's own sign.
- 8813c851: BCP observed at the reading date (bcp_reference, PL9 row).
- d09feab7: nakshatra_advanced.calculate_stellar_jeeva_sareera and the
nadi-stellar-roles CLI; specialized-jyotish SKILL.md, usage packs, ontology
and gap scanner mirrored.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer third-round review 2026-11-07, item 1. _run_custom_expr no
longer swallows exceptions; YogaEngine.detect records evaluation_failed
rows with the error class, and rules naming a condition type no evaluator
implements (69 BVR rules) are listed as not_implemented instead of being
silently never formed. The consultation sieve moves such packet members
to not_evaluated, and the card lists them. dhana_yoga no longer imports
math; parvata_yoga is disabled pending a definition ruling (BUG-1571).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Three-way parity audit 2026-11-07 (U ea2a9d65 / F frozen / P f70ae94e):
- Vimsopaka: look vargas up by "D{n}_" prefix (D60 key was misspelt, every
D60 fell to Neutral) and score only the sign-owner relation (upstream
ab5b8709, BPHS 7.21-27). All 16 varga scores now equal U on 3 charts.
- Narayana: age = total_seconds / (86400 x 365.25) keeping the birth time
(upstream ab5b8709); Rath rows carry start_date / end_date from the
unrounded ages; consult layer, report facts, API and calendar read them.
- Ascendant degree_raw / lon unrounded (engine and chart API).
- position_mode label: legacy is the apparent frame since BUG-1275; the
profile and module labels now say "apparent" (legacy still accepted).
- Functional profile label v2 -> v3_166q4 (the table actually used).
- full-reading Sade Sati uses the dated transit Saturn (upstream e628118d):
Jobs 2026-11-07 peak, owner / Obama not active, as U.
Consult evidence card golden recaptured.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Product 2026-11-07: stay in sync with the astrologer's latest (5fb8379c..ea2a9d65).
- Method layer: mirror SKILL.md re-imported with import_yinduzhanxing.py from a
clean ea2a9d65 clone (import record, manifest, import plan); root SKILL.md
body equals the mirror again (nine-lord editorial reference line). Router and
sub-skills unchanged upstream except her rectification skill, which is the
protected commercial skill here.
- 7b43eaf2: rectification question templates say they are templates (basis,
timing status, answer impact), no regression_hint +5 bias, low confidence
cap, blocked/external execution status in the audit table, invalid answers
ignored by the selector, calculation_profile echoed; API rejects a partial
lat/lon/tz and event rectification without a place.
- a4b4b267: BPHS 27.19 Drik weighting readings as diagnostic variants in
scripts/shadbala_reference/drik_profiles.py (shadbala.py is frozen, ERR-110;
default quarter and BPHS piecewise geometry unchanged, BUG-1586 / BUG-1623);
oracle audit compares rupa with rupa; VP Jain benchmark prints by default.
- bb26dc2d: /api/jaimini special mode carries the Goel fields, no invented
Aries ascendant.
- d66d13ce: annual report exposes tajika_named_yoga_structures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- KP monthly support read the birth-balance lord every month (no current_dasha in the issue #137 timeline); now the running lords, matching upstream
- ported prediction_verdict_matrix.py and references/rectification_evidence_contract_v1.json (the contract was always blocked as file missing)
- English audit statuses run / not_run written as Ran / Not run (run is also a packet key)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
- KP layer: sidereal Placidus cusp star/sub/sub-sub lords against MD/AD/PD
lords (upstream KP_SUB_WEIGHTS). Owner window 04:50-05:10, synthetic
5-event ledger: KP off 05:09, KP on 05:06 (upstream 05:09 / 05:06).
- result.python_engine: functional benefic/malefic, A7/UL/A10, SAV,
Shadbala, date-precision weights and the lead-margin verdict
(adjudicate_candidate_rows, neighbour stability, leave-one-out).
- Scan adds D5/D6/D8/D11/D16/D27/D40/D45 (D40/D45/D60 reference-only);
chart-choice boundary lines unchanged.
- When the top score ties, match_tier is 'tied' (分不出前后) with system
confidence 不确定; the UI shows the tie instead of 高度吻合.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Upstream's receipt _status reads execution_status before status and maps
partial_verified to parameter_sensitive, so the primary lane
'two-person Dasha/Narayana/Chara' was never ready and every dossier ended
delivery_readiness=blocked. The Rath view now carries execution_status
(executed when the seed is decided, blocked otherwise) and keeps the book
level in confidence_status, the same shape as upstream's Rashi Dasha
modules. Upstream's gate code is untouched.
Diana-Obama (raman) and the six eval pairs (lahiri): blocked -> ready_for_narrative.
Also syncs the Rath importer list test (varsha_narayana, consultation_native_layers)
and skips the retired BUG-1644 frozen file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
产品 2026-11-07 占星师方案 (item 4/5/6/8/10): the report reading and the export follow her skill.
- reading_facts v2 contract: birth parameters (no name/coordinates), 12 houses with KP cusps,
functional roles and natural-vs-functional conflicts, per-domain vargas (wealth D2+D11+D10,
A2/A11/A10; career D10+A10, AK/AmK; marriage D9+UL, A7/DK), special points, Jaimini, yogas as
candidates with conditions, Vimshottari to PD + Narayana with dates (birth date + age) and the
legacy variant, every dasha family's current period/status, transits from four reference points,
Sade Sati, double transit, strengths, KP, annual, technique audit, evidence paths, method
differences, blocked / parameter_sensitive / withheld states
- consult card facts: multi-varga domains, A2/A11/A10/AK/A7 participation, D1 varga resolves,
yoga path fixed, Narayana ages; KP is conditional (参数敏感) instead of 不参与
- report writer: professional prompt (evidence first, A/B/C, dual-track timing, status labels),
ninth section 依据与边界 (stored reading v2; v1 still reads), Latin allowed, longer limits
- export: technique audit chapter (Functional Benefic/Malefic, MEVG / Global Web Evidence,
Real Case Calibration rows), parameter/method differences, dasha system status, evidence
boundaries and the D1–D60 ledger (20 formal + 40 research D-N); upstream
varga_evidence_matrix / generic_varga_research_audit + registries ported so the ledger is no
longer blocked
- ordinary projection no longer deletes technique audit / MEVG / 参数敏感; parameter_sensitive
is relabelled 参数敏感
- quality gate: upstream technique_audit_table check restored, plus required-row check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Port from yinduzhanxing 5fb8379c (MIT): Naisargika, Kaala, Karaka, Tara,
Lagnamsaka, Yogardha, Mandooka, Paryaaya and Padanadhamsa dashas;
Sarvatobhadra, Kota and Kalanala chakras; Nakshatra Latta; Pachakadi;
Raman Amsayu and Pindayu. Producers and their upstream tests are copied;
scripts/upstream_technique_layers.py feeds them our natal and transit
positions and attaches chart.consultation_native_layers.upstream_techniques.
- dasha_registry: kaala and padanadhamsa keys (35 -> 37); the nine ported
dashas are served by compute_dasha or fail closed with upstream's reason.
- technique_registry.json: 16 partial entries; README badges follow.
- Evidence lookup section `upstream_techniques` in the consultation tool.
- Boundaries: Kalanala carries no PyJHora (AGPL) grid coordinates;
Padanadhamsa/Lagnamsaka run on our Narayana engine (no Rath Table 12,
PVR co-lord variants or second cycle). PyJHora observers and the Amsayu
worked-example scaffold live in scripts/research (root .py budget).
- PyJHora black-box cross-checks: Naisargika (lords/years) and Kaala
(seed segment and fraction within 5e-4) on a public chart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Owner order 2026-11-07 (astrologer plan item 2): metadata-only catalog and rule citations in git; full texts and passage index stay local (gitignored). POST /api/book_citations and a bounded consultation tool with chart condition check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8