feat: read the origin a node assignment states #51

Merged
day01 merged %!d() commits from %!s() into %!s() 2026-08-12 10:59:48 +00:00
Owner

A node running the node protocol was handed a plan and nothing else, so every job it ran had an empty context: no repository, no commit, no reference, no event. actions/checkout had nothing to clone, gitea.sha evaluated to nothing, and the local cache refused to register because the job had no actions runtime, which failed the job before it ran a step.

The assignment now states where the run came from, and that becomes the context the dialect reads.

The token that opens the cache is minted here rather than asked for. That cache is this runner's own service and the token is only ever checked here, so a control plane has no business inventing a secret for it, and a token that never leaves the node cannot leak from one.

A run the control plane cannot number is refused instead of being executed anonymously.

A node running the node protocol was handed a plan and nothing else, so every job it ran had an empty context: no repository, no commit, no reference, no event. `actions/checkout` had nothing to clone, `gitea.sha` evaluated to nothing, and the local cache refused to register because the job had no actions runtime, which failed the job before it ran a step. The assignment now states where the run came from, and that becomes the context the dialect reads. The token that opens the cache is minted here rather than asked for. That cache is this runner's own service and the token is only ever checked here, so a control plane has no business inventing a secret for it, and a token that never leaves the node cannot leak from one. A run the control plane cannot number is refused instead of being executed anonymously.
day01 added 1 commit 2026-08-11 22:34:23 +00:00
		Co-authored-by: Cursor <cursoragent@cursor.com>
	
day01 added 1 commit 2026-08-12 10:45:25 +00:00
		Credential rotation landed on develop while this branch was open, and both
sides touched the same session. The resolution keeps each: an assignment
still has to state where a run came from, and a session still keeps the
credential the control plane hands it.

The test fixtures the two branches each kept locally now live once in the
shared support module.
	
day01 merged commit 8adcf1394e into %!s() 2026-08-12 10:59:48 +00:00
day01 deleted branch feat/read-the-origin-a-node-assignment-states 2026-08-12 10:59:49 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: syncode/runner#51