docs(init): validate specification — v0.16 release binary asset fix
Establish milestone v0.16 to fix the root cause of releases shipping with zero binary assets. v0.15 added a Gitea Actions workflow but it never executed successfully due to two compounding bugs (documented in REQUIREMENTS.md REQ-183, REQ-184). All 87 releases in the repo's history have zero binary assets — this has never worked. ---ci--- project: orca phase: 0 milestone: v0.16 status: specify ---/ci---
This commit is contained in:
+11
-11
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"phase": 2,
|
||||
"stage": "complete",
|
||||
"milestone": "v0.15",
|
||||
"milestone_slug": "ci-release-pipeline",
|
||||
"phase_role": "final",
|
||||
"phase": 0,
|
||||
"stage": "specify",
|
||||
"milestone": "v0.16",
|
||||
"milestone_slug": "release-binary-fix",
|
||||
"phase_role": "pre_execution",
|
||||
"attempts": 0,
|
||||
"updated_at": "2026-08-10T21:05:00Z",
|
||||
"milestone_complete": true,
|
||||
"previous_milestone": "v0.14",
|
||||
"phases_shipped": ["P0","P1","P2"],
|
||||
"tags_shipped": ["v0.14.0","v0.14.1"],
|
||||
"updated_at": "2026-08-12T21:00:00Z",
|
||||
"milestone_complete": false,
|
||||
"previous_milestone": "v0.15",
|
||||
"phases_shipped": [],
|
||||
"tags_shipped": [],
|
||||
"requirements": {
|
||||
"covered": [180,181,182],
|
||||
"covered": [],
|
||||
"partial": []
|
||||
}
|
||||
}
|
||||
@@ -454,3 +454,28 @@ Gitea Actions workflow that triggers on tag pushes, installs the
|
||||
- Tags on v0.14.x patch line: `v0.14.0` (P0) ... `v0.14.2` (P2 final = v0.15 milestone release).
|
||||
- Milestone branch: `milestone/v0.15-ci-release-pipeline`.
|
||||
- REQ-182 is complete: `PAT_TOKEN` secret created via `tea actions secrets create PAT_TOKEN <value> --repo coreci/orca`.
|
||||
|
||||
## Milestone v0.16: Release Binary Asset Fix
|
||||
|
||||
**Scope**: fix the root cause of releases shipping with zero binary
|
||||
assets. v0.15 added a Gitea Actions workflow but it never executed
|
||||
successfully due to two compounding bugs: (1) the `git clone` of the
|
||||
private `coreci` repo in the workflow had no credentials, causing the
|
||||
"Install CoreCI" step to fail; (2) the `.coreci.yml` used an invalid
|
||||
`pipelines:`/`steps:`/`image:`/`commands:` format that CoreCI does not
|
||||
recognize (CoreCI's native format is `jobs:` with `plugin:`/`invoke:`
|
||||
/`vars:` and a DAG via `needs:`). Both issues must be fixed for the
|
||||
release pipeline to actually build and upload binaries.
|
||||
|
||||
| ID | Requirement | Priority | Phase | Status |
|
||||
|----|-------------|----------|-------|--------|
|
||||
| REQ-183 | Fix `.gitea/workflows/release.yml` "Install CoreCI" step: the `git clone` of the private `coreci` repo fails because the clone command has no credentials. The `actions/checkout@v4` step only injects auth for the orca repo (via `http.https://git.cloudinit.dev/.extraheader`), not for the subsequent bare `git clone` of the coreci repo. Fix: embed the `PAT_TOKEN` in the clone URL (`https://cloudinit-bot:${GITEA_TOKEN}@git.cloudinit.dev/coreci/coreci.git`) and pass `GITEA_TOKEN: ${{ secrets.PAT_TOKEN }}` as env to the "Install CoreCI" step | Critical | **v0.16 P1** | pending |
|
||||
| REQ-184 | Rewrite `.coreci.yml` from the invalid `pipelines:`/`steps:`/`image:`/`commands:` format to CoreCI's native `jobs:`/`plugin:`/`invoke:`/`vars:` format with a proper DAG (`needs:`). CoreCI's `Pipeline` struct only has `Jobs`/`Services`/`Env` fields — unknown top-level keys and unknown job fields are silently dropped by `yaml.Unmarshal`, producing an empty `Jobs` map. `coreci run` then executes zero jobs (validate does not reject empty jobs). The rewrite must: (a) convert each pipeline to a job with `plugin: docker://golang:1.25.12` and `invoke:` for the commands, (b) use `needs:` for DAG ordering (validate→build→test→release), (c) pass `GITEA_TOKEN` via `vars: { GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} }` (resolved from env via CoreCI's secret resolver `os.Getenv` fallback), (d) use `CI_COMMIT_BRANCH` (tag name on tag push, from CoreCI's github.go CI context) and `CI_COMMIT_SHA` for version injection, (e) handle the case where the release already exists (created by the CIAgent ship workflow with title+body but no binary) by falling back to Gitea API asset attachment, (f) verify assets are actually attached after release creation (REQ-097 gate C-21) | Critical | **v0.16 P1** | pending |
|
||||
|
||||
### Scope notes (v0.16)
|
||||
|
||||
- REQ-183..REQ-184 = 2 net-new requirements (REQ count grows 175 -> 177).
|
||||
- 3 phases (P0 + P1 + P2 final); fix milestone (no `feat` phases — CI infrastructure).
|
||||
- Tags on v0.15.x patch line: `v0.15.0` (P0) ... `v0.15.2` (P2 final = v0.16 milestone release).
|
||||
- Milestone branch: `milestone/v0.16-release-binary-fix`.
|
||||
- Root cause analysis confirmed: all 87 releases in the repo's history have zero binary assets — this has never worked. The releases are created by the CIAgent ship workflow (via Gitea API, title+body only); the binary upload is exclusively the `.coreci.yml` release job's job, and that job has never executed.
|
||||
|
||||
@@ -745,3 +745,25 @@ line: `v0.14.0` (P0) ... `v0.14.2` (P2 final = v0.15 milestone release).
|
||||
- [x] Phase 0: Pre-execution (SPECIFY→CLARIFY→RESEARCH→PLAN→GRILL) — tag `v0.14.0`
|
||||
- [x] Phase 1: Gitea Actions workflow + .coreci.yml kaniko rewrite (REQ-180,181) — tag `v0.14.1`
|
||||
- [x] Phase 2: Final review + ship + audit (milestone release) — tag `v0.14.2` = **v0.15 milestone release**
|
||||
|
||||
## Milestone v0.16: Release Binary Asset Fix — **IN PROGRESS**
|
||||
|
||||
**Scope**: fix the root cause of releases shipping with zero binary
|
||||
assets. v0.15 added a Gitea Actions workflow but it never executed
|
||||
successfully: the `git clone` of the private `coreci` repo had no
|
||||
credentials (failed at "Install CoreCI"), and the `.coreci.yml` used an
|
||||
invalid `pipelines:`/`steps:`/`image:`/`commands:` format that CoreCI
|
||||
does not recognize (unknown fields silently dropped → empty `Jobs` map
|
||||
→ zero jobs executed). Both issues must be fixed for the release
|
||||
pipeline to actually build and upload binaries.
|
||||
|
||||
**Root cause (two compounding bugs):**
|
||||
1. `.gitea/workflows/release.yml` — `git clone https://git.cloudinit.dev/coreci/coreci.git` fails because the coreci repo is private and the clone has no credentials. The `actions/checkout@v4` step only injects auth for the orca repo.
|
||||
2. `.coreci.yml` — uses `pipelines:` with `steps:`/`image:`/`commands:`, but CoreCI's native format is `jobs:` with `plugin:`/`invoke:`/`vars:` and a DAG via `needs:`. YAML unmarshal into CoreCI's `Pipeline` struct silently drops unknown fields, producing an empty `Jobs` map. `coreci run` executes zero jobs — no build, no tarball, no asset upload.
|
||||
|
||||
**Milestone type**: fix (CI infrastructure). Tags on v0.15.x patch
|
||||
line: `v0.15.0` (P0) ... `v0.15.2` (P2 final = v0.16 milestone release).
|
||||
|
||||
- [ ] Phase 0: Pre-execution (SPECIFY→CLARIFY→RESEARCH→PLAN→GRILL) — tag `v0.15.0`
|
||||
- [ ] Phase 1: Fix Gitea Actions clone auth + rewrite .coreci.yml to CoreCI native format (REQ-183,184) — tag `v0.15.1`
|
||||
- [ ] Phase 2: Final review + ship + audit (milestone release) — tag `v0.15.2` = **v0.16 milestone release**
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"slug": "orca",
|
||||
"name": "Orca",
|
||||
"description": "Offline/CLI-first orchestration engine (Orca) \u2014 Nomad-inspired, far simpler than Kubernetes",
|
||||
"milestone": "v0.15",
|
||||
"milestone": "v0.16",
|
||||
"phase": 0,
|
||||
"milestone_type": "fix",
|
||||
"default_branch": "main",
|
||||
|
||||
Reference in New Issue
Block a user