|
1 | 1 | # CometAPI Python SDK Roadmap |
2 | 2 |
|
3 | 3 | Status: `0.1.0a1` in progress |
4 | | -Last updated: 2026-07-22 |
| 4 | +Last updated: 2026-07-23 |
5 | 5 | Repository contract: this roadmap is self-contained. |
6 | 6 |
|
7 | 7 | ## Product target |
@@ -114,12 +114,12 @@ Pre-visibility dependency disposition: |
114 | 114 |
|
115 | 115 | | Item | Disposition | Evidence and required action | |
116 | 116 | | --- | --- | --- | |
117 | | -| Dependabot [PR #1](https://github.com/cometapi-dev/cometapi-python/pull/1): `actions/download-artifact` 4.3.0 to 8.0.1 | Superseded by private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin throughout the release workflow and adds a credential-free CI artifact download plus SHA256 round trip. Its initial code-bearing [CI run 29907523251](https://github.com/cometapi-dev/cometapi-python/actions/runs/29907523251) passed. Close PR #1 after PR #9 merges; do not merge both. | |
118 | | -| Dependabot [PR #2](https://github.com/cometapi-dev/cometapi-python/pull/2): `actions/checkout` 4.2.2 to 7.0.1 | Superseded by private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9); must not merge as-is | PR #2's [CI run 29796719306](https://github.com/cometapi-dev/cometapi-python/actions/runs/29796719306) failed because its regression test hard-coded the previous checkout SHA. PR #9 instead validates parsed action references independently of version and passed initial code-bearing CI run 29907523251. Close PR #2 after PR #9 merges; the failed PR #2 run remains negative evidence only. | |
| 117 | +| Dependabot [PR #1](https://github.com/cometapi-dev/cometapi-python/pull/1): `actions/download-artifact` 4.3.0 to 8.0.1 | Closed unmerged; superseded by merged private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin throughout the release workflow and adds a credential-free CI artifact download plus SHA256 round trip. Its final [CI run 29916685839](https://github.com/cometapi-dev/cometapi-python/actions/runs/29916685839) passed, PR #9 squash-merged as `72b212dd72e66bbde9c6714329f72071cc1ca129`, and PR #1 was closed without merging. | |
| 118 | +| Dependabot [PR #2](https://github.com/cometapi-dev/cometapi-python/pull/2): `actions/checkout` 4.2.2 to 7.0.1 | Closed unmerged; superseded by merged private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #2's [CI run 29796719306](https://github.com/cometapi-dev/cometapi-python/actions/runs/29796719306) failed because its regression test hard-coded the previous checkout SHA. PR #9 instead validates parsed action references independently of version, passed final CI run 29916685839, and squash-merged as `72b212dd72e66bbde9c6714329f72071cc1ca129`; PR #2 was closed without merging, and its failed run remains negative evidence only. | |
119 | 119 | | Dependabot [PR #3](https://github.com/cometapi-dev/cometapi-python/pull/3): `pypa/gh-action-pypi-publish` 1.14.0 to 1.14.1 | Deferred; keep out of `main` | Pull-request CI does not execute the release-triggered OIDC publish action or prove PyPI publication, provenance, or registry installation. Revisit with an authorized release-path review and the separately required protected release evidence; credential-free CI success alone is insufficient. | |
120 | | -| Dependabot [PR #4](https://github.com/cometapi-dev/cometapi-python/pull/4): `actions/upload-artifact` 4.6.2 to 7.0.1 | Superseded by private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin in CI and release builds, requires missing artifacts to fail, retains digest evidence, and passed initial code-bearing CI run 29907523251. Close PR #4 after PR #9 merges; do not merge both. | |
| 120 | +| Dependabot [PR #4](https://github.com/cometapi-dev/cometapi-python/pull/4): `actions/upload-artifact` 4.6.2 to 7.0.1 | Closed unmerged; superseded by merged private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin in CI and release builds, requires missing artifacts to fail, retains digest evidence, passed final CI run 29916685839, and squash-merged as `72b212dd72e66bbde9c6714329f72071cc1ca129`; PR #4 was closed without merging. | |
121 | 121 | | Dependabot [PR #5](https://github.com/cometapi-dev/cometapi-python/pull/5): `googleapis/release-please-action` 4.4.1 to 5.0.0 | Deferred; keep out of `main` | `RELEASE_PLEASE_ENABLED` remains disabled, and pull-request CI does not execute the gated write-capable Release Please action. Revisit only after its real config, manifest, permissions, and release behavior can be reviewed without treating a skipped action as execution evidence. | |
122 | | -| Dependabot [PR #6](https://github.com/cometapi-dev/cometapi-python/pull/6): `actions/setup-python` 5.6.0 to 7.0.0 | Superseded by private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin across CI, monitoring, and release workflows and passed initial code-bearing CI run 29907523251 on Python 3.10 through 3.14, the minimum OpenAI lane, package builds, and copied-checkout verification. Close PR #6 after PR #9 merges; do not merge both. | |
| 122 | +| Dependabot [PR #6](https://github.com/cometapi-dev/cometapi-python/pull/6): `actions/setup-python` 5.6.0 to 7.0.0 | Closed unmerged; superseded by merged private [PR #9](https://github.com/cometapi-dev/cometapi-python/pull/9) | PR #9 applies the reviewed SHA pin across CI, monitoring, and release workflows, passed final CI run 29916685839 on every blocking lane, and squash-merged as `72b212dd72e66bbde9c6714329f72071cc1ca129`; PR #6 was closed without merging. | |
123 | 123 |
|
124 | 124 | Recorded pre-visibility replacement evidence on 2026-07-22: |
125 | 125 |
|
@@ -198,24 +198,75 @@ Final workflow-inventory hardening evidence at commit |
198 | 198 | inspection, and independent clean installs of the wheel and source |
199 | 199 | distribution. |
200 | 200 |
|
| 201 | +Final pre-visibility refresh evidence on 2026-07-23: |
| 202 | + |
| 203 | +- `git diff --check`, `uv lock --check`, and `uv sync --locked` passed. |
| 204 | +- `uv run ruff check src tests scripts`, |
| 205 | + `uv run ruff format --check src tests scripts`, and `uv run pyright` passed. |
| 206 | +- `uv run pytest -m "not live"` passed with 200 tests passed and one separately |
| 207 | + marked live test deselected. |
| 208 | +- `uv run python scripts/check_version.py --expected 0.1.0a1 --require-changelog`, |
| 209 | + `uv run python scripts/check_version.py --require-public-preview-docs`, |
| 210 | + `uv run python scripts/check_secrets.py`, and |
| 211 | + `uv run python scripts/check_workflows.py` passed. |
| 212 | +- `uv build --out-dir dist/previsibility-20260723` built exactly the |
| 213 | + `0.1.0a1` wheel and source distribution in a newly created empty directory. |
| 214 | + `uv run twine check dist/previsibility-20260723/*`, |
| 215 | + `uv run python scripts/check_artifacts.py dist/previsibility-20260723/*`, and |
| 216 | + `uv run python scripts/check_clean_install.py dist/previsibility-20260723/*` |
| 217 | + passed for both exact artifacts. |
| 218 | +- `uv run python scripts/check_repository_independence.py` passed the complete |
| 219 | + copied-checkout gate, including its 200 offline tests, workflow validation, |
| 220 | + package build, artifact inspection, and independent clean installs of both |
| 221 | + artifacts. |
| 222 | +- `uv run python scripts/run_actionlint.py` and |
| 223 | + `uv run python scripts/run_actionlint.py --offline` passed with |
| 224 | + checksum-pinned actionlint 1.7.12. |
| 225 | + |
201 | 226 | Failed or unavailable checks: |
202 | 227 |
|
203 | | -- None of the recorded final-candidate checks failed or were unavailable. |
| 228 | +- None of the executed final-candidate validation checks failed or were |
| 229 | + unavailable. |
204 | 230 | Dependabot PR #2's failed run remains separate negative evidence for that PR, |
205 | 231 | not replacement evidence for PR #9. An earlier intentional offline actionlint |
206 | 232 | probe in a fresh detached worktree failed closed before the verified cache was |
207 | 233 | populated; it is not final-candidate validation evidence. |
| 234 | +- The execution environment rejected `rm -rf dist` before it ran, so no file was |
| 235 | + removed. The final candidate instead used the newly created empty |
| 236 | + `dist/previsibility-20260723` directory and completed the equivalent clean |
| 237 | + build, inspection, and two-artifact install gates there. |
208 | 238 |
|
209 | 239 | Remote evidence: |
210 | 240 |
|
211 | | -- Private PR #9's credential-free initial code-bearing CI run 29907523251 passed |
212 | | - quality, Python 3.10 through 3.14, minimum OpenAI, package, exact-artifact |
213 | | - clean install, retained artifact digest, and copied-checkout jobs. The PR-only |
214 | | - latest-within-major canary skipped as designed; scheduled or Dependabot |
215 | | - execution remains unverified. |
216 | | -- The canonical repository was confirmed private after the successful |
217 | | - replacement run. No visibility, secret, environment, or |
218 | | - repository-protection change was made. |
| 241 | +- Private PR #9's final-head |
| 242 | + [CI run 29916685839](https://github.com/cometapi-dev/cometapi-python/actions/runs/29916685839) |
| 243 | + passed quality, Python 3.10 through 3.14, minimum OpenAI, package, |
| 244 | + exact-artifact clean install, retained artifact digest, and copied-checkout |
| 245 | + jobs for `5db7f012a1470564f4f60fe343b9a0799b58987d`; the PR-only |
| 246 | + latest-within-major canary skipped as designed. PR #9 then squash-merged as |
| 247 | + `72b212dd72e66bbde9c6714329f72071cc1ca129`, and its credential-free |
| 248 | + [default-branch CI run 29916919999](https://github.com/cometapi-dev/cometapi-python/actions/runs/29916919999) |
| 249 | + passed. Superseded PRs #1, #2, #4, and #6 were closed without merging. |
| 250 | +- Private PR #10's |
| 251 | + [CI run 29978262916](https://github.com/cometapi-dev/cometapi-python/actions/runs/29978262916) |
| 252 | + passed the same blocking lanes for |
| 253 | + `debd7c1d12c72219ee37de0baa58be119d135ae0`; its PR-only canary skipped as |
| 254 | + designed. PR #10 squash-merged as |
| 255 | + `7d9a3d70714b38b4815d8a8f82a7177d1bcea857`, and its |
| 256 | + [default-branch CI run 29978384862](https://github.com/cometapi-dev/cometapi-python/actions/runs/29978384862) |
| 257 | + passed. The corresponding |
| 258 | + [Release Please run 29978384858](https://github.com/cometapi-dev/cometapi-python/actions/runs/29978384858) |
| 259 | + skipped as required while `RELEASE_PLEASE_ENABLED` remains disabled. |
| 260 | +- The final merged workflow's latest-within-major canary remains unverified |
| 261 | + under its scheduled and Dependabot paths. |
| 262 | +- The canonical repository was confirmed private after these runs. |
| 263 | + Repository-level variables and Actions secrets, environments, tags, releases, |
| 264 | + and publish runs were absent when checked; `main` reported |
| 265 | + `protected: false`. Organization-level variables and secrets were unavailable |
| 266 | + to the current credential; detailed protection and ruleset APIs were |
| 267 | + unavailable under the current private-repository plan. They do not provide |
| 268 | + additional evidence. No visibility, secret, environment, protection, live, |
| 269 | + tag, release, registry, or publication change was made. |
219 | 270 |
|
220 | 271 | Live evidence: |
221 | 272 |
|
|
0 commit comments