Request:
- Add a repeatable mechanism so HK IPO reports detect issuers that already have Mainland A shares.
- Include a third internet/official-exchange cross-check layer beyond structured history and prospectus scans.
Changes:
- Add listed_share_classes schema support for same-issuer A-share mappings and evidence links.
- Add scripts/archive_a_share_mappings.py to scan prospectus extracted text, reject sponsor/portfolio/cornerstone false positives, archive optional official web evidence and A-share/FX quote evidence, and export snapshots on write.
- Surface a_share_* fields in the analysis dataset and single-ticker report output.
- Update hk-ipo analyst/archivist skill rules and scheduled refresh prompt to require the three-layer A/H mapping check.
Verification:
- python3 -m py_compile scripts/archive_a_share_mappings.py scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- .venv/bin/python scripts/archive_a_share_mappings.py --as-of 2026-06-24T00:00:00Z --tickers 00668,01688,03661,09630 --dry-run
- .venv/bin/python scripts/build_analysis_dataset.py --db /tmp/hk_ipo_ah_dataset_test.sqlite --dataset /tmp/hk_ipo_ah_dataset_test.csv --report /tmp/hk_ipo_ah_model_test.md --as-of 2026-06-24T00:00:00Z
- .venv/bin/python scripts/generate_ipo_report.py 09630 --dataset /tmp/hk_ipo_ah_dataset_test.csv --stdout --as-of 2026-06-24T00:00:00Z
- git diff --check
Next useful context:
- Dry-run detected 00668->300866.SZ, 01688->002600.SZ, 03661->300661.SZ, and 09630->688630.SH.
- A false positive 01688->300476.SZ from a cornerstone investor parent was rejected by the issuer-context filter.
Request:
Explain and fix why the recent 30-day listed IPO review showed data_gap in the 股票名 column.
Cause:
The recent review sample was seeded from HKEX annual new-listing reports, which only carried English issuer names in ipo_master. The archived ipohk external history already had display stock names, but build_analysis_dataset.py did not expose external_ipo_history.stock_name as a stock_short_name fallback.
Changes:
- Use external_ipo_history.stock_name as a stock_short_name fallback in the analysis dataset after the official/master and market-heat display-name sources.
- Backfill blank ipo_master.stock_short_name values when future ipohk history archives carry a stock name.
- Document the external-history display-name fallback in the analyst skill.
- Refresh the latest report and README so the recent 30-day review shows stock names for 00901, 02723, 03310, 03388, 02553, 01081, 01779, and 02290.
Verification:
- python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst
- .venv/bin/python -m py_compile scripts/archive_ipohk_history.py scripts/build_analysis_dataset.py
- git diff --check
- Rebuilt analysis_model_v0_dataset.csv for 2026-06-23T10:59:36Z
- Python check that README matches the dated latest report and recent-review stock-name cells are no longer data_gap
Request:
Ensure the break-probability, risk/reward, and capital-efficiency section includes IPOs without confirmed D1 break/non-break outcomes, even after subscription closes.
Changes:
- Update the hk-ipo-analyst skill so broad reports keep all current or recently closed unresolved D1 names in the probability/risk section.
- Update the scheduled analyst prompt to preserve this coverage during automated refreshes.
- Refresh the latest report and README with a D1-unconfirmed risk table covering current actionable names plus closed/waiting names.
Verification:
- python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst
- bash -n scripts/run_hk_ipo_analyst_once.sh
- git diff --check
- Python check that reports/README.md matches the dated latest report and includes the closed/waiting D1-unconfirmed tickers
Request:
Rename the report display-name rule from 中文名 to 股票名, prefer Chinese stock-style short names, and allow sourced English stock names such as MERDEKAGOLD-DRS when no Chinese short name exists.
Changes:
- Update the hk-ipo-analyst skill to require a 股票名 column and document English stock-name fallback.
- Derive missing stock_short_name values from archived market-heat source-page stock names in the analysis dataset.
- Preserve source-page stock names into ipo_master when future market-heat archives encounter blank stock_short_name values.
- Rename the single-ticker report display helper to stock_display_name.
- Refresh the latest report and README so 06228 displays as MERDEKAGOLD-DRS and tables use 股票名.
Verification:
- python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst
- git diff --check
- .venv/bin/python -m py_compile scripts/archive_t0_5_market_heat.py scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- Rebuilt analysis_model_v0_dataset.csv for 2026-06-23T10:59:36Z
- Verified 06228 stock_short_name is MERDEKAGOLD-DRS and latest README matches the dated report
Request:
Prefer stock-app-style Chinese display names in IPO report tables, for example 圣邦股份 instead of the full legal issuer name.
Changes:
- Update the hk-ipo-analyst report naming rule to prefer sourced stock short names in 中文名 columns.
- Export stock_short_name into the analysis model dataset.
- Make generated single-ticker reports use the short Chinese name as the title/display label while retaining legal names for disambiguation.
- Refresh the latest dated report and reports README to use Chinese short names consistently.
Verification:
- git diff --check
- .venv/bin/python -m py_compile scripts/build_analysis_dataset.py scripts/generate_ipo_report.py
- CSV validation for stock_short_name on 03661, 01688, and 01191
- Confirmed latest report and README contain no matched full legal issuer names for the refreshed shortlist
Request:
- Update the hk-ipo-analyst skill so generated reports add a Chinese-name column after the stock code.
- Avoid using English company names as the report display label.
Changes:
- Added Report Name Display Rules to the analyst skill.
- Required IPO tables to keep the ticker/code column separate and add a dedicated 中文名 column immediately after it.
- Required official archived Chinese names or stock short names, with hk-ipo-archivist backfill or data_gap instead of substituting English names.
Verification:
- Ran python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst.
- Ran git diff --check and git diff --cached --check.
Next useful context:
- This applies to actionable rankings, fundamentals tables, closed/waiting lists, A/H overlays, recent 30-day reviews, and generated single-ticker reports.
Request:
- Add T2_grey_market prices to the hk-ipo-analyst review logic.
- Analyze and document credible grey-market data sources inside the skill.
Changes:
- Added T2 grey-market source-quality reviews to the analyst skill description.
- Required latest candidate and recent-listing reviews to include T2 grey-market context when reliable archived evidence exists.
- Added a T2 Grey-Market Review Overlay section with required fields, source tiers, and data-gap guardrails.
- Updated review-card requirements to include T2 grey-market price/return or an explicit data_gap.
Verification:
- Ran python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst.
- Ran git diff --cached --check.
- Confirmed Codex CLI parses in this repo with codex --search -s danger-full-access -a never exec -C /root/projects/hk-ipo --help.
Next useful context:
- Tier 1 is executable broker/account evidence; Tier 2 is reproducible public broker quote pages; Tier 3 is attributed aggregators/history datasets; Tier 4 is weak news/community color.
- Do not scrape or redistribute proprietary grey-market feeds without an approved source strategy, and do not infer T2 from D1.
Request:
- Make the HK IPO analyst skill explicitly call out candidates that already have Mainland A shares, such as 03661 and 01688.
- Require special treatment because A/H dual-listed IPOs have a different pricing setup from pure first-time HK IPOs.
Changes:
- Added A/H dual-listed valuation overlays to the hk-ipo-analyst skill description.
- Added a Latest Candidate Report guardrail requiring broad reports to include the A/H overlay whenever current or recently closed candidates have A shares or another onshore listed class.
- Added an A/H Dual-Listed IPO Overlay section covering detection cues, required A-share/H-share valuation fields, fungibility guardrails, and short-exit interpretation.
Verification:
- Ran python3 /root/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hk-ipo-analyst.
- Ran git diff --cached --check.
- Confirmed Codex CLI parses in this repo with codex --search -s danger-full-access -a never exec -C /root/projects/hk-ipo --help.
Next useful context:
- 03661 SG Micro is tied to 300661.SZ and 01688 Lingyi iTech is tied to 002600.SZ.
- The overlay should distinguish valuation support from trading demand because A shares and H shares are generally not fungible.
Request:
- Fix Codex v0.139.0 failing to load the project-local HK IPO skills with invalid YAML errors.
Changes:
- Converted the three HK IPO skill frontmatter descriptions to YAML folded block scalars.
- Preserved the existing description text and skill bodies.
- Left unrelated IPO archive/report refresh files unstaged.
Verification:
- Ran git diff --cached --check.
- Confirmed Codex CLI parses with 'codex --search -s danger-full-access -a never exec -C /root/projects/hk-ipo --help'.
- Ran a short Codex smoke test that returned OK without the prior invalid YAML errors.
Next useful context:
- Codex CLI v0.139.0 is the installed CLI package version, not the model version.
- The prior YAML failed because unquoted descriptions contained ': ' such as 'project: T0/T1/T2', which strict YAML treats as a mapping separator.
Request:
- Make each scheduled analyst run refresh the latest IPO universe and all report-relevant online facts, especially subscription/margin multiples.
- Mirror the latest dated IPO candidate report to reports/README.md.
- Add this latest-report behavior to the hk-ipo-analyst skill instructions.
Changes:
- Expanded the scheduled analyst runner prompt to require online candidate refresh, market-heat/subscription-multiple refresh, official T1 updates when available, complete latest report regeneration, and reports/README.md mirroring.
- Added a Latest Candidate Report Refresh section to hk-ipo-analyst documenting the refresh flow, stage-safe market-heat handling, official T1 boundaries, and README mirror contract.
- Added reports/README.md as a copy of the current latest dated candidate report.
Verification:
- Ran bash -n scripts/run_hk_ipo_analyst_once.sh.
- Ran git diff --check and git diff --cached --check.
- Confirmed reports/README.md matches reports/2026-06-22_latest_ipo_candidates_analysis.md with cmp.
- Confirmed hk-ipo-analyst.timer still points to 2026-06-22 23:00:00 UTC as the next run.
Next useful context:
- reports/README.md is intentionally overwriteable on each latest candidate refresh; dated reports remain the historical copies.
- Unofficial subscription multiples should stay in ipo_market_heat and not be copied into official T1 demand fields.