chore: initialize EverOS 1.0.0
md-first memory extraction framework for AI agents. Markdown is the single source of truth; SQLite holds state and LanceDB provides the rebuildable vector + BM25 + scalar index. The codebase follows a single-direction DDD layering (entrypoints -> service -> memory -> infra, with component / core / config cross-cutting) enforced by import-linter. Engineering surface: - Coding conventions in .claude/rules/ (path-scoped) and workflows in .claude/skills/ (/commit, /new-branch, /pr). - GitHub Actions CI runs make lint + test + integration; pre-commit mirrors the gates locally (ruff, hygiene hooks, gitlint commit-msg). - Commit messages follow Conventional Commits, enforced by gitlint. - make lint also enforces datetime two-zone discipline and OpenAPI drift.
This commit is contained in:
37
.claude/rules/init-py-and-reexport.md
Normal file
37
.claude/rules/init-py-and-reexport.md
Normal file
@ -0,0 +1,37 @@
|
||||
---
|
||||
paths:
|
||||
- "src/**/__init__.py"
|
||||
- "src/**/*.py"
|
||||
---
|
||||
|
||||
# `__init__.py` and re-export rule
|
||||
|
||||
A package's `__init__.py` is its **public facade**. Consumers import from the
|
||||
package, never from its internal modules.
|
||||
|
||||
## Pattern
|
||||
|
||||
```python
|
||||
"""One-paragraph module docstring: what this package is and how to use it."""
|
||||
|
||||
from .models import Episode as Episode
|
||||
from .models import MemCell as MemCell
|
||||
|
||||
__all__ = [
|
||||
"Episode",
|
||||
"MemCell",
|
||||
]
|
||||
```
|
||||
|
||||
- **Explicit `X as X` redundant-alias form** on each re-export. This is intentional:
|
||||
it marks the name as a deliberate public re-export (ruff `F401` / `PLC0414` aware)
|
||||
rather than an accidental unused import.
|
||||
- **`__all__`** lists every public name, alphabetically sorted, matching the
|
||||
re-exports. It is the contract; keep it in sync.
|
||||
- **Internal modules stay private** — don't re-export helpers that aren't part of
|
||||
the public API.
|
||||
- New subpackage? Add an `__init__.py` with a docstring + `__all__` even if it
|
||||
starts small. Empty-but-documented beats missing.
|
||||
|
||||
This facade discipline is what lets `import-linter` forbid deep imports across
|
||||
package boundaries (see [architecture.md](architecture.md)).
|
||||
Reference in New Issue
Block a user