Skip to content

feat(runner): add content addressable delta shipping support - #1514

Merged
Atchyut Preetham Pulavarthi (theonly1me) merged 1 commit into
refactor/nova-1574-collect-only-the-import-graphfrom
feat/nova-1574-ship-only-changed-files
Aug 21, 2026
Merged

feat(runner): add content addressable delta shipping support#1514
Atchyut Preetham Pulavarthi (theonly1me) merged 1 commit into
refactor/nova-1574-collect-only-the-import-graphfrom
feat/nova-1574-ship-only-changed-files

Conversation

@theonly1me

Copy link
Copy Markdown
Member

Overview of Changes

runner.runFlow takes an unchangedFiles map so a run can send only what moved since the last one, and the CLI sent the whole file set every time. Iterating on one flow therefore re-uploaded its entire import graph on every run.

  • Send unchangedFiles for the files whose content matches what this runner was last sent, and the rest in full
  • Keep the entry point and package.json in full every time, since the server reads an execution target from one and dependencies from the other and neither can come from a hash
  • Record the baseline in .qawolf/runner-files.json, a sibling of runner.json so a runner terminate cannot take it along
  • Write it with the temp-and-rename runnerStore uses, so two runs in one directory cannot leave half a file
  • Write it only after a successful submission, since a lost answer may or may not have reached the pod
  • Hash file content the same way the server does, so both sides agree on what changed
  • Ignore a baseline belonging to another runner, and skip it entirely for a runner this invocation just launched
  • Treat an unparseable baseline as absent, because falling back to the whole set is always correct
  • Resend everything once when the runner does not hold what was claimed, and report rather than loop if that is refused too
  • Report which way the files went as fileSync on the JSON output, and on stderr when following
  • Move the submission out of runFlow.ts into submitRun.ts and sendRunFlowRequest.ts, with no change to what it does
  • Document the delta in references/runner.md
  • Cover the hashing, the always-sent files, every invalidation signal, both sides of the retry bound, and that a failed submission claims no baseline

Testing

bun run typecheck
bun run lint --max-warnings 0
bun run format:check
bun run knip
bun run test

bun test gives 1810 pass 0 fail, 16 of them new. The other five give exit 0.

  • Added lines, excluding bun.lock and snapshots: 650, past the 600 error threshold in scripts/check-pr-size.sh. 277 are tests and 193 are the submission moving out of runFlow.ts, which was at the 150-line file cap.

@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2ed158d3-9ed7-4bee-83e8-1ed4277c943c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@theonly1me
Atchyut Preetham Pulavarthi (theonly1me) merged commit ad44380 into main Aug 21, 2026
7 checks passed
@theonly1me
Atchyut Preetham Pulavarthi (theonly1me) deleted the feat/nova-1574-ship-only-changed-files branch August 21, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants