Sync public tree to abeb195

This commit is contained in:
Michel Paulissen 2026-07-04 12:21:09 +02:00
parent c836abc405
commit fa0b074b05
4 changed files with 26 additions and 3 deletions

View file

@ -1,7 +1,7 @@
{ {
"kind": "disasmer-filtered-public-tree", "kind": "disasmer-filtered-public-tree",
"source_commit": "41a0af41b5289a1cac004531798bb5269c9bd749", "source_commit": "abeb19529fac4053ded85c73612264032cc79c08",
"release_name": "dryrun-41a0af41b528", "release_name": "dryrun-abeb19529fac",
"filtered_out": [ "filtered_out": [
"private/**", "private/**",
"experiments/**", "experiments/**",

View file

@ -5,6 +5,15 @@ const fs = require("fs");
const path = require("path"); const path = require("path");
const repo = path.resolve(__dirname, ".."); const repo = path.resolve(__dirname, "..");
if (
fs.existsSync(path.join(repo, "DISASMER_PUBLIC_TREE.json")) &&
!fs.existsSync(path.join(repo, "acceptance_criteria.md"))
) {
console.log(
"Acceptance doc contract smoke skipped: root acceptance markdown is filtered from this public tree"
);
process.exit(0);
}
function read(relativePath) { function read(relativePath) {
return fs.readFileSync(path.join(repo, relativePath), "utf8"); return fs.readFileSync(path.join(repo, relativePath), "utf8");
@ -66,6 +75,11 @@ for (const [source, name] of [
]) { ]) {
assertEveryCriterionHasStatus(source, name); assertEveryCriterionHasStatus(source, name);
assertNoOpenCriteria(source, name); assertNoOpenCriteria(source, name);
assert.match(
source,
/Design-document references to billing, paid plans, or plan flags are future metadata placeholders; they do not require MVP/,
`${name} must keep billing/paid-plan placeholders outside MVP implementation scope`
);
} }
for (const file of ["MVP.md", "acceptance_criteria.md", "acceptance_criteria_phase2.md", "cli_acceptance_criteria.md"]) { for (const file of ["MVP.md", "acceptance_criteria.md", "acceptance_criteria_phase2.md", "cli_acceptance_criteria.md"]) {

View file

@ -59,6 +59,11 @@ expect(
"future hosted business non-goal", "future hosted business non-goal",
/billing, paid-plan checkout, team\/org management, provider setup wizards, secret-manager UI, full support tooling, broad moderation consoles, and durable account\/business-process management are intentionally outside this CLI-first MVP slice/ /billing, paid-plan checkout, team\/org management, provider setup wizards, secret-manager UI, full support tooling, broad moderation consoles, and durable account\/business-process management are intentionally outside this CLI-first MVP slice/
); );
expect(
criteria,
"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/
);
const lines = criterionLines(criteria); const lines = criterionLines(criteria);
assert(lines.length > 0, "CLI-first criteria must contain criteria lines"); assert(lines.length > 0, "CLI-first criteria must contain criteria lines");

View file

@ -58,7 +58,11 @@ expect(
); );
expect( expect(
"billing-only surfaces are postponed", "billing-only surfaces are postponed",
/If a website route, API, database field, control, or acceptance item exists only for billing, paid plans, hosted business operations, broad admin\/moderation, team management, provider setup, secret management, or durable account\/business-process management, postpone it instead of building it for this MVP\./ /If a website route, API, database field, control, or acceptance item exists only for billing, paid plans, hosted business operations, broad admin\/moderation, team management, provider setup, secret management, durable account\/business-process management, or any similarly future hosted-business concern, postpone it instead of building it for this MVP\./
);
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 website routes, database fields, UI controls, CLI commands, coordinator routes, or service logic/
); );
assert.doesNotMatch(source, /community-tier/, "use `community tier`, not `community-tier`"); assert.doesNotMatch(source, /community-tier/, "use `community tier`, not `community-tier`");