diff --git a/crates/pollen-server/tests/ruleset.rs b/crates/pollen-server/tests/ruleset.rs index 2d277af..f39300c 100644 --- a/crates/pollen-server/tests/ruleset.rs +++ b/crates/pollen-server/tests/ruleset.rs @@ -201,7 +201,7 @@ fn unanswered_questions_take_their_blessed_default() { ("tupaia", "yes"), ("hosting_where", "allclient"), ("central", "bescloud"), - ("platform", "linuxarm"), + ("platform", "linux"), ("remote", "tailscale"), ("timesync", "outbound"), ("cadence", "twomonths"), @@ -406,14 +406,12 @@ fn no_dns_is_an_off_default_risk() { } #[test] -fn amd64_is_supported_but_carries_a_penalty() { - // ARM64 is what BES supports; AMD64 is allowed but must read as off-default. - let arm = evaluate(&v1(), &with(sized(), json!({ "platform": "linuxarm" }))); - assert!(!fired_ids(&arm).contains(&"plat-amd64")); - - let amd = evaluate(&v1(), &with(sized(), json!({ "platform": "linuxamd" }))); - assert!(fired_ids(&amd).contains(&"plat-amd64")); - assert_eq!(amd.verdict, Verdict::NonDefault); +fn linux_carries_no_architecture_penalty() { + // Architecture (ARM64 or AMD64) isn't asked, so Linux is the blessed + // default with no off-default consequence attached. + let eval = evaluate(&v1(), &with(sized(), json!({ "platform": "linux" }))); + assert!(fired_ids(&eval).contains(&"plat-image")); + assert_eq!(eval.verdict, Verdict::Clear); } #[test] diff --git a/ruleset.ron b/ruleset.ron index 166ce56..3329989 100644 --- a/ruleset.ron +++ b/ruleset.ron @@ -242,17 +242,17 @@ ]), ), // Only when a client-hosted server has an OS to choose. BES cloud and - // the Tamanu Iti mini-server are fixed to Linux on ARM64. + // the Tamanu Iti mini-server are fixed to Linux. Architecture (ARM64 or + // AMD64) makes no difference to support or cost, so it isn't asked. ( id: "platform", kind: Single, section: Some("advanced"), label: "Operating system for the client-hosted servers", - help: Some("BES cloud and Tamanu Iti are fixed to Linux on ARM64."), - default: Some("linuxarm"), + help: Some("BES cloud and Tamanu Iti are fixed to Linux."), + default: Some("linux"), options: [ - (id: "linuxarm", label: "Linux on ARM64", note: Some("Required for full support.")), - (id: "linuxamd", label: "Linux on AMD64", warn: Some("ARM64 is the supported platform. AMD64 works, but carries a higher ongoing support and hosting cost.")), + (id: "linux", label: "Linux", note: Some("Required for full support.")), (id: "windows", label: "Windows Server", warn: Some("Being phased out, and accepted only on strong insistence. The client licenses Windows, the application runs slower, and support and incident response are slower and less effective.")), ], visible_if: Any([ @@ -523,21 +523,8 @@ ), // ── Platform ──────────────────────────────────────────────────────── - // ARM64 is the supported platform; everything else carries a penalty, - // graded from added cost through to unsupported. - ( - id: "plat-amd64", - source: "platform", - when: Equals("platform", "linuxamd"), - consequence: ( - severity: NonDefault, - status: Advisory, - audience: Record, - types: [Cost, Support], - title: "AMD64 instead of the standard ARM64", - detail: "Linux on ARM64 is the platform BES builds, tests, and supports first. AMD64 is supported, but hosting costs more per unit of capacity and upgrades get less pre-release testing on it, so incidents take longer to resolve.", - ), - ), + // Linux is the supported platform, on either architecture; Windows + // carries a penalty, graded from added cost through to unsupported. ( id: "plat-windows-licence", source: "platform", @@ -566,10 +553,7 @@ ( id: "plat-image", source: "platform", - when: Any([ - Equals("platform", "linuxarm"), - Equals("platform", "linuxamd"), - ]), + when: Equals("platform", "linux"), consequence: ( status: Requirement, audience: Client, @@ -1025,18 +1009,6 @@ detail: "The client funds the Windows licensing. BES support and incident response are slower on Windows than on Linux, so the commitment BES can make differs from the standard one.", ), ), - ( - id: "price-amd64", - source: "pricing", - when: Equals("platform", "linuxamd"), - consequence: ( - status: Requirement, - audience: Pricing, - types: [Cost], - title: "Price the AMD64 hosting premium", - detail: "AMD64 costs more per unit of capacity than the standard ARM64, and gets less pre-release testing, so incidents take longer to resolve.", - ), - ), ( id: "price-remote", source: "pricing",