Skip to content

feat!: declare job inputs by upstream output digest - #127

Merged
Sannrox merged 1 commit into
mainfrom
feat/126
Nov 7, 2026
Merged

Sannrox merged 1 commit into
mainfrom
feat/126

Conversation

@Sannrox

@Sannrox Sannrox commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Closes #126

A job may declare an input as a sha256: digest of another job's output,
alongside the existing relative paths. The local source resolves that digest
from --inputs-from directories by reading each prior receipt.json. Staging
re-hashes the copy and refuses a mismatch, so a tampered upstream file does
not run. Two receipts chain by digest equality; the receipt schema is
unchanged. Kako still runs one job at a time.

Breaking

kako_core::Input gains a public digest field. Struct literals that omit it
do not compile.

Lane

  • claim branch: feat/126
  • worktree: .worktrees/issue-126
  • base SHA: 503aed94130bffd5bb6add8a033938c3ae5b0a30
  • published SHA: 1449907ae27f9cab065cc1e1e02bddeeb4e6df3a
  • authority: land

Verification

  • cargo fmt --all -- --check
  • cargo build --locked --workspace --all-targets
  • cargo clippy --locked --workspace --all-targets -- -D warnings
  • cargo clippy --locked -p kako-source-sekai --features sekai-client --all-targets -- -D warnings
  • cargo test --locked --workspace
  • cargo test --locked -p kako-source-sekai --features sekai-client
  • bash scripts/validate-workflow-skills.sh
  • python3 scripts/adr-index --check

Focused coverage: digest parse, staging mismatch, local digest lookup from a
prior receipt, tampered file refused at staging, parent output names refused,
CLI chain on linux_native (skipped on this host; CI Linux runs it). Isolation
fail-closed tests unchanged. Live isolated-process proof stays the ignored
sekai_live tests.

Autoreview

$AUTOREVIEW --mode local --engine grok --model grok-4.6 --thinking xhigh

Clean: no accepted/actionable findings.

Compatibility

  • Receipt JSON is unchanged (receipt_version 6).
  • --inputs-from is new on run, validate, preview, and serve.
  • The JobSource trait is unchanged; sources resolve digest inputs when they
    yield the job.
  • Sekai claim snapshot staging still uses path inputs (digest: None).

A job file may name an input as a sha256 digest of a prior output.
The local source resolves it from --inputs-from directories, and
staging refuses a staged copy that does not match. Receipts already
cross-reference by digest; the schema is unchanged.

Closes #126
@Sannrox Sannrox added the risk:breaking Public compatibility break or version transition label Nov 6, 2026
@Sannrox
Sannrox marked this pull request as ready for review November 6, 2026 23:04
@Sannrox
Sannrox merged commit 8412d31 into main Nov 7, 2026
6 checks passed
@Sannrox
Sannrox deleted the feat/126 branch November 7, 2026 00:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:breaking Public compatibility break or version transition

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: chain step I/O — declare job inputs by upstream output digest

1 participant