chore: FSD stabilization, strict TDD enforcement, and unlearn mechanism

- implemented self-healing unlearn for Qdrant false positives
- centralized testing logic in conftest
- documented core rules, ai standards, and goap philosophy
- purged old dev scratchpads
This commit is contained in:
2026-04-24 13:28:32 +02:00
parent 75009d91a2
commit 30724d3c03
196 changed files with 8519 additions and 1595 deletions

View File

@@ -3,8 +3,8 @@ requires = ["flit_core >=3.2,<4"]
build-backend = "flit_core.buildapi"
[project]
name = "GramAddict"
authors = [{ name = "GramAddict Team", email = "maintainers@gramaddict.org" }]
name = "GramPilot"
authors = [{ name = "Marc Mintel", email = "marc@mintel.me" }]
readme = "README.md"
classifiers = [
"License :: Free for non-commercial use",
@@ -12,34 +12,70 @@ classifiers = [
"Programming Language :: Python :: 3"
]
license = { file = "LICENSE" }
requires-python = ">=3.6"
requires-python = ">=3.10"
dynamic = ["version", "description"]
dependencies = [
"colorama==0.4.4",
"ConfigArgParse==1.5.3",
"ConfigArgParse==1.7",
"PyYAML==6.0.1",
"uiautomator2==2.16.14",
"urllib3==1.26.18",
"emoji==1.6.1",
"uiautomator2>=3.0.0",
"urllib3>=2.0.0",
"emoji==2.12.1",
"langdetect==1.0.9",
"atomicwrites==1.4.0",
"atomicwrites==1.4.1",
"spintax==1.0.4",
"requests~=2.31.0",
"packaging~=20.9"
"requests>=2.31.0",
"packaging>=23.0",
"python-dotenv==1.0.1",
"qdrant-client>=1.7.0",
]
[project.optional-dependencies]
analytics = ["matplotlib==3.4.2"]
dev = ["flit", "pre-commit", "black", "flake8", "isort", "ruff", "pytest", "pytest-mock", "pytest-asyncio"]
analytics = ["matplotlib>=3.8.0"]
dev = [
"flit",
"pre-commit",
"ruff",
"pytest",
"pytest-mock",
"pytest-asyncio",
"pytest-cov",
"hypothesis",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
addopts = "--strict-markers"
markers = [
"live: tests requiring a live ADB device",
"chaos: chaos engineering / corruption tests",
"property: hypothesis property-based tests",
]
[tool.coverage.run]
source = ["GramAddict"]
omit = ["GramAddict/plugins/*", "*/test_*"]
[tool.coverage.report]
fail_under = 60
show_missing = true
exclude_lines = [
"pragma: no cover",
"if __name__ == .__main__.",
"raise NotImplementedError",
]
[tool.ruff]
target-version = "py310"
line-length = 120
[tool.ruff.lint]
select = ["E", "F", "W", "I"]
ignore = ["E501"]
[project.urls]
Documentation = "https://docs.gramaddict.org/#/"
Source = "https://github.com/GramAddict/bot"
Source = "https://github.com/marcmintel/grampilot"
[project.scripts]
gramaddict = "GramAddict.__main__:main"
grampilot = "GramAddict.__main__:main"