Skip to content

Release rehearse step and charge vocabulary CI check - #41

Merged
linqiang-max merged 3 commits into
mainfrom
feat/release-rehearse
Oct 23, 2026
Merged

linqiang-max merged 3 commits into
mainfrom
feat/release-rehearse

Conversation

@linqiang-max

Copy link
Copy Markdown
Member

Dataset half of the release-chain hardening (items 1 and 4). Website half linqiang-max/aicostbudget#95 is merged and live.

Rehearse — daily-pricing-release.ps1 -Rehearse / python -m scripts.daily_pricing_release rehearse, run after Prepare (and approval amends), before Publish:

  • clones both checkouts (which must be clean) and runs the real publish_release in the clones with recorded pushes; checks the order (Website → Dataset → HF);
  • runs Website npm run test:all (DATASET_ROOT = Dataset clone) and Dataset python -m unittest discover -s tests (WEBSITE_SOURCE_ROOT = Website clone) on the synced pair; prints REHEARSAL PASS / REHEARSAL FAIL with failure tails (exit 1 on fail);
  • shares Website node_modules through a junction/symlink that is removed before clone cleanup (Python 3.11 rmtree follows junctions); gives the Website clone a local main for tests that diff against it.
    After Prepare the cross-repo tests cannot pass in the real checkouts, so the rehearsal is the release gate. Documented in docs/daily-pricing-release.md (also fixes BEL characters that had replaced \a in paths there).

Vocabulary CI — validate.yml runs the Website scripts/test-pricing-vocabulary.mjs against this checkout, so a Dataset-only unit/component fails the PR until the Website has it.

Checks: 721 unittests pass; release tests 29 pass (6 new rehearsal tests). End-to-end rehearsal of release 95947f8: against Website b46d52b (pre-TTS-3) → REHEARSAL FAIL on exactly the three stale pins later fixed in #95; against the guardrails branch → REHEARSAL PASS (318 Website executions, 717 Dataset tests).

AICostBudget added 3 commits October 23, 2026 15:26
rehearse publishes the prepared commits into throwaway clones with recorded
pushes, checks the push order, then runs the Website test:all and the Dataset
unittest suite on the synced pair. After prepare and before publish the
cross-repo tests cannot pass in the real checkouts, so the rehearsal is the
release gate. Website dependencies are shared through a directory link that is
removed before the clones are deleted (rmtree follows Windows junctions).

Also fixes BEL characters that had replaced the backslash-a in two paths of
docs/daily-pricing-release.md.
A Dataset-only unit or component makes every Website pricing sync reject the
first row that uses it; this fails the Dataset PR until the Website has it.
Website tests diff against local main, which a clone of a feature branch lacks.
Print the rehearsal report as ASCII JSON so redirected output stays UTF-8 safe.
@linqiang-max
linqiang-max merged commit e6add29 into main Oct 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant