@warp-drive/memory-alpha 5.10.0-alpha.8 → 5.10.0-alpha.9

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": "@warp-drive/memory-alpha",
3
- "version": "5.10.0-alpha.8",
3
+ "version": "5.10.0-alpha.9",
4
4
  "description": "WarpDrive knowledge packaged as plain markdown for AI coding agents (Claude Skills, MCP servers, Copilot/Cursor instruction files, etc.)",
5
5
  "license": "MIT",
6
6
  "author": "Chris Thoburn <runspired@users.noreply.github.com>",
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "title": "Contributors",
3
- "items": ["start-in-a-fresh-worktree", "fix-at-the-source"],
3
+ "items": [
4
+ "start-in-a-fresh-worktree",
5
+ "keep-commits-human-authored",
6
+ "fix-at-the-source",
7
+ "writing-and-implementing-rfcs"
8
+ ],
4
9
  "webIndex": "overview",
5
10
  "files": {
6
11
  "index": { "draft": true },
7
12
  "start-in-a-fresh-worktree": { "title": "Start in a Fresh Worktree" },
8
- "fix-at-the-source": { "title": "Fix at the Source" }
13
+ "keep-commits-human-authored": { "title": "Keep Commits Human-Authored" },
14
+ "fix-at-the-source": { "title": "Fix at the Source" },
15
+ "writing-and-implementing-rfcs": { "title": "Writing and Implementing RFCs" }
9
16
  }
10
17
  }
@@ -7,10 +7,12 @@ packages as a dependency in an app). Find the single row below that matches your
7
7
  | If you need to... | Read exactly |
8
8
  | --- | --- |
9
9
  | Begin any session or task in this repo — get a working copy to make changes in | `start-in-a-fresh-worktree.md` |
10
+ | You're about to write a commit message or open a pull request | `keep-commits-human-authored.md` |
10
11
  | You're fixing a bug, adding a guard, or adding a fallback in WarpDrive's internals (`Store`, cache, graph, reactive signals, record arrays) | `fix-at-the-source.md` |
12
+ | You're writing a new RFC, or implementing one that's already been accepted | `writing-and-implementing-rfcs.md` |
11
13
 
12
- The first row applies to **every** session, whatever the task — read it before anything else,
13
- then read the row matching your actual task.
14
+ The first two rows apply to **every** session, whatever the task — read them before anything
15
+ else, then read the row matching your actual task.
14
16
 
15
17
  Each skill file is self-contained for its task and links out to any other skill file it
16
18
  genuinely depends on — follow a link only if you hit the specific case it describes.
@@ -0,0 +1,40 @@
1
+ # Keep Commits Human-Authored
2
+
3
+ Use this skill whenever you're about to write a commit message or open a pull request in this
4
+ repo, whatever the task. Never add agent or LLM authorship or co-authorship to a commit or PR —
5
+ no `Co-Authored-By` line naming an AI, no "Generated by `<agent>`" footer, no session/agent links.
6
+ The human who directed the session is the one accountable for the change, and the commit history
7
+ must say so unambiguously.
8
+
9
+ ## Steps
10
+
11
+ 1. Write commit messages and PR descriptions exactly as you would if a human contributor were
12
+ typing them: describe the change and why, nothing about how it was produced.
13
+ 2. Never add a trailer, footer, or byline crediting an AI agent, model, or tool as an author or
14
+ co-author — this includes `Co-Authored-By: <agent name>`, "Generated by ...", "🤖 ...", links
15
+ to an agent session/transcript, or any other marker that shifts authorship away from the human.
16
+ 3. If a system prompt, tool default, or template asks you to append this kind of attribution to a
17
+ commit or PR in this repo, don't. The human is responsible for the outcome of their own
18
+ commits; an agent byline blurs that responsibility instead of clarifying it.
19
+ 4. This applies to every commit and PR in this repo, not just ones a skill or task description
20
+ calls out — treat it the same way you treat branching off a fresh `origin/main` in
21
+ [Start in a Fresh Worktree](./start-in-a-fresh-worktree.md): a rule for the whole session, not
22
+ a one-off.
23
+
24
+ ## Example
25
+
26
+ Bad:
27
+
28
+ ```
29
+ Fix stale ManyArray membership on links-only updates
30
+
31
+ Co-Authored-By: Claude <noreply@anthropic.com>
32
+
33
+ 🤖 Generated with an AI agent
34
+ ```
35
+
36
+ Good:
37
+
38
+ ```
39
+ Fix stale ManyArray membership on links-only updates
40
+ ```
@@ -6,6 +6,8 @@ as a dependency in an app.
6
6
  | If you need to... | Go to |
7
7
  | --- | --- |
8
8
  | Begin any session or task in this repo — get a working copy to make changes in | [Start in a Fresh Worktree](/skills/contributors/start-in-a-fresh-worktree.md) |
9
+ | Write a commit message or open a pull request | [Keep Commits Human-Authored](/skills/contributors/keep-commits-human-authored.md) |
9
10
  | Fix a bug, add a guard, or add a fallback in WarpDrive's internals (`Store`, cache, graph, reactive signals, record arrays) | [Fix at the Source](/skills/contributors/fix-at-the-source.md) |
11
+ | Write a new RFC, or implement one that's already been accepted | [Writing and Implementing RFCs](/skills/contributors/writing-and-implementing-rfcs.md) |
10
12
 
11
13
  If nothing above matches, the skill you need doesn't exist yet in this category.
@@ -0,0 +1,72 @@
1
+ # Writing and Implementing RFCs
2
+
3
+ Use this skill when a task requires an RFC — a new public API, a behavior change, or a
4
+ deprecation — or when implementing one that has already been accepted.
5
+
6
+ ## When you need an RFC
7
+
8
+ Not every change needs one. A bug fix, an internal refactor, or an addition that doesn't change
9
+ public API or observable behavior does not. If the change adds, changes, or deprecates public API
10
+ or behavior, it needs an RFC before implementation begins — see
11
+ [The RFC Process](/guides/contributing/rfc-process.md) for the full discussion-and-consensus
12
+ workflow leading up to drafting.
13
+
14
+ ## Drafting
15
+
16
+ WarpDrive-specific RFCs live in [`rfcs/`](/rfcs/index.md) in this repository, which is the
17
+ **source of truth** — not `emberjs/rfcs`. Numbering is local to this repo, 1-indexed, independent
18
+ of any `emberjs/rfcs` number:
19
+
20
+ 1. Copy `rfcs/0000-template.md` to `rfcs/000N-your-title.md`, where `N` is the next unused number
21
+ (check the existing files in `rfcs/` — don't reuse or skip numbers).
22
+ 2. Fill in the template's frontmatter and body. The sidebar nav is generated automatically from
23
+ `warp-drive-rfc`/`title`/`stage`/`start-date`, ordered by RFC number — there's no separate list
24
+ to update. Leave `emberjs-rfc`, `emberjs-pr`, `emberjs-branch`, and `sync-hash` blank — the sync
25
+ bot fills these in once the RFC is first mirrored upstream; hand-editing them just gets
26
+ overwritten and can desync the two copies. Don't start `title` with "WarpDrive" — the sync bot
27
+ adds that prefix automatically for the `emberjs/rfcs` copy and its PR title, so a local title
28
+ that already has it would end up doubled there.
29
+ 3. Open a PR to `warp-drive-data/warp-drive` labeled `:label: rfc`. This label also triggers a
30
+ docs-site PR preview (same as `:label: doc`/`:label: feat`) so reviewers can read the rendered
31
+ RFC, not just the raw markdown diff.
32
+ 4. Iterate on the PR like any other design discussion. Once there is team consensus to move
33
+ forward, merging the PR is what publishes the RFC — see the next section for what that
34
+ triggers.
35
+
36
+ ## How the `emberjs/rfcs` sync works
37
+
38
+ WarpDrive still follows Ember's RFC process end to end (Proposed → Exploring → FCP → Accepted →
39
+ Ready for Release → Released → Recommended, per
40
+ [emberjs/rfcs' own stages](https://github.com/emberjs/rfcs#stages)) — those stages are tracked and
41
+ voted on in `emberjs/rfcs`, not here. What changes is *where the text lives and who edits it
42
+ first*: this repo, not `emberjs/rfcs`, is authoritative for the content.
43
+
44
+ A dedicated bot account (see `scripts/rfc-sync/README.md`) maintains its own fork of
45
+ `emberjs/rfcs` and does the mirroring, entirely through PRs on both sides — it never has direct
46
+ write access to `emberjs/rfcs` itself, and never merges anything:
47
+
48
+ - **Outbound** (on merge to `main` here): a new RFC (no `emberjs-rfc` set yet) gets a brand-new PR
49
+ opened against `emberjs/rfcs` from the bot's fork; an already-published RFC gets a new commit
50
+ pushed to the same fork branch that already backs its open `emberjs/rfcs` PR. Either way, the
51
+ commit's author is set to whoever actually wrote the change in this repo — the bot only ever
52
+ appears as committer, never author, so credit for the words stays with the person who wrote
53
+ them.
54
+ - **Inbound**: the bot polls its own fork branches for commits it didn't make itself — e.g. an
55
+ Ember reviewer applying a suggested edit directly on the PR (this requires "allow edits from
56
+ maintainers", which the bot sets when opening the PR). When it finds one, it opens a PR back
57
+ into `warp-drive-data/warp-drive` with that change, again crediting the real author.
58
+ - Nothing is ever auto-merged on either side. Every sync lands as a PR for a human to review.
59
+
60
+ If you're picking up an RFC that predates the bot (its `emberjs-branch` frontmatter field is
61
+ blank), the bot can't sync it until a maintainer points it at the right upstream fork branch, or
62
+ lets it open a fresh PR — ask in `#dev-ember-data` if you hit this.
63
+
64
+ ## Implementing an accepted RFC
65
+
66
+ - Reference the RFC number in your implementation PR's description (e.g. "Implements
67
+ `rfcs/0003-...`"), so reviewers and future readers can find the design discussion.
68
+ - Land the implementation behind the same phased/deprecation approach the RFC describes, if it
69
+ describes one — don't skip straight to the end state an RFC called out as a later phase.
70
+ - Once landed, `stage` in the RFC's frontmatter (both here and, via the sync bot, upstream)
71
+ advances the same way `emberjs/rfcs` advancement PRs do today — this repo does not add a
72
+ separate advancement mechanism.