Profile source capture, Nix evaluation/realization, resource/query checking, and implementation builds without putting timings into immutable outputs. Keep modular repositories; bound independent capture work, snapshot jj once per observation, and retain final concurrent-edit and Git completeness checks. Compose exact resource/closure/frontend/toolchain checks as memoized Nix derivations. Preserve whole-workspace validation and the full compiler path when no checked dependency is supplied. Share canonical Nixpkgs by content, index workspace build contexts once, and narrow lock/driver/compiler inputs with conservative complete-source fallback. Batch React witness checks only when distinct source closures cannot share ambient declarations; otherwise run the original independent TypeScript checks. Seed local authoring toolchains with exact canonical fetch identities when they match the selected inputs; retain store-path inputs for overrides. Add generic correctness checks rather than permanent Reader timing/content fixtures. Verify actual Reader edits and rejection/recovery in a private workbench, preserving the original user's workbench and runtime. Query checking currently caches at resource/closure boundaries, not individual query semantic dependency boundaries. Template helper pins and reproducible fixture snapshots follow in a separate publication change.
34 lines
1.2 KiB
Nix
34 lines
1.2 KiB
Nix
# Workspace composition may reevaluate this projection after any graph edit.
|
|
# Only the canonical, source-free value becomes a package compilation input.
|
|
{
|
|
pkgs,
|
|
protocol,
|
|
plan ? null,
|
|
contexts ? null,
|
|
contextData ? null,
|
|
packageRevisionId,
|
|
}:
|
|
let
|
|
projected = pkgs.runCommand "camino-package-context.json" { } ''
|
|
${pkgs.nodejs_24}/bin/node ${./package-context.mjs} \
|
|
${protocol}/libexec/quixos-protocol/execution-world.mjs ${plan} \
|
|
${pkgs.lib.escapeShellArg packageRevisionId} > "$out"
|
|
'';
|
|
context =
|
|
if contextData != null then
|
|
contextData
|
|
else if contexts == null then
|
|
builtins.fromJSON (builtins.readFile projected)
|
|
else
|
|
(builtins.fromJSON (builtins.readFile contexts)).${packageRevisionId};
|
|
in
|
|
{
|
|
# This is typed semantic data (nominal IDs, types and generated source), never
|
|
# Nix artifact paths. Remove the projection derivation's string context, not
|
|
# any code/toolchain dependency. Those are separate explicit helper arguments.
|
|
buildContract = builtins.toFile "camino-package-contract.json" (
|
|
builtins.unsafeDiscardStringContext (builtins.toJSON context.contract)
|
|
);
|
|
sourceDigest = builtins.unsafeDiscardStringContext context.sourceDigest;
|
|
}
|