Commit Graph
724 Commits
Author SHA1 Message Date
Jesse_ChenandClaude Fable 5.1 57118b2697 research(rectification): holdout v5 baseline runner and schema tests
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-29 19:52:18 +08:00
Jesse_ChenandClaude Opus 5.5 419e1f4d37 feat(report): English reader edition from the same packet; yoga combination English twins (E1/E2/E3 wiring)
- /api/professional_report_reference accepts languages [zh,en]; one packet, zh
  byte-identical, markdown_en + reader_dasha_applicability_en, or
  english_unavailable when a Chinese character would leak.
- pl9_reader_english renders the parity volume with report_language=en and a
  fixed term table; yoga_engine carries combination_en / effects_en / strength_en.
- 75 fictional charts: zero Han, same line count, same numbers outside yoga tables.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-29 19:26:00 +08:00
Jesse_ChenandClaude Opus 5.5 0c06ab1d78 feat(report): static English dictionary for yoga rules and dasha applicability (E3)
yoga_rules.json gains effects_en for every rule and an _en sibling for each
Han-bearing string (combo_template, strength, source, accuracy_note); zh values
untouched. reader_dasha_applicability renders language='en' from the same
packet; the default zh output is byte-identical (pinned by sha256).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-29 19:26:00 +08:00
Jesse_ChenandClaude Fable 5.1 abf2ad6aea research(rectification): scoring-method scaffold — LR weights, absence, precision follow-up pipelines on v4, verdicts pending v5 (BUG-1091)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-29 19:06:45 +08:00
Jesse_ChenandClaude Opus 5.5 d85ab9a2d2 feat(reports): generate card, jump to end, labelled export, TOC levels, table bands, export size; drop 字段 jargon (BUG-1092..1094)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-29 19:04:45 +08:00
jesse-uxandClaude Code 64aa0ec20c feat(chart): polish chart presentation and symbol explanations
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 1m27s
Hide engine branding, gate supported divisional columns, align house cells, and add accessible symbol help. Reduce desktop chart width and stabilize the waiting slot.

Validated with 78 browser checks and 87 focused frontend tests. Full suite retains 29 identical baseline loader failures; no new failures.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-29 19:03:28 +08:00
Jesse_ChenandClaude Fable 5.1 7c5ea7ae5a feat(annual): localise the solar-return instant, relocated returns, compact PL9 export (BUG-1095..1097)
Upstream yinduzhanxing 41d1c740 / 59c9139f, hand-merged; 089858c0 verified not applicable.

- solar_return: dt_local was the UT instant verbatim (no caller ever added the
  offset). Localise with ZoneInfo at the return instant (IANA id) or the fixed
  offset; expose annual_location; Sahams day/night at the true instant;
  optional current_location return charts.
- cmd_solar_return / annual_tajika_pack / engine: pass birth IANA zone and
  --solar-return-location-mode / --current-* through; external PyJHora
  replay blocked when relocated.
- output_json keeps the upstream stream= signature; PL9 exports written
  compact via dumps (measured faster than json.dump streaming), 9.57 -> 4.61 MB.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-29 14:59:08 +08:00
