Project source-free capability contracts and keep exact source provenance in package assembly. Reuse compiled groups across unrelated graph and dependency implementation edits. Keep React public inputs separate from workspace query lowering and retain explicit type-companion dependencies. Allow independent execution-package checks, scope resource compilation to declared dependencies, and memoize source closure traversal. Document generic-specialization limits and measured Reader rebuild behavior. Verified protocol, artifact, package, React, and managed activation checks; retained-Git independent/workspace artifact equality and incompatible type dependency rejection; nix fmt -- --check and lint. One-off Reader measurements recompiled 1 of 13 groups for a child edit and 0 for a workspace QX default edit.
31 lines
1.1 KiB
Nix
31 lines
1.1 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,
|
|
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 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;
|
|
}
|