Positioning (axes/tags/records) for Keble v2.1 market exploration.
Project description
keble-positioning
keble-positioning owns positioning grids, views, viewport actions,
positionable item records, and agent tools for market-positioning studies.
Verified State
Checked on 2026-06-30 against pyproject.toml, AGENTS.md, package exports,
keble_positioning/, CODE_GUIDELINES.md, and the rebased origin/main test
layout.
- Package:
keble-positioning 0.38.1 - Package version:
0.38.1 - Python:
>=3.13,<3.14 - Critical deps:
pydantic,keble-db,keble-helpers,keble-agentic-chat,keble-segmenting,pydantic-ai-slim,griffe,keble-task - Segmenting dependency line:
keble-segmenting >=0.38.0,<1 - Task dependency line:
keble-task >=2.21.0,<3.0.0 - Test/dev chat source: bundled compatible
deps/keble_agentic_chat-3.44.0-py3-none-any.whl - Source roots:
schemas/,crud/,client/,agent/ - Test roots:
tests/unit,tests/integration,tests/live/keepa,tests/live/llm, and tracked JSON/static fixtures undertests/assets - Test helpers:
keble_positioning.testingowns package-local settings, Redis namespace helpers, reusable datasets, and dependency builders shared across test layers. - Storage and live-provider tests can read
keble.backend/.envthroughkeble_db.testing; package-local env variables still win when set. - Public exports:
PositioningClient, positioning task metadata, view/grid schemas, action events/results, and query/mutation chat tool providers.
Runtime Contract
- Positioning is schema/protocol first. Backend owns task identity; this package owns positioning domain shapes, action handling, and grid/view contracts.
- Public bootstrap exports include
PositioningTaskMetadata,PositioningBootstrapResult, andPositioningViewDetailed. abootstrap_positioning(...)seeds the first positioning rows from typed task metadata, includingsearch_terms=payload.search_terms; positioning rows do not persistsearch_terms.atask_handler(...)executes the task request path, for exampleawait positioning_client.atask_handler(request=request), but this package still does not own background orchestration or runtime status recovery.- Public frontend-facing create flows are product-market-only unless backend,
keble-core, and frontend are migrated together. - Grouped positioning followers are metadata-only. Missing follower
SegmentedResultrows are expected and must not be backfilled by copying main/group rows. - Agent tools must validate arguments term by term and raise typed retry errors for model-correctable inputs.
Testing
Default fast tests are offline:
uv sync --group test
uv run python -c "import keble_segmenting"
uv run python -c "import keble_positioning"
uv run pytest -m "not live and not slow and not eval and not local_stack and not db_stack and not container"
uv run npx --yes pyright .
Compatibility validation commands:
uv run pytest tests -quv run pytest -m "not live" tests -quv run pytest -m live tests -quv lockuv sync
Opt-in layers from AGENTS.md:
RUN_INTEGRATION=1 uv run pytest -m "integration and local_stack"
RUN_INTEGRATION=1 RUN_KEEPA_LIVE=1 RUN_LLM_LIVE=1 uv run pytest -m keepa_live
RUN_INTEGRATION=1 RUN_LLM_LIVE=1 uv run pytest -m "live and llm"
Keep real-service behavior under explicit integration/live markers and env
switches. Do not place DB, Keepa, or LLM calls in the default test path.
Live Keepa and LLM tests assert current structured invariants directly. Do not
reintroduce tracked Keepa or LLM response cache files as proof for live behavior.
If real DB or Keepa fixtures are missing, enrich keble-db or keble-keepa
testing helpers first instead of adding package-local fake placeholders.
Do not add root tests/config.py, tests/redis_namespace.py, or duplicate
tests/pytest.ini; shared helpers belong in keble_positioning.testing.
Keep tests/assets non-executable and data-only.
The test/dev keble-agentic-chat source is pinned to the bundled compatible
deps/keble_agentic_chat-3.44.0-py3-none-any.whl. Do not point it at the
sibling ../keble-agentic-chat checkout unless this repo also moves to that
checkout's keble-helpers dependency line; otherwise uv run can fail before
pytest collection.
Change Logs
Historical release notes and long AI change history live under logs/.
Side Effect If Changes
- Backend positioning room APIs, task room sockets, frontend workspace tables, and segmenting integration depend on these schemas and events.
- View/action identity changes must propagate to backend,
keble-core, and frontend task-row/rendering code together. - Testing-layer changes must preserve the marker/env-gate split above so the default suite stays offline.
- Test/dev dependency source changes affect every
uv run pytestand pyright proof command in this repo; keeppyproject.toml,uv.lock, and bundled dependency wheels aligned.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file keble_positioning-0.38.1.tar.gz.
File metadata
- Download URL: keble_positioning-0.38.1.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da47d88d4a08c54a31871521caba342b1897c37288310896dd0f181855e3606a
|
|
| MD5 |
a885f2c36acd51cac8bd840ffc92313e
|
|
| BLAKE2b-256 |
1f6355c5c7978e07c1ac1806f16ea2927f997e293346426f6373fffc93d74b85
|
File details
Details for the file keble_positioning-0.38.1-py3-none-any.whl.
File metadata
- Download URL: keble_positioning-0.38.1-py3-none-any.whl
- Upload date:
- Size: 91.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7e3f2e73670d31b6833f3dfcb676028bcbbd26d94dbcc97d08a451fcc87a747
|
|
| MD5 |
cf6c89ca3c069fb171d9517c9104b587
|
|
| BLAKE2b-256 |
0e7435f23453172ea9a417e34583728b6efc903fdf53506fa577c58266c1daf9
|