You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`CURSOR_API_KEY`|**Yes**|Cursor API key (Dashboard → Integrations / API Keys) |
18
+
|`OPENROUTER_API_KEY`|**Yes**|OpenRouter API key (openrouter.ai → Keys) |
19
19
|`AGENT_PAT`| Recommended | PAT with contents + issues + pull requests write on this repo. Falls back to `GITHUB_TOKEN` (PRs still work; label chaining is less reliable). |
20
20
|`PULSE_REGISTRY_KEY`| Recommended | PulseMCP Sub-Registry API key — resolves Speakeasy MCP Catalog presence before research. Without it, `speakeasy_add_server: auto` guides keep both catalog/custom paths unless remotes are tenanted or the guide forces `custom-remote` / `catalog`. |
21
21
|`PULSE_REGISTRY_TENANT`| Recommended with key | PulseMCP tenant slug (e.g. `gram-recommended`). Required together with the key for catalog lookup. |
@@ -40,7 +40,7 @@ The workflow creates these if missing. You can also create them by hand:
40
40
2. Add the label **`guide:draft`**.
41
41
3. Watch the issue comments and the **Actions** tab (`Guide draft` workflow).
42
42
43
-
Runs can take a long time (often 20–40+ minutes). Usage burns Cursor plan tokens.
43
+
Runs can take a long time (often 20–40+ minutes). Usage burns OpenRouter credits.
44
44
45
45
### What you get
46
46
@@ -103,7 +103,7 @@ A non-factory open PR that already `Closes #<issue>` (collaborator-authored) blo
103
103
## Local equivalent
104
104
105
105
```bash
106
-
exportCURSOR_API_KEY=cursor_...
106
+
exportOPENROUTER_API_KEY=sk-or-...
107
107
mise run draft-guide -- asana --overwrite --notes "drop secret-reset recovery branch"
108
108
# Match factory: pause before draft when material OQs lack Decision N replies
109
109
mise run draft-guide -- x --overwrite --pause-on-scope
@@ -169,7 +169,7 @@ be unavailable).
169
169
branch. Refuse only for non-factory collaborator PRs that target the
Copy file name to clipboardExpand all lines: doctrine/pipeline-lock.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ Normative semantics for `guides/<slug>/pipeline.lock.json`. The JSON Schema is
5
5
6
6
This contract records, per guide, the **input fingerprints** that produced the
7
7
current artifacts so a later drafting run can **skip** steps whose inputs did
8
-
not change. The Cursor SDK workflow (`pipeline/`) honors these rules;
8
+
not change. The drafting pipeline (`pipeline/`) honors these rules;
9
9
`--force` bypasses skips. `--overwrite` / `-y` only skips the guide-exists
10
10
prompt and still honors the lock.
11
11
@@ -106,12 +106,12 @@ in the workflow is an implementation detail.
106
106
| --- | --- | --- | --- | --- |
107
107
|`research`| resolved default model |`doctrine/glossary.md`, `doctrine/shared.md`, `doctrine/roles/technical-research.md`, `doctrine/speakeasy-setup.md`|`[]` (sources are external) |`provider`, `notes`|
108
108
|`draft`| resolved default model |`doctrine/glossary.md`, `doctrine/shared.md`, `doctrine/roles/writer.md`, `doctrine/personas/<id>.md`| stable digests of `research.md`, `meta.yaml`|`provider`, `notes`, `persona`|
109
-
|`review.<dim>`| resolved model for that dimension (default vs light/`sonnet` slot) |`doctrine/glossary.md`, `doctrine/shared.md`, role doc (`fidelity.md` or `review.md`), plus persona file when the dimension uses a persona | stable digests of `research.md`, `meta.yaml`, `external.md`, `speakeasy.md`|`provider`, `notes`, `persona`, `dimension`|
109
+
|`review.<dim>`| resolved model for that dimension |`doctrine/glossary.md`, `doctrine/shared.md`, role doc (`fidelity.md` or `review.md`), plus persona file when the dimension uses a persona | stable digests of `research.md`, `meta.yaml`, `external.md`, `speakeasy.md`|`provider`, `notes`, `persona`, `dimension`|
110
110
111
-
`model` is always the **resolved** model id (e.g.`claude-fable-5`), never a
112
-
slot alias like `sonnet`.
111
+
`model` is always the **resolved** model id (e.g.
112
+
`openrouter/openai/gpt-5.6-sol`), never a slot alias.
113
113
114
-
Top-level `runtime` (e.g. `cursor-sdk`) is observational and **must not**
114
+
Top-level `runtime` (e.g. `pi`) is observational and **must not**
115
115
appear inside `inputs` or affect `input_digest`.
116
116
117
117
## Research unchanged
@@ -200,13 +200,13 @@ Illustrative `guides/box/pipeline.lock.json` (digests are placeholders):
0 commit comments