Repository navigation
Commit e1aef17
ci(release): the hotcrm downstream smoke resolves hotcrm's latest release tag at run time (#25965)
Fixes #25770
Claim: #25770 comment 6409515497 (Branch `claude/project-thread-beijtf`,
the devx seat's in-seat S card).
## What
The release lane's **Downstream backward-compat smoke (live hotcrm)**
step no longer hard-codes `HOTCRM_REF: v2.1.0`, an ObjectStack 14.7-era
hotcrm that sits four majors behind. At run time it resolves hotcrm's
**latest published release**
(`repos/objectstack-ai/hotcrm/releases/latest` → `tag_name`) and runs
the smoke against it. This implements the maintainer's ruling D10 = A.
- Still **advisory**: `BLOCKING: '0'` is unchanged. No new gate and no
new dispatch lane.
- **Fail-soft:** on a network error, a non-200 response, or an empty or
malformed `tag_name`, the step emits `::notice::` and skips. It never
fails.
- The lookup authenticates with the job's `GITHUB_TOKEN`, so it isn't
subject to the anonymous per-IP rate limit. The token is `unset` before
hotcrm's install runs its third-party lifecycle scripts.
- The "TO RE-ARM" comment is rewritten as a ruling, not a pending to-do.
The final warning names `@objectstack/downstream-contract` as the
blocking floor.
- The Node-floor comment cited "hotcrm@v1.2.0 … engines.node >=22",
which was stale. It now cites `.nvmrc` plus the cloned release's
`engines.node` (v6.0.0: `^22.11 || ^24 || >=26`). `node-version: '22'`
is unchanged.
## Verified (the step's `run:` extracted, with the smoke call stubbed)
```
live: Resolved hotcrm's latest published release: v6.0.0 (GH_TOKEN cleared before the smoke) exit 0
missing repo: ::notice::could not resolve … (HTTP 403, no usable tag_name) — skipping the advisory downstream smoke. The publish continues. exit 0
unreachable: ::notice::… https://nonexistent.invalid/… (HTTP 000, no usable tag_name) — skipping … exit 0
200, no tag: ::notice::… (HTTP 200, no usable tag_name) — skipping … exit 0
```
`grep -n "HOTCRM_REF:\|BLOCKING:" .github/workflows/release.yml` → only
`BLOCKING: '0'`.
`--self-test` exited 0 on every script that reads release.yml:
scheduled-full-run, check-changeset-no-major, check-self-test-wired,
check-skill-compatibility-version, check-stall-guard-budget,
release-dist-tags, release-github-releases, release-pending-publish,
release-verify-npm, sync-docs-image-tags and
sync-release-index-currency. Also exit 0: `check-node-version`,
`check:workflow-status-functions`, `check:workflow-step-name-quoting`
and `check:pm-governed-prose`.
## Left out (out of the card's scope)
- `.github/workflows/cut-rc.yml:757` still pins `HOTCRM_REF: v2.1.0`.
The card keeps cut-rc out of scope.
- `scripts/downstream-smoke.sh` still defaults to `v1.2.0` when
`HOTCRM_REF` is unset. release.yml always sets it now, and
`dispatch-gates.self-test.mjs` reads the script byte for byte.
`skip-changeset`: a root-workflow change that publishes nothing.
Clause-②: no. Metadata-protocol: none. **Tier H**
(`.github/workflows/release.yml`): it lands after a GOVERNED_APPROVERS
approval.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01LKHDniRQSWjRJyDtacwpEd
Co-authored-by: Claude <noreply@anthropic.com>1 parent 67ea334 commit e1aef17
1 file changed
Lines changed: 56 additions & 42 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1661 | 1661 | | |
1662 | 1662 | | |
1663 | 1663 | | |
1664 | | - | |
1665 | | - | |
1666 | | - | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
1667 | 1669 | | |
1668 | 1670 | | |
1669 | 1671 | | |
| |||
1856 | 1858 | | |
1857 | 1859 | | |
1858 | 1860 | | |
1859 | | - | |
1860 | | - | |
1861 | | - | |
1862 | | - | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
1863 | 1867 | | |
1864 | | - | |
1865 | | - | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
1866 | 1876 | | |
1867 | | - | |
1868 | | - | |
1869 | | - | |
1870 | | - | |
1871 | | - | |
1872 | | - | |
1873 | | - | |
1874 | | - | |
1875 | | - | |
1876 | | - | |
1877 | | - | |
1878 | | - | |
1879 | | - | |
1880 | | - | |
1881 | | - | |
1882 | | - | |
1883 | | - | |
1884 | | - | |
1885 | | - | |
1886 | | - | |
1887 | | - | |
1888 | | - | |
1889 | | - | |
1890 | | - | |
1891 | | - | |
1892 | | - | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
1893 | 1886 | | |
1894 | | - | |
1895 | | - | |
1896 | | - | |
1897 | | - | |
1898 | | - | |
1899 | | - | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
1900 | 1891 | | |
1901 | 1892 | | |
1902 | 1893 | | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
1903 | 1917 | | |
1904 | 1918 | | |
1905 | 1919 | | |
| |||
1910 | 1924 | | |
1911 | 1925 | | |
1912 | 1926 | | |
1913 | | - | |
| 1927 | + | |
1914 | 1928 | | |
1915 | 1929 | | |
1916 | 1930 | | |
| |||
0 commit comments