@piercebarney/whs-eleventy 2026.11.113 → 2026.11.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piercebarney/whs-eleventy",
3
- "version": "2026.11.113",
3
+ "version": "2026.11.115",
4
4
  "description": "The web house style's Eleventy + Netlify tooling — the compliance sweep, the infra doctor, the link/CSP integrity check, and the a11y scan, shared by every project on the stack.",
5
5
  "bin": {
6
6
  "whs": "cli.js"
@@ -32,7 +32,7 @@
32
32
  "node": ">=22"
33
33
  },
34
34
  "dependencies": {
35
- "@piercebarney/whs-core": ">=2026.11.113",
35
+ "@piercebarney/whs-core": ">=2026.11.115",
36
36
  "node-html-parser": "^9.0.2"
37
37
  },
38
38
  "devDependencies": {
@@ -21,8 +21,92 @@ Everything else — wording fixes, doc corrections that don't change what's
21
21
  enforced, new *opt-in* chapters/capabilities, tooling-only changes — is
22
22
  **non-breaking**. `bin/check` fails if a heading is missing the tag.
23
23
 
24
+ Every breaking change ships with its `/whs:upgrade` migration (`CHARTER.md` P15).
25
+
24
26
  ---
25
27
 
28
+ ## 2026-11-01-15 [non-breaking]
29
+
30
+ web-house-style adopts its own charter (`CHARTER.md`) and aligns its docs with
31
+ it: scope tiers, what one-time setup stays with the account holder, a push rule
32
+ for Claude Code sessions, and a lifecycle coverage table.
33
+
34
+ Non-breaking: wording, a new doc, and opt-in capability; nothing a compliant
35
+ project does today becomes non-compliant.
36
+
37
+ **What an adopting project does:** nothing required; `/whs:upgrade` picks up the
38
+ new wording. Optionally set `status: parked` in `.claude/project/index.md` to
39
+ have `bin/fleet` skip the project.
40
+
41
+ `templates/verify.sh` is still red only on the known bandit advisory
42
+ (phoenix-bandit-advisory), unrelated to this release.
43
+
44
+ **Closes:** whs-charter-v1
45
+
46
+ ### CHARTER.md
47
+ New: the standard's own charter (idea, audience, success criteria S1–S8, principles P1–P18, out of scope X1–X10).
48
+
49
+ ### core: beyond-this-standard
50
+ Scope tiers; apps of any size sit inside the standard (Idea / S7). Drift-guarded — all three stacks rechecked.
51
+
52
+ ### core: adopting
53
+ One-time setup: only buying, signing up, and minting credentials stay with the account holder; the rest is tooling, tracked as `verifiedOn` until a tool exists (X9 / P16). P15 pointer added.
54
+
55
+ ### core: out-of-scope
56
+ Server logic at the static tier is a tier change, not an extension of the static tier.
57
+
58
+ ### stacks/eleventy-netlify.md
59
+ Mirrored wording for the `beyond-this-standard`, `adopting`, and `out-of-scope` changes.
60
+
61
+ ### stacks/sveltekit-netlify.md
62
+ Mirrored wording for the `beyond-this-standard`, `adopting`, and `out-of-scope` changes.
63
+
64
+ ### stacks/phoenix.md
65
+ Mirrored wording for the `beyond-this-standard`, `adopting`, and `out-of-scope` changes.
66
+
67
+ ### PROCESS.md
68
+ The push line points to `CLAUDE-PROJECT.md`; optional `status: parked` documented; P14 pointer.
69
+
70
+ ### CLAUDE-PROJECT.md
71
+ Auto-push rule: a Mac Claude Code session may push a group of commits only where a push can't deploy, never force-pushes, and runs a pre-push sensitive check first. That check isn't built yet, so pushing stays with the owner for now. The VM never pushes (P4 / X3).
72
+
73
+ ### README.md
74
+ Doc-map row for `CHARTER.md`; lifecycle coverage table (S8); P17 pruning pass with its sweep rule; P13 pointer.
75
+
76
+ ### PROJECT-OVERVIEW.md
77
+ Aligned with the charter (X2).
78
+
79
+ ### bin/fleet
80
+ Parked rows are shown, skipped, and counted.
81
+
82
+ ### BACKLOG.md
83
+ Fleet-upgrade-runner design rewritten; new entries: pre-push-sensitive-check, content-check-vm-mode, shared-record-scripts, ops-automation.
84
+
85
+ ## 2026-11-01-14 [non-breaking]
86
+
87
+ `whs doctor`'s repo tier gains a `native-platform` blocker row: an installed
88
+ package whose `package.json` `os`/`cpu` excludes this machine means
89
+ `node_modules` came from another platform (e.g. the desktop app's Linux shell
90
+ over a Mac install). The row names the packages and points at
91
+ `CLAUDE-PROJECT.md` "Shell environment". It also surfaces in deploy preflight
92
+ and eleventy's audit page via `runRepoChecks`.
93
+
94
+ Non-breaking: tooling only; a normal install on its own machine passes.
95
+
96
+ Still unverified: whether `content-check` fails the same way in the desktop
97
+ app's Linux shell.
98
+
99
+ **What an adopting project does:** `npm update` the whs packages.
100
+
101
+ **Closes:** doctor-platform-mismatch
102
+
103
+ ### packages/whs-core
104
+
105
+ `runRepoChecks` gains the `native-platform` blocker check (last in the repo
106
+ tier) and exports a new `foreignNativePackages(root, { platform, arch })`
107
+ helper. The check reads only top-level and `@scope` `package.json` files and
108
+ follows npm's `os`/`cpu` allow/negation semantics.
109
+
26
110
  ## 2026-11-01-13 [non-breaking]
27
111
 
28
112
  The charter template's Audience section gains an Ownership line: the owner's
package/standard/core.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Web project house style — CORE (stack-agnostic)
2
2
 
3
- **Version:** 2026-11-01-13 · **Status:** active
3
+ **Version:** 2026-11-01-15 · **Status:** active
4
4
 
5
5
  This is the stack-agnostic contract every web project follows, regardless of
6
6
  framework, host, or CSS system. It says **what** must be true, with concrete
@@ -1397,10 +1397,14 @@ the audit page reflects it after a rebuild.
1397
1397
 
1398
1398
  **Implementation.** See your stack's impl doc, same slug.
1399
1399
 
1400
- ## beyond-this-standard — Beyond this standard
1400
+ ## beyond-this-standard — Scope tiers: beyond the static envelope
1401
1401
 
1402
- **Contract.** This standard covers content sites, tool sites, and their forms.
1403
- When a project needs more, that is a deliberate threshold crossing, not a drift.
1402
+ **Contract.** This standard covers websites and web apps of any size
1403
+ (`CHARTER.md` Idea, S7), in tiers. `static+forms` is the default: content
1404
+ sites, tool sites, and their forms, inside the static envelope. The app tier
1405
+ (`+db` / `+auth` / `+ssr`) is also inside the standard, bound by
1406
+ `stacks/phoenix.md`. Crossing from the static tier to the app tier is a
1407
+ deliberate, recorded step (the `scope:` key), not a drift.
1404
1408
 
1405
1409
  **Specs.**
1406
1410
  - **Signals you are past the static envelope:** a database; user accounts /
@@ -1550,9 +1554,14 @@ scaffold it reports the partial result honestly and points at that stack's
1550
1554
  own `TEMPLATE.md`.
1551
1555
 
1552
1556
  **One-time setup.** Adopting, converting, or upgrading against the standard
1553
- often leaves a project owing **one-time human setup** no script can finish for
1554
- it — hosting/repo config, DNS, minting a secret (`#secrets`). That debt is
1555
- tracked the same way `#compliance` already tracks a `MANUAL` row: a committed
1557
+ often leaves a project owing **one-time human setup**. Only buying, signing up
1558
+ and granting access stay with the account holder (the owner, or the client for
1559
+ a client's site): registering domains, paying, creating hosting or service
1560
+ accounts, minting credentials (`#secrets`). Everything after an account
1561
+ exists — site/hosting setup, build settings, DNS records, headers, wiring
1562
+ secrets in, monitoring — is done by a tool (`CHARTER.md` P16, X9). Where no
1563
+ tool exists yet, the step is tracked the same way `#compliance` already tracks
1564
+ a `MANUAL` row until tooling replaces it: a committed
1556
1565
  item carrying a dated `verifiedOn` confirmation, not a message printed once
1557
1566
  to a terminal and forgotten. A session-start check flags any item still
1558
1567
  unconfirmed so it can't go silently stale — **not a gate**; per
@@ -1609,7 +1618,7 @@ governs it and follow that chapter — the slugs are the index (a `<script>` →
1609
1618
  - content-type: tool # tool | article (article => feeds)
1610
1619
  - add-ons: none # or: comma list of modules/ packs no field above implies (calculator, glossary, pages) — see modules/README.md
1611
1620
  - publishing-rate: ~5 pages/week
1612
- - standard-version: 2026-11-01-13 # recommended — enables standard-version drift tracking (#compliance)
1621
+ - standard-version: 2026-11-01-15 # recommended — enables standard-version drift tracking (#compliance)
1613
1622
 
1614
1623
  <!-- optional, present only while a filed need is unresolved -->
1615
1624
  ### Waiting on the standard
@@ -1659,7 +1668,9 @@ wire in, runs an initial compliance pass. It **produces** the initial
1659
1668
  migration backlog; it does not work it — working the backlog stays
1660
1669
  incremental, by hand or later via `/whs:upgrade` once the project is
1661
1670
  version-pinned and catching up to a newer standard release. `/whs:adopt` and
1662
- `/whs:upgrade` are deliberately different commands with different scopes.
1671
+ `/whs:upgrade` are deliberately different commands with different scopes. A
1672
+ release that would break a pinned project ships with the `/whs:upgrade` step
1673
+ that fixes it (`CHARTER.md` P15).
1663
1674
 
1664
1675
  **Feedback to the standard.** Adopting the house style is what surfaces its
1665
1676
  bugs — a check that misfires, a `core.md` ↔ impl-doc contradiction, a Contract
@@ -1876,9 +1887,9 @@ project actually needs it.
1876
1887
  recorded in `CLAUDE.md`, not specified here.
1877
1888
  - **A design-token pipeline** (Style Dictionary et al.) — `#brand-source` as one
1878
1889
  file is the small-project version; graduate only when tokens outgrow it.
1879
- - **Server-side application logic as a way to run the app** — that is
1880
- `#beyond-this-standard`; a thin key-hiding proxy is the one carve-out
1881
- (`#third-parties`).
1890
+ - **Server-side application logic in a project recorded at the static tier** —
1891
+ that is a tier change (`#beyond-this-standard`), not an addition; a thin
1892
+ key-hiding proxy is the one static-tier carve-out (`#third-parties`).
1882
1893
  - **ML infrastructure** — model fine-tuning or training pipelines, a
1883
1894
  vector-store / RAG retrieval layer, an evals harness, a prompt-versioning
1884
1895
  system. `#llm-integration` covers *calling* a model API; building the