fix(rectification): anchor candidate windows to civil dates across midnight
Independent Staging Quality Gate / validate (push) Successful in 13m27s
Independent Staging Quality Gate / publish (push) Failing after 1h0m1s

Carry explicit local date intervals instead of inferring the day from clock
order. Cluster width, delivery, adoption, and reports keep the actual civil
date; adopted date is stored separately from the reported birth_date.

Algorithm identity is scoring-9 / spec-v5. Scoring weights, confirmation
thresholds, and Skill version are unchanged. Isolated Linux final-3 gates
passed; four pre-existing Python failures remain. This is not a production
release.
This commit is contained in:
jesse-ux
2026-09-21 02:55:00 +08:00
parent 3be740f84d
commit b85c4a686a
115 changed files with 106484 additions and 315 deletions
@@ -0,0 +1,461 @@
{
"provenance": {
"kind": "unmocked_native_static_contexts",
"facts": "explicitly_fictional",
"generator": "compute_candidate_static_contexts -> window_scan; expected signs directly from native context features"
},
"request": {
"birth_date": "2000-03-01",
"start_time": "23:58",
"end_time": "00:02",
"lat": 0.0,
"lon": 0.0,
"tz": 0.0,
"candidate_intervals": [
{
"start_at": "2000-02-29T23:58",
"end_at": "2000-03-01T00:02"
}
],
"events": [
{
"id": "00000000-0000-4000-8000-000000000001",
"domain": "career",
"event_kind": "career_entry",
"date_start": "2020-01-01",
"date_end": "2020-01-01",
"precision": "day",
"summary": "Fictional career entry for date-contract testing"
}
]
},
"scan": {
"scanned": true,
"confirmation_allowed": false,
"unique_minute_claim": false,
"transitions": [
{
"layer": "d1",
"at": "23:58",
"user_meaning": "本命上升 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "天蝎座",
"to_sign": "天蝎座"
},
{
"layer": "d9",
"at": "23:58",
"user_meaning": "D9 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "射手座",
"to_sign": "射手座"
},
{
"layer": "d10",
"at": "23:58",
"user_meaning": "D10 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "射手座",
"to_sign": "射手座"
},
{
"layer": "d4",
"at": "23:58",
"user_meaning": "D4 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "金牛座",
"to_sign": "金牛座"
},
{
"layer": "d5",
"at": "23:58",
"user_meaning": "D5 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "处女座",
"to_sign": "处女座"
},
{
"layer": "d7",
"at": "23:58",
"user_meaning": "D7 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "处女座",
"to_sign": "处女座"
},
{
"layer": "d12",
"at": "23:58",
"user_meaning": "D12 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "双子座",
"to_sign": "双子座"
},
{
"layer": "d24",
"at": "23:58",
"user_meaning": "D24 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "处女座",
"to_sign": "处女座"
},
{
"layer": "d2",
"at": "23:58",
"user_meaning": "D2 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "狮子座",
"to_sign": "狮子座"
},
{
"layer": "d11",
"at": "23:58",
"user_meaning": "D11 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "摩羯座",
"to_sign": "摩羯座"
},
{
"layer": "d30",
"at": "23:58",
"user_meaning": "D30 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "摩羯座",
"to_sign": "摩羯座"
},
{
"layer": "pada",
"at": "23:58",
"user_meaning": "Nakshatra pada 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true
},
{
"layer": "hora",
"at": "23:58",
"user_meaning": "Hora Lagna 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "狮子座",
"to_sign": "狮子座"
},
{
"layer": "ghati",
"at": "23:58",
"user_meaning": "Ghati Lagna 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "狮子座",
"to_sign": "狮子座"
},
{
"layer": "bhava",
"at": "23:58",
"user_meaning": "Bhava Lagna 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "摩羯座",
"to_sign": "摩羯座"
},
{
"layer": "pranapada",
"at": "23:58",
"user_meaning": "Pranapada Lagna 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "射手座",
"to_sign": "射手座"
},
{
"layer": "kp1",
"at": "23:58",
"user_meaning": "KP 1宫子主 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "天秤座",
"to_sign": "天秤座"
},
{
"layer": "kp4",
"at": "23:58",
"user_meaning": "KP 4宫子主 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "射手座",
"to_sign": "射手座"
},
{
"layer": "kp7",
"at": "23:58",
"user_meaning": "KP 7宫子主 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "天蝎座",
"to_sign": "天蝎座"
},
{
"layer": "kp10",
"at": "23:58",
"user_meaning": "KP 10宫子主 在这一段起点的状态",
"candidate_date": "2000-02-29",
"window_index": 0,
"window_offset_minutes": 0,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"segment_start": true,
"from_sign": "射手座",
"to_sign": "射手座"
},
{
"layer": "d10",
"at": "23:59",
"user_meaning": "D10 在 23:59 发生变化",
"candidate_date": "2000-02-29",
"window_index": 1,
"window_offset_minutes": 1,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"from_sign": "射手座",
"to_sign": "摩羯座"
},
{
"layer": "d5",
"at": "23:59",
"user_meaning": "D5 在 23:59 发生变化",
"candidate_date": "2000-02-29",
"window_index": 1,
"window_offset_minutes": 1,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"from_sign": "处女座",
"to_sign": "天秤座"
},
{
"layer": "kp1",
"at": "23:59",
"user_meaning": "KP 1宫子主 在 23:59 发生变化",
"candidate_date": "2000-02-29",
"window_index": 1,
"window_offset_minutes": 1,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"from_sign": "天秤座",
"to_sign": "射手座"
},
{
"layer": "kp10",
"at": "23:59",
"user_meaning": "KP 10宫子主 在 23:59 发生变化",
"candidate_date": "2000-02-29",
"window_index": 1,
"window_offset_minutes": 1,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"from_sign": "射手座",
"to_sign": "金牛座"
},
{
"layer": "d24",
"at": "00:02",
"user_meaning": "D24 在 00:02 发生变化",
"candidate_date": "2000-03-01",
"window_index": 4,
"window_offset_minutes": 4,
"segment_index": 0,
"segment_start_at": "2000-02-29T23:58",
"segment_end_at": "2000-03-01T00:02",
"from_sign": "处女座",
"to_sign": "天秤座"
}
],
"d1_lagna_count": 1,
"d1_candidates_differ": false,
"d9_lagna_count": 1,
"d9_candidates_differ": false,
"d10_lagna_count": 2,
"d10_candidates_differ": true,
"d4_lagna_count": 1,
"d4_candidates_differ": false,
"d5_lagna_count": 2,
"d5_candidates_differ": true,
"d7_lagna_count": 1,
"d7_candidates_differ": false,
"d12_lagna_count": 1,
"d12_candidates_differ": false,
"d24_lagna_count": 2,
"d24_candidates_differ": true,
"d2_lagna_count": 1,
"d2_candidates_differ": false,
"d11_lagna_count": 1,
"d11_candidates_differ": false,
"d30_lagna_count": 1,
"d30_candidates_differ": false,
"pada_count": 1,
"pada_candidates_differ": false,
"hora_count": 1,
"hora_candidates_differ": false,
"ghati_count": 1,
"ghati_candidates_differ": false,
"bhava_count": 1,
"bhava_candidates_differ": false,
"pranapada_count": 1,
"pranapada_candidates_differ": false,
"kp1_count": 2,
"kp1_candidates_differ": true,
"kp4_count": 1,
"kp4_candidates_differ": false,
"kp7_count": 1,
"kp7_candidates_differ": false,
"kp10_count": 2,
"kp10_candidates_differ": true,
"d9_sign_names": [
"射手座"
],
"d10_sign_names": [
"射手座",
"摩羯座"
]
},
"expected_signs": {
"23:58": {
"d1": "天蝎座",
"d9": "射手座",
"d10": "射手座",
"d24": "处女座"
},
"23:59": {
"d1": "天蝎座",
"d9": "射手座",
"d10": "摩羯座",
"d24": "处女座"
},
"00:00": {
"d1": "天蝎座",
"d9": "射手座",
"d10": "摩羯座",
"d24": "处女座"
},
"00:01": {
"d1": "天蝎座",
"d9": "射手座",
"d10": "摩羯座",
"d24": "处女座"
},
"00:02": {
"d1": "天蝎座",
"d9": "射手座",
"d10": "摩羯座",
"d24": "天秤座"
}
}
}