# Cursor rules for LabDataStorageEvaluation ## Commit messages (mandatory format) Every commit message you generate MUST follow this convention exactly. ### Source of truth (staged diff only) Base the message ONLY on `git diff --cached` (the index / staged changes). Do not use unstaged working-tree diffs, untracked files, recent commit messages, or chat context. - Mention only paths that appear in the staged diff. - If the index is empty, output exactly: `No staged changes` - Never mention a file (e.g. README.md) that is not in the staged diff. First line: type(scope): description - lowercase imperative English summary, under 72 characters, no trailing period - type is one of (closed list): feat fix perf refactor security docs ci chore test - scope is one of (closed list): specs rules docs config datagen convert bench report tools all Scope selection by changed files: - specs = docs/specs/** - rules = docs/rules/** - docs = other prose docs (README.md, CLAUDE.md, docs/examples/**) - config = configuration files (.gitignore, .cursorrules, editable YAML defaults) - datagen = lab-configuration and data-generation code (tasks 01-03: make_lab_config.py, make_process_flow.py, generate_data.py) - convert = format converters: JSON-LD, SQLite, PostgreSQL, RDF (tasks 04-07) - bench = benchmark queries, runner, extrapolation (tasks 08-10) - report = reporting code and templates (task 11) - tools = helper scripts under tools/ - all = multiple areas, or when no narrower scope honestly fits Body: the subject is only a title. If the diff touches more than one area, add a blank line and 2-6 concise bullets covering every meaningful changed area. Split unrelated work into separate commits. Special forms allowed as-is: "Merge ..." commits; "release(scope): vX.Y.Z". Never emit vague or unprefixed subjects such as: "Update files", "Improve project", "clarify rules", "changes". Examples of good subjects: - feat(datagen): stream friction cycle rows during CSV generation - fix(convert): match sqlite row counts against MANIFEST before commit - docs(rules): add benchmark methodology rule - chore(config): ignore out/ artifact tree ## Typography Use plain ASCII typography in everything you write into this repository: hyphen-minus instead of en/em dashes, straight quotes, three dots instead of the ellipsis character. See docs/rules/code-data-formatting.md. ## Python Python code in this repository uses TABS for indentation. See docs/rules/code-python-style.md for the closed dependency list.