Simplify workspace authoring and isolate managed component styles
Use imperative scaffolds without a registry/refresh lifecycle; preserve authored runtime wiring and generate checked descriptors. Consolidate binding options, embed checked TSX/CSS source, queue mutable convergence while allowing parallel immutable checks, and preload real CLI observations. Add Shadow DOM boundaries with scoped overlays and composed-event handling. Update template/toolchain pins and document VM-free authoring, browser, and stateful acceptance; no deployment or default-template selection.
This commit is contained in:
@@ -10,6 +10,8 @@ import { planEvolution, type WorkspaceRevision, type EvolutionReview } from "../
|
||||
|
||||
export const checkRecordName = (directory: string) => createHash("sha256").update(directory).digest("hex") + ".json";
|
||||
export async function checkAuthoring(start: string, output: string, options: { baseline?: string; reviews?: string; contractOnly?: boolean } = {}) {
|
||||
const started = performance.now();
|
||||
const timings: Record<string, number> = {};
|
||||
const context = await authoringContext(start);
|
||||
const location = await fs.realpath(start);
|
||||
const directory = location === context.workbench ? "root" : path.relative(context.workbench, location);
|
||||
@@ -29,13 +31,16 @@ export async function checkAuthoring(start: string, output: string, options: { b
|
||||
throw error;
|
||||
});
|
||||
const converged = JSON.parse(captured.stdout) as Awaited<ReturnType<typeof convergeAuthoring>>;
|
||||
timings.captureMs = Math.round(performance.now() - started);
|
||||
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"));
|
||||
}
|
||||
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);
|
||||
const candidateText = await fs.readFile(path.join(report.artifactPath, "candidate.json"), "utf8");
|
||||
await fs.writeFile(path.join(output, "candidate.json"), candidateText);
|
||||
report.compilation = "passed";
|
||||
@@ -59,6 +64,8 @@ export async function checkAuthoring(start: string, output: string, options: { b
|
||||
}
|
||||
if (!report.blockers.length) report.phase = options.contractOnly ? "contract-only" : "checked";
|
||||
} catch (error) { report.blockers.push(String(error instanceof Error ? error.message : error)); }
|
||||
timings.totalMs = Math.round(performance.now() - started);
|
||||
Object.assign(report, {timings});
|
||||
await fs.writeFile(path.join(output, "report.json"), JSON.stringify(report, null, 2));
|
||||
if (options.contractOnly) return report;
|
||||
const records = path.join(context.workbench, ".quixos/checks");
|
||||
|
||||
Reference in New Issue
Block a user