Jesse_ChenandClaude Opus 5.5 56b51e2170 fix(rectification): name education quality events by kind, no month for year precision (BUG-1088)
Wording only: _quality_user_meaning names start/change/interruption as
升学/学业变动/学业中断; _display_date_label drops the stored month for
year-precision events. Split hash and month field unchanged; same-machine
A/B (PYTHONHASHSEED=0) differs only in user_meaning/display_date_label.
Re-frozen per ERR-110 under new quality_wording_2026_09_29 records;
sealed rerun (20) and reported-offset sweep (900) identical to 09-21.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-29 10:06:13 +08:00
Jesse_ChenandClaude Opus 5.5 da989c15da test(contract): home surface includes the shared self-profile save (gate run 1584)
Independent Staging Quality Gate / validate (push) Successful in 11m53s
Independent Staging Quality Gate / publish (push) Successful in 3m33s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-29 01:54:34 +08:00
Jesse_ChenandClaude Opus 5.5 a9a917d50c feat(report): birth-sky report cover bound to the report's birth fingerprint (F1–F3)
Product decision A (TASK-birth-sky-followup-20260928):
- every generation path writes subject.birthFingerprint (stored-row
  fingerprint, same function as the chart page's profileFingerprint);
  never into the evidence bundle the model reads
- GET /api/reports/:id compares on the server and returns only
  report.coverSubject (subject id or null); legacy reports never get one
- report page shows the night cover above the body, paper cover alone on
  the first printed A4 page; silent on any failure, no waiting state
- TS / JSON schema / Python contract accept the optional field
- BLOCKED T5 struck through; DESIGN §17, CHANGELOG, checklist, PROGRESS

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-09-28 21:47:44 +08:00
Jesse_ChenandClaude Opus 5.5 d277cbd8ad feat(chart): 「那一刻的天空」封面 — engine, BFF, canvas painter, chart header entry
T1 scripts/birth_sky.py: real alt/az of the seven visible grahas (swe.calc_ut +
swe.azalt, geometric altitude, azimuth converted from swe's south origin to
north-east) and Yale BSC5 stars V<=4.0 (IAU 1976 precession); phase
day / twilight_morning / twilight_evening / night. Thin POST /api/birth_sky
registration in do_POST (no new handler method, no __new__).

T2 GET /api/birth-sky?subject=: birth truth read server side through
loadSubjectBirth + prepareChartViewProfile; zod contract; no billing, no
writes, no birth data in the response.

T3/T4 lib/birth-sky: sentence table, pure Canvas 2D drawBirthSky (night /
paper palettes from DESIGN tokens, east on the left, serif headline with
1.5 s font wait), PNG export via navigator.share or Blob + a.download.
Chart page prefetches and paints the cover once the chart is ok; the header
button appears only when the PNG is ready. Dialog is a lazy chunk.

T7 DESIGN §17, VOICE, CONTEXT glossary, CHANGELOG, real-device checklist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0199rbQDTsUbCVw84wc8BTFe
2026-09-28 20:27:40 +08:00
Jesse_ChenandClaude Opus 5.5 308f5502cb feat(fonts): self-hosted Jyotisha Serif SC heading slices (T1)
Renamed, sliced subset of Noto Serif SC SemiBold (OFL 1.1, noto-cjk
Serif2.003) covering the 6500 level-1 + level-2 characters of the
通用规范汉字表 plus Latin, punctuation and common symbols.

- scripts/fonts/build_serif_slices.py: fontTools subsetting into 30 woff2
  slices + serif-sc.css (@font-face, weight 500 700, font-display swap);
  byte-identical output for the same input.
- Frequency order (char_order.txt): repo corpus top 300, then Google
  Fonts SC frequency bands (nam-files, Apache-2.0), then corpus count;
  unranked characters sliced by contiguous code point.
- tests/test_serif_font_slices.py: coverage, no overlap, files exist,
  120 KB cap; added to the quick quality gate.

TASK-serif-headings-20260928 T1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0199rbQDTsUbCVw84wc8BTFe
2026-09-28 19:31:43 +08:00
Jesse_ChenandClaude Opus 5.5 4189750c6a fix(api): technique explorer bhava_chalit sample carries the birth moment (BUG-1077 acceptance)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-28 15:55:50 +08:00
Jesse_ChenandClaude Opus 5.5 c35e0195e1 fix(chart): Sripati Bhava from the real sidereal MC; Bhava chart and tables (T5, BUG-1077)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-28 15:38:24 +08:00
Jesse_ChenandClaude Opus 5.5 ab6ee94e95 fix(chart): divisional tables show that chart's own rows, not D1 (T3, BUG-1076)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-28 15:21:30 +08:00
Jesse_ChenandClaude Opus 5.5 fb543d3849 fix(engine): pair double-transit D1+D9 targets by identity, not name digits (BUG-1061)
Every D9 target name contains the "9" of "D9", so the digit comparison never
paired D1 N宫 with D9_N宫 and, for house 9, paired D1 9宫 with any D9 planet
target. Targets now carry structured metadata (layer/kind/house/planet); the
cross-layer loop pairs only the same house or targets that both point at the
D1 house-N lord. Target names and D1/D9/CL layer results are unchanged
(D1/CL golden regenerated byte-identical); 48 samples: cross entries 31 -> 38.
Evidence-card golden regenerated with the capture script.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 19:08:07 +08:00
Jesse_ChenandClaude Opus 5.5 f6fa367f2b fix(engine): D9 double-transit targets check the D9 signs they name (BUG-1060)
`cmd_double_transit_pac` placed the `D9_{N}宫` target on the D9 lagna sign
and the `D9_{lord}(宫主)` target on that planet's D1 longitude. Both now sit
on D9 signs (D9 house-N sign; the lord's navamsa sign), built in one
testable helper. Target names, D1 and Chandra Lagna layers are unchanged
(pre-fix golden, byte-identical). Evidence-card golden regenerated with the
capture script (one public chart: double-transit conclusions 9 -> 10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 17:30:05 +08:00
Jesse_ChenandClaude Opus 5.5 d5616c347e feat(engine): expose native technique layers in the consultation output
TASK-consult-evidence-card-v2-20260927 T1. New module
scripts/consultation_native_layers.py, thinly registered after the merged
engine fields in _attach_local_consultation_layers (no handler method, no new
forgery site). It writes one new top-level chart key,
chart.consultation_native_layers, kept out of chart.modules so the thematic
report's full_reading_module_count does not move:

- d9_summary: D9 lagna, each planet's D9 sign and dignity
  (jyotish_engine._get_dignity_level), Vargottama (_calc_vargottama),
  D1<->D9 reversals
- punarphoo (punarphoo.detect_punarphoo, observation_only)
- vivah_saham (jyotish_engine._calc_vivah_saham), day_night (gulika)
- slow_transits: Jupiter / Saturn / Rahu / Ketu now with natal house and the
  Jupiter / Saturn SAV / BAV, and the next twelve months' ingress / station
  dates (ephemeris_events; nodes by the same daily-noon sampling)
- double_transit: cmd_double_transit_pac for houses 1-12, conclusions only,
  plus DK / UL targets by the same PAC rule
- karakamsha, argala, dispositor_chains, inter_chart_linkage, moon_transit
  (lookup-only layers)
- annual_tajika on the annual route: build_annual_tajika_pack (annual lagna,
  Varshesha, Muntha, Mudda Dasha with dates, Sun / Moon / year-lord Tajika
  aspects), parameter_sensitive; blocked when the pack is not reliable,
  never natal data

A/B on 3 public AA charts x 4 routes: every existing output is identical,
only the new key is added; about 40 ms per workflow. Golden regenerated with
annual and timing routes (family workflow byte-identical apart from the new
key).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 16:27:24 +08:00
jesse-ux e3bd3930e3 research: compare Jev intent state with the previous turn
Independent Staging Quality Gate / validate (push) Successful in 12m0s
Independent Staging Quality Gate / publish (push) Successful in 3m35s
V0 on the existing 157 real rows matches the 09-19 cache. The staging extract has no case linkage, so V1/V2 are unmeasured and the verdict stays 缺数据.
2026-09-27 11:41:53 +08:00
Jesse_ChenandClaude Opus 5.5 147ebc1789 feat(consult): prompt and Skill read from the evidence card (Skill 6.9.17)
The natal system prompt now says: the card in claim_cards is the chart
evidence for this answer, quote it as given, look up one further section of
this calculation with read-consultation-evidence before writing, and read
evidence_card.backstage as a confidence cap. The "use every executed layer"
and must_use_layers sentences are replaced; local_layers paths now point at
the card. SKILL.md 关联技法完整调取 / 0.0.1 and router 0.7 state that the
full result stays in receipts, the 本轮技法 panel and reports while web chat
answers from the card; computing the full spectrum is unchanged. Skill and
package version 6.9.16 -> 6.9.17 (tests/run_all.py 三栏).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 02:54:11 +08:00
Jesse_ChenandClaude Opus 5.5 850f18605b feat(consult): the answer model reads the answer contract plus an evidence card
New frontend/src/lib/consultation-evidence-card.ts ports the research
CARD_SPECS: base section (ascendant, house signs, placements with degrees,
functional benefics/malefics with lordship, Vimshottari MD/AD/PD with dates,
Narayana md/ad/pd) plus a section per domain; values copied verbatim from
the projection or engine context, gaps listed, never filled. The tool now
returns toModelEvidenceView: status, evidence_contract (policy, blockers,
layers, limitation), claim_cards = the card, evidence_card meta (D4 line,
supplementable sections), rectification, methodology, domains; the audit
table, spectra, must_use_layers and presentation stay server-side and the
single-domain consultations copy is gone. 「本轮技法」 rows are unchanged.
Golden tests over three public AA engine captures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 02:54:11 +08:00
Jesse_ChenandClaude Opus 5.5 5c65834dda feat(consult): split family into parents and children domains (engine still family)
parents (D12, 4/9 houses, Sun/Moon) and children (D7, 5th house, Jupiter,
PK) are plan/card domains with Chinese labels and the brief's aliases. They
send the family route contract to the engine and are rejected as a stored
session theme, so neither Python nor the chat_sessions.theme CHECK changes.
Methodology reports no strict checklist for them; must-use layers follow the
plan domain. Tests with 原值/新值/原因 where assertions changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 02:54:11 +08:00
jesse-ux d8d03b5a69 research: consultation evidence-card inventory and draft
Independent Staging Quality Gate / validate (push) Failing after 6m40s
Independent Staging Quality Gate / publish (push) Skipped
Measure the model-visible consultation payload on three public charts, draft per-domain cards, and record the Narayana/pratyantar projection gap as BUG-1054. No runtime behavior change.
2026-09-27 01:27:57 +08:00
Jesse_ChenandClaude Opus 5.5 d0bfc1fc3d feat(rectification): anonymous aggregate telemetry + admin summary page
One row per rectification Case, written once when the range card is first
delivered (GET /api/rectification/cases/[caseId], fire-and-forget after the
response is built). Numbers and closed enums only: no user / case / session
id, birth data, names, text or timestamps finer than the ISO week. Dedupe via
a separate case_id ledger that cascades with the Case (and account deletion).

Migration 20260926010000 is additive: two RLS tables with no runtime table
grants, SECURITY DEFINER write (service_role), purge (service_role) and
aggregate-only summary (admin_runtime) functions; 180-day retention.

Admin: 「校正统计」 page + GET /api/admin/rectification-telemetry
(admin.customers.read), aggregates only, no per-row view or export.

TASK-rectification-telemetry-20260926. test:db not run locally (no Docker).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-26 15:36:29 +08:00
Jesse_ChenandClaude Opus 5.5 0f5442cea2 research(rectification): offline R1/R2/R3 — answer-flip tolerance, V1/V2 rerun, dasha shift arithmetic
- R1: flipping 1 answer keeps truth in range 98-100% but cuts head hit by
  a third or more; 2 flips squeeze truth out in 7-10% of ±30/±60 replays
  (two flips = 8 points = SEPARATION_LEAD).
- R2: weights do apply (research scorer == production at V0); V1/V2 are
  identity at ±30/±60 by construction and leave six-question metrics
  unchanged at ±10 -> no_benefit (measured). Supplementary V1n does not
  pass the gate.
- R3: boundary shift is ~3.8 days/minute (1.3-5.9), not 1.1; the 45-day
  gate is ~8-34 minutes. The _representative_pairs hypothesis is refuted
  (all-pairs adds no dated probes); the bottleneck is monthly evaluation.
  New finding recorded as BUG-1048 (investigating): _boundary_windows
  year-straddle exemption and positional zip misalignment bypass the gate.
- Dated errata appended (no deletions) to the 09-14/09-16 briefs and
  research docs; README board row -> 待验收. No production code, scoring,
  thresholds, gates or Skill changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-26 14:47:48 +08:00
Jesse_ChenandClaude Opus 5.5 e84d6eb80b test(contract): drop retired chart-library-panel wording from home surface contract
Independent Staging Quality Gate / validate (push) Successful in 12m3s
Independent Staging Quality Gate / publish (push) Successful in 3m25s
The panel was removed in d08ffdc0 per TASK-round-0925-followup; the /people
assertions already lock its replacement. Gate run 2901 failed on this line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-26 05:25:22 +08:00
jesse-uxandClaude Code 4d801e53c3 fix: integrate people archive, report reader and western chart corrections
Independent Staging Quality Gate / validate (push) Successful in 16m28s
Independent Staging Quality Gate / publish (push) Successful in 3m33s
Validate on Linux Node 22 and PostgreSQL 17: 3894 frontend tests and 64 database tests pass, with no removed test names or new failures. Preserve static Home, bounded gzip, assertion-change records and manual acceptance gaps.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-25 20:41:16 +08:00
jesse-ux 45842361f3 fix(test): audit /people and the retired self chart mirror
Independent Staging Quality Gate / validate (push) Failing after 11m4s
Independent Staging Quality Gate / publish (push) Skipped
The capability scan now lists the archive page. Chart profile writes no longer pretend to store a self mirror, and deletion stays an owned other-row transaction.
2026-09-25 04:33:07 +08:00
jesse-ux 81db05c6f0 fix(test): follow the moved onboarding shell in the birth-time contract
Independent Staging Quality Gate / validate (push) Failing after 10m56s
Independent Staging Quality Gate / publish (push) Skipped
The home split moved BirthTimeRectification out of page.tsx. The gate still required that tag in the old file list. The scan now includes the shell, and page.tsx must still mount it.
2026-09-25 03:12:17 +08:00
jesse-ux 3c2f7bd559 fix(report): use the upstream reader edition for new longform bodies
New reports request reader_main from upstream origin/main 23b9609e.
KP and transit no longer copy an empty vars() dict, solar returns keep
birth_asc_sign_idx, and ordinary projection deletes internal lines whole.
2026-09-25 02:21:46 +08:00
jesse-uxandClaude Code a12f2c0d26 fix(report): make density facts readable and printable
Independent Staging Quality Gate / validate (push) Failing after 11m4s
Independent Staging Quality Gate / publish (push) Skipped
Unify reader cleanup rules, lock writer table guards, and register the exact fictional timestamp collision. Preserve existing ordinary-report safety contracts and source-data gaps.

Validation: report Node 165/165, final safety 29/29, Python 101/101, Chrome 28/28; both PDFs retain all 130 rows. Full Node 3704 tests with the same 91 baseline failures. Privacy test: 62 passed, 1 failed due to 17 protected-file READ_ERRORs; not a green gate. Build, DB, manual checklist and controlled-login gaps remain documented. User explicitly authorized staging push with these gaps disclosed.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-23 15:26:25 +08:00
jesse-uxandClaude Code bbd96d3b6b feat(report): add dense personal report appendix
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-23 10:42:17 +08:00
jesse-ux d2cec17995 test: stop requiring retired archive entrypoints in Python contracts
Independent Staging Quality Gate / validate (push) Successful in 11m24s
Independent Staging Quality Gate / publish (push) Successful in 3m45s
Flip archive tokens to must-not-appear on the session row and session hook only. Keep writeChatSession POST/PATCH and assert delete still uses DELETE. Grep tests/ before deleting frontend symbols.
2026-09-21 19:20:45 +08:00
jesse-ux 0c3c9d6b42 fix(deploy): keep BuildKit cache and use Huawei mirrors for API images
Independent Staging Quality Gate / validate (push) Successful in 10m36s
Independent Staging Quality Gate / publish (push) Successful in 7m7s
Gitea run 2828 validated, then publish hit the 60-minute deadline while
Aliyun apt/pip crawled at about 22 kB/s after a 72h cache prune on a
runner with 677 GiB free. Skip BuildKit prune when disk is above the
minimum, split API apt/pip layers, and point apt/pypi at Huawei Cloud.
2026-09-21 10:56:38 +08:00
jesse-ux b85c4a686a 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.
2026-09-21 02:55:00 +08:00
jesse-uxandClaude Code 25232ce4ce test(rectification): compare same-day scores against legacy path in process
Replace machine-specific float hashes with strict score and matrix byte comparisons. Keep quick bridge coverage and document duplicate collection. Verify Windows/Linux float behavior and in-memory candidate-date reversal; record the separate-machine acceptance gap and BUG-984 end-to-end blocker.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 14:38:29 +08:00
jesse-uxandClaude Code aa46da1016 fix(rectification): use candidate dates for cross-midnight dasha scoring
Add date-isolated caches and regression coverage, align scoring identity, and freeze full research reruns while preserving historical artifacts. Record unresolved cache/receipt identity and end-to-end acceptance gaps for branch review only.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 13:56:11 +08:00
jesse-uxandClaude Code 932f2fffba research(rectification): add reported-offset evaluation and frozen rerun integrity
Independent Staging Quality Gate / validate (push) Successful in 12m7s
Independent Staging Quality Gate / publish (push) Successful in 3m46s
Preserve closed confirmation gates and previously-exposed dataset boundaries. Add auditable 900-trial sensitivity results, current scorer freshness checks, and the v5 collection protocol.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 12:03:52 +08:00
jesse-ux 8dc460da23 fix(ci): untrack .venv symlink and align Beam avatar contract
The staging gate failed on READ_ERROR .venv after a docs commit tracked a
symlink that gitignore .venv/ does not ignore. CI replaces that path with a
real venv directory. Drop the symlink, ignore the name itself, and lock it
in the privacy scan. Also point the Beam avatar source contract at the
current profile-panel copy so npm test stops failing after Python.
2026-09-20 09:11:24 +08:00
jesse-uxandClaude Code 8497587e65 fix(privacy): complete owner-case purge fix2
Independent Staging Quality Gate / validate (push) Failing after 9m58s
Independent Staging Quality Gate / publish (push) Skipped
Document P0 collision fix and precise privacy declaration permit.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 00:55:20 +08:00
jesse-uxandClaude Code 5cbc2d0097 chore(privacy): purge upstream private material and add import guards
Prepare branch for remote review; preserve documented validation gaps and protected historical packages.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 00:55:18 +08:00
jesse-ux 507ef959f5 research(jev-intent): fix2 把来源 B 现行与高置信错误补进报告
Independent Staging Quality Gate / validate (push) Failing after 9m3s
Independent Staging Quality Gate / publish (push) Skipped
离线从 cache 聚合,不重跑模型。无焦点层 Flash 69.7% 低于 Jev 78.8%。采集层相对门槛标不可判。
2026-09-19 12:28:43 +08:00
jesse-ux c2ecbc74cd research(jev-intent): 修复轮重造语料并全量对照
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 1m37s
来源 C 改为 DeepSeek Flash 生成+独立复核,撤回模板拼接结论。来源 B 157 条人工标注后跑 Jev x2 与 Flash 全量对照,结论为缺数据。
2026-09-19 11:30:31 +08:00
jesse-ux d6fc4fb8b3 research(rectification): DeepSeek Flash 抽 33% 对照现行分类器提示词
Independent Staging Quality Gate / validate (push) Successful in 10m16s
Independent Staging Quality Gate / publish (push) Successful in 3m57s
来源 B 仍为 0。Flash 套生产提示词,采集题相对门槛未过。结论仍不可接。
2026-09-19 09:45:29 +08:00
jesse-ux fde541c2ca research(rectification): Jev 意图分类离线对照,结论不可接
Independent Staging Quality Gate / validate (push) Successful in 10m0s
Independent Staging Quality Gate / publish (push) Successful in 3m49s
来源 C 900 条 + jev-1.13.0 双跑。高置信错误 7%、点选题 answer_class 65%。不改线上分类器。
2026-09-19 09:27:10 +08:00
jesse-ux 39a0d7a980 fix(ci): 出生时间旅程合同改读 (app)/page.tsx(BUG-939) 2026-09-18 10:18:57 +08:00
jesse-ux db5b0a214b fix(web): 会话列表合同跟着外壳搬家,无活跃会话不再静默吞发送
Independent Staging Quality Gate / validate (push) Failing after 6m30s
Independent Staging Quality Gate / publish (push) Skipped
四条源码合同改到 (app)/layout 与注册载荷两端对断。列表只剩校正会话时普通输入框锁定,发送会打开校正或给出提示。
2026-09-17 23:06:01 +08:00
jesse-ux e4e73f56c0 fix(web): 四个页面共用一份会话列表,空会话不入列
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 9m33s
对话、星盘、星历、报告进同一 (app) 外壳,列表只拉一次。服务端不再列出空咨询;新建复用已有空会话。新标题改成「生时校正 · M月D日」,侧栏副标题用创建时间。
2026-09-17 21:27:40 +08:00
jesse-ux 227a75719b fix(rectification): D9 判别题不再借 D24 探针,性格描述一列一句
Independent Staging Quality Gate / validate (push) Failing after 13m34s
Independent Staging Quality Gate / publish (push) Skipped
2026-09-17 01:06:17 +08:00
jesse-ux 05cf20fb83 fix(ci): capability audit 丢掉 Next.js 路由组,公开 URL 不变
Independent Staging Quality Gate / validate (push) Successful in 14m41s
Independent Staging Quality Gate / publish (push) Successful in 40m10s
Gitea run 2697 唯一失败:侧栏把 /chart /ephemeris /reports 移进 app/(secondary)/ 后,_scan_app_routes 把文件夹名写进 app_routes。扫描时丢掉括号段。BUG-753。
2026-09-16 21:09:24 +08:00