dirsql 0.0.15__tar.gz → 0.0.17__tar.gz

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.
Files changed (30) hide show
  1. dirsql-0.0.17/.claude/CLAUDE.md +3 -0
  2. {dirsql-0.0.15 → dirsql-0.0.17}/.gitignore +0 -1
  3. {dirsql-0.0.15 → dirsql-0.0.17}/PKG-INFO +1 -1
  4. {dirsql-0.0.15 → dirsql-0.0.17}/pyproject.toml +1 -1
  5. dirsql-0.0.15/.claude/CLAUDE.md +0 -122
  6. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/minor-release.yml +0 -0
  7. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/patch-release.yml +0 -0
  8. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/pr-monitor.yml +0 -0
  9. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/publish.yml +0 -0
  10. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/python-lint.yml +0 -0
  11. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/python-test.yml +0 -0
  12. {dirsql-0.0.15 → dirsql-0.0.17}/.github/workflows/rust-test.yml +0 -0
  13. {dirsql-0.0.15 → dirsql-0.0.17}/.npmignore +0 -0
  14. {dirsql-0.0.15 → dirsql-0.0.17}/Cargo.lock +0 -0
  15. {dirsql-0.0.15 → dirsql-0.0.17}/Cargo.toml +0 -0
  16. {dirsql-0.0.15 → dirsql-0.0.17}/LICENSE +0 -0
  17. {dirsql-0.0.15 → dirsql-0.0.17}/SUMMARY.md +0 -0
  18. {dirsql-0.0.15 → dirsql-0.0.17}/python/dirsql/__init__.py +0 -0
  19. {dirsql-0.0.15 → dirsql-0.0.17}/python/dirsql/_async.py +0 -0
  20. {dirsql-0.0.15 → dirsql-0.0.17}/src/db.rs +0 -0
  21. {dirsql-0.0.15 → dirsql-0.0.17}/src/differ.rs +0 -0
  22. {dirsql-0.0.15 → dirsql-0.0.17}/src/lib.rs +0 -0
  23. {dirsql-0.0.15 → dirsql-0.0.17}/src/matcher.rs +0 -0
  24. {dirsql-0.0.15 → dirsql-0.0.17}/src/scanner.rs +0 -0
  25. {dirsql-0.0.15 → dirsql-0.0.17}/src/watcher.rs +0 -0
  26. {dirsql-0.0.15 → dirsql-0.0.17}/tests/__init__.py +0 -0
  27. {dirsql-0.0.15 → dirsql-0.0.17}/tests/conftest.py +0 -0
  28. {dirsql-0.0.15 → dirsql-0.0.17}/tests/integration/__init__.py +0 -0
  29. {dirsql-0.0.15 → dirsql-0.0.17}/tests/integration/test_async_dirsql.py +0 -0
  30. {dirsql-0.0.15 → dirsql-0.0.17}/tests/integration/test_dirsql.py +0 -0
@@ -0,0 +1,3 @@
1
+ # dirsql
2
+
3
+ All project conventions, workflow rules, and development instructions are in [AGENTS.md](../AGENTS.md).
@@ -1,7 +1,6 @@
1
1
  /target
2
2
  .beads
3
3
  .claude/settings.local.json
4
- AGENTS.md
5
4
 
6
5
  # Dolt database files (added by bd init)
7
6
  .dolt/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.0.15
3
+ Version: 0.0.17
4
4
  Requires-Dist: pytest>=8 ; extra == 'dev'
5
5
  Requires-Dist: pytest-describe>=2 ; extra == 'dev'
6
6
  Requires-Dist: pytest-asyncio>=0.23 ; extra == 'dev'
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "dirsql"
7
- version = "0.0.15"
7
+ version = "0.0.17"
8
8
  description = "Ephemeral SQL index over a local directory"
9
9
  license = "MIT"
10
10
  requires-python = ">=3.12"
