| Category | Title | Confidence | Updated |
|---|
| gotcha |
discoverLocation root bypasses workspace discovery |
1.00 |
8d ago |
| preference |
Always follow documented plans and processes |
1.00 |
8d ago |
| preference |
Follow package conventions, add regression tests, and fully… |
1.00 |
8d ago |
| gotcha |
getWorkspaceGlobMatches symlink containment and realpath er… |
1.00 |
8d ago |
| gotcha |
getRevisionBranchName detached SHA fallback |
1.00 |
8d ago |
| gotcha |
ReleaseRevision Peggy check-runs authority |
1.00 |
8d ago |
| gotcha |
Git worktree conflict when master is checked out elsewhere |
1.00 |
8d ago |
| preference |
Require exhaustive file:line-cited research before design o… |
1.00 |
8d ago |
| preference |
Always analyze and understand configuration and testing pat… |
1.00 |
8d ago |
| pattern |
action.yml workspace propagation |
1.00 |
8d ago |
| preference |
Publish JSON.parse valid fallbacks |
1.00 |
8d ago |
| decision |
publish-issue-title.peggy generated docs |
1.00 |
8d ago |
| gotcha |
updateReleaseRevision validates SHA |
1.00 |
9d ago |
| gotcha |
publish.yml checkout@v7 parity |
1.00 |
9d ago |
| gotcha |
generate-publish parser docs markers |
1.00 |
9d ago |
| preference |
CI poller resolver edit gate |
1.00 |
9d ago |
| gotcha |
ci-poller subshell continue fallthrough |
1.00 |
9d ago |
| preference |
getsentry/publish CommonJS Vitest conventions |
1.00 |
9d ago |
| gotcha |
ci-poller body trailing newlines |
1.00 |
9d ago |
| gotcha |
publish-issue-format Merge target contract |
1.00 |
9d ago |
| gotcha |
discover-location empty Craft JSON |
1.00 |
9d ago |
| preference |
Use a dedicated, up-to-date branch worktree for changes |
1.00 |
9d ago |
| gotcha |
PUBLISH_ARGS JSON fallback |
1.00 |
9d ago |
| gotcha |
core.setOutput JSON result |
1.00 |
9d ago |
| preference |
Use exact CI-approved identities and authoritative state fo… |
1.00 |
9d ago |
| gotcha |
action.yml PATH_INPUT validation and ambient workspace |
1.00 |
12d ago |
| preference |
Never use the @typescript-eslint/no-unused-vars ESLint rule |
1.00 |
12d ago |
| gotcha |
getWorkspaceGlobMatches brace expansion |
1.00 |
12d ago |
| gotcha |
Craft publishState.ts: filename missing workspace key cause… |
1.00 |
12d ago |
| decision |
publish-issue-validation shared identity predicates |
1.00 |
12d ago |
| gotcha |
Craft workspace selection must be parsed before yargs build… |
1.00 |
12d ago |
| gotcha |
detailsFromContext repo version validation |
1.00 |
12d ago |
| preference |
Always gather dependency-chain context, verify target versi… |
1.00 |
12d ago |
| gotcha |
WorkspaceNameSchema literal glob magic |
1.00 |
12d ago |
| gotcha |
Publish CI label gate avoids stale CI and auto-approve races |
1.00 |
13d ago |
| gotcha |
getWorkspaceNames overlapping globs |
1.00 |
13d ago |
| gotcha |
loadConfigurationFromString workspaceDirectory |
1.00 |
13d ago |
| gotcha |
findConfigFile _configPathCache temp tests |
1.00 |
13d ago |
| pattern |
getsentry/publish Yarn Classic tooling |
1.00 |
18d ago |
| gotcha |
getsentry/craft:latest Publish image contract |
1.00 |
18d ago |
| pattern |
CI poller variable gate with dedicated app token in getsent… |
1.00 |
19d ago |
| gotcha |
WorkspaceSchema __proto__ Zod record loss |
1.00 |
19d ago |
| gotcha |
getsentry/craft Dockerfile uses floating Node base image — … |
1.00 |
20d ago |
| gotcha |
publish.yml default-branch title inference |
1.00 |
20d ago |
| preference |
Peggy extra-options-file keys |
1.00 |
21d ago |
| decision |
Craft publish state never reads repo-local files |
1.00 |
21d ago |
| gotcha |
publish.yml canonical cwd state hash |
1.00 |
21d ago |
| gotcha |
CRAFT_PUBLISH_STATE_GITHUB_REPO identity override |
1.00 |
21d ago |
| preference |
Require full verification, resolved reviews, and explicit a… |
1.00 |
22d ago |
| preference |
Always targets the production environment for Cloudflare de… |
1.00 |
22d ago |
| decision |
CalVer publish issues suppress @mentions |
1.00 |
22d ago |
| pattern |
getsentry/craft publish recovery: check completed targets b… |
1.00 |
22d ago |
| gotcha |
gh api Bash backticks |
1.00 |
23d ago |
| gotcha |
resolveWorkspaceConfig Object.hasOwn prototype names |
1.00 |
23d ago |
| preference |
Prefer minimal, stateless Wrangler-based Cloudflare deploym… |
1.00 |
23d ago |
| preference |
Craft dry-run wrappers |
1.00 |
23d ago |
| pattern |
Craft checkMinimalConfigVersion: strip pre-release only fro… |
1.00 |
23d ago |
| preference |
Enforce preview deployment lifecycle, fork safety, and clea… |
1.00 |
23d ago |
| preference |
Always verify Cloudflare/Wrangler/third-party behavior agai… |
1.00 |
2026-08-07 |
| decision |
tar-fs pinned at 1.16.6 via override (tar-stream@1.x preser… |
1.00 |
2026-08-07 |
| gotcha |
craft dependency-review: @vercel/client exact pins need pnp… |
1.00 |
2026-08-07 |
| gotcha |
gh api review replies/reviewers: form strings 422 — use JSO… |
1.00 |
2026-08-07 |
| preference |
Always use the latest compatibility date for Cloudflare Pag… |
1.00 |
2026-08-03 |
| preference |
Avoids guesses |
1.00 |
2026-08-03 |
| gotcha |
pnpm gotchas: lockfile conflicts, overrides, workspace casc… |
1.00 |
2026-07-28 |
| pattern |
AGENTS.md lore section: only include project-relevant entri… |
1.00 |
2026-07-28 |
| gotcha |
astro@7 docs build fails: root vite ^7.3.5 override downgra… |
1.00 |
2026-07-28 |
| pattern |
Craft publish_repo 'self' sentinel resolves to GITHUB_REPOS… |
1.00 |
2026-07-28 |
| gotcha |
Edit tool triggers Prettier reformatting on the entire file |
1.00 |
2026-07-28 |
| gotcha |
Craft changelog: commits without PRs were forced into lefto… |
1.00 |
2026-07-28 |
| pattern |
Use release-bot token for cross-repo API calls in getsentry… |
1.00 |
2026-07-28 |
| pattern |
GitHub App token scoping for cross-repo CI status checks |
1.00 |
2026-07-28 |
| pattern |
getsentry/publish: label-based state machine for publish ga… |
1.00 |
2026-07-28 |
| pattern |
Craft workspace discovery supports npm/yarn/pnpm uniformly |
1.00 |
2026-07-28 |
| pattern |
Craft PR review workflow: subagent self-review + bot-findin… |
1.00 |
2026-07-28 |
| pattern |
Craft Docker container auth: credentials come from volume-m… |
1.00 |
2026-07-28 |
| gotcha |
spawnProcess no-ops in dry-run — breaks post-check logic |
1.00 |
2026-07-28 |
| gotcha |
Publish issue title monorepo suffix breaks owner/repo parsi… |
1.00 |
2026-07-28 |
| gotcha |
npm version --workspaces fails on workspace:* deps but stil… |
1.00 |
2026-07-28 |
| gotcha |
GitHub App tokens expire after 1 hour — breaks long-running… |
1.00 |
2026-07-28 |
| gotcha |
CI poller needs release-bot token for private repo CI statu… |
1.00 |
2026-07-28 |
| gotcha |
actions/create-github-app-token v3 deprecated app-id input |
1.00 |
2026-07-28 |
| architecture |
getsentry/publish poller: active-polling via self-dispatch,… |
1.00 |
2026-07-28 |
| gotcha |
Craft resolveWorkspaceConfig: github merge must reject inco… |
1.00 |
2026-07-22 |
| pattern |
Craft git.ts: treat tag/branch prefixes as opaque strings, … |
1.00 |
2026-07-21 |
| gotcha |
Craft cloudflare target: ${VAR} expansion guard misses API-… |
1.00 |
2026-07-21 |
| preference |
Always cut a new release immediately after merging a fix or… |
1.00 |
2026-07-16 |
| pattern |
getsentry/craft: cut a release immediately after a signific… |
1.00 |
2026-07-16 |
| preference |
Always be consistent |
1.00 |
2026-07-15 |
| preference |
Make sure to add wrangler binary to the omnibus docker image |
1.00 |
2026-07-15 |
| preference |
Always sets repo_url from githubRepo config |
1.00 |
2026-07-15 |
| preference |
Always specify a [script_name](https://developers |
1.00 |
2026-07-15 |
| preference |
Always implement isInWorktreeMode() to check current mode |
1.00 |
2026-07-15 |
| preference |
Always enable worktree mode using enableWorktreeMode() |
1.00 |
2026-07-15 |
| preference |
Always add dry-run logging with consistent formatting via l… |
1.00 |
2026-07-15 |
| preference |
Always add dry-run awareness to createDryRunIsolation() |
1.00 |
2026-07-15 |
| preference |
Always revert back to using the GitHub |
1.00 |
2026-07-15 |
| preference |
Never be marked as latest |
1.00 |
2026-07-15 |
| preference |
Never return: it terminates the process with the |
1.00 |
2026-07-15 |
| preference |
Never swept in by accident |
1.00 |
2026-07-15 |
| gotcha |
Node.js 22.23.0/24.17.0 ERR_STREAM_PREMATURE_CLOSE regressi… |
1.00 |
2026-06-24 |
| gotcha |
getsentry/craft: tar is a pinned devDep (no caret) — must b… |
1.00 |
2026-06-23 |
| pattern |
getsentry/craft: form-data has two transitive copies requir… |
1.00 |
2026-06-23 |
| pattern |
Craft uses home-grown SemVer utils — don't add semver packa… |
1.00 |
2026-06-10 |
| pattern |
Craft npm target OIDC detection via CI environment variables |
1.00 |
2026-06-10 |
| pattern |
CLI UX: auto-correct common user mistakes with stderr warni… |
1.00 |
2026-06-10 |
| gotcha |
Lore tool seeds generic entries unrelated to the project — … |
1.00 |
2026-06-10 |
| gotcha |
Craft docs/src/content/docs/configuration.md duplicates DEF… |
1.00 |
2026-06-10 |
| architecture |
Craft tsconfig.build.json is now self-contained — no @sentr… |
1.00 |
2026-06-10 |
| architecture |
Craft npm target auth: temp .npmrc via npm_config_userconfi… |
1.00 |
2026-06-10 |
| preference |
Require rigorous read-only, evidence-based final reviews an… |
0.90 |
8d ago |
| decision |
discover-location.js workflow discovery |
0.90 |
8d ago |
| gotcha |
prepare-dry-run e2e tests require EDITOR env var for git co… |
0.90 |
20d ago |
| gotcha |
git stash pop without ref grabs another branch's stash |
0.90 |
2026-08-07 |
| gotcha |
GitHub stale CHANGES_REQUESTED: only new review or dismissa… |
0.90 |
2026-08-07 |
| decision |
cloudflare.md token permissions |
0.90 |
2026-08-03 |
| gotcha |
bun pm pack reads workspace versions from bun.lock, not pac… |
0.90 |
2026-07-28 |
| architecture |
Craft static bumpVersion pattern across targets |
0.90 |
2026-07-28 |
| architecture |
Craft post-publish merge is non-blocking housekeeping |
0.90 |
2026-07-28 |
| decision |
Rejected Alchemy IaC framework for craft's Cloudflare target |
0.90 |
2026-07-22 |
| architecture |
Craft workspace resolver reaches release-branch naming — no… |
0.90 |
2026-07-22 |
| gotcha |
Craft workspace-level github override needs partial schema,… |
0.90 |
2026-07-22 |
| architecture |
Craft .prettierignore exclusions and why |
0.90 |
2026-07-21 |
| architecture |
Craft Cloudflare target: deployType defaults to worker, acc… |
0.90 |
2026-07-21 |
| gotcha |
Cloudflare Pages: use top-level production_branch, not sour… |
0.90 |
2026-07-21 |
| gotcha |
Vite plugin delegates deployment to wrangler |
0.90 |
2026-07-15 |
| gotcha |
getsentry/craft bootstrap deadlock: gcs target runs before … |
0.90 |
2026-06-26 |
| gotcha |
getsentry/craft: pnpm overrides don't apply to auto-install… |
0.90 |
2026-06-23 |
| architecture |
getsentry/craft has two independent pnpm projects: root and… |
0.90 |
2026-06-23 |
| decision |
Craft workspaces redesign: PR sequence status |
0.90 |
2026-07-22 |
| pattern |
Craft config.ts: extract pure isVersionGteMinVersion to avo… |
0.85 |
2026-07-22 |
| gotcha |
Craft src/index.ts has top-level side effect — never import… |
0.85 |
2026-07-22 |
| pattern |
Craft config.ts caches: _configCache, _globalGitHubConfigCa… |
0.85 |
2026-07-22 |
| preference |
Always add paired fail-closed regression tests |
0.80 |
8d ago |
| preference |
Wait for CI approval before publishing releases |
0.80 |
8d ago |
| preference |
Verify live workflow configuration before dispatching relea… |
0.80 |
8d ago |
| preference |
Always update tests for workspace behavior changes |
0.80 |
8d ago |
| preference |
Review code before committing |
0.80 |
8d ago |
| preference |
Require audit-driven fixes with focused regression coverage |
0.80 |
8d ago |
| gotcha |
walkFiles maxResults concurrency ordering |
0.80 |
8d ago |
| decision |
getWorkspaceGlobMatches keeps globSync |
0.80 |
8d ago |
| preference |
Prefer minimal, fail-closed fixes backed by direct inspecti… |
0.80 |
8d ago |
| preference |
Always load repository setup before situation-specific skil… |
0.80 |
8d ago |
| preference |
Require strict read-only, fail-closed release-workflow audi… |
0.80 |
9d ago |
| preference |
Always enforce strict publish-controller contracts and revi… |
0.80 |
9d ago |
| preference |
Maintain strict canonical contracts with regression coverage |
0.80 |
9d ago |
| preference |
Trust stated system invariants |
0.80 |
9d ago |
| preference |
Require strict validation without normalization |
0.80 |
9d ago |
| preference |
Always enforce strict fail-closed publish-issue parsing |
0.80 |
9d ago |
| gotcha |
detailsFromContext workspaceJson escapes |
0.80 |
9d ago |
| preference |
Prefer Peggy as the canonical single source for Publish par… |
0.80 |
9d ago |
| preference |
Clarify ambiguous requirements before finalizing implementa… |
0.80 |
9d ago |
| preference |
Inspect canonical parsing and validation paths before chang… |
0.80 |
9d ago |
| preference |
Prefer explicit, fail-closed publish workflow design |
0.80 |
9d ago |
| preference |
Continue high-priority Publish work from the existing state |
0.80 |
9d ago |
| preference |
Prefer fail-closed validation over implicit fallback |
0.80 |
11d ago |
| preference |
Always remove unrelated diff churn before merging |
0.80 |
12d ago |
| preference |
Always push completed work when requested |
0.80 |
12d ago |
| preference |
State and enforce critical behavioral contracts explicitly |
0.80 |
12d ago |
| preference |
Require end-to-end compatibility for workspace release chan… |
0.80 |
13d ago |
| preference |
Preserve configured values and relax only derived inputs |
0.80 |
13d ago |
| gotcha |
getsentry/publish prettier script rewrites src |
0.80 |
13d ago |
| preference |
Use concrete workspace paths for glob-based configuration |
0.80 |
13d ago |
| preference |
Enforce explicit edge-case invariants |
0.80 |
22d ago |
| preference |
Prefer security-focused state isolation across release work… |
0.80 |
22d ago |
| preference |
Inspect applied fixes after patch failures |
0.80 |
23d ago |
| preference |
Prefer built-in platform parsers over manual argument scann… |
0.80 |
23d ago |
| pattern |
getsentry/craft open Dependabot alerts: smol-toml, cookie, … |
0.80 |
2026-08-07 |
| gotcha |
Dependabot alerts stay open right after merge — re-scan aut… |
0.80 |
2026-08-07 |
| preference |
Prefer submitting a new approval over dismissing a stale re… |
0.80 |
2026-08-07 |
| preference |
Always preserve and systematically re-apply changes in a br… |
0.80 |
2026-08-07 |
| decision |
docs-preview.yml removed: defer previews to Cloudflare-side… |
0.80 |
2026-08-04 |
| pattern |
Cloudflare artifact layout wrangler.jsonc + dist at zip root |
0.80 |
2026-08-04 |
| gotcha |
semgrep-code-getsentry[bot] flags lockfile deps by CVE hist… |
0.80 |
2026-07-28 |
| gotcha |
Dependabot phantom alert: lockfile version outside vulnerab… |
0.80 |
2026-07-28 |
| preference |
Always investigate and remediate Dependabot/security alerts… |
0.80 |
2026-07-28 |
| pattern |
Craft: split unrelated work into separate PRs off master (e… |
0.80 |
2026-07-22 |
| pattern |
Craft PR workflow: branch/cherry-pick/notes; amend pre-push… |
0.80 |
2026-07-22 |
| gotcha |
Craft resolveWorkspaceConfig: targets array is reference-sh… |
0.80 |
2026-07-22 |
| preference |
Verify version-gate constants against actual package.json v… |
0.80 |
2026-07-22 |
| preference |
Respect explicitly rejected approaches |
0.80 |
2026-07-21 |
| gotcha |
Craft CI: Node 22/24 CLI smoke test flakes with spawn ETXTB… |
0.80 |
2026-07-21 |
| gotcha |
Craft: local `pnpm lint` doesn't catch CI's prettier check … |
0.80 |
2026-07-21 |
| gotcha |
Craft cloudflare target: reportError() inside its own try b… |
0.80 |
2026-07-21 |
| preference |
Always provide comprehensive context for code reviews and t… |
0.80 |
2026-07-16 |
| preference |
Always switch to a specific branch before exploring the rep… |
0.80 |
2026-07-15 |
| preference |
Always call plan_exit to indicate done planning |
0.80 |
2026-07-15 |
| preference |
Always clean up merged branches and scratch directories aft… |
0.80 |
2026-06-26 |
| preference |
Always prep a draft PR immediately and set a reminder to me… |
0.80 |
2026-06-24 |
| decision |
Peggy Publish title parser |
0.70 |
19d ago |
| gotcha |
publish-issue-title parser --check freshness |
0.70 |
18d ago |
| gotcha |
publish-issue-title.js ESLint generation |
0.70 |
19d ago |
| pattern |
docs/publish-issue-format.md contract |
0.32 |
21d ago |