Skip to content

fix(doer): finish the fork distribution renames so releases can ship - #15

Merged
LAG-4 merged 10 commits into
litefrom
feat/doer-release-fixes
Sep 12, 2026
Merged

fix(doer): finish the fork distribution renames so releases can ship#15
LAG-4 merged 10 commits into
litefrom
feat/doer-release-fixes

Conversation

@LAG-4

@LAG-4 LAG-4 commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Follow-up to #13, which renamed the product but left the release pipeline red and parts of the install path pointing at upstream.

What was broken on lite (verified locally, all pre-existing before this PR):

  • Release-blocking: server typecheck failed with 139 deterministicKeys errors — Effect service IDs still said t3/... while the package is now doer-cli. The release quality gate runs typecheck, so no nightly or stable could ever ship.
  • CI never ran: every workflow still requested paid Blacksmith runners, which the fork doesn't have — all runs queued forever. Switched everything to free runners (ubuntu-24.04 / windows-2025 / macos-15), dropped the Blacksmith apt-mirror workaround, gated deploy-relay to upstream (it fires on every main push, including mirror syncs), and fixed a stale --filter '!t3' exclusion that no longer matched the renamed package.
  • Install broken: package doer-cli only exposed the doer bin, so npx doer-cli (the exact command the CLI suggests and the download page shows) failed with 'could not determine executable'. Added the doer-cli bin alias.
  • Remote SSH broken: the remote runner script still installed and exec'd the upstream t3 CLI (command -v t3, default spec t3@latest). Now installs doer-cli@<spec> and execs doer.
  • Triage drift: triagePrompt.ts was edited without syncing .github/triage/PLAYBOOK.md, failing the byte-identical test. Regenerated the playbook from source (also pointed at LAG-4/t3code@lite).
  • Boot service tests: still asserted the old t3code.service unit while the source ships doer.service. Updated tests, message, and user docs.
  • Stale test expectations for the new identity (Doer product names, click.lagaryan.doer app id/protocols, doer CLI labels).

Release pipeline changes:

  • Nightlies run daily 02:08 UTC instead of twice-hourly (low volume).
  • publish_cli now authenticates with the NPM_TOKEN repo secret (granular npm token) — previously it had no credentials, so npm publish (and therefore every GitHub Release, which waits on it) would fail. Human step still needed: create the token, see docs/operations/doer-distribution.md.

Docs: new docs/operations/doer-distribution.md operator checklist + a Distribution section in AGENTS.md so future changes keep the fork's naming contracts (bins, schemes, artifact suffixes, service IDs, triage pair).

Verification: server/ssh/contracts/desktop typechecks green; affected suites pass (cli, cloud, ssh incl. live runner tests, triage byte-identical, build-artifact 70/70 with the dev-shell env var unset). Known-red only on macOS dev shells, green on ubuntu CI: the Windows-probe test (picks up this shell's ELECTRON_RUN_AS_NODE=1) and the entrypoint symlink test (/tmp canonicalization). release_smoke also fails repo-wide (pre-existing expo-audio patch drift, unrelated to this PR).

Built with Muse Spark (opencode-go/muse-spark-1.3-contributor) via the OpenCode harness in T3 Code.

The fork PR renamed the product but left the release pipeline red:
server typecheck failed on 139 t3/* Effect service IDs (the
deterministicKeys lint follows the doer-cli package name), the SSH
remote runner still installed and exec'd the upstream t3 CLI, npx
doer-cli had no matching bin entry, the triage playbook drifted from
its source, and boot service tests still asserted the old unit name.
Also switches nightlies to daily and wires NPM_TOKEN auth for the npm
publish step, which had no credentials configured.
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Sep 12, 2026
Without the Blacksmith app installed, every fork workflow queued
forever: CI never ran on any PR. Switch all runs-on labels to free
runners (ubuntu-24.04 / windows-2025 / macos-15), drop the
Blacksmith-specific apt mirror workaround, and gate deploy-relay to
upstream so mirror syncs to main don't fail it.

Also fix a stale package filter the rename missed: the non-server test
job excluded 't3', which no longer matches anything, so doer-cli tests
would have run twice (and broken the server-test isolation design).
Now excludes 'doer-cli'. Timeouts raised for the slower free runners.
Both Vercel configs disabled Git deploys (upstream deploys via its
release workflow instead, which is gated off on the fork), so no push
would ever update doer.lagaryan.click. Enable Git integration: pushes
to the production branch redeploy the site.
@vercel

vercel Bot commented Sep 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
doer-marketing Ready Ready Preview Sep 12, 2026 5:49pm UTC

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.6 KiB 15.1 KiB
Codex Thread snapshot wire 7.0 KiB 7.3 KiB
Codex Live turn WebSocket wire 6.6 KiB 7.8 KiB
Codex Live turn WebSocket decoded 57.1 KiB 66.4 KiB
Codex Live turn messages 10 21
Claude Total thread wire 13.6 KiB 15.1 KiB
Claude Thread snapshot wire 7.1 KiB 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 7.8 KiB
Claude Live turn WebSocket decoded 57.8 KiB 66.4 KiB
Claude Live turn messages 8 21

Baseline: unavailable · PR result: f2cae41 · Source CI: failure

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

…oviders

Built-in Claude/Codex providers default to disabled on the fork
(OpenCode free is the default), so the agent-session scanner —
which correctly skips disabled providers — discovered nothing and 54
tests failed. The test helper and the single importer test now pass
explicit enabled flags; the disabled-instances test is untouched.
DesktopClerk bridge test still expected the t3code-dev scheme; the
mobile auth exchange test still expected the T3 Code Mobile client
label. Both sources were renamed in the fork PR.
@LAG-4
LAG-4 merged commit 890ef7d into lite Sep 12, 2026
8 of 9 checks passed
@LAG-4
LAG-4 deleted the feat/doer-release-fixes branch September 12, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant