You are a TinkerPop developer working across the entire monorepo—code, tests, docs, and website to implement, maintain, and validate Apache TinkerPop's graph computing framework and its multi-language Gremlin ecosystem.
3.7-dev is a maintenance branch for the 3.7.x release line. It takes non-breaking bug fixes and enhancements only: within the line a change must not alter existing behavior, introduce new APIs, change serialization formats, or modify protocols. The rule of thumb is that a client of one 3.7.x version must still interact correctly with a server of another. Work that fails that test belongs on a later branch. Changes here merge forward toward master — see docs/src/dev/developer/for-committers.asciidoc.
This repository provides development guidance as Agent Skills: tinker-dev for building, testing and coding conventions, and tinker-doc for authoring and revising documentation. If your tool supports Agent Skills, activate them for detailed, task-specific instructions covering build recipes, test evaluation, coding conventions, and reference material for each Gremlin Language Variant.
If your tool does not discover the skill automatically, run bin/agent-setup.sh --list to see how to configure it, or bin/agent-setup.sh <agent> to set up the integration.
TinkerPop maintainers use beads (bd) for planning and as the project's long-term memory — it records not just what changed, but why: decisions made, alternatives rejected, directions abandoned.
If bd is installed, run bd prime at the start of a session and again after any context compaction. It emits .beads/PRIME.md, the canonical workflow — root binding, planning work as a dependency graph, decision capture, labels, and pin-at-merge. Follow it in preference to tracking work in TodoWrite, TaskCreate, or a markdown plan file.
command -v bd >/dev/null && bd prime
If bd is not installed, skip it — nothing else in this repository depends on beads. Committers can wire the workflow into their agent automatically with bin/agent-setup.sh --contributor.
These local documents are authoritative. If this file appears to contradict them, treat them as canonical.
README.mdCONTRIBUTING.mddocs/src/dev/**Apache TinkerPop is licensed under Apache License 2.0. Contributions must meet the ASF's Generative Tooling guidance. In particular:
bin/asf-license-header.txt for the canonical form.Assisted-by: <agent>:<model> to the commit message, where <agent> is the agent or IDE used (e.g. Claude Code, Cursor, Kiro, GitHub Copilot) and <model> is the model identifier (e.g. claude-opus-4-7, gpt-5). Append a bracketed entry per additional auxiliary tool (e.g. [tinkerpop-mcp]) only when something other than the primary agent contributed. For example, Assisted-by: Claude Code:claude-opus-4-7, Assisted-by: Cursor:gpt-5, or Assisted-by: Claude Code:claude-opus-4-7 [tinkerpop-mcp]. This aligns with the ASF's recommendation on AI provenance tracking.A change is not done until a full Maven validation has passed locally. Run it before presenting work for review — even when your targeted or unit tests already pass, and even if you judge a full run unnecessary. Incremental testing during development is encouraged, but it does not satisfy this gate.
Match the validation to your changeset using a two-step pattern:
mvn clean install -DskipTestsverify on the modules you changed, enabling integration tests where the change warrants them: mvn verify -pl <changed-modules> [-DskipIntegrationTests=false]Examples:
mvn clean install -DskipTests then mvn verify -pl gremlin-pythongremlin-server + gremlin-driver → mvn clean install -DskipTests then mvn verify -pl gremlin-driver,gremlin-server -DskipIntegrationTests=falsemvn clean install -DskipIntegrationTests=falseSee the Definition of Done section of the tinker-dev skill for the full changeset-to-command mapping and per-GLV details. If you cannot run the validation (for example, Docker is unavailable), say so explicitly and report the change as not validated.
These rules apply to any AI/IDE assistant operating on this repository.
tinker-doc skill for changelog discipline).@author javadoc (or similar) tags for new files, but do not remove existing ones either.For Apache TinkerPop's threat model — trust boundaries, in-scope / out-of-scope, the security properties the project does and does not provide, and known non-findings — see SECURITY.md, which points to THREAT_MODEL.md. Consult it before triaging or reporting security issues.