Request:
Run the scheduled HK IPO analyst refresh as of 2026-06-23T15:00:19Z, refresh online archive facts first, rebuild the analysis dataset, write the latest Chinese broad candidate report, mirror it to reports/README.md, and preserve stage discipline.
Changes:
- Refreshed HKEX current-listing pages, VBKR/Jieli T0.95 market heat, ipohk external history, A/H quote evidence, and current HKEX document searches.
- Archived official HKEX allotment-result PDFs and extracted text for 02335 and 06106; parsed official T1 demand into ipo_demand without copying market heat into official fields.
- Rebuilt analysis_model_v0_dataset.csv and refreshed sync/source snapshots.
- Updated reports/2026-06-23_latest_ipo_candidates_analysis.md and mirrored the same content to reports/README.md, including current ranking, fundamentals, unresolved-D1 risk/reward table, closed/waiting names, 30-day review, guardrails, and sources.
Verification:
- git diff --check
- Rebuilt analysis dataset for 2026-06-23T15:00:19Z
- Python check that reports/README.md matches the dated report and required new facts are present
- Python check that 15:00Z heat has 8 ipo_market_heat rows and current actionable names have no official ipo_demand rows
- Python check that 02335 and 06106 official T1 fields match HKEX allotment results
- Python check that 77 source refs archived at 2026-06-23T15:00:19Z use repo-relative paths, files exist, and hashes match
Next useful context:
- 02335 and 06106 now have official T1 demand, but D1/T2 remain data_gap until listing-day evidence is archived.
- 00901 Yahoo D1 fetch still returns 404; ipohk remains only a third-party cross-check.
Request:
- Run the scheduled hk-ipo-analyst refresh as of 2026-06-23T07:00:25Z.
- Refresh the latest IPO candidate universe and online facts through the archivist before analysis.
- Rebuild the analysis dataset and publish the latest broad candidate report in Simplified Chinese.
Changes:
- Archived the HKEX current new-listing page for 2026-06-23 and added the new 00668 prospectus plus extracted text.
- Archived a fresh VBKR/Jieli T0.95 market-heat snapshot with 8 still-actionable rows while leaving same-day closed names out of the live T0.95 set.
- Archived 06067 and 06132 D1 price-performance responses, refreshed ipohk external history, and archived the 06067 2026-06-23 allotment-results clarification PDF.
- Rebuilt data/snapshots/analysis_model_v0_dataset.csv after the archive refresh.
- Wrote reports/2026-06-23_latest_ipo_candidates_analysis.md and mirrored the same content to reports/README.md.
Verification:
- Ran archive_hkex_current_new_listings.py, archive_hkex_documents.py, backfill_t1_demand_from_text.py, archive_t0_5_market_heat.py, archive_price_performance.py, archive_ipohk_history.py, extract_pdf_text.py, update_sync_state.py, and build_analysis_dataset.py with as-of 2026-06-23T07:00:25Z.
- Confirmed reports/README.md matches the dated report with cmp.
- Ran git diff --check and git diff --cached --check.
- Checked source_refs paths are repo-relative, existing, and hash-matching.
- Checked the latest 8 T0.95 live heat rows remain separate from official T1 demand rows.
Next useful context:
- As of 2026-06-23T07:00:25Z, 02335 and 06106 still have no archived official T1 demand rows and remain T1 data_gap names.
- 06067 D1 was positive at about +30.0%, while 06132 D1 was negative at about -49.6%, reinforcing the 18A-B risk guardrail.
- The 2026-06-23 HKEX current page shows 00668 as a new live candidate; its first VBKR/Jieli heat snapshot was only 0.32x.
Request:
- Run the scheduled hk-ipo-analyst refresh as of 2026-06-22T15:47:32Z.
- Refresh the IPO candidate universe and network facts through the archivist before analysis.
- Rebuild the analysis dataset and publish the latest broad candidate report in Simplified Chinese.
Changes:
- Archived the HKEX current new-listing page, new official allotment-result PDFs for 06067 and 06132, extracted text, a fresh VBKR/Jieli T0.95 market-heat snapshot, ipohk external history, and recent Yahoo price-performance responses.
- Updated structured SQLite facts and CSV snapshots, including official T1 demand for 06067 and 06132 while keeping live subscription heat in ipo_market_heat.
- Rebuilt data/snapshots/analysis_model_v0_dataset.csv after the archive refresh.
- Rewrote reports/2026-06-22_latest_ipo_candidates_analysis.md and mirrored the same content to reports/README.md.
Verification:
- Ran archive_hkex_current_new_listings.py, archive_hkex_documents.py, backfill_t1_demand_from_text.py, archive_t0_5_market_heat.py, archive_price_performance.py, archive_ipohk_history.py, and build_analysis_dataset.py with as-of 2026-06-22T15:47:32Z.
- Confirmed reports/README.md matches the dated report with cmp.
- Ran git diff --check and git diff --cached --check.
- Checked source_refs paths are repo-relative and existing.
- Checked the latest 13 T0.95 live heat rows remain separate from official T1 demand rows.
Next useful context:
- 06067 and 06132 now have official T1 demand in the archive; 06106 and 02335 remain T1 data_gap names as of this run.
- The 15:47Z VBKR/Jieli live heat values matched the earlier 13:57Z values for active candidates.
- Price refresh still has provider gaps for some historical tickers, including internal D1 price data for 00901.
Request:
- Use the analyst workflow to analyze the latest Hong Kong IPOs, connect their source data, and produce a current report.
Changes:
- Added a current HKEX New Listing Information page seeder that archives the official page, seeds visible tickers, and records source_refs.
- Archived current HKEX prospectus and allotment-result sources for the 16 visible Main Board candidates and extracted their text.
- Extended prospectus parsing for offer price, derived gross proceeds, HDR offerings, and listing-date text extracted with split characters.
- Rebuilt the analysis dataset and added a Chinese 2026-06-21 latest IPO report separating live T0 watchlist names from past-cutoff T1/D1 candidates.
Verification:
- Ran py_compile for update_recent_ipo_list.py, archive_hkex_current_new_listings.py, archive_hkex_documents.py, and build_analysis_dataset.py.
- Re-ran HKEX current page seeding, document archiving, and analysis dataset build as of 2026-06-21T08:44:59Z.
- Ran git diff --check and git diff --cached --check.
- Ran SQLite integrity_check and foreign_key_check.
- Verified source_refs paths, file existence, SHA-256 hashes, and report source paths.
Next useful context:
- Capture T0.95 market heat before the 2026-06-23 and 2026-06-24 order cutoffs before converting the new watchlist into execution calls.
- Treat 02667 as a stale/special HKEX page item until a fresh June timetable or official result appears.
Request:
- Use the project analyst workflow to analyze the latest upcoming Hong Kong IPO candidates.
Changes:
- Refreshed recent HK IPO target coverage through 2026-06-17 and archived current HKEX source updates.
- Archived 06675 allotment results and D1 Yahoo price performance for boundary-case review.
- Archived a 2026-06-17 T0.5 VBKR/Jieli market-heat snapshot for still-actionable 02335 and 06106.
- Rebuilt the v0 analysis dataset and snapshots at 2026-06-17T08:20:00Z.
- Added a Chinese horizontal analyst report ranking 06106, 02335, 06132, 06067, 01392, with 06675 separated as a T1/D1 review sample.
Verification:
- Ran SQLite PRAGMA integrity_check and foreign_key_check.
- Ran git diff --check and git diff --cached --check.
- Confirmed report source paths exist.
Next useful context:
- 06106 is the top still-actionable T0.5 candidate at this as-of time.
- 02335 needs another pre-deadline heat sample before a stronger call.
- 01392, 06067, and 06132 are now mainly waiting for T1 official allotment results.
Request:
- Use archivist to close the 137 T1 ipo_demand source-only gaps using extracted PDF text.
Changes:
- Add an incremental T1 demand text backfill script.
- Parse existing allotment-result extracted text into ipo_demand.
- Archive linked Summary PDFs from old HKEX HTML allotment-result pages.
- Correct allotment-result selection to prefer primary result announcements over clarification or supplemental notices.
- Add robust line-aware allotment parsing and document the workflow in archivist and README.
- Record the backfill result in a report.
Execution:
- Selected 137 source-only T1 demand gaps.
- Wrote 137 ipo_demand rows, increasing ipo_demand from 154 to 291 rows.
- Archived 38 new HKEX allotment-result PDFs and extracted their text.
- Confirmed an incremental rerun selects 0 gaps and writes 0 rows.
Verification:
- Ran git diff --cached --check.
- Ran py_compile for archive_hkex_documents.py and backfill_t1_demand_from_text.py.
- Checked SQLite integrity and foreign keys.
- Confirmed DB row counts match CSV snapshots.
- Verified no T1 complete row is missing ipo_demand.
- Verified source_refs paths/files/hashes and PDF extracted-text manifest hashes.
Next useful context:
- T1 demand structure is complete for listed rows; 06106 and 06675 remain pending_not_due.
- T2 grey-market and due price-performance gaps remain separate archivist priorities.
- Analyst output should be regenerated before using the new T1 demand facts for scoring.
Request:
- Rework archivist handling for stubborn T0/T1 HKEX document gaps and unresolved T2 grey-market gaps.
Changes:
- Query HKEXnews titleSearchServlet with IPO-date windows instead of only the latest title-search page.
- Recognize SHARE OFFER listing documents and archive official HTML allotment-result notices when no PDF is published.
- Mark source-only allotment completion clearly when structured demand parsing is not yet covered.
- Add a reusable grey-market gap marker and archivist source policy for T2 data.
- Archive newly discovered HKEX raw sources, update SQLite, and refresh CSV snapshots.
- Treat raw evidence files as binary in Git attributes.
Verification:
- Ran py_compile for archive_hkex_documents.py, update_sync_state.py, and mark_grey_market_gaps.py.
- Ran HKEX document archive backfill and grey-market gap marker.
- Checked SQLite integrity, foreign keys, source paths, source hashes, and DB-vs-snapshot row counts.
- Ran git diff --cached --check after marking raw archives binary.
Next useful context:
- T0 is now complete for 293 tickers.
- T1 has 291 complete and 2 pending_not_due tickers.
- T2 has 291 blocked gaps pending an approved grey-market source strategy.
Request:
- Adjust archivist after the audit findings and update historical data.
Changes:
- Teach the archivist skill to close audit-discovered gaps in priority order.
- Add scripts/archive_price_performance.py for due D1/D5/D20/D60 price-performance backfills.
- Document the price-performance backfill command in README.
- Archive raw Yahoo Finance chart responses under repo-relative data/raw/{ticker}/ paths.
- Populate price_performance with D1/D5/D20/D60 checkpoints and refresh source_refs, sync_runs, sync_tasks, and ticker_sync_state snapshots.
Execution:
- Ran .venv/bin/python scripts/archive_price_performance.py --as-of 2026-06-15T10:00:00Z.
- Selected 291 due price-performance tickers.
- Archived 273 price-history sources and wrote 1063 price-performance rows.
- Re-ran .venv/bin/python scripts/archive_hkex_documents.py --as-of 2026-06-15T10:05:00Z for the remaining open T0/T1 tasks; no additional completed T0/T1 stages resulted.
Verification:
- Compiled the new price-performance script.
- Ran git diff --check.
- Checked SQLite integrity and foreign keys.
- Confirmed database row counts match CSV snapshots.
- Verified all 979 source_refs use valid repo-relative paths, have files, have hashes, and SHA256 hashes match.
- Confirmed no generated Python caches or SQLite transient files remain.
Next useful context:
- price_performance now has 1063 rows: D1 273, D5 272, D20 267, D60 251.
- Remaining due price-performance gaps are 18 tickers where Yahoo history was unavailable or the request failed.
- T0/T1 gaps remain at T0 93 and T1 77; T2 grey-market remains unresolved pending a reproducible source strategy.
Request:
- Remove small-batch guidance and execute the HKEX document archiver across all open T0/T1 sync tasks in one run.
Changes:
- Make archive_hkex_documents.py process every open T0/T1 ticker by default when --limit is omitted.
- Add per-ticker progress output and keep full refreshes moving if one ticker fails.
- Suppress noisy pypdf warnings during large official document extraction.
- Update archivist and README instructions to show the full-run command without batch notes.
- Archive official HKEXnews prospectus and allotment-results PDFs under repo-relative data/raw paths.
- Refresh hk_ipo.sqlite and CSV snapshots for parsed T0/T1 fields, source_refs, sync_runs, sync_tasks, and ticker_sync_state.
Execution:
- Ran .venv/bin/python scripts/archive_hkex_documents.py --as-of 2026-06-15T09:00:00Z.
- Selected 284 open T0/T1 tickers, processed 210 tickers, and archived 398 source files.
- Left 74 tickers as missing target docs because title search did not return target prospectus/allotment documents for this pass.
Verification:
- Parsed archivist scripts with Python ast.
- Confirmed README, archivist skill, and archiver script no longer contain batch guidance.
- Ran git diff --check.
- Checked SQLite integrity and DB/snapshot row counts.
- Verified 706 source_refs use relative local paths, all files exist, and SHA256 hashes match.
Next useful context:
- Current source_refs count is 706 and ipo_demand count is 134.
- Sync ledger now reports 414 complete, 1595 pending_due, and 42 pending_not_due states.
Request:
Start progressively filling detailed information for recent HK IPO targets.
Changes:
- Add scripts/archive_hkex_documents.py to map tickers to HKEXnews stock IDs, select official prospectus and allotment-results PDFs, archive them under data/raw/{ticker}, parse high-confidence T0/T1 facts, export snapshots, and refresh sync state.
- Document the small-batch HKEX document backfill workflow in README.md and the archivist skill.
- Archive prospectus and allotment-results PDFs for 00901, 01081, 01779, 02290, 02553, and 03388.
- Fill T0 details including application dates, expected allotment date, board lot, minimum subscription amount, and offer-share counts for the six tickers.
- Fill T1 allotment-demand details including valid/successful applications, public subscription level, international placees, international subscription level, and final offer-share allocations.
- Refresh source_refs, ipo_master, offering_terms, ipo_demand, ticker_sync_state, and sync_tasks snapshots.
Verification:
- Ran archive_hkex_documents.py in a first small batch and re-ran corrected tickers after parser hardening.
- Parsed project Python scripts with ast.parse.
- Checked SQLite integrity and DB-to-snapshot row counts.
- Verified source_refs paths are repo-relative, source files exist, and SHA-256 hashes match.
- Confirmed batch field completeness for the six processed tickers.
- Ran git diff --check and git diff --cached --check.
- Checked for Python cache and SQLite transient files.
Next useful context:
- This batch added about 55MB of official HKEXnews PDFs.
- Sync state now has 16 complete stages, 1993 pending_due stages, and 42 pending_not_due stages.
- Continue with small --limit batches because HKEXnews title search can include historical or postponed offering documents for the same stock code.
Request:
- Provide a way to install or develop a PDF extraction tool for archived HK IPO documents.
Changes:
- Add requirements.txt with pypdf as the lightweight PDF text extraction dependency.
- Add scripts/extract_pdf_text.py to extract text from PDF source_refs into repo-relative data/extracted_text files.
- Add extracted text outputs and an extracted_text_manifest snapshot for the six archived HKEXnews PDFs.
- Document the extraction workflow in README.md.
- Ignore .venv and keep generated SQLite/Python transient files out of git.
- Use extracted text to verify the 06106 full prospectus, update source_refs, remove the related data gap, and fill 06106 offering terms.
Verification:
- Installed python3.14-venv system support, created a local .venv, and installed requirements.txt.
- Re-ran scripts/bootstrap_historical_data.py and scripts/extract_pdf_text.py.
- Verified extracted text paths and hashes against data/snapshots/extracted_text_manifest.csv.
- Verified SQLite integrity and snapshot row counts.
- Ran git diff --cached --check and searched durable files for machine-specific absolute paths.
Request:
- Use the project archivist workflow to update historical IPO data.
Changes:
- Add an embedded SQLite archive at data/hk_ipo.sqlite.
- Add schema/hk_ipo.schema.sql and scripts/bootstrap_historical_data.py for reproducible archive generation.
- Archive HKEXnews source PDFs for 06658, 06675, and 06106 under repo-relative data/raw paths.
- Export Git-friendly snapshots for ipo_master, offering_terms, ipo_demand, source_refs, and data_gaps.
- Add .gitignore rules for Python cache and SQLite transient files.
Verification:
- Re-ran the bootstrap script successfully.
- Ran PRAGMA integrity_check on the SQLite database.
- Verified source_refs paths are repo-relative, files exist, and SHA-256 hashes match.
- Verified snapshot row counts match SQLite table counts.
- Ran git diff --check and searched generated durable files for machine-specific absolute paths.