Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions project/TICKETS.md
Original file line number Diff line number Diff line change
Expand Up @@ -442,4 +442,5 @@ project analysis or human-owned ticket inputs.
| **ticket-442** | [`README.md`](./ticket-442/README.md) | - | - | - | - | - |
| **ticket-443** | [`README.md`](./ticket-443/README.md) | - | - | - | - | - |
| **ticket-445** | [`README.md`](./ticket-445/README.md) | - | - | - | - | - |
| **ticket-447** | [`README.md`](./ticket-447/README.md) | - | - | - | - | - |
<!-- AUTO:TICKET_INDEX:END -->
24 changes: 24 additions & 0 deletions project/ticket-448/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Ticket 448: Support pythonpath src and dot fallback in python-pytest builtin verify profile

- **ID**: ticket-448
- **Owner**: gemini
- **Status**: IN_PROGRESS
- **Workflow state**: PUBLICATION
- **Created**: 2026-10-11

SESSION_EXECUTION_AUTHORIZATION: user requests continuation, test and merge. Builtin python-pytest profile must include src and . in pythonpath so packages with src/ layout can run pytest in clean worktrees without prior editable install.

## Goal and scope

Update `BUILTIN_PROFILES["python-pytest"]` in `src/koru/queue/verify/profiles.py` to use `python -m pytest -o pythonpath="src ." -q`. This ensures that in isolated worktrees (where repositories have not been installed via `pip install -e .`), pytest can discover and import package code located under `src/` as well as the repository root `.`.

## Acceptance criteria

- [x] AC-01: `BUILTIN_PROFILES["python-pytest"].command` is `python -m pytest -o pythonpath="src ." -q`.
- [x] AC-02: Regression tests verify that `python-pytest` executes with `pythonpath="src ."` option.
- [x] AC-03: Governance checks pass cleanly.

## Tracking boundary

This directory contains the minimal reviewed intent. Optional participant prose
and raw command logs are not required delivery output.
75 changes: 75 additions & 0 deletions project/ticket-448/intent.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"schema": "new-project.intent/v3",
"ticket": "ticket-448",
"summary": "Support pythonpath src and dot fallback in python-pytest builtin verify profile",
"workstream": "application",
"classification": {
"kind": "SERVICE",
"priority": "P2",
"origin": "health"
},
"allowedPaths": [
"project/ticket-448/**",
"TODO.md",
"project/TICKETS.md",
"src/koru/queue/verify/profiles.py",
"tests/test_queue_verify_profiles.py"
],
"forbiddenPaths": [
"project/ticket-*/user-*.md"
],
"stacks": [],
"dependsOn": [],
"conflictsWith": [],
"integrationTicket": null,
"delivery": {
"acceptedBaseSha": "54490af40c001591304cb616cd66ec5617469716",
"targetBranch": "main",
"outcome": "Include src and . in pythonpath option for python-pytest builtin verify profile so that packages using src/ layout can be verified in fresh worktrees without prior editable install.",
"nonGoals": [
"No changes to other verify profiles",
"No changes to custom project profiles"
],
"complexity": "S",
"estimatedMinutes": 30,
"budgets": {
"maxImplementationFiles": 2,
"maxAffectedComponents": 1,
"maxPublicInterfaceChanges": 0,
"maxRuntimeDependencies": 0
},
"architecture": {
"status": "accepted",
"decision": "Configure python-pytest builtin profile to execute python -m pytest -o pythonpath=\"src .\" -q.",
"components": [
{
"name": "queue-verify-profiles",
"paths": [
"src/koru/queue/verify/profiles.py",
"tests/test_queue_verify_profiles.py"
]
}
],
"responsibilityChanges": false,
"interfaceChanges": [],
"dataChanges": [],
"ui": {
"impact": "none",
"states": [],
"evidence": []
},
"rollback": "Revert commit for ticket-448."
},
"runtimeDependencies": [],
"validation": [
{
"criterion": "AC-01",
"commands": [
"pytest tests/test_queue_verify_profiles.py",
"./project/governance-check.sh"
],
"evidence": "Tests verifying python-pytest command configuration and fallback."
}
]
}
}
2 changes: 1 addition & 1 deletion src/koru/queue/verify/profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class VerifyProfile:
for profile in (
VerifyProfile(
name="python-pytest",
command="python -m pytest -q",
command='python -m pytest -o pythonpath="src ." -q',
timeout_s=600,
description="run the project's pytest suite",
),
Expand Down
4 changes: 4 additions & 0 deletions tests/test_queue_verify_profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ def test_builtins_are_present_without_any_config(self) -> None:
"shellcheck",
):
self.assertIsNotNone(registry.get(name), name)
self.assertEqual(
registry.get("python-pytest").command,
'python -m pytest -o pythonpath="src ." -q',
)

def test_a_project_profile_from_koru_yaml_is_loaded(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
Expand Down
Loading