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:
Jon Chery
2026-08-12 21:02:58 +00:00
parent 61c97c847c
commit 699196f368
4 changed files with 59 additions and 12 deletions
+11 -11
View File
@@ -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": []
}
}
+25
View File
@@ -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.
+22
View File
@@ -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**
+1 -1
View File
@@ -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",