orca/.github/workflows
Brennan Benson 8d61d76a59
fix(skills): decouple skill-manifest verify from local git tags (#10340)
* fix(skills): source released history from the committed ledger, not a tag walk

verify:skill-bundle-manifest rebuilt the entire released-skill history by
walking every local refs/tags/v* on each run and demanded byte-equality with
the committed artifacts. Output was therefore a function of (skill bytes x
local tag set x release timing), so any clone holding stray, deleted, or fork
tags the committed artifacts predate rebuilt a divergent registry and failed
lint. This was the 4th instance of one failure class (#8637 -> #9119 version
bumps -> #9778 new tags -> local tag drift), each patched with a new tolerance
rather than removing the tag coupling.

Fix: the committed snapshot-registry + release-mapping ARE the released history;
trust them instead of re-deriving from tags.

- releasedHistoryFromCommitted() seeds generation from the committed ledger,
  dropping the floating unreleased tail (entries beyond what the mapping names).
  verify and --write are now pure functions of working-tree bytes with zero tag
  access. The tag walk survives only behind --rebuild-from-tags (disaster
  recovery), off the everyday path.
- --release <version> + appendReleaseRow() perform the O(1) append of one
  mapping row at release cut (dedupes vs the last row, strips the v-prefix) --
  the single authoritative point where working-tree bytes become an immutable
  released revision.
- release-cut.yml runs generate --release "$VERSION" before the release commit
  (Node built-ins only, no install needed); pr.yml drops fetch-depth: 0 from the
  lint job since verify no longer needs tag history.

Recognition is unaffected: the runtime uses knownSnapshots = registry.skills
(all entries, incl. the tail committed at PR-merge time), so a missing mapping
row only loses a version label, never recognition or the update nudge.

Trade-off: lint no longer cross-checks committed historical snapshots against
tags. A hand-edit to an old released entry is still caught by the runtime
manifest<->registry consistency check when the current manifest points at it,
and can be audited anytime with --rebuild-from-tags.

Verified: verify passes committed-sourced; --write is zero-diff (byte parity);
a planted stray v-tag no longer changes output; edit-stub -> --write -> --release
appends the correct single row; double --release is idempotent;
--rebuild-from-tags reproduces the committed artifacts. Generator tests 14 pass/
1 skip; runtime skill-bundle-artifacts + freshness-inventory 14 pass; bundled
skill guides verify passes.

* fix(skills): keep one release-mapping row per version on a re-cut

A cut that pushed the version bump to main but died before pushing the
tag is re-cut at the same version. If skills changed in between, the
second --release appended a duplicate row, and the stale one named
revisions that tag never ships — which verify-skill-update-roundtrip
then pairs with the tag's real bytes.

Overwrite the trailing row instead (the tag is absent, so that version
was never published). Refuse only when an earlier row claims the
version, which the cut workflow already rejects upstream, so this
cannot wedge a recovering cut.
2026-07-24 14:09:28 -07:00
..
computer-e2e.yml Revert "fix(memory): bound OOM-prone accumulators (#10179)" (#10255) 2026-07-23 18:35:31 -07:00
daemon-relocation-spike.yml Windows terminal update-survival (single consolidated PR) (#7538) 2026-07-07 19:21:07 -04:00
e2e.yml Ssh watcher isolation e2e (#8494) 2026-07-12 23:50:00 -07:00
golden-e2e-experiment.yml fix(terminal): keep WebGL glyph atlas pages within the shader sampler budget (#8672) 2026-07-14 14:48:21 -07:00
homebrew-bump.yml
issue-os-labeler.yaml
linux-wayland-gpu-sandbox.yml fix(terminal): converge post-spawn PTY size reconcile to fix split-mount column desync (#6725) 2026-06-29 12:12:35 -07:00
mobile-android-release.yml fix(mobile): keep Android release versionCode committed (#7271) 2026-07-03 15:26:11 -07:00
mobile-ios-release.yml fix(mobile): unblock iOS releases (#10224) 2026-07-23 14:23:44 -07:00
mobile.yml fix(mobile): unblock iOS releases (#10224) 2026-07-23 14:23:44 -07:00
pr.yml fix(skills): decouple skill-manifest verify from local git tags (#10340) 2026-07-24 14:09:28 -07:00
pullfrog.yml Improve inactive workspace cleanup UX (#3600) 2026-06-28 11:38:23 -07:00
readme-downloads-badge.yml Use generated README downloads badge 2026-06-16 11:09:40 -07:00
release-cut.yml fix(skills): decouple skill-manifest verify from local git tags (#10340) 2026-07-24 14:09:28 -07:00
release-mac-build.yml Fix ssh watcher isolation (#8463) 2026-07-12 21:34:59 -07:00
skill-update-roundtrip.yml Add safe skill freshness detection and update rail (#8637) 2026-07-16 14:47:28 -07:00
terminal-perf.yml
track-community-prs.yaml
win-crash-survival-e2e.yml test(e2e): prove the terminal daemon survives a main-process crash on Windows (#7742) (#9311) 2026-07-19 11:27:29 -07:00
win-update-e2e.yml Windows terminal update-survival (single consolidated PR) (#7538) 2026-07-07 19:21:07 -04:00
win-update-survival-e2e.yml fix(cli): preserve multiline arguments on Windows (#8374) 2026-07-12 02:13:41 -07:00
windows-signing-rehearsal.yml fix(release): regenerate Windows blockmap via app-builder-lib JS (#10110) 2026-07-22 23:10:19 -07:00
windows-terminal-restart-e2e.yml test(e2e): harden terminal restart regressions on Windows (#9064) 2026-07-17 17:18:36 -07:00