@jaybeeuu/agent-cortex 2.1.0 → 2.3.0
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/CHANGELOG.md +411 -0
- package/README.md +33 -13
- package/agents/README.md +22 -10
- package/agents/plan/agent.md +2 -2
- package/agents/ralph/agent.md +126 -88
- package/agents/ralph/claude/frontmatter.json +3 -3
- package/agents/ralph/claude/wake.md +46 -0
- package/agents/ralph/pi/{polling.md → wake.md} +35 -20
- package/agents/ralph-plan/agent.md +23 -11
- package/bin/agent-cortex.mjs +66 -4
- package/bin/installers/claude.mjs +182 -68
- package/bin/installers/pi.mjs +200 -24
- package/extensions/agent-guardrails/README.md +1 -1
- package/extensions/agent-guardrails/guardrails.ts +1 -1
- package/extensions/agent-guardrails/index.ts +1 -1
- package/extensions/agent-modes/discover.test.ts +2 -2
- package/extensions/output-style/README.md +1 -1
- package/extensions/output-style/index.ts +2 -2
- package/extensions/output-style/output-style.ts +2 -2
- package/hooks/claude/scripts/notify.mjs +8 -1
- package/lib/cli.mjs +91 -2
- package/package.json +27 -3
- package/scripts/check-changeset.mjs +4 -0
- package/scripts/check-no-sync.mjs +5 -1
- package/scripts/lib/compose-agent.mjs +69 -9
- package/scripts/lib/fs.mjs +10 -2
- package/scripts/lib/migrate.mjs +736 -0
- package/scripts/lib/release-gates.mjs +21 -1
- package/scripts/lib/skill-frontmatter.mjs +23 -6
- package/scripts/lib/skill-links.mjs +52 -0
- package/scripts/lib/verify-worker-tree.mjs +25 -0
- package/scripts/resolve-publish-command.mjs +4 -0
- package/skills/engineering/design-an-interface/SKILL.md +3 -3
- package/skills/engineering/grill-with-docs/SKILL.md +3 -5
- package/skills/engineering/improve-codebase-architecture/SKILL.md +5 -4
- package/skills/engineering/tdd/SKILL.md +5 -7
- package/skills/engineering/technical-direction/SKILL.md +5 -5
- package/skills/planning/classify-bead/REFERENCE.md +3 -3
- package/skills/planning/classify-bead/SKILL.md +14 -9
- package/skills/planning/classify-bead/scripts/classify-bead.mjs +5 -4
- package/skills/planning/create-task/REFERENCE.md +52 -3
- package/skills/planning/create-task/SKILL.md +70 -26
- package/skills/planning/create-task/scripts/{create-chores.ts → create-chores.mjs} +48 -23
- package/skills/planning/flesh-out-idea/REFERENCE.md +116 -0
- package/skills/planning/flesh-out-idea/SKILL.md +146 -0
- package/skills/planning/prd-to-tasks/REFERENCE.md +54 -5
- package/skills/planning/prd-to-tasks/SKILL.md +22 -16
- package/skills/planning/record-idea/FORMAT.md +66 -17
- package/skills/planning/record-idea/SKILL.md +48 -24
- package/skills/planning/request-refactor-plan/SKILL.md +4 -4
- package/skills/planning/spec-to-tickets/SKILL.md +5 -5
- package/skills/planning/write-a-prd/SKILL.md +8 -9
- package/skills/planning/write-a-ticket/SKILL.md +4 -6
- package/skills/productivity/bd-tool/SKILL.md +15 -10
- package/skills/productivity/grill-me/SKILL.md +5 -0
- package/skills/productivity/init-beads/SKILL.md +3 -3
- package/skills/productivity/migration/REFERENCE.md +227 -0
- package/skills/productivity/migration/SKILL.md +188 -0
- package/skills/productivity/validate-agent-dir/scripts/{validate-agent-dir.ts → validate-agent-dir.mjs} +49 -28
- package/skills/productivity/write-a-skill/SKILL.md +5 -5
- package/skills/review/maintain-agent-docs/SKILL.md +5 -7
- package/skills/review/refactor-skill/SKILL.md +4 -3
- package/skills/review/review-security/SKILL.md +3 -5
- package/skills/style/style-code/SKILL.md +5 -10
- package/skills/style/style-comms/SKILL.md +5 -7
- package/skills/style/style-documentation/SKILL.md +5 -6
- package/skills/style/style-tests/SKILL.md +5 -7
- package/skills/workflow/git-workflow/SKILL.md +52 -26
- package/skills/workflow/hitl-collab/SKILL.md +4 -6
- package/skills/workflow/plan/SKILL.md +41 -30
- package/skills/workflow/ralph/REFERENCE.md +182 -51
- package/skills/workflow/ralph/SKILL.md +89 -50
- package/skills/workflow/run-pipeline-stage/SKILL.md +72 -71
- package/skills/workflow/run-pipeline-stage/playbooks/code.md +11 -0
- package/skills/workflow/run-pipeline-stage/playbooks/document.md +12 -0
- package/skills/workflow/run-pipeline-stage/playbooks/fix.md +12 -0
- package/skills/workflow/run-pipeline-stage/playbooks/review.md +11 -0
- package/skills/workflow/run-pipeline-stage/playbooks/verify.md +13 -0
- package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +73 -1
- package/token-map.README.md +9 -4
- package/token-map.json +13 -6
- package/.agents/skills/style-versioning/SKILL.md +0 -172
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.github/workflows/ci.yml +0 -302
- package/.junie/guidelines.md +0 -87
- package/.junie/mcp/mcp.json +0 -10
- package/AGENTS.md +0 -153
- package/agents/ralph/claude/polling.md +0 -31
- package/agents-native/ralph.md +0 -203
- package/docs/claude-hooks.md +0 -144
- package/docs/commit-signing.md +0 -231
- package/docs/ideas/auto-model-selection.md +0 -75
- package/docs/ideas/ban-content-assertion-tests.md +0 -75
- package/docs/ideas/bead-progress-notes-for-session-resumption.md +0 -75
- package/docs/ideas/classify-beads-via-deterministic-script-with-agent-fallback.md +0 -70
- package/docs/ideas/ctx-alias-version-and-update-commands.md +0 -65
- package/docs/ideas/ctx-feedback-command-for-capturing-ideas-from-any-machine.md +0 -67
- package/docs/ideas/dedicated-review-tests-skill.md +0 -71
- package/docs/ideas/deployment-beads-for-post-merge-pipelines.md +0 -36
- package/docs/ideas/design-and-delivery-as-separate-bead-trees/design-and-delivery-as-separate-bead-trees.md +0 -99
- package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md +0 -42
- package/docs/ideas/extension-manifests.md +0 -121
- package/docs/ideas/improve-pi-system-prompt.md +0 -43
- package/docs/ideas/map-every-cortex-tool-to-a-real-pi-equivalent.md +0 -95
- package/docs/ideas/model-selector.md +0 -40
- package/docs/ideas/pi-task-memory.md +0 -34
- package/docs/ideas/qa-extension.md +0 -43
- package/docs/ideas/record-idea-implementation-questions.md +0 -68
- package/docs/ideas/record-ideas-as-beads.md +0 -115
- package/docs/ideas/self-flushing-session.md +0 -72
- package/docs/ideas/state-in-beads-not-md.md +0 -69
- package/docs/ideas/subagent-visibility.md +0 -72
- package/docs/ideas/task-session-context.local.md +0 -95
- package/docs/ideas/task-session-context.md +0 -89
- package/docs/ideas/test-data-creation-helpers.md +0 -92
- package/docs/ideas/test-planning-stage-bead-in-feature-planning.md +0 -68
- package/docs/ideas/unified-ci-pipeline.md +0 -28
- package/docs/ideas/unify-the-ticket-and-task-decomposition-workflows.md +0 -71
- package/docs/ideas/worktree-housekeeping-for-closed-beads.md +0 -39
- package/docs/inspirations.md +0 -33
- package/docs/research/disable-model-invocation.md +0 -82
- package/docs/research/gas-city-research.md +0 -256
- package/docs/research/skill-design-research.md +0 -286
- package/docs/research/skill-improvements-analysis.md +0 -117
- package/docs/research/skill-patterns-research.md +0 -24
- package/docs/skills/skill-anatomy.md +0 -200
- package/docs/technical-direction/harness-config.md +0 -177
- package/docs/technical-direction/migration-execution-labels.md +0 -177
- package/docs/user-preferences.md +0 -17
- package/extensions/agent-guardrails/tsconfig.json +0 -12
- package/extensions/agent-modes/tsconfig.json +0 -12
- package/extensions/output-style/tsconfig.json +0 -12
- package/extensions/session-start/tsconfig.json +0 -12
- package/extensions/skill-stats/pnpm-lock.yaml +0 -329
- package/extensions/skill-stats/tsconfig.json +0 -12
- package/extensions/subagent/agents/planner.md +0 -37
- package/extensions/subagent/agents/reviewer.md +0 -35
- package/extensions/subagent/agents/scout.md +0 -50
- package/extensions/subagent/agents/worker.md +0 -24
- package/extensions/subagent/prompts/implement-and-review.md +0 -10
- package/extensions/subagent/prompts/implement.md +0 -10
- package/extensions/subagent/prompts/scout-and-plan.md +0 -9
- package/extensions/subagent/tsconfig.json +0 -12
- package/pi/keybindings.json +0 -3
- package/pi/settings.json +0 -34
- package/pnpm-workspace.yaml +0 -14
- package/skills/planning/create-task/scripts/package.json +0 -14
- package/skills/planning/create-task/scripts/pnpm-lock.yaml +0 -342
- package/skills/planning/create-task/scripts/tsconfig.json +0 -12
- package/skills/planning/record-idea/scripts/new-idea.sh +0 -89
- package/skills/productivity/validate-agent-dir/scripts/package.json +0 -15
- package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +0 -329
- package/skills/productivity/validate-agent-dir/scripts/pnpm-workspace.yaml +0 -2
- package/skills/productivity/validate-agent-dir/scripts/tsconfig.json +0 -19
- package/skills/productivity/validate-agent-dir/scripts/validate-agent-dir.test.ts +0 -317
- package/skills/workflow/run-pipeline-stage/REFERENCE.md +0 -22
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.test.ts +0 -682
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +0 -588
- package/skills/workflow/run-pipeline-stage/scripts/package.json +0 -15
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +0 -342
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-workspace.yaml +0 -2
- package/skills/workflow/run-pipeline-stage/scripts/tsconfig.json +0 -12
- package/test/classify-bead.test.mjs +0 -277
- package/test/claude-installer.test.mjs +0 -308
- package/test/cli.test.mjs +0 -314
- package/test/create-chores.test.mjs +0 -85
- package/test/fake-bd.test.mjs +0 -72
- package/test/fs.test.mjs +0 -76
- package/test/helpers/fake-bd.mjs +0 -87
- package/test/helpers/fake-claude.mjs +0 -152
- package/test/helpers/fake-pi.mjs +0 -132
- package/test/installer.test.mjs +0 -806
- package/test/notify-hook.test.mjs +0 -63
- package/test/pending-gates.test.mjs +0 -147
- package/test/pi-installer.test.mjs +0 -785
- package/test/pi-register.test.mjs +0 -342
- package/test/pi-sweep.test.mjs +0 -619
- package/test/release-gates.test.mjs +0 -190
- package/test/skill-frontmatter.test.mjs +0 -137
- package/test/verify-worker-tree.test.mjs +0 -120
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# Idea: ban-content-assertion-tests
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Filed as epic `agnt-ctx-h9gt` (2026-10-06) — awaiting `prd-to-tasks`. Slice 1 (the
|
|
5
|
-
`style-tests` ban) shipped earlier in `daa77c8` (PR #143); this epic covers the review-gate
|
|
6
|
-
enforcement and the skill sweep.
|
|
7
|
-
|
|
8
|
-
## Created
|
|
9
|
-
2026-08-30
|
|
10
|
-
|
|
11
|
-
## Problem
|
|
12
|
-
Ralph pipeline chores write tests that assert on static content — config files, markdown,
|
|
13
|
-
terraform files, snapshots of files that never change behaviour. These tests do not prove
|
|
14
|
-
behaviour; they assert content. They are irrelevant, unhelpful, and a straight waste of
|
|
15
|
-
tokens: they take time to write and run, break on unrelated edits, and add maintenance
|
|
16
|
-
weight for zero behavioural signal.
|
|
17
|
-
|
|
18
|
-
## Who benefits
|
|
19
|
-
Every ralph-managed project. Chores stop burning tokens on meaningless tests, PRs stop
|
|
20
|
-
carrying noise tests, and the suite stays a genuine behavioural signal instead of a content
|
|
21
|
-
inventory. Reviewers (author + agents) get less churn to triage.
|
|
22
|
-
|
|
23
|
-
## Proposed outcome
|
|
24
|
-
A blanket ban — **no carve-outs**: tests that assert static file contents (config, md, tf,
|
|
25
|
-
or any snapshot of static content) are never written. They prove nothing about behaviour and
|
|
26
|
-
belong to neither the suite nor the PR.
|
|
27
|
-
|
|
28
|
-
Landing it:
|
|
29
|
-
1. **`style-tests`** — add an explicit red flag (and verification-checklist item): *asserting
|
|
30
|
-
static file content — config/md/tf snapshots. If the file never changes behaviour, the test
|
|
31
|
-
is a content assertion, not a behaviour test.* The existing "test behaviour, not
|
|
32
|
-
implementation" / "every test has a cost" principles already point here — make it explicit.
|
|
33
|
-
2. **`ralph` + `run-pipeline-stage`** (minimum) — the pipeline instructions should warn stage
|
|
34
|
-
runners not to write content-assertion tests; a review gate checks for them.
|
|
35
|
-
3. **Sweep the rest** — before implementation, review tdd, engineering, and other skills for
|
|
36
|
-
anything that encourages or tolerates content-assertion tests, and align them with the ban.
|
|
37
|
-
|
|
38
|
-
## Validity check
|
|
39
|
-
- Evidence we already have: `style-tests` already champions behaviour-over-structure and
|
|
40
|
-
test-cost discipline — the red flag slots straight into its existing table without new
|
|
41
|
-
philosophy. The observed trigger came from ralph runs producing such tests unprompted,
|
|
42
|
-
which shows the current skills don't discourage it.
|
|
43
|
-
- Riskiest assumption: distinguishing "asserts static content" from legitimate integration
|
|
44
|
-
tests that happen to read files (e.g. a parser's golden output). The ban must be worded to
|
|
45
|
-
hit the former without chilling the latter — the line is *whether the assertion proves the
|
|
46
|
-
behaviour under test*, not whether a file is read.
|
|
47
|
-
- What would invalidate this idea: if a case emerges where asserting file content IS the
|
|
48
|
-
behaviour (a generator, a config compiler, a template renderer) and the blanket wording
|
|
49
|
-
blocks a real test — the blanket ban explicitly accepts excluding those; if that carve-out
|
|
50
|
-
turns out to be needed after all, the wording needs revisiting.
|
|
51
|
-
|
|
52
|
-
## Constraints
|
|
53
|
-
- Blanket ban, no carve-outs in the initial landing.
|
|
54
|
-
- Costs tokens and churn today — P1.
|
|
55
|
-
- Keep `style-tests` ≤ ~100 lines: add the red flag + checklist item, don't expand philosophy.
|
|
56
|
-
- Pipeline review gates (ralph HITL review) check for content-assertion tests before merge.
|
|
57
|
-
|
|
58
|
-
## Next validation step
|
|
59
|
-
When preparing for work: sweep the skills (style-tests, ralph, run-pipeline-stage, tdd,
|
|
60
|
-
engineering, plan) for current wording that tolerates or invites content-assertion tests;
|
|
61
|
-
then land the red flag in `style-tests` plus explicit warnings in the ralph skills, and
|
|
62
|
-
verify a subsequent ralph run stops producing them.
|
|
63
|
-
|
|
64
|
-
## Design so far / provenance
|
|
65
|
-
Came from watching ralph pipeline runs generate tests that merely assert the contents of
|
|
66
|
-
static files — e.g. config, md, and tf files — which is content-inventory, not behaviour
|
|
67
|
-
proof. Stance locked in interview on 2026-08-30: blanket ban (no golden-file carve-out at
|
|
68
|
-
initial landing); minimum skill scope = style-tests + ralph + run-pipeline-stage (+ tdd/
|
|
69
|
-
engineering), with a broader skill sweep during prep; priority P1.
|
|
70
|
-
|
|
71
|
-
## Notes
|
|
72
|
-
Recorded 2026-08-30 (P1). This is a deliberate exception to the default "write tests —
|
|
73
|
-
red-green-refactor" posture: not all assertions are tests of behaviour, and an assertion on
|
|
74
|
-
immutable content is cost without signal. The `style-tests` skill is the enforcement point;
|
|
75
|
-
ralph/run-pipeline-stage are where it keeps happening.
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# Idea: bead progress notes for session resumption
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Recorded as bead `agnt-ctx-ul91` (2026-09-22) — awaiting `plan`. Merged with
|
|
5
|
-
`state-in-beads-not-md.md` into one bead state model design (this file is Part 2: WHAT the
|
|
6
|
-
progress trail contains).
|
|
7
|
-
|
|
8
|
-
## Created
|
|
9
|
-
2026-08-31
|
|
10
|
-
|
|
11
|
-
## Problem
|
|
12
|
-
A bead's notes field today records little until close, and agents hold all working state in
|
|
13
|
-
the session window. If a session is terminated mid-task, the context dies with it — a fresh
|
|
14
|
-
agent has to re-discover everything: what's done, what's blocked, what was tried, what was
|
|
15
|
-
learned. That re-discovery burns tokens on work that was already completed, and the bead gives
|
|
16
|
-
no way to pick up where the previous agent left off.
|
|
17
|
-
|
|
18
|
-
## Who benefits
|
|
19
|
-
The author (no lost momentum or re-discovery burn when sessions end), and every agent that
|
|
20
|
-
picks up a bead mid-flight. The notes become a recovery contract: with a full progress trail on
|
|
21
|
-
the bead, *any* agent — or a fresh session — can resume the thread without re-exploring.
|
|
22
|
-
|
|
23
|
-
## Proposed outcome
|
|
24
|
-
A prompted discipline: agents append to the bead's notes field **as they work**, capturing
|
|
25
|
-
whatever is needed to recreate state if the session terminated:
|
|
26
|
-
- **Key milestones** — stage transitions, chunks of completed work
|
|
27
|
-
- **Decisions and why** — including rejected options
|
|
28
|
-
- **Blocks** — what's stuck, and on what
|
|
29
|
-
- **Discoveries and gotchas** — non-obvious findings, traps, environment quirks
|
|
30
|
-
- **Problems solved and their solutions** — so the same discovery isn't repeated
|
|
31
|
-
|
|
32
|
-
This is a checkpoint trail, not a transcript: brief, scan-friendly, high-signal. The goal is
|
|
33
|
-
that a new agent can read the notes and resume with zero wasted discovery tokens.
|
|
34
|
-
|
|
35
|
-
The mechanism is prompting — skills/agent files instruct agents to update the bead's notes at
|
|
36
|
-
milestones (not a mechanical extension at first). It may later become a slight extension of the
|
|
37
|
-
session-managing agent: the session manager prompts/checks that the bead trail is current
|
|
38
|
-
before a session ends or flushes.
|
|
39
|
-
|
|
40
|
-
## Validity check
|
|
41
|
-
- Evidence we already have: `bd` supports multi-line markdown notes (`--notes`); ralph stages
|
|
42
|
-
already transition beads through the pipeline, so milestone points exist to hook into;
|
|
43
|
-
`state-in-beads-not-md` establishes bead fields as the home for this state.
|
|
44
|
-
- Riskiest assumption: agents actually keep the trail updated under prompting alone — without a
|
|
45
|
-
mechanical check, discipline may lapse, and the trail rots. The extension shape (session agent
|
|
46
|
-
checks the trail is current pre-flush/close) is the likely fix, but that's a second step.
|
|
47
|
-
- What would invalidate this idea: if notes grow into a transcript (cost + noise) instead of a
|
|
48
|
-
checkpoint trail; or if resumption needs more than notes (e.g. a scratch file of raw state)
|
|
49
|
-
anyway — then notes alone don't satisfy recovery.
|
|
50
|
-
|
|
51
|
-
## Constraints
|
|
52
|
-
- **Checkpoint trail, not transcript** — brief and scan-friendly; verbosity defeats the purpose.
|
|
53
|
-
- Prompting discipline first; a mechanism (session-agent check/extension) is the later step.
|
|
54
|
-
- Must not slow the ralph/run-pipeline-stage loops — the note write is a milestone action, not
|
|
55
|
-
a per-tool-call log.
|
|
56
|
-
- Beads stay the single source of truth — no new scratch files (consistent with
|
|
57
|
-
`state-in-beads-not-md`).
|
|
58
|
-
|
|
59
|
-
## Next validation step
|
|
60
|
-
Pick one loop (run-pipeline-stage is the natural first) and add the milestone-note instruction
|
|
61
|
-
to its skill: update `--notes` at stage start/end, decisions, blocks, discoveries. Verify a
|
|
62
|
-
subsequent stage agent can resume purely from the notes (read `bd show` and continue) without
|
|
63
|
-
re-reading the prior agent's log.
|
|
64
|
-
|
|
65
|
-
## Notes
|
|
66
|
-
- Priority: **P2** — backlog, not blocking. Annoying drift, nothing broken.
|
|
67
|
-
- **Dependency**: this is the missing content contract for `self-flushing-session` — a flushed
|
|
68
|
-
session keeps only the bead ID, so the bead must carry enough trail to re-seed. Without these
|
|
69
|
-
notes, flush/resume is lossy.
|
|
70
|
-
- Distinct from `state-in-beads-not-md` (WHERE state lives — rule/principle) and
|
|
71
|
-
`pi-task-memory` (cross-session memory store): this is the CONTENT of the bead's progress
|
|
72
|
-
trail and the prompting discipline that keeps it current. Composes with all three.
|
|
73
|
-
- User's framing: possibly "a slight extension of the agent that manages its session" — the
|
|
74
|
-
session manager prompts/verifies the trail is current before session end, rather than a new
|
|
75
|
-
standalone mechanism.
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Idea: Classify beads via deterministic script with agent fallback
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready)
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-09-08
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
`classify-bead` is one of the most frequently invoked skills, yet every invocation spawns a
|
|
11
|
-
subagent — even when the classification is settled by fully deterministic lookups (an existing
|
|
12
|
-
`implementation-type` label or the legacy `## Type` field) that need no agent at all. The
|
|
13
|
-
remaining cases need first-principles rubric judgement, which the skill itself says is simple
|
|
14
|
-
enough for "a small, cheap model". Running a full-size agent for all of it burns tokens on
|
|
15
|
-
work a script plus a small model could do, and the cost multiplies across every caller:
|
|
16
|
-
`create-task`, bead pickups, and ralph's pipeline stages.
|
|
17
|
-
|
|
18
|
-
## Who benefits
|
|
19
|
-
The author — classification is a top-called skill, so token spend per session drops
|
|
20
|
-
meaningfully. Callers (`create-task`, pickups, ralph) get near-instant classification without a
|
|
21
|
-
subagent round-trip, and keep the same semantics and output contract (AFK/HITL + the applied
|
|
22
|
-
`bd tag` command).
|
|
23
|
-
|
|
24
|
-
## Proposed outcome
|
|
25
|
-
A deterministic classifier executable that callers invoke directly instead of spawning an
|
|
26
|
-
agent. It resolves the deterministic cases itself (existing label → legacy `## Type` field →
|
|
27
|
-
simple heuristics); only when a bead genuinely needs first-principles judgement does it
|
|
28
|
-
escalate — ideally to a small/cheap model rather than a full agent. The current skill becomes
|
|
29
|
-
the escalation/fallback layer (or a thin wrapper describing the script), preserving the
|
|
30
|
-
existing precedence, the AFK bias, and the never-reclassify-a-labelled-bead rule.
|
|
31
|
-
|
|
32
|
-
## Validity check
|
|
33
|
-
- Evidence we already have: classification is one of the top-called skills with visibly high
|
|
34
|
-
token cost; the skill's own workflow already encodes deterministic-first precedence
|
|
35
|
-
(label → `## Type` → rubric), so many calls settle before any rubric reasoning; the skill
|
|
36
|
-
already asserts a small, cheap model suffices for the rubric step; the rubric is small and
|
|
37
|
-
stable, so it ports to a script cleanly.
|
|
38
|
-
- Riskiest assumption: the deterministic share of real invocations is actually large — i.e.
|
|
39
|
-
most beads already carry a label or `## Type` field when classified. If most calls genuinely
|
|
40
|
-
need first-principles judgement, scripting the lookups saves little and the win shrinks to
|
|
41
|
-
model size alone. Secondary risk: a small model matches a full agent's rubric accuracy.
|
|
42
|
-
- What would invalidate this idea: measurement shows most invocations land in the rubric
|
|
43
|
-
branch; or small-model accuracy is materially worse, causing AFK/HITL misroutes that surface
|
|
44
|
-
as failures at human review gates or in ralph's pipeline; or script+escalation complexity
|
|
45
|
-
across three harnesses (Copilot, pi, Claude Code) outweighs the token saving.
|
|
46
|
-
|
|
47
|
-
## Constraints
|
|
48
|
-
- Must be invocable from every harness where the skill ships (Copilot CLI, pi, Claude Code)
|
|
49
|
-
and from other skills' task-spawning paths.
|
|
50
|
-
- Small-model routing depends on per-harness model configuration — ties into the
|
|
51
|
-
`model-selector` / `auto-model-selection` backlog.
|
|
52
|
-
- Must preserve the existing rules: never overwrite a recorded label, prefer AFK, and keep the
|
|
53
|
-
reported output contract (classification + applied `bd tag` command).
|
|
54
|
-
- The script must not load bead content into a calling agent's context when spawned as a task —
|
|
55
|
-
same isolation property the current skill has.
|
|
56
|
-
|
|
57
|
-
## Next validation step
|
|
58
|
-
Instrument or sample recent `classify-bead` invocations to measure the split between
|
|
59
|
-
deterministic lookups (label / `## Type` present) and genuine rubric cases. This single number
|
|
60
|
-
decides whether the win is "skip agent spawns entirely for most calls" (large) or "smaller
|
|
61
|
-
model only" (modest) — cheap to gather, decisive for scope.
|
|
62
|
-
|
|
63
|
-
## Notes
|
|
64
|
-
- Overlaps with `model-selector.md` and `auto-model-selection.md`: which small model the
|
|
65
|
-
escalation uses is their problem to solve; this idea just wants the deterministic
|
|
66
|
-
classification off the agent path.
|
|
67
|
-
- The skill already pushes callers to check `bd label list <id>` before spawning — a script
|
|
68
|
-
makes that check intrinsic instead of a caller-discipline reminder.
|
|
69
|
-
- Classification output is a stable, tiny contract (two labels + one `bd tag`), which is what
|
|
70
|
-
makes a scripted rewrite low-risk versus other skills.
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# Idea: ctx alias, version and update commands
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready)
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-09-02
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
`agent-cortex` is a long name to type, and there is no way to see what is actually
|
|
11
|
-
installed across the harnesses (pi / claude / copilot) or to bring an installed
|
|
12
|
-
runtime up to date. The user currently inspects state manually or re-runs
|
|
13
|
-
`agent-cortex install <harness>` after a release with no idea what changed.
|
|
14
|
-
|
|
15
|
-
## Who benefits
|
|
16
|
-
The author, in every coding session: a shorter command to reach the CLI, and two
|
|
17
|
-
commands that answer "what's installed and is it current?" without remembering the
|
|
18
|
-
install-manager internals. Anyone else using the plugin (published via npm) gets
|
|
19
|
-
the same surface.
|
|
20
|
-
|
|
21
|
-
## Proposed outcome
|
|
22
|
-
- `ctx` as a shell alias for `agent-cortex`, installed by the CLI itself (appends to
|
|
23
|
-
the user's shell rc during setup/install).
|
|
24
|
-
- `ctx version` reporting installed state per harness (pi / claude / copilot): which
|
|
25
|
-
artifacts are installed, their versions, and whether they match the CLI's release.
|
|
26
|
-
- `ctx update` re-running the install for each harness whose installed state is stale.
|
|
27
|
-
- Nothing here changes what installation does — the commands read and reuse the
|
|
28
|
-
install manager, not a parallel mechanism.
|
|
29
|
-
|
|
30
|
-
## Validity check
|
|
31
|
-
- Evidence we already have: the install epics (pi harness `agnt-ctx-dfq3` first, then
|
|
32
|
-
claude, then copilot) are already making the install manager authoritative per
|
|
33
|
-
harness; the F9 integration smoke (`agnt-ctx-t7xu`) will verify installed state
|
|
34
|
-
end-to-end and is the natural substrate for `version`.
|
|
35
|
-
- Riskiest assumption: the install epics leave behind a stable, queryable notion of
|
|
36
|
-
"what is installed" (a fingerprint: version + presence per harness) that `version`
|
|
37
|
-
can read and `update` can compare against. If installed state stays implicit
|
|
38
|
-
(symlinks, unversioned copies), `version`/`update` have nothing reliable to report and
|
|
39
|
-
the idea deflates into a thin alias.
|
|
40
|
-
- What would invalidate this idea: the harness epics ship without any record of
|
|
41
|
-
per-harness installed version, or `update` turns out to be indistinguishable from
|
|
42
|
-
a plain `install` (i.e. no stale/current distinction ever exists).
|
|
43
|
-
|
|
44
|
-
## Constraints
|
|
45
|
-
- Must reuse the install manager (one code path for install, version, update) — no
|
|
46
|
-
second mechanism that could drift.
|
|
47
|
-
- Alias must be opt-in or clearly announced at install; overwriting an existing
|
|
48
|
-
`ctx` command in the user's shell is unacceptable (collision check first).
|
|
49
|
-
- No version coupling invented per harness — installed version means the agent-cortex
|
|
50
|
-
release the harness artifact was materialised from.
|
|
51
|
-
|
|
52
|
-
## Next validation step
|
|
53
|
-
When the pi install epic (F3–F6) lands, check whether the installed artifacts carry a
|
|
54
|
-
version fingerprint (file header comment or manifest). If yes, `ctx version` has its
|
|
55
|
-
data source and the idea is implementation-ready; if not, the smoke-test epic
|
|
56
|
-
(`agnt-ctx-543s`) must be asked to define one, which is also where `ctx update` gets
|
|
57
|
-
its stale-detection.
|
|
58
|
-
|
|
59
|
-
## Notes
|
|
60
|
-
- Recorded from a session while the pi harness install manager epic was in flight;
|
|
61
|
-
priority felt like P3 — after the install epics merge, not folded into them.
|
|
62
|
-
- `ctx` is a common shell name (context tools, context-mode). The alias install must
|
|
63
|
-
check for an existing command and surface the clash rather than silently override.
|
|
64
|
-
- Idea belongs to the same surface as the install-manager epics: version/update are
|
|
65
|
-
the read/refresh side of the same CLI.
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Idea: ctx feedback command for capturing ideas from any machine
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready)
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-09-02
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
Ideas about agent-cortex (and the workflow around it) strike while working on the
|
|
11
|
-
work laptop or other machines, where this repo — `docs/ideas/`, the beads tracker,
|
|
12
|
-
the skills — is not the project in hand. Those ideas die or wait until back at the
|
|
13
|
-
personal dev machine. There is no low-friction path from "idea in my head elsewhere"
|
|
14
|
-
into this repo's backlog.
|
|
15
|
-
|
|
16
|
-
## Who benefits
|
|
17
|
-
The author: a capture path that works from any machine with the CLI installed and
|
|
18
|
-
no requirement to be inside the repo. Same benefit as the `ctx alias/version/update`
|
|
19
|
-
idea — a shared, short command surface on the work machine.
|
|
20
|
-
|
|
21
|
-
## Proposed outcome
|
|
22
|
-
- `ctx feedback` (or `agent-cortex feedback` until the alias exists) opens an
|
|
23
|
-
interactive curated capture: prompt for the idea, one-line summary, optional
|
|
24
|
-
context, and a check against existing issues/parked ideas to avoid duplicates.
|
|
25
|
-
- The captured idea lands as a GitHub issue on the agent-cortex repo, tagged with a
|
|
26
|
-
stable label (e.g. `idea`) so it is distinguishable from bug reports/chores.
|
|
27
|
-
- Curated, not one-shot: the flow forces the two minutes of thought the
|
|
28
|
-
`record-idea` skill requires, without requiring the skill's local scaffold.
|
|
29
|
-
- Something downstream (a session, a manual sweep, or that skill itself) triages
|
|
30
|
-
`idea` issues into `docs/ideas/` records or beads for actual prioritisation.
|
|
31
|
-
|
|
32
|
-
## Validity check
|
|
33
|
-
- Evidence we already have: the author captures ideas regularly at the dev machine
|
|
34
|
-
(`docs/ideas/` has 20+ records, two added today), and explicitly wants a way to do
|
|
35
|
-
that from the work laptop. The `ctx` surface is already planned, so this rides an
|
|
36
|
-
existing idea rather than inventing a new command family.
|
|
37
|
-
- Riskiest assumption: the work laptop has working GitHub auth (gh CLI or token) for
|
|
38
|
-
this repo. If it does not, the command needs its own credential story and the
|
|
39
|
-
"from any machine" promise quietly becomes "from any machine with a GitHub token".
|
|
40
|
-
- What would invalidate this idea: a second capture surface (issues) that never gets
|
|
41
|
-
triaged into `docs/ideas/` — the repo would then have two idea stores drifting
|
|
42
|
-
apart, and feedback issues would accumulate unread. Also invalidated if the work
|
|
43
|
-
laptop auth friction turns out worse than the original "note it in a scratch file"
|
|
44
|
-
path.
|
|
45
|
-
|
|
46
|
-
## Constraints
|
|
47
|
-
- Must not duplicate the local capture flow — if the author is on the dev machine,
|
|
48
|
-
`record-idea` (a proper record with validity check) stays the canonical path; the
|
|
49
|
-
GitHub issue is the from-anywhere path.
|
|
50
|
-
- Duplicate hygiene: the curated step must surface existing `idea` issues before
|
|
51
|
-
creating a new one.
|
|
52
|
-
- No new long-lived auth secrets on the work laptop beyond what gh already uses.
|
|
53
|
-
|
|
54
|
-
## Next validation step
|
|
55
|
-
Check, on the work laptop, whether `gh auth status` (or an equivalent token) already
|
|
56
|
-
covers the agent-cortex repo. If yes, the idea is implementation-ready — wire
|
|
57
|
-
`ctx feedback` to `gh issue create` with the `idea` label. If not, that auth gap is
|
|
58
|
-
the real problem to solve first.
|
|
59
|
-
|
|
60
|
-
## Notes
|
|
61
|
-
- Recorded back-to-back with `ctx-alias-version-and-update-commands.md`; sharing the
|
|
62
|
-
`ctx` surface and the P3 priority band.
|
|
63
|
-
- Deliberately couples to GitHub issues (not the beads tracker): beads live on the
|
|
64
|
-
dev machine's dolt state, which is the wrong sink for a machine that cannot see
|
|
65
|
-
that state.
|
|
66
|
-
- Needs a triage convention: either a periodic beat that converts `idea` issues into
|
|
67
|
-
`docs/ideas/` records, or the record-idea skill grows a "from issue" input mode.
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Idea: Dedicated review-tests skill
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready) — priority P2 (moderate), timing: follows `agnt-ctx-h9gt`
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-10-06
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
Test review has no home of its own in the ralph pipeline. The review stage invokes
|
|
11
|
-
`review-security` for a dedicated security pass, then falls back to `style-code` and
|
|
12
|
-
`style-tests` for everything else. `style-tests` is a *writing* skill — it states conventions
|
|
13
|
-
before tests are authored — so a reviewer reading it has to invert authoring guidance into
|
|
14
|
-
review findings. The result is that test defects are caught by whatever the reviewer happens to
|
|
15
|
-
notice rather than by an explicit checklist, and each new class of defect (the content-assertion
|
|
16
|
-
ban being the first) has to be bolted onto the review template individually.
|
|
17
|
-
|
|
18
|
-
## Who benefits
|
|
19
|
-
- **The author**, who stops triaging test defects that a structured review should have caught.
|
|
20
|
-
- **Ralph stage runners**, who get an explicit finding checklist instead of inferring one from a
|
|
21
|
-
writing-conventions skill.
|
|
22
|
-
- **Future skill authors**, who get one place to add a test-review rule rather than editing the
|
|
23
|
-
review template, the review playbook, and `style-tests` in lockstep.
|
|
24
|
-
|
|
25
|
-
## Proposed outcome
|
|
26
|
-
A `review-tests` skill — a peer to `review-security` — that specifies what a reviewer checks in
|
|
27
|
-
a test suite: assertion quality (does each assertion prove the behaviour under test),
|
|
28
|
-
mock discipline (boundaries only, never internals), test-data construction (vital data inline,
|
|
29
|
-
fresh per test, no shared mutable fixtures), determinism (no sleeps, no real clocks, every async
|
|
30
|
-
interaction awaited), and coverage gaps against the task's stated behaviours.
|
|
31
|
-
|
|
32
|
-
Broad scope, narrow use: the skill is generic test-review guidance, invoked as a stage step by
|
|
33
|
-
the ralph review playbook (and available to a human reviewer or a `git-workflow` PR review).
|
|
34
|
-
Once it exists, the content-assertion check added by `agnt-ctx-h9gt` becomes one row inside it
|
|
35
|
-
rather than a standing instruction in the review template.
|
|
36
|
-
|
|
37
|
-
## Validity check
|
|
38
|
-
- Evidence we already have: the review stage already delegates to skills for every other
|
|
39
|
-
concern (`review-security` for security, `style-code` for code shape, `style-documentation`
|
|
40
|
-
for docs) — test review is the gap in an otherwise uniform pattern. The content-assertion
|
|
41
|
-
ban was bolted onto the review template precisely because no skill owned test review.
|
|
42
|
-
- Riskiest assumption: that a *review* checklist is meaningfully different from `style-tests`
|
|
43
|
-
read critically. If a reviewer can derive the findings from the existing authoring skill with
|
|
44
|
-
no loss, this becomes a second statement of the same rules — exactly the two-homes problem
|
|
45
|
-
`agnt-ctx-h9gt` avoids by keeping `style-tests` canonical.
|
|
46
|
-
- What would invalidate this idea: if `agnt-ctx-h9gt`'s review-gate change turns out to be
|
|
47
|
-
sufficient — if the review stage, with the content-assertion check in hand, stops missing
|
|
48
|
-
test defects — then the dedicated skill earns nothing and should be dropped.
|
|
49
|
-
|
|
50
|
-
## Constraints
|
|
51
|
-
- `style-tests` stays the canonical statement of test conventions; `review-tests` must cite it
|
|
52
|
-
and add only the reviewer's framing, or the two will drift.
|
|
53
|
-
- Must not duplicate `review-security`'s ground or re-run the test suite (that is the verify
|
|
54
|
-
stage's job).
|
|
55
|
-
- Invoked from the review playbook, so it must be cheap to load — no expansion of the review
|
|
56
|
-
stage's token budget beyond one skill read.
|
|
57
|
-
- Follows `agnt-ctx-h9gt`; the content-assertion rule must not be restated in a second place
|
|
58
|
-
until this skill exists to hold it.
|
|
59
|
-
|
|
60
|
-
## Next validation step
|
|
61
|
-
After `agnt-ctx-h9gt` has run through the pipeline at least once, collect the test-related
|
|
62
|
-
findings its review stage actually produces across a few PRs. If reviewers keep requesting
|
|
63
|
-
changes on test grounds that the template does not name, that list is the skill's first
|
|
64
|
-
checklist and the idea is confirmed; if the template covers them, drop the idea.
|
|
65
|
-
|
|
66
|
-
## Notes
|
|
67
|
-
Floated by the author on 2026-10-06 while scoping `agnt-ctx-h9gt`. Stance locked in the
|
|
68
|
-
interview: broad scope (generic test review, not a pipeline-specific gate), used in the ralph
|
|
69
|
-
pipeline, priority P2 with the trigger being `agnt-ctx-h9gt`'s real-world review findings.
|
|
70
|
-
Deliberately kept as an idea rather than folded into `agnt-ctx-h9gt` so it passes the same
|
|
71
|
-
validity check as every other backlog entry.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Idea: deployment beads for post-merge pipelines
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready)
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-08-31
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
A task isn't done when the PR is merged — it's done when CI passes, it's merged, and in some cases *it's deployed*. Ralph's pipeline currently stops at `review` → open PR → human merge: there is no post-merge stage, so a merge that breaks CI or fails to deploy is discovered manually (or not at all). The definition of done is incomplete for projects with deployment/post-merge workflows.
|
|
11
|
-
|
|
12
|
-
## Who benefits
|
|
13
|
-
The author, running ralph-managed projects with release/deploy pipelines (e.g. agent-cortex's changesets release flow). No more manual pipeline watching after a merge; post-merge breakage is tracked and surfaced through the same bead system as everything else, so nothing silently rots in a CI dashboard.
|
|
14
|
-
|
|
15
|
-
## Proposed outcome
|
|
16
|
-
Deployment tracking becomes part of chore creation: when `create-task` (or `prd-to-tasks`) creates a task in a project that has a deployment/post-merge workflow, it also creates a **deployment bead** that gates "done" on the post-merge pipeline. A small/cheap model watches and reports on pipeline status. Failures are reported via a bead and **escalated to the author — never resolved by the agent**.
|
|
17
|
-
|
|
18
|
-
## Validity check
|
|
19
|
-
- Evidence we already have: ralph already opens review-gated PRs and pauses for human merges (the HITL gate pattern); `unified-ci-pipeline` documents real release-pipeline friction (release fires even on failed checks). Post-merge watching is the natural continuation of that arc.
|
|
20
|
-
- Riskiest assumption: a small model can reliably watch and report pipeline status cheaply enough that the watch cost doesn't exceed the failure-detection benefit. Also: that "has a deploy workflow" is detectable at chore-creation time rather than needing per-project config.
|
|
21
|
-
- What would invalidate this idea: post-merge failures are rare enough that manual checking is fine; the watcher can't distinguish real failures from flaky CI without burning tokens; or existing CI-native notifications (GitHub Actions alerts) already cover the gap.
|
|
22
|
-
|
|
23
|
-
## Constraints
|
|
24
|
-
- Must be cheap: small model, watch-and-report only. No internal LLM-driven resolution loops.
|
|
25
|
-
- Failures escalate to the author (matches the HITL pattern) — the watcher reports, a human decides.
|
|
26
|
-
- Must compose with the ralph pipeline as another stage/chore type, not fork it.
|
|
27
|
-
- Deployment bead is created at chore-creation time where a post-merge workflow exists — part of `create-task`'s pipeline configuration (`skills/planning/create-task/pipeline.json`), generalised across ralph-managed projects.
|
|
28
|
-
|
|
29
|
-
## Next validation step
|
|
30
|
-
Survey which ralph-managed projects actually have post-merge/deploy workflows, and map where a deployment bead would slot into `create-task`'s chore breakdown. Check whether the changesets release flow (agent-cortex) is the natural first consumer.
|
|
31
|
-
|
|
32
|
-
## Notes
|
|
33
|
-
- Priority: **P2** — backlog, not blocking. Generalise: the deployment bead is part of chore creation, not a per-project add-on.
|
|
34
|
-
- Distinct from `unified-ci-pipeline` (that idea is about CI speed + release gating, this is about post-merge/done definition).
|
|
35
|
-
- Consistent with `state-in-beads-not-md`: the bead is the source of truth; pipeline status lands on a bead, not a scratch file.
|
|
36
|
-
- "Escalated, not resolved" is the key design line — keeps the watcher cheap and keeps human judgment in the loop.
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Idea: Design and delivery as separate bead trees
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Recorded as bead `agnt-ctx-rig0` (2026-09-22) — awaiting `plan`. Absorbs
|
|
5
|
-
`test-planning-stage-bead-in-feature-planning.md`.
|
|
6
|
-
|
|
7
|
-
## Created
|
|
8
|
-
2026-09-03
|
|
9
|
-
|
|
10
|
-
## Problem
|
|
11
|
-
Today one bead tree mixes intent with execution: a feature is decomposed
|
|
12
|
-
straight into delivery chores, so the *design* — what the feature is, its
|
|
13
|
-
sub-components, and how each part is *proven to work* — never exists as a
|
|
14
|
-
first-class structure. Verification degrades to per-chore verify passes that
|
|
15
|
-
drift with implementation, and nothing asks "what is the provable outcome of
|
|
16
|
-
this feature?" up front.
|
|
17
|
-
|
|
18
|
-
## Who benefits
|
|
19
|
-
- Planning agents (plan/prd-to-tasks) — design and verification get explicit
|
|
20
|
-
structure instead of being implicit in delivery chores.
|
|
21
|
-
- Ralph / run-pipeline-stage — delivery work runs against a design tree it
|
|
22
|
-
doesn't need to understand; closure is mechanical.
|
|
23
|
-
- The human reviewer — provable outcomes per feature give the PR gate a
|
|
24
|
-
checkable "how do we know it's worked?" criterion.
|
|
25
|
-
- The codebase — delivery slices can be minimal (no building a whole domain
|
|
26
|
-
service to ship a slice), decoupled from design completeness.
|
|
27
|
-
|
|
28
|
-
## Proposed outcome
|
|
29
|
-
Two first-class, linked bead trees in the tracker:
|
|
30
|
-
|
|
31
|
-
1. **Design tree** — an epic links to the features below it; a feature may
|
|
32
|
-
nest further features/sub-components. Below each feature sit its
|
|
33
|
-
**verification beads**: a demonstrable set that proves the design —
|
|
34
|
-
"explicitly, what is the provable outcome of that feature? how do we know
|
|
35
|
-
it's worked?" Verification is *part of the design stage*, not an
|
|
36
|
-
afterthought of delivery.
|
|
37
|
-
2. **Delivery tree** — a separate structure of slices actually taken to
|
|
38
|
-
delivery. Delivery slices deliberately differ from design slices (you may
|
|
39
|
-
not need to build an entire domain service to deliver a slice of
|
|
40
|
-
functionality). Delivery links to design but is not the same as design:
|
|
41
|
-
each design and verification element is completed *by* a delivery bead,
|
|
42
|
-
but the mapping is not 1-to-1 (one delivery slice can complete several
|
|
43
|
-
design elements; one design element may need several delivery beads).
|
|
44
|
-
|
|
45
|
-
Mechanics: one tracker, beads typed `design` / `verification` / `delivery`,
|
|
46
|
-
plus a link class meaning "completes / is completed by" alongside today's
|
|
47
|
-
"depends on". Ralph's contract shrinks: it does not need to understand the
|
|
48
|
-
design tree any more than it already does — it can close a design bead when
|
|
49
|
-
all delivery beads linked to it are completed.
|
|
50
|
-
|
|
51
|
-
## Validity check
|
|
52
|
-
- Evidence we already have: the pipeline restructures around stages
|
|
53
|
-
(create-task chores, ralph dispatch) tellingly reworked across #123/#124 —
|
|
54
|
-
verification keeps needing re-planning per delivery; the companion idea
|
|
55
|
-
"Test-planning stage bead in feature planning" independently converged on
|
|
56
|
-
the same "provable outcome / how do we know it's done" question, which
|
|
57
|
-
suggests a real structural gap, not a one-off itch.
|
|
58
|
-
- Riskiest assumption: the double tree pays for itself — i.e. delivery slices
|
|
59
|
-
are *often enough* genuinely different from design slices, so the second
|
|
60
|
-
tree earns its bookkeeping; and bd (or a thin shim) can express typed beads
|
|
61
|
-
+ link classes without brittle hacks. If real workstreams map 1-to-1 most
|
|
62
|
-
of the time, the extra tree is ceremony.
|
|
63
|
-
- What would invalidate this idea: a pilot where the delivery tree mirrors the
|
|
64
|
-
design tree slice-for-slice; or where ralph's close-when-delivery-done rule
|
|
65
|
-
cannot be stated mechanically because delivery beads keep spanning design
|
|
66
|
-
elements unpredictably (unbounded fan-in/fan-out breaks the closure rule).
|
|
67
|
-
|
|
68
|
-
## Constraints
|
|
69
|
-
- One tracker, no new store: typed beads + a "completes" link class must fit
|
|
70
|
-
the existing beads model and tooling (bd link CLI today only expresses
|
|
71
|
-
"depends on").
|
|
72
|
-
- Ralph's design-tree knowledge stays at the closure rule — no design
|
|
73
|
-
semantics leak into the execution pipeline.
|
|
74
|
-
- Restructures planning stages: a design stage (verification inside it) and a
|
|
75
|
-
delivery stage, replacing the current single decomposition.
|
|
76
|
-
- Backwards-compatible during rollout: existing single-tree epics keep
|
|
77
|
-
working while new work adopts the split.
|
|
78
|
-
|
|
79
|
-
## Next validation step
|
|
80
|
-
Pilot on the next new epic, without touching pipeline code: hand-draft the
|
|
81
|
-
design tree (features → verification beads with stated provable outcomes) and
|
|
82
|
-
the delivery tree as typed beads/docs, then check (a) how often delivery
|
|
83
|
-
slices diverge from design slices, and (b) whether every design/verification
|
|
84
|
-
element is closed by a mechanical all-delivery-beads-done rule. Also
|
|
85
|
-
inventory bd's link/type/tag capabilities (bd link --help, tag support) to
|
|
86
|
-
size the tracker work before proposing the pipeline change.
|
|
87
|
-
|
|
88
|
-
## Notes
|
|
89
|
-
- User framing: "planning and design should create a tree of beads; the epic
|
|
90
|
-
should be linked to the features below it; under each of those may be more
|
|
91
|
-
features or sub components; then below that are the verification beads."
|
|
92
|
-
- "Delivery then is a separate tree — the slices of a design which are taken
|
|
93
|
-
to deliver will not, and should not be the same as the design slices."
|
|
94
|
-
- Supersedes/absorbs the test-planning-stage-bead idea's motivation: the
|
|
95
|
-
verification beads here generalise that idea's test-plan bead (provable
|
|
96
|
-
outcome per feature). If this lands, fold the test-planning bead into the
|
|
97
|
-
design stage rather than shipping it standalone.
|
|
98
|
-
- Priority: medium — next planning-skill iteration. Pipeline-wide restructure;
|
|
99
|
-
do not start until the current pipeline stabilises post-#127.
|
package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Idea: Enable signed-commit enforcement (changesets bot commits must be signed)
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
Backlog idea (not implementation-ready)
|
|
5
|
-
|
|
6
|
-
## Created
|
|
7
|
-
2026-09-02
|
|
8
|
-
|
|
9
|
-
## Problem
|
|
10
|
-
GitHub's signed-commits protection on `main` (the "Require commit signing" rule) is currently disabled in this repo. Enabling it hardens main against impersonated/forged commits — but the automated release flow depends on the changesets bot's unsigned "chore: version packages" commits (which bump `package.json`/`plugin.json`/`CHANGELOG.md`). Flipping the rule on as-is would break releases.
|
|
11
|
-
|
|
12
|
-
## Who benefits
|
|
13
|
-
The author. Main-branch history becomes verifiably authentic — every commit attributable to a known key — protecting the npm-published package's supply chain, and releases keep flowing because the automation satisfies the same rule.
|
|
14
|
-
|
|
15
|
-
## Proposed outcome
|
|
16
|
-
`main` requires signed commits AND the automated changesets release commits satisfy that requirement — i.e. enabling "Require commit signing" no longer breaks the version-packages / release pipeline. Direction: the automation signs its own commits inside CI (no manual release steps).
|
|
17
|
-
|
|
18
|
-
## Validity check
|
|
19
|
-
- Evidence we already have: the rule is currently disabled (user statement). The release pipeline's version commits are created by the changesets action as `github-actions[bot]`, which does not sign by default — enabling the rule today fails those commits. Restructuring "how changesets works in CI" is therefore required, and this overlaps with the adjacent `unified-ci-pipeline` idea.
|
|
20
|
-
- Riskiest assumption: that a clean path exists for GitHub Actions to produce signed commit(s) in this repo's flow without breaking or significantly complicating the automated loop (CI-hosted keys and ruleset exceptions both have setup costs and failure modes).
|
|
21
|
-
- What would invalidate this idea: if the only workable fix forces human-run releases (moving versioning out of automation), the cost/benefit flips — the idea dies or reverts to the status quo of signing human commits only.
|
|
22
|
-
|
|
23
|
-
## Constraints
|
|
24
|
-
- Scope: this repo only.
|
|
25
|
-
- Must not break the changesets-driven versioning loop (`package.json`/`plugin.json`/`CHANGELOG.md` stay in lockstep automatically).
|
|
26
|
-
- CI changes go through the normal PR + review flow.
|
|
27
|
-
- The release job is also the target of the pending npm OIDC publish work (agnt-ctx-0zy8) — both touch the same job, so sequencing matters when this idea graduates.
|
|
28
|
-
|
|
29
|
-
## Next validation step
|
|
30
|
-
Determine how the changesets commit gets signed in CI on this repo — cheapest prototype: scratch repo (or the version branch) exercising the signing path end-to-end without touching `main`'s rule, then evaluate the rule change on `main`.
|
|
31
|
-
|
|
32
|
-
## Notes
|
|
33
|
-
Recorded 2026-09-02. Backlog capture only — no active work planned; revisit after the install-manager epic (pi/claude/copilot) settles. Adjacent to `docs/ideas/unified-ci-pipeline.md` (CI/release restructure).
|
|
34
|
-
|
|
35
|
-
Updated 2026-10-28: `docs/commit-signing.md` records the investigation and the decided policy.
|
|
36
|
-
The applied-rule read shows no `required_signatures` rule on `main` at repository or
|
|
37
|
-
organization level (org ruleset *definitions* stay unreadable with a repository-scoped token),
|
|
38
|
-
and Version Packages PRs land by squash merge, whose landing commit GitHub signs — so releases
|
|
39
|
-
stay automated with no key in CI, and the CI signing key this idea points at is rejected as the
|
|
40
|
-
default. That rejection does not settle the idea: GitHub checks head-branch commits through its
|
|
41
|
-
test merge, so enabling enforcement would still require the signed CI commit, exactly as
|
|
42
|
-
`Next validation step` describes.
|