@marktiderman/genesis 0.5.0 → 0.5.3

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mark Tiderman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -31,92 +31,19 @@ escape hatch for rare subpaths not mirrored here.
31
31
 
32
32
  ## The Genesis version coordinate
33
33
 
34
- `@marktiderman/genesis`'s own version is the **single canonical coordinate for
35
- the whole Genesis system** — the one number that answers "which Genesis am I
34
+ `@marktiderman/genesis`'s own version is the single canonical coordinate for
35
+ the whole Genesis system — the one number that answers "which Genesis am I
36
36
  on?" for a consuming repo. Pin one umbrella version and the entire set is
37
- determined:
38
-
39
- - **Sub-packages.** The umbrella depends on `@marktiderman/genesis-{core,ui,
40
- design-system,switchboard,ui-native}` via `workspace:*`, which pnpm replaces
41
- with the **exact** published version at pack time. So `@marktiderman/genesis@X`
42
- resolves one reproducible, pinned set — not a caret range that drifts. Each
43
- granular package keeps its own independent semver train; the umbrella version
44
- is the coordinate that names a specific combination of them.
45
- - **Vendored harness.** `scripts/harness/genesis-sync.sh` stamps
46
- `GENESIS_SOURCE_VERSION` in a child's `.genesis/source` from this same umbrella
47
- version (`GENESIS_SOURCE_SHA` stays the precise git-HEAD pointer). So a child's
48
- harness stamp and its `@marktiderman/genesis` npm pin read the **same** number.
49
- - **Plugin / marketplace.** `.claude-plugin/plugin.json`'s `version` tracks the
50
- umbrella coordinate, kept in lockstep by `scripts/harness/sync-plugin-version.mjs`
51
- (run automatically in the release "version packages" step).
52
-
53
- The coordinate advances whenever any pinned sub-package is released. The deciding
54
- option is changesets' `updateInternalDependents` (default `"out-of-range"`) — **not**
55
- `updateInternalDependencies`: because the umbrella pins each sub-package via
56
- `workspace:*`, which changesets resolves to the dependency's **exact** current
57
- version, any sub-package release moves that dependency out of the umbrella's pinned
58
- range, so `out-of-range` pulls the umbrella into the same release plan and bumps it.
59
- (`updateInternalDependencies`, default `"patch"`, only sets the resulting bump
60
- _type_ once the umbrella is already in the plan — it does not decide whether the
61
- umbrella is bumped.) The `workspace:*` exact pin is what makes this automatic — a
62
- caret range would let a patch stay in range and skip the umbrella — so `PKG-04`
63
- enforces the exact pin. The release step then re-syncs the plugin stamp. One pinned
64
- umbrella version therefore means every sub-component **and** the harness is already
65
- "in the system," versioned and pinned together.
66
-
67
- Because this auto-advance rests on a changesets **default** rather than an explicit
68
- config key — a top-level `updateInternalDependents` is silently ignored in changesets
69
- 2.30.0 (the option is read only from the `___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH`
70
- namespace) — the invariant is made upgrade-safe two ways instead: `@changesets/cli` is
71
- pinned to `~2.30.0` so a minor bump can't silently flip the default, and `PKG-05`
72
- empirically re-asserts the umbrella auto-bump on every run (it drives changesets' own
73
- release-plan assembly with a synthetic sub-package-only changeset). A future changesets
74
- change that broke the coordinate would fail CI loudly instead of shipping silently.
75
-
76
- **Caveat — the release-PR window.** The umbrella version bumps via a changesets
77
- "version packages" PR, not on the feature-PR merge itself. So there is a brief,
78
- transient window — feature PR merged, "version packages" PR not yet merged — where
79
- `main`'s `packages/genesis/package.json` still carries the _previous_ umbrella version.
80
- A child that runs `genesis-sync.sh` during that window stamps the new harness contents
81
- with that previous version number. Nothing is silently lost: `GENESIS_SOURCE_SHA` (git
82
- HEAD) is always exact and is the precise pointer; only the human-readable coordinate can
83
- lag by one release until the "version packages" PR merges.
84
-
85
- ## Installing the harness alongside the umbrella
86
-
87
- Installing `@marktiderman/genesis` gives you the DS packages over npm. The **agent harness**
88
- (hooks, skills, the belt CLI, the plugin) is a git-native surface that rides your repo's own
89
- history rather than `node_modules` — so it is *vendored*, not imported. Because the umbrella's
90
- version is the single coordinate, you bootstrap the matching harness in one command, keyed to the
91
- umbrella you just pinned:
92
-
93
- ```bash
94
- npm i @marktiderman/genesis # (or pnpm/bun/yarn add) — the version you pin is the coordinate
95
-
96
- # `@marktiderman/genesis`'s published tarball ships only `dist/` + this README (see `files` in
97
- # package.json) — the bootstrapper script itself is NOT vendored by npm yet, so
98
- # `node_modules/@marktiderman/genesis/scripts/harness/genesis-sync.sh` does not exist. Today, fetch
99
- # that one script straight from the source repo and run it against your repo (it only needs your
100
- # repo root + the installed umbrella manifest — where the script itself lives doesn't matter):
101
- git clone --depth 1 https://github.com/marktiderman/genesis.git /tmp/genesis-src
102
- bash /tmp/genesis-src/scripts/harness/genesis-sync.sh # BOOTSTRAPS: reads the installed umbrella,
103
- # vendors the matching harness + scaffolds
104
- # the Git Data System trellis
105
- rm -rf /tmp/genesis-src
106
-
107
- bash tools/genesis-harness/scripts/harness/genesis roller validate --ci # validate the trellis
108
- ```
109
-
110
- The bootstrap reads the source repo + version straight out of the installed umbrella manifest,
111
- prefers the release tag matching that version (falling back to the branch tip), and writes a
112
- `.genesis/source` stamp recording the vendored version **and** the exact SHA. Re-running the same
113
- script later re-vendors (upgrades) the stamped tree — and once vendored, `tools/genesis-harness/
114
- scripts/harness/genesis sync` is the one-liner for that (see the `sync` skill). One pinned umbrella
115
- version therefore really does mean every sub-component **and** the harness land together, versioned
116
- by one coordinate.
117
-
118
- **Known gap.** The `git clone` step above is a stand-in for a real `npx`-invokable bootstrapper
119
- (e.g. a `bin` entry shipping `genesis-sync.sh` in the umbrella's own tarball, mirroring the
120
- `npx genesis-data init` pattern `@marktiderman/genesis-data` already ships). That packaging work is
121
- tracked as follow-up, not done in this change — don't let this doc drift back to claiming the script
122
- ships with the npm install until it actually does.
37
+ determined: the umbrella depends on `@marktiderman/genesis-{core,ui,
38
+ design-system,switchboard,ui-native}` via `workspace:*`, which pnpm replaces
39
+ with the **exact** published version at pack time. So `@marktiderman/genesis@X`
40
+ resolves one reproducible, pinned set — not a caret range that drifts. Each
41
+ granular package keeps its own independent semver train; the umbrella version
42
+ is the coordinate that names a specific combination of them.
43
+
44
+ The coordinate advances whenever any pinned sub-package is released, via
45
+ changesets' `updateInternalDependents` (default `"out-of-range"`): because the
46
+ umbrella pins each sub-package via `workspace:*` (which changesets resolves to
47
+ the dependency's **exact** current version), any sub-package release moves
48
+ that dependency out of the umbrella's pinned range, pulling the umbrella into
49
+ the same release plan.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marktiderman/genesis",
3
- "version": "0.5.0",
3
+ "version": "0.5.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/marktiderman/genesis.git",
11
11
  "directory": "packages/genesis"
12
12
  },