@@ -1,122 +0,0 @@
1
- # dirsql Development
2
-
3
- ## Scratch Files
4
-
5
- Write scratch/temporary files to `/tmp` instead of asking permission. Use unique filenames to avoid collisions with other sessions.
6
-
7
- ## Workflow
8
-
9
- - Work in git worktrees under `.worktrees/` folder
10
- - **NEVER commit directly to main** - always create a PR
11
- - One PR per bead. Beads should be concise and small -- as small as possible while still being useful
12
- - Use `bd` (Beads) for task tracking: `bd list`, `bd show <id>`, `bd ready`
13
- - **Bead first**: When starting new work, the first step is always to create a bead (`bd create`). No implementation work begins without a bead.
14
-
15
- ### Git Worktrees
16
-
17
- **ALL work happens in git worktrees.** Never edit files in the root repo directory. Never commit outside a worktree.
18
-
19
- #### Creating a Worktree
20
-
21
- ```bash
22
- git worktree add .worktrees/my-feature -b feat/my-feature
23
- cd .worktrees/my-feature
24
- ```
25
-
26
- #### Removing a Worktree
27
-
28
- **DANGER: removing a worktree while your shell CWD is inside it permanently breaks the shell.** The ONLY safe procedure:
29
-
30
- ```bash
31
- # Step 1: Move CWD to the root repo FIRST (not optional)
32
- cd /home/duncan/work/code/projects/dirsql
33
-
34
- # Step 2: Now remove the worktree
35
- git worktree remove .worktrees/my-feature
36
- ```
37
-
38
- **Do NOT skip step 1. Do NOT substitute `git -C` for `cd`.**
39
-
40
- ### Beads Workflow
41
-
42
- **Lifecycle:**
43
- 1. **Claim it FIRST**: `bd update <id> --claim` before any work
44
- 2. **Create worktree and branch**
45
- 3. **Link the PR**: `bd update <id> --external-ref "gh-<pr-number>"` after creating the PR
46
- 4. **Close**: `bd close <id>` immediately after the PR is merged
47
-
48
- ### Subagent Workflow
49
-
50
- New work on beads should be done via subagents in isolated worktrees. Each subagent:
51
- 1. Claims the bead (`bd update <id> --claim`) before starting any work
52
- 2. Creates a worktree and branch for its bead
53
- 3. Does the implementation work (red/green TDD)
54
- 4. Pushes the branch and opens a PR
55
- 5. Monitors the PR and proactively resolves:
56
- - CI failures
57
- - GPG signing complaints
58
- - Merge conflicts
59
- 6. Continues monitoring until the PR is in a mergeable state
60
-
61
- ### Orchestrator Responsibilities
62
-
63
- The orchestrator (main Claude session) must proactively:
64
- 1. **Monitor all open PRs** -- don't wait for the user to report failures. Check CI status after agent completion and on an ongoing basis.
65
- 2. **Fix CI failures** on open PRs immediately, either directly or by dispatching a fix agent.
66
- 3. **Handle post-merge cleanup** as soon as a PR merges (pull main, remove worktree, delete branch, close bead).
67
- 4. **Keep the user informed** of PR status without being asked.
68
- 5. **Use foreground monitoring** when waiting on CI and there's no other work to do. Background monitoring causes the conversation to go silent -- use it only when there's genuinely parallel work to perform.
69
- 6. **Scripts to `/tmp`**: For polling/monitoring scripts (watching CI, waiting for merges), write the script to `/tmp` then run it via `bash /tmp/script.sh`. Do not use inline bash loops in tool calls.
70
-
71
- ### Post-Merge Cleanup
72
-
73
- After a PR merges, the agent (or orchestrator) must:
74
- 1. Pull main in the **root repo**: `git -C /home/duncan/work/code/projects/dirsql pull origin main`
75
- 2. **Move CWD to root repo first** (CRITICAL -- never remove a worktree from inside it): `cd /home/duncan/work/code/projects/dirsql`
76
- 3. Remove the worktree: `git worktree remove .worktrees/<name>`
77
- 4. Delete the local branch: `git branch -d <branch-name>`
78
- 5. **Verify the bead is addressed** by the merged PR, then close it: `bd close <id>`
79
-
80
- ## Testing
81
-
82
- ### Red/Green Development
83
-
84
- Follow **red/green** (test-first) methodology:
85
-
86
- 1. **Write the test first** -- it must capture the desired behavior
87
- 2. **Run it and confirm it fails (RED)** -- do NOT proceed until the test turns red reliably. A test that passes before implementation proves nothing.
88
- 3. **Make the minimal change to pass (GREEN)** -- only then write the implementation
89
- 4. Refactor if needed, keeping tests green
90
-
91
- ### TDD Order: Outside-In
92
-
93
- Tests are written **before** implementation, starting from the outermost layer:
94
-
95
- 1. **Integration test first** -- proves the feature works from the consumer's perspective
96
- 2. **Unit tests** -- written as you implement each module
97
-
98
- A feature is not done until integration tests pass and cover the new functionality.
99
-
100
- ### When to Write What
101
-
102
- **Does the commit change the public-facing API?**
103
- - Yes -> **integration test required**, plus unit tests as you go
104
- - No -> Check if adequate integration coverage already exists:
105
- - Adequate -> unit tests only
106
- - Gaps -> add the missing integration tests, plus unit tests
107
-
108
- **Always write unit tests.** The question is whether you also need integration tests.
109
-
110
- ### Test Locations
111
-
112
- - **Unit tests**: Colocated with source
113
- - Python: `foo.py` -> `foo_test.py` in same directory
114
- - Rust: inline `#[cfg(test)]` module at bottom of each source file
115
- - **Integration tests**: `tests/integration/` -- test the Python SDK layer, mock third-party deps (SQLite, LLM calls). Heavy use of pytest fixtures. Run in CI.
116
- - **E2E tests**: `tests/e2e/` -- real filesystem, real SQLite, real LLM calls, no mocks. Heavy use of pytest fixtures. **NOT run in CI** (eventual LLM calls make them non-free). Run locally by Claude after significant code changes.
117
-
118
- ### E2E Test Policy
119
-
120
- E2E tests are your primary feedback mechanism. Run them liberally after significant changes -- they catch issues that integration tests miss because integration tests mock out SQLite and (eventually) LLM calls. But do NOT add them to CI workflows. They are a local development tool.
121
-
122
- See skillet or karat for examples of test organization, fixtures, and pytest-describe patterns.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes