Skip to content

Add Tecnix revision identity for remote eval caching - #58

Draft
jacobmichels wants to merge 1 commit into
jacob/tecnix-cache-result-contractfrom
jacob/tecnix-eval-cache-contract
Draft

Add Tecnix revision identity for remote eval caching#58
jacobmichels wants to merge 1 commit into
jacob/tecnix-cache-result-contractfrom
jacob/tecnix-eval-cache-contract

Conversation

@jacobmichels

@jacobmichels jacobmichels commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Sharing evaluation-cache candidates needs an identity for the evaluator that produced them. The existing cache scopes rows by repository location, resolver, and arguments, but does not distinguish evaluator revisions.

This PR adds that identity groundwork: a full Tecnix revision in the SQLite row key, revision-aware reads and writes, and Nix/Meson build metadata that supplies the revision. Unknown or abbreviated stamps bypass persistence. Mutable developer shells remain unversioned by default.

This is new support for future remote-cache reuse, not the remote transport implementation. It does not add upload/fetch, portable repository keys, or publisher authentication. It preserves the selected-output payload and target-value reconstruction from #57, which is the layer below this change.

Checks:

  • Full build and the repository formatter passed.
  • Combined isolated Linux functional-test package, including Fix selected outputs in the existing target eval cache #57, from a clean revision-stamped checkout: 215 passed, 0 failed, 10 skipped.
  • Tecnix builtins and gc functional suites plus nix-expr-tests: 3/3 passed with a revision-stamped test build.
  • Regression cases cover evaluator-revision isolation in single-shard and batch lookups, rewarming, and reuse across unchanged source commits.

This PR is the top layer of the native GitHub stack: #59#57#58. Its base is #57; #59 supplies SQLite for the isolated tests.

World adoption follow-up

When World bumps Tecnix to a revision containing this cache-identity support, update system/tectonix/tecnix-package.nix in that same World change to stamp the full tecnixSrc.rev into .version-tecnix, rather than truncating it to nine characters. The full-revision gate otherwise bypasses persistent evaluation caching for the World package.

That packaging edit is explicitly deferred. It is not part of either Tecnix PR, and no root-worktree edit should be carried by this work.

@jacobmichels jacobmichels changed the title Define the Tecnix evaluation-cache contract Add Tecnix revision identity for remote eval caching Sep 5, 2026
@jacobmichels
jacobmichels force-pushed the jacob/tecnix-eval-cache-contract branch from 5218593 to b664cca Compare September 5, 2026 05:44
@jacobmichels
jacobmichels changed the base branch from main to jacob/tecnix-functional-tests-sqlite September 5, 2026 22:02
@jacobmichels
jacobmichels force-pushed the jacob/tecnix-eval-cache-contract branch from b664cca to 316987b Compare September 5, 2026 22:03
@jacobmichels
jacobmichels changed the base branch from jacob/tecnix-functional-tests-sqlite to jacob/tecnix-cache-result-contract September 5, 2026 23:26
@jacobmichels
jacobmichels force-pushed the jacob/tecnix-eval-cache-contract branch from 316987b to 1ef9433 Compare September 5, 2026 23:26
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