From fa0b074b05f8dc420a8eff252cba9604c1e01108 Mon Sep 17 00:00:00 2001 From: Michel Paulissen <862400+MichelPaulissen@users.noreply.github.com> Date: Sat, 4 Jul 2026 12:21:09 +0200 Subject: [PATCH] Sync public tree to abeb195 --- DISASMER_PUBLIC_TREE.json | 4 ++-- scripts/acceptance-doc-contract-smoke.js | 14 ++++++++++++++ scripts/cli-first-contract-smoke.js | 5 +++++ scripts/website-inventory-contract-smoke.js | 6 +++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/DISASMER_PUBLIC_TREE.json b/DISASMER_PUBLIC_TREE.json index da1d7bf..22f5ea7 100644 --- a/DISASMER_PUBLIC_TREE.json +++ b/DISASMER_PUBLIC_TREE.json @@ -1,7 +1,7 @@ { "kind": "disasmer-filtered-public-tree", - "source_commit": "41a0af41b5289a1cac004531798bb5269c9bd749", - "release_name": "dryrun-41a0af41b528", + "source_commit": "abeb19529fac4053ded85c73612264032cc79c08", + "release_name": "dryrun-abeb19529fac", "filtered_out": [ "private/**", "experiments/**", diff --git a/scripts/acceptance-doc-contract-smoke.js b/scripts/acceptance-doc-contract-smoke.js index e2d8c47..5c3fef0 100755 --- a/scripts/acceptance-doc-contract-smoke.js +++ b/scripts/acceptance-doc-contract-smoke.js @@ -5,6 +5,15 @@ const fs = require("fs"); const path = require("path"); 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) { return fs.readFileSync(path.join(repo, relativePath), "utf8"); @@ -66,6 +75,11 @@ for (const [source, name] of [ ]) { assertEveryCriterionHasStatus(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"]) { diff --git a/scripts/cli-first-contract-smoke.js b/scripts/cli-first-contract-smoke.js index 855dfed..9b237ed 100644 --- a/scripts/cli-first-contract-smoke.js +++ b/scripts/cli-first-contract-smoke.js @@ -59,6 +59,11 @@ expect( "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/ ); +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); assert(lines.length > 0, "CLI-first criteria must contain criteria lines"); diff --git a/scripts/website-inventory-contract-smoke.js b/scripts/website-inventory-contract-smoke.js index 191711a..6b16c36 100644 --- a/scripts/website-inventory-contract-smoke.js +++ b/scripts/website-inventory-contract-smoke.js @@ -58,7 +58,11 @@ expect( ); expect( "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`");