Provide typed React live-field authoring, strict CLI arguments, and timed build stages
This commit is contained in:
@@ -22,6 +22,7 @@ export async function checkAuthoring(start: string, output: string, options: { b
|
||||
directory, checker: checkerIdentity(), candidateOnly: true, activationEvidence: false, blockers: [], phase: "convergence", output,
|
||||
};
|
||||
try {
|
||||
console.error(`[${new Date().toISOString()}] Check: capture source and converge dependencies`);
|
||||
// Serialize only source capture, not the potentially slow Nix build.
|
||||
// Repository-scoped agents can check separate immutable candidates in parallel.
|
||||
const captured = await promisify(callback)("quixos-qx", ["converge", context.workbench, directory], {
|
||||
@@ -32,6 +33,7 @@ export async function checkAuthoring(start: string, output: string, options: { b
|
||||
});
|
||||
const converged = JSON.parse(captured.stdout) as Awaited<ReturnType<typeof convergeAuthoring>>;
|
||||
timings.captureMs = Math.round(performance.now() - started);
|
||||
console.error(`[${new Date().toISOString()}] Check: source captured in ${(timings.captureMs / 1000).toFixed(1)}s`);
|
||||
if (!converged.candidate) {
|
||||
report.phase = converged.worklist.find(entry => entry.phase !== "dependency")?.phase ?? "convergence";
|
||||
throw new Error(converged.worklist.map(entry => `${entry.directory} [${entry.phase}]: ${entry.message}`).join("\n"));
|
||||
@@ -39,8 +41,13 @@ export async function checkAuthoring(start: string, output: string, options: { b
|
||||
report.commit = converged.candidate.commit;
|
||||
report.phase = "verification";
|
||||
const buildStarted = performance.now();
|
||||
report.artifactPath = await buildImmutableCandidate(converged.candidate, resource.kind, path.join(output, "nix.log"), options.contractOnly);
|
||||
timings.immutableCheckMs = Math.round(performance.now() - buildStarted);
|
||||
console.error(`[${new Date().toISOString()}] Check: immutable Nix ${options.contractOnly ? "contract" : "verification"}; build output: ${path.join(output, "nix.log")}`);
|
||||
try {
|
||||
report.artifactPath = await buildImmutableCandidate(converged.candidate, resource.kind, path.join(output, "nix.log"), options.contractOnly);
|
||||
} finally {
|
||||
timings.immutableCheckMs = Math.round(performance.now() - buildStarted);
|
||||
console.error(`[${new Date().toISOString()}] Check: immutable phase ended after ${(timings.immutableCheckMs / 1000).toFixed(1)}s`);
|
||||
}
|
||||
const candidateText = await fs.readFile(path.join(report.artifactPath, "candidate.json"), "utf8");
|
||||
await fs.writeFile(path.join(output, "candidate.json"), candidateText);
|
||||
report.compilation = "passed";
|
||||
|
||||
Reference in New Issue
Block a user