Skip to content

Feat/implement all 29 stories#1

Merged
Adoit merged 7 commits intomainfrom
feat/implement-all-29-stories
Mar 9, 2026
Merged

Feat/implement all 29 stories#1
Adoit merged 7 commits intomainfrom
feat/implement-all-29-stories

Conversation

@Adoit
Copy link
Owner

@Adoit Adoit commented Mar 9, 2026

No description provided.

Adoit added 7 commits March 9, 2026 08:44
- Epic 1: Project foundation — pyproject.toml, src/ layout, exceptions, models, config, oda init, test fixtures, CI
- Epic 2: Database connectivity — DialectAdapter ABC + SQLite/PG/MySQL adapters, ConnectionManager, oda connections/connect
- Epic 3: Schema exploration & docs — SchemaInspector, DocGenerator, oda schemas/tables/describe/sample/profile/docs
- Epic 4: Safe query execution — SafetyChecker, QueryEngine (LIMIT injection/timeout), DiagnosticEngine, oda query
- Epic 5: Query history & memory — HistoryTracker (JSONL), MemoryManager (YAML frontmatter), oda history, oda memory
- Epic 6: Golden SQL evals — EvalRunner, oda eval run/results/add, refined OpenCode rules template

224 unit tests passing; ruff check + format clean
- Ignore _bmad/ (tool infrastructure, not project code)
- Ignore .opencode/agents/ and .opencode/commands/ (generated from _bmad)
- Ignore _bmad-output/bmb-creations/ and implementation-artifacts/ (generated)
- Keep _bmad-output/planning-artifacts/ (architecture.md + epics.md are project source of truth)
- Remove previously-tracked BMAD files from git index
- Reduce module docstrings to single-line summaries; remove Usage: blocks
- Collapse multi-line Args/Returns docstrings to inline one-liners
- Remove inline comments that restate code; keep comments explaining why
- Remove section divider comments (# ── Commands ──)
- Add mypy and type stubs (types-pyyaml, types-pymysql) to dev deps and CI
- Bump rich to 14.3.3; add mypy step to GitHub Actions workflow
- Add new test files and expand coverage for query, safety, schema, docs,
  eval_runner, memory, cli_init, cli_memory, cli_docs, cli_eval, cli_query,
  cli_schema
- Update uv.lock for new dev dependencies
- Add keyring>=25.0 to runtime dependencies
- ConnectionManager stores passwords in OS keychain (macOS Keychain,
  GNOME Keyring, Windows Credential Manager) instead of plaintext YAML
- save_connection: strips password from connections.yaml, sets _keyring
  flag, falls back to plaintext with warning if keychain unavailable
- get_connection: fetches password from keychain when _keyring flag set
- remove_connection: also deletes the keychain entry on removal
- Add mock_keyring autouse fixture in conftest.py to redirect keyring
  calls to an in-memory dict for all unit tests
…ostics

- Timeout detection: replace string-matching with pgcode/errno checks
  (psycopg3 pgcode 57014, pymysql errno 3024/1969) to avoid false positives
- Separate set_statement_timeout try-block from query execution try-block
  so config failures are not misclassified as query errors
- Reset statement timeout to 0 in finally block so pooled connections
  don't inherit the limit on subsequent queries
- Log warning when interrupt() fails to stop the SQLite thread
- Improve keyring failure log message; delete old entry before re-saving
- Add _MAX_DIAG_SAMPLE_VALUES constant to replace magic 5 in diagnostics SQL
- Document MySQL MAX_EXECUTION_TIME SELECT-only limitation
- Add 12 new tests covering the above (322 total, all passing)
@Adoit Adoit merged commit 30e3220 into main Mar 9, 2026
2 checks passed
@Adoit Adoit deleted the feat/implement-all-29-stories branch March 9, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant