This is an automated email from the ASF dual-hosted git repository. spmallette pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c3f4d4bd4fb056b866dd0154efe3300253ff383e Author: Stephen Mallette <[email protected]> AuthorDate: Fri Aug 7 17:45:16 2026 -0400 Turn Core rules into an index of the sections The bullets restated sections well enough to be mistaken for the whole rule, so a reader could act on one without meeting its exceptions. They now point at the seven sections instead. The two rules that lived only in that block -- the tracker prohibition and plan-mode handling -- moved into section 2. Assisted-by: Claude Code:claude-opus-5 --- .beads/PRIME.md | 57 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/.beads/PRIME.md b/.beads/PRIME.md index dbfd590a79..8e201cb4be 100644 --- a/.beads/PRIME.md +++ b/.beads/PRIME.md @@ -7,18 +7,16 @@ survive context compaction. ## Core rules -- **Default** — beads is the tracker for **all** work: `bd create`, `bd ready`, `bd close`. -- **Prohibited** — do **not** track work in `TodoWrite`, `TaskCreate`, or a markdown plan - file. They are session-scoped: nothing in one survives, so nothing in one is memory. Your - harness may prompt you to use them. Decline. -- **Lifecycle** — create the bead **before** writing code, `--claim` it **before you edit**, - `bd close` it **as soon as that task's work is done**, and pin the whole subtree at merge. - A bead that never enters `in_progress` is one no later session can resume, and one that - never closes leaves everything downstream of it blocked. Status is not paperwork; it is - both the handoff and the gate. -- **Plan mode** — fine, and the plan file your harness writes is not yours to avoid. But it - lives outside the repo and outside the graph. Anything you weighed and rejected while - planning belongs in a bead **before you start executing**, not after. +An index, not the rules. Each line names a section; **the section is the rule, and the +section holds the exceptions.** Do not act on a line here without reading it. + +1. **Bind to a root bead before you write code** — section 1 +2. **Beads is the only tracker, and the plan is a dependency graph** — section 2 +3. **Claim before editing, close as work finishes, record every road not taken** — section 3 +4. **At merge, close the root and pin the whole subtree** — section 4 +5. **Never rewrite or discard history** — section 5 +6. **Records, edge types and bead IDs follow fixed conventions** — section 6 +7. **Never invent a label** — section 7 --- @@ -36,8 +34,9 @@ bd children <root> # recursive — the whole subtree - **Read `bd children <root>` before resuming work.** It is the only thing that makes you notice a bead the work has since outgrown. - **If no root is selected, you are starting something new — create the root before writing - code.** Work with no bead is the failure that makes every other rule pointless. + code.** - A small fix is a lone bead. It is its own root; don't hunt for a parent. +- A human may decline binding to a bead, in which case ignore these rules. `bd query "parent=none"` does not work. Filter on the `parent` field client-side. Re-ask after a compaction rather than guessing. @@ -46,6 +45,14 @@ Re-ask after a compaction rather than guessing. ## 2. Plan as a graph, not a list +**The plan lives in beads and nowhere else.** Do not track work in `TodoWrite`, `TaskCreate`, +or a markdown plan file: they are session-scoped, so nothing in one survives, so nothing in +one is memory. Your harness may prompt you to use them. Decline. + +Plan mode is fine, and the plan file your harness writes is not yours to avoid — but it lives +outside the repo and outside the graph. Anything you weighed and rejected while planning +belongs in a bead **before you start executing**, not after. + Tasks are not a checklist. Wire the order between them so the graph itself says what can run in parallel — that is the whole reason the plan lives in beads instead of prose. @@ -92,6 +99,8 @@ releases the tasks that were waiting on it, so a task left `in_progress` out of stalls everything downstream. The root is the exception: it represents the deliverable and closes at merge (section 4). +Status is not paperwork. It is both the handoff and the gate. + **Then watch for these five things. They are observable events, not judgment calls:** 1. **The operator redirects you** — "no, do X instead", "we tried that", "that breaks @@ -206,10 +215,7 @@ a list, and `bd ready` cannot tell you anything useful about it. Labels are categorization **orthogonal to type and priority** — a bead carries as many as apply, giving cross-cutting views the tree cannot. -> **Never invent a label.** What is listed below is the entire vocabulary. A label that -> exists in the database but is not listed here is drift, not precedent — do not copy it. -> If a bead genuinely needs something absent from these lists, that is the operator's -> decision, not yours: raise it with a `human` bead and proceed without the label. +**Never invent a label.** What is listed below is the entire vocabulary. ```bash bd create --labels="gremlin-core,3.8" # at creation @@ -231,26 +237,23 @@ a root *after* its children exist do not backfill, so label the root first. ### Dimensions — descriptive; several may apply -**Module** — the Maven module name, verbatim. If it is not a directory with a `pom.xml`, it -is not a module label. Sub-trees use their parent's label. +**Module** — a unit of code ``` -gql-gremlin gremlin-annotations gremlin-console gremlin-core gremlin-dotnet +gql-gremlin gremlin-annotations gremlin-console gremlin-core gremlin-dotnet gremlin-driver gremlin-go gremlin-groovy gremlin-js gremlin-language gremlin-python gremlin-server gremlin-shaded gremlin-test gremlin-tools gremlin-util hadoop-gremlin spark-gremlin tinkergraph-gremlin docs +gremlint gremlator gremlin-mcp ``` -**Release** — the release line, not the branch. Branches get renamed; the bead outlives them. - -``` -3.7 3.8 4.0 -``` +**Release** — the official release version, not the branch - examples: `3.7.7`, `4.0.0-beta.2` -**Concern** — a cross-cutting property that changes what someone must do about the change. +**Concern** — a cross-cutting property or feature. ``` -breaking-change deprecation security serialization protocol performance release build +breaking-change deprecation security serialization protocol performance +release build ``` ---
