Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ All notable changes follow Semantic Versioning and Keep a Changelog conventions.
- Deterministic schema registry packaging and release-triggered GitHub Pages distribution.
- Stable major/minor and immutable patch-version schema URL contracts with SHA-256 manifests.

## [1.1.1] - 2026-07-05

### Fixed

- Restored canonical schema `$id` values and example schema artifact URIs to `https://schemas.coding-autopilot.dev/` while keeping GitHub Pages `registry/` URLs as the live distribution endpoint.
- Added regression coverage to ensure schema identity remains canonical and independent from the hosting URL.

## [0.1.0] - 2026-06-11

### Added
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Producers should emit records that validate against the declared version. Consum
The schemas are public APIs. Review [versioning and compatibility](docs/VERSIONING.md), [contributing](CONTRIBUTING.md), and [security](SECURITY.md) before proposing changes.

Released schemas are discoverable from `https://coding-autopilot-system.github.io/cas-contracts/registry/index.json`. Use stable `registry/vMAJOR.MINOR` URLs for compatible updates or immutable `registry/releases/vMAJOR.MINOR.PATCH` URLs for reproducible builds. See [schema distribution](docs/DISTRIBUTION.md).
Authoritative schema identity remains under `https://schemas.coding-autopilot.dev/`; the GitHub Pages registry is the current live distribution endpoint.

The v1 `WorkRequest` rejects dispatch unless objective, repositories,
measurable criteria, constraints, risk, approval and verification policies,
Expand Down
16 changes: 9 additions & 7 deletions docs/DISTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ sub-path of the documentation site on a single GitHub Pages origin:
https://coding-autopilot-system.github.io/cas-contracts/registry/
```

Schema `$id` values use the live GitHub Pages registry base `https://coding-autopilot-system.github.io/cas-contracts/registry/`, so every `$id` resolves directly to the schema it identifies. Identity and hosting location are the same URL; consumers can dereference an `$id` to fetch the schema.
Schema `$id` values use the reserved canonical namespace
`https://schemas.coding-autopilot.dev/`. That namespace is the stable identity
of each schema even though the current live distribution is served from GitHub
Pages. Consumers should treat `$id` as identity and use the Pages registry URLs
below as the fetch location until the canonical domain is activated.

## URL Contract

Expand Down Expand Up @@ -53,9 +57,7 @@ Repository administrators must configure GitHub Pages to use **GitHub Actions**

## Custom domain (optional future work)

Schema `$id` values resolve on the live GitHub Pages origin today, so no DNS or
custom-domain work is required for schemas to dereference. A vanity domain (for
example `schemas.coding-autopilot.dev`) would only be a cosmetic rename of the
`$id` base and, if ever adopted, would require its own hosting origin plus a
coordinated `$id` migration across this repository and every consumer that
vendors these schemas. It is intentionally out of scope here.
When `schemas.coding-autopilot.dev` is activated, it must serve the same
versioned registry content without changing any schema `$id` values. The live
GitHub Pages registry remains the current distribution URL and should stay
stable for consumers that fetch schemas directly today.
2 changes: 1 addition & 1 deletion examples/v0.1/artifact-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"artifacts": [
{
"kind": "schema",
"uri": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/prompt-envelope.schema.json",
"uri": "https://schemas.coding-autopilot.dev/v0.1/prompt-envelope.schema.json",
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
}
]
Expand Down
2 changes: 1 addition & 1 deletion examples/v1.0/artifact-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"artifacts": [
{
"kind": "schema",
"uri": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/prompt-envelope.schema.json",
"uri": "https://schemas.coding-autopilot.dev/v1.0/prompt-envelope.schema.json",
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
}
]
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/artifact-manifest.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/artifact-manifest.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/artifact-manifest.schema.json",
"title": "ArtifactManifest",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/common.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/common.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/common.schema.json",
"title": "CAS Common Definitions",
"$defs": {
"actor": {
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/evaluation-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/evaluation-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/evaluation-result.schema.json",
"title": "EvaluationResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/policy-decision.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/policy-decision.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/policy-decision.schema.json",
"title": "PolicyDecision",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/prompt-envelope.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/prompt-envelope.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/prompt-envelope.schema.json",
"title": "PromptEnvelope",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/run-event.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/run-event.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/run-event.schema.json",
"title": "RunEvent",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/verification-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/verification-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/verification-result.schema.json",
"title": "VerificationResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v0.1/work-request.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/work-request.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v0.1/work-request.schema.json",
"title": "WorkRequest",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/artifact-manifest.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/artifact-manifest.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/artifact-manifest.schema.json",
"title": "ArtifactManifest",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/common.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/common.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/common.schema.json",
"title": "CAS Common Definitions",
"$defs": {
"actor": {
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/evaluation-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/evaluation-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/evaluation-result.schema.json",
"title": "EvaluationResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/policy-decision.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/policy-decision.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/policy-decision.schema.json",
"title": "PolicyDecision",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/prompt-envelope.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/prompt-envelope.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/prompt-envelope.schema.json",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep hosted schemas dereferenceable from Pages

When a consumer fetches this schema from the documented live Pages URL, the relative $ref below resolves against this new canonical $id, so common.schema.json#... becomes https://schemas.coding-autopilot.dev/v1.0/common.schema.json#... instead of the Pages registry copy. docs/DISTRIBUTION.md says that canonical domain is not activated yet and consumers should use the Pages registry as the fetch location, so validators that load a single hosted schema and resolve remote refs will fail to fetch shared definitions unless they pre-bundle every schema by canonical id.

Useful? React with 👍 / 👎.

"title": "PromptEnvelope",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/run-event.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/run-event.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/run-event.schema.json",
"title": "RunEvent",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/verification-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/verification-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/verification-result.schema.json",
"title": "VerificationResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.0/work-request.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/work-request.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.0/work-request.schema.json",
"title": "WorkRequest",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/common.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/common.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/common.schema.json",
"title": "CAS Common Definitions v1.1",
"$defs": {
"actor": {
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/phase-execution-request.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/phase-execution-request.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/phase-execution-request.schema.json",
"title": "PhaseExecutionRequest",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/phase-execution-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/phase-execution-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/phase-execution-result.schema.json",
"title": "PhaseExecutionResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/phase-verification-result.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/phase-verification-result.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/phase-verification-result.schema.json",
"title": "PhaseVerificationResult",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/sdlc-lifecycle-event.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/sdlc-lifecycle-event.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/sdlc-lifecycle-event.schema.json",
"title": "SdlcLifecycleEvent",
"type": "object",
"allOf": [
Expand Down
2 changes: 1 addition & 1 deletion schemas/v1.1/sdlc-profile.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/sdlc-profile.schema.json",
"$id": "https://schemas.coding-autopilot.dev/v1.1/sdlc-profile.schema.json",
"title": "SdlcProfile",
"type": "object",
"allOf": [
Expand Down
8 changes: 7 additions & 1 deletion scripts/lib.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ export const schemaRoot = path.join(root, "schemas");
export const exampleRoot = path.join(root, "examples");
export const schemaDirectory = path.join(schemaRoot, "v0.1");
export const exampleDirectory = path.join(exampleRoot, "v0.1");
export const canonicalSchemaBase = "https://schemas.coding-autopilot.dev";
export const pagesRegistryBase = "https://coding-autopilot-system.github.io/cas-contracts/registry";

export async function readJson(filePath) {
return JSON.parse(await readFile(filePath, "utf8"));
Expand Down Expand Up @@ -40,8 +42,12 @@ export async function createValidator(directory = schemaRoot) {
return ajv;
}

export function schemaId(version, name) {
return `${canonicalSchemaBase}/${version}/${name}.schema.json`;
}

export function schemaIdForExample(examplePath) {
const name = path.basename(examplePath, ".json");
const version = path.basename(path.dirname(examplePath));
return `https://coding-autopilot-system.github.io/cas-contracts/registry/${version}/${name}.schema.json`;
return schemaId(version, name);
}
10 changes: 5 additions & 5 deletions tests/contracts.test.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import assert from "node:assert/strict";
import test from "node:test";
import { createValidator, exampleRoot, jsonFilesRecursive, readJson, schemaIdForExample } from "../scripts/lib.mjs";
import { createValidator, exampleRoot, jsonFilesRecursive, readJson, schemaId, schemaIdForExample } from "../scripts/lib.mjs";

const ajv = await createValidator();
const examplePaths = await jsonFilesRecursive(exampleRoot);
Expand Down Expand Up @@ -32,7 +32,7 @@ test("each complete lifecycle preserves correlation and W3C trace context", () =
test("contracts reject missing mandatory lifecycle metadata", () => {
const invalid = structuredClone(examples.find((example) => example.kind === "PromptEnvelope" && example.schemaVersion === "0.1.0"));
delete invalid.correlationId;
const validate = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/prompt-envelope.schema.json");
const validate = ajv.getSchema(schemaId("v0.1", "prompt-envelope"));

assert.equal(validate(invalid), false);
assert.match(ajv.errorsText(validate.errors), /correlationId/);
Expand All @@ -41,14 +41,14 @@ test("contracts reject missing mandatory lifecycle metadata", () => {
test("contracts reject malformed W3C traceparent values", () => {
const invalid = structuredClone(examples.find((example) => example.kind === "RunEvent" && example.schemaVersion === "0.1.0"));
invalid.traceContext.traceparent = "not-a-traceparent";
const validate = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/run-event.schema.json");
const validate = ajv.getSchema(schemaId("v0.1", "run-event"));

assert.equal(validate(invalid), false);
assert.match(ajv.errorsText(validate.errors), /pattern/);
});

test("v1.1 SDLC profile accepts a complete twelve-phase profile", () => {
const validate = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/sdlc-profile.schema.json");
const validate = ajv.getSchema(schemaId("v1.1", "sdlc-profile"));
assert.ok(validate, "v1.1 profile schema is registered");
const profile = {
correlationId: "corr-1",
Expand Down Expand Up @@ -83,7 +83,7 @@ test("v1.1 SDLC profile accepts a complete twelve-phase profile", () => {
});

test("v1.1 SDLC request rejects missing profile version", () => {
const validate = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v1.1/phase-execution-request.schema.json");
const validate = ajv.getSchema(schemaId("v1.1", "phase-execution-request"));
assert.ok(validate, "v1.1 request schema is registered");
const request = {
correlationId: "corr-1",
Expand Down
10 changes: 5 additions & 5 deletions tests/goal-contract.test.mjs
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import assert from "node:assert/strict";
import path from "node:path";
import test from "node:test";
import { createValidator, readJson, root } from "../scripts/lib.mjs";
import { createValidator, readJson, root, schemaId } from "../scripts/lib.mjs";

const version = "v1.0";
const schemaDirectory = path.join(root, "schemas", version);
const examplePath = path.join(root, "examples", version, "work-request.json");
const schemaId = "https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/work-request.schema.json";
const workRequestSchemaId = schemaId(version, "work-request");

const ajv = await createValidator(schemaDirectory);
const validGoal = await readJson(examplePath);
const validate = ajv.getSchema(schemaId);
const validate = ajv.getSchema(workRequestSchemaId);

test("v1 goal fixture declares every bounded default", () => {
assert.ok(validate);
Expand Down Expand Up @@ -70,13 +70,13 @@ test("v1 lifecycle rejects incomplete metadata and malformed trace context", ()

test("v1 verification and evaluation records require evidence URIs", async () => {
const verification = await readJson(path.join(root, "examples", version, "verification-result.json"));
const verificationValidator = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/verification-result.schema.json");
const verificationValidator = ajv.getSchema(schemaId(version, "verification-result"));
const noVerificationEvidence = structuredClone(verification);
delete noVerificationEvidence.checks[0].evidenceUri;
assert.equal(verificationValidator(noVerificationEvidence), false);

const evaluation = await readJson(path.join(root, "examples", version, "evaluation-result.json"));
const evaluationValidator = ajv.getSchema("https://coding-autopilot-system.github.io/cas-contracts/registry/v1.0/evaluation-result.schema.json");
const evaluationValidator = ajv.getSchema(schemaId(version, "evaluation-result"));
const noEvaluationEvidence = structuredClone(evaluation);
delete noEvaluationEvidence.evidence;
assert.equal(evaluationValidator(noEvaluationEvidence), false);
Expand Down
17 changes: 16 additions & 1 deletion tests/registry.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import os from "node:os";
import path from "node:path";
import test from "node:test";
import { buildAllRegistry, buildRegistry } from "../scripts/build-registry.mjs";
import { createValidator, jsonFiles, readJson, schemaDirectory } from "../scripts/lib.mjs";
import { createValidator, jsonFiles, readJson, schemaDirectory, schemaId } from "../scripts/lib.mjs";
import { validateRegistry } from "../scripts/validate-registry.mjs";

async function build() {
Expand Down Expand Up @@ -41,6 +41,21 @@ test("distributed stable schemas compile and retain authoritative ids", async ()
}
});

test("registry keeps canonical schema identity independent from the Pages hosting URL", async () => {
const output = await build();
const manifest = await readJson(path.join(output, "v0.1", "manifest.json"));

for (const entry of manifest.schemas) {
assert.match(entry.id, /^https:\/\/schemas\.coding-autopilot\.dev\//);
assert.doesNotMatch(entry.id, /github\.io/);
assert.notEqual(entry.id, `https://coding-autopilot-system.github.io/cas-contracts/registry/v0.1/${entry.path}`);
}

const promptEnvelope = manifest.schemas.find((entry) => entry.path === "prompt-envelope.schema.json");
assert.ok(promptEnvelope, "prompt-envelope is published");
assert.equal(promptEnvelope.id, schemaId("v0.1", "prompt-envelope"));
});

test("registry builds are deterministic and append preserves immutable releases", async () => {
const output = await build();
const first = await readFile(path.join(output, "v0.1", "manifest.json"), "utf8");
Expand Down
Loading