Sync public scripts to 8ac7413

This commit is contained in:
Michel Paulissen 2026-07-04 15:02:47 +02:00
parent 6d58148215
commit 2c2dfdf8e2
4 changed files with 47 additions and 1 deletions

View file

@ -45,6 +45,7 @@ function assertNoOpenCriteria(source, name) {
const phase2 = read("acceptance_criteria_phase2.md");
const base = read("acceptance_criteria.md");
const cliFirst = read("cli_acceptance_criteria.md");
const website = read("website_mvp_inventory.md");
const docsSmoke = read("scripts/docs-smoke.js");
const releaseBlockerSmoke = read("scripts/release-blocker-smoke.js");
const publicAcceptance = read("scripts/acceptance-public.sh");
@ -82,7 +83,35 @@ for (const [source, name] of [
);
}
for (const file of ["MVP.md", "acceptance_criteria.md", "acceptance_criteria_phase2.md", "cli_acceptance_criteria.md"]) {
assertEveryCriterionHasStatus(website, "website_mvp_inventory.md");
assert.match(
website,
/private hosted website addendum to `acceptance_criteria\.md`, `acceptance_criteria_phase2\.md`, and `cli_acceptance_criteria\.md`/,
"website acceptance criteria must declare itself as the private hosted website addendum"
);
assert.match(
website,
/barebones functional HTML with no CSS/,
"website acceptance criteria must keep the MVP website barebones with no CSS"
);
assert.match(
website,
/Billing is not part of the MVP[\s\S]*Design-document references to billing, paid plans, or plan flags are future metadata placeholders; they do not require MVP website routes/,
"website acceptance criteria must keep billing and paid-plan placeholders outside MVP website scope"
);
assert.match(
website,
/- \[ \] \*\*Open:\*\* The private hosted website acceptance gate exists and exercises the barebones website through `disasmer\.michelpaulissen\.com`/,
"website acceptance criteria must leave the private website deployment gate explicit and open"
);
for (const file of [
"MVP.md",
"acceptance_criteria.md",
"acceptance_criteria_phase2.md",
"cli_acceptance_criteria.md",
"website_mvp_inventory.md",
]) {
assert(
docsSmoke.includes(`"${file}"`),
`docs smoke must include ${file} as user-facing acceptance context`

View file

@ -17,6 +17,7 @@ node scripts/tenant-isolation-contract-smoke.js
node scripts/cli-error-exit-smoke.js
scripts/release-source-scan.sh
cargo test --manifest-path private/hosted-policy/Cargo.toml
node private/hosted-policy/scripts/hosted-signup-contract-smoke.js
node private/hosted-policy/scripts/prepare-public-release-dryrun-deployment.js
node private/hosted-policy/scripts/hosted-deployment-smoke.js
node private/hosted-policy/scripts/hosted-community-smoke.js

View file

@ -66,6 +66,21 @@ expect(
"billing plan flags are placeholders",
/Design-document references to billing, paid plans, or plan flags are future metadata placeholders; they do not require MVP CLI commands, coordinator routes, schemas, migrations, website controls, or service logic/
);
expect(
criteria,
"hosted signup remains private Authentik-backed flow",
/Hosted account creation is available only through the private hosted identity flow, backed by Authentik[\s\S]*first-login account\/project creation stays inside/
);
expect(
criteria,
"hosted signup provider and password policy criteria",
/approved external identity-provider requirement[\s\S]*disasmer_native_password_signup_allowed: false/
);
expect(
criteria,
"hosted signup sanitized failure criteria",
/Signup failures do not disclose moderation, abuse-scoring, or allow\/deny internals[\s\S]*stripping issuer, allowlist, abuse-score, moderation-note, and provider-secret details/
);
const lines = criterionLines(criteria);
assert(lines.length > 0, "CLI-first criteria must contain criteria lines");

View file

@ -20,6 +20,7 @@ const userFacingDocs = [
"acceptance_criteria.md",
"acceptance_criteria_phase2.md",
"cli_acceptance_criteria.md",
"website_mvp_inventory.md",
].map((file) => [file, fs.readFileSync(path.join(repo, file), "utf8")]);
const publicAcceptance = fs.readFileSync(
path.join(repo, "scripts/acceptance-public.sh"),