13
- "license": "UNLICENSED",
13
+ "license": "MIT",
14
14
  "publishConfig": {
15
15
  "access": "public",
16
16
  "provenance": false
@@ -76,10 +76,6 @@
76
76
  "types": "./dist/switchboard-data-provider.d.ts",
77
77
  "import": "./dist/switchboard-data-provider.js"
78
78
  },
79
- "./data": {
80
- "types": "./dist/data.d.ts",
81
- "import": "./dist/data.js"
82
- },
83
79
  "./native": {
84
80
  "types": "./dist/native.d.ts",
85
81
  "react-native": "./dist/native.js",
@@ -88,12 +84,11 @@
88
84
  }
89
85
  },
90
86
  "dependencies": {
91
- "@marktiderman/genesis-core": "1.1.1",
92
- "@marktiderman/genesis-ui": "2.0.0",
93
- "@marktiderman/genesis-design-system": "1.2.0",
94
- "@marktiderman/genesis-switchboard": "2.0.0",
95
- "@marktiderman/genesis-data": "0.3.3",
96
- "@marktiderman/genesis-ui-native": "2.0.1"
87
+ "@marktiderman/genesis-core": "1.1.2",
88
+ "@marktiderman/genesis-ui": "2.3.1",
89
+ "@marktiderman/genesis-design-system": "1.2.1",
90
+ "@marktiderman/genesis-switchboard": "2.0.1",
91
+ "@marktiderman/genesis-ui-native": "2.0.2"
97
92
  },
98
93
  "peerDependencies": {
99
94
  "react": "^19.0.0",
package/dist/data.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "@marktiderman/genesis-data";
package/dist/data.js DELETED
@@ -1,3 +0,0 @@
1
- export * from '@marktiderman/genesis-data';
2
- //# sourceMappingURL=data.js.map
3
- //# sourceMappingURL=data.js.map
package/dist/data.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"data.js","sourcesContent":[]}