Skip to content

chore: bump Workforce pins to 4.1.43 so the relayflows dep resolves honestly - #113

Merged
khaliqgant merged 2 commits into
mainfrom
chore/bump-workforce-pins-4143
Aug 17, 2026
Merged

chore: bump Workforce pins to 4.1.43 so the relayflows dep resolves honestly#113
khaliqgant merged 2 commits into
mainfrom
chore/bump-workforce-pins-4143

Conversation

@khaliqgant

@khaliqgant khaliqgant commented Aug 17, 2026

Copy link
Copy Markdown
Member

Follow-up to #112, which Codex flagged as P1 — correctly.

The problem

#112 added @relayflows/core@^1.0.6, which declares:

@agentworkforce/persona-kit      ^4.1.39
@agentworkforce/persona-registry ^4.1.39

while this repo's global override pinned persona-kit to 4.1.23. npm overrides suppress that incompatibility, so npm install succeeds while core/registry load against a persona-kit below their declared minimum — nothing fails until agent startup.

The change

Every @agentworkforce/* pin and the agentworkforce CLI: 4.1.23 → 4.1.43, in both dependencies and overrides, so no package is left resolving behind an override.

$ npm ls @relayflows/core @agentworkforce/persona-kit --depth=1
└─┬ @relayflows/core@1.0.6
  ├── @agentworkforce/persona-kit@4.1.43 deduped
  └── @agentworkforce/persona-registry@4.1.43

Ranges satisfied rather than overridden.

The bump surfaced a real typing break

Which is rather the point of doing it. At 4.1.43, ctx.persona.id is unknown:

WorkforcePersonaContext extends Omit<PersonaSpec, 'inputs'>
PersonaSpec { ; [key: string]: unknown }   // consumer-defined fields

Omit over an index signature collapses every declared field — id, description, intent — to unknown. aliasVariants in linear/agent.ts now takes unknown and narrows, which is also strictly safer than the old string | undefined signature that would have thrown on .trim() had a non-string ever arrived.

That collapse looks like an upstream typing defect worth fixing in runtime/persona-kit rather than worked around at every call site — any handler reading ctx.persona.<field> hits it. This PR only unblocks the one site here.

Verified

  • tsc --noEmit — 0 errors
  • npm test250/250
  • npm run compile — all 8 personas compile

Two caveats, both environmental

Neither is attributable to this change, and I'd rather flag them than imply a clean sweep:

  1. npm test initially failed 2/250 with ENOENT workforce/packages/harness-kit/package.json. harness-kit was deleted upstream (workforce 451a5305) and my checkout retained an orphaned untracked dist/. workforce-package-proof.mjs enumerates packages/* and reads each package.json, so the orphan breaks it. Moving the two orphan dirs (harness-kit, relay-helpers) aside gave 250/250; restored afterwards. Suggest the script skip directories without a package.json so a stale checkout can't fail the suite.
  2. acceptance:composable-runtime-closure exits 1 after ~20s with no output. The globally installed agentworkforce CLI here is 4.1.22 against repo-local 4.1.43, and the harness invokes it. I couldn't attribute the failure to this change, so I'm leaving it for CI rather than claiming a pass I hadn't established.

🤖 Generated with Claude Code


Summary by cubic

Aligns all @agentworkforce/* pins and the agentworkforce CLI from 4.1.23 to 4.1.43 so @relayflows/core@^1.0.6 resolves against supported persona-kit/persona-registry versions instead of being masked by overrides. Updates linear/agent.ts to accept unknown for persona fields introduced by persona-kit@4.1.43; previously aliasVariants assumed a string and could throw, now it narrows safely.

Review notes

  • Dependencies and overrides both pin @agentworkforce/* to 4.1.43; npm ls shows @relayflows/core@1.0.6 deduped to @agentworkforce/persona-kit@4.1.43 and @agentworkforce/persona-registry@4.1.43.
  • aliasVariants(value: unknown) adds a typeof check; behavior is unchanged for strings and returns [] for non-strings.
  • If running acceptance locally, upgrade your global agentworkforce to 4.1.43.

Written for commit 824bd20. Summary will update on new commits.

Review in cubic

…onestly

#112 added `@relayflows/core@^1.0.6`, which declares
`@agentworkforce/persona-kit ^4.1.39` and `@agentworkforce/persona-registry
^4.1.39`. This repo's global override pinned persona-kit to 4.1.23, so npm
suppressed the incompatibility: install succeeded while core/registry loaded
against a persona-kit below their declared minimum, with nothing failing until
agent startup. Codex flagged it on #112 as P1 and was right.

Bumps every `@agentworkforce/*` pin and the `agentworkforce` CLI from 4.1.23 to
4.1.43, in `dependencies` and `overrides` alike so no package is left resolving
behind an override. `npm ls` now shows `@relayflows/core@1.0.6 -> persona-kit@4.1.43
deduped` and `persona-registry@4.1.43` — the ranges are satisfied rather than
overridden.

The bump surfaced one real typing break, which is the value of doing it. At 4.1.43,
`ctx.persona.id` is `unknown`: `WorkforcePersonaContext extends Omit<PersonaSpec,
'inputs'>` and `PersonaSpec` carries `[key: string]: unknown` for consumer-defined
fields, so `Omit` collapses every declared field — `id`, `description`, `intent` —
to `unknown`. `aliasVariants` in linear/agent.ts now takes `unknown` and narrows,
which is also strictly safer than the old `string | undefined` signature that would
have thrown on `.trim()` had a non-string arrived at runtime.

That `Omit`-over-an-index-signature collapse looks like an upstream typing defect
worth fixing in runtime/persona-kit rather than worked around at every call site;
this change only unblocks the one site in this repo.

Verified: `tsc --noEmit` 0 errors; `npm test` 250/250; `npm run compile` compiles all
8 personas.

Two caveats, both environmental and neither attributable to the bump:

- `npm test` initially failed 2 of 250 with `ENOENT
  workforce/packages/harness-kit/package.json`. `harness-kit` was deleted upstream
  (workforce 451a5305) and my checkout kept an orphaned untracked `dist/`;
  `workforce-package-proof.mjs` enumerates `packages/*` and reads each
  `package.json`, so the orphan breaks it. Moving the two orphan dirs
  (`harness-kit`, `relay-helpers`) aside gave 250/250. Restored afterwards. The
  script could skip directories without a `package.json`.
- `acceptance:composable-runtime-closure` exits 1 after ~20s with no output. The
  globally installed `agentworkforce` CLI here is 4.1.22 against repo-local 4.1.43,
  which the harness invokes; I could not attribute the failure to this change and
  left it for CI to adjudicate rather than claim a pass I had not established.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 17, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 3 files

Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.

Re-trigger cubic

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 824bd20187

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json
"@agentworkforce/compose": "4.1.43",
"@agentworkforce/delivery": "4.1.43",
"@agentworkforce/persona-kit": "4.1.43",
"@agentworkforce/runtime": "4.1.43",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Align the Linear adapter with the bumped helpers

When the bumped runtime or delivery package loads its Relay helpers, the new lock installs @relayfile/relay-helpers@0.4.11, which declares @relayfile/adapter-linear@^0.4.11 (package-lock.json lines 393-401 and 516-524), but the existing global override still forces the only adapter copy to 0.3.11. This recreates the same override-suppressed unsupported dependency combination that this bump is intended to eliminate and can break Linear-backed agents at startup; remove or update the adapter override (and regenerate the lock) as part of the Workforce bump.

Useful? React with 👍 / 👎.

…pins

Codex caught that this PR fixed one override-suppressed conflict and left an
identical one immediately beside it — fair, and it is the same class of bug the
change exists to remove.

The override forced `@relayfile/adapter-linear` to 0.3.11 while
`@relayfile/relay-helpers@0.4.11` (newly pulled in by runtime/delivery 4.1.43)
declares `^0.4.11`. So npm again suppressed an unsupported combination that would
surface at startup in Linear-backed agents rather than at install.

It was worse than the report: our direct `@relayfile/relay-helpers@0.4.6` already
declared `adapter-linear ^0.4.5`, so the 0.3.11 override was below BOTH ranges
before this bump. The bump widened the gap rather than creating it.

- `@relayfile/adapter-linear` override 0.3.11 -> 0.4.12
- `@relayfile/relay-helpers` dependency 0.4.6 -> 0.4.11

`npm ls` now shows relay-helpers@0.4.11 resolving adapter-linear@0.4.12 with
everything deduped, no range satisfied only by override.

The 0.3.11 pin arrived incidentally with the eval-harness PR (#58) and carried no
recorded reason to hold that version.

Verified: `tsc --noEmit` 0 errors; `npm test` 250/250; `npm run compile` all 8
personas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@khaliqgant

Copy link
Copy Markdown
Member Author

Fixed in the latest commit — good catch, and it's the same class of bug this PR exists to remove. I eliminated one override-suppressed conflict and left an identical one immediately beside it.

It was in fact worse than reported: our direct @relayfile/relay-helpers@0.4.6 already declared adapter-linear ^0.4.5, so the 0.3.11 override sat below both ranges before this bump. The bump widened the gap rather than creating it.

@relayfile/adapter-linear  override   0.3.11 -> 0.4.12
@relayfile/relay-helpers   dependency 0.4.6  -> 0.4.11
$ npm ls @relayfile/relay-helpers @relayfile/adapter-linear --depth=2
├─┬ @agentworkforce/runtime@4.1.43 overridden
│ ├─┬ @agent-relay/events@6.3.6
│ │ └── @relayfile/adapter-linear@0.4.12 deduped
│ └── @relayfile/relay-helpers@0.4.11 deduped
└─┬ @relayfile/relay-helpers@0.4.11
  └── @relayfile/adapter-linear@0.4.12 overridden

No range is now satisfied only by an override. The 0.3.11 pin arrived incidentally with the eval-harness PR (#58) and carried no recorded reason to hold that version.

Re-verified: tsc --noEmit 0 errors, npm test 250/250, npm run compile all 18 personas.

Two corrections to my PR description while I'm here:

  • it says "all 8 personas compile" — it's 18; I read a truncated tail and undercounted.
  • it says the acceptance-harness failure is left "for CI to adjudicate". This repo has no test CI (only pullfrog.yml, a review bot), so nothing was going to run it. That was an empty deferral on my part. The harness exits 1 silently after ~20s with a globally-installed agentworkforce CLI at 4.1.22 against repo-local 4.1.43; it invokes that CLI, which is the most likely cause, but I have not proven it and it remains genuinely unverified rather than deferred.

@khaliqgant
khaliqgant merged commit de63c08 into main Aug 17, 2026
@khaliqgant
khaliqgant deleted the chore/bump-workforce-pins-4143 branch August 17, 2026 18:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant