From f9ad6172ed468a996993137a098b3917461f508b Mon Sep 17 00:00:00 2001 From: Tom Softreck Date: Mon, 10 Aug 2026 13:39:28 +0200 Subject: [PATCH 1/3] plan(ticket-004): require Goal 2.1.291 Co-authored-by: Koru Agent --- TODO.md | 3 ++ project/TICKETS.md | 1 + project/ticket-004/README.md | 43 +++++++++++++++++++ project/ticket-004/ai-codex-logs.txt | 0 project/ticket-004/ai-codex.md | 29 +++++++++++++ project/ticket-004/changelog.md | 8 ++++ project/ticket-004/intent.json | 62 ++++++++++++++++++++++++++++ project/ticket-004/preprompt.md | 8 ++++ 8 files changed, 154 insertions(+) create mode 100644 project/ticket-004/README.md create mode 100644 project/ticket-004/ai-codex-logs.txt create mode 100644 project/ticket-004/ai-codex.md create mode 100644 project/ticket-004/changelog.md create mode 100644 project/ticket-004/intent.json create mode 100644 project/ticket-004/preprompt.md diff --git a/TODO.md b/TODO.md index 4a9f228d..79b35de1 100644 --- a/TODO.md +++ b/TODO.md @@ -10,6 +10,9 @@ - [ ] [`ticket-005`](project/ticket-005/README.md) — assign Koru's canonical development DSL and uv lockfile to the integration workstream. State: `IN_PROGRESS / EDIT`; classification: `SERVICE / governance`. +- [ ] [`ticket-004`](project/ticket-004/README.md) — require published Goal + 2.1.291 across the development-tool declarations and lockfile. State: + `PLAN / WAIT_FOR_APPROVAL`; classification: `SERVICE / integration`. # TODO diff --git a/project/TICKETS.md b/project/TICKETS.md index 1298fd71..627449ce 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -6,3 +6,4 @@ | [ticket-002](ticket-002/README.md) | DONE | Adopt immutable new-project 0.11.0 governance and work-classification package | [ai-codex.md](ticket-002/ai-codex.md) | | [ticket-003](ticket-003/README.md) | DONE | Restore the current-main Ruff baseline before governance adoption | [ai-codex.md](ticket-003/ai-codex.md) | | [ticket-005](ticket-005/README.md) | IN_PROGRESS | Assign development DSL and lockfile ownership | [ai-codex.md](ticket-005/ai-codex.md) | +| [ticket-004](ticket-004/README.md) | PLAN | Require Goal 2.1.291 release-boundary fix | [ai-codex.md](ticket-004/ai-codex.md) | diff --git a/project/ticket-004/README.md b/project/ticket-004/README.md new file mode 100644 index 00000000..e7b8009f --- /dev/null +++ b/project/ticket-004/README.md @@ -0,0 +1,43 @@ +# Ticket 004: Require Goal 2.1.291 release-boundary fix + +- **ID**: ticket-004 +- **Owner**: unresolved:human +- **Status**: PLAN +- **Workflow state**: WAIT_FOR_APPROVAL +- **Created**: 2026-08-10 +- **Work classification**: `SERVICE / integration` + +## Goal and scope + +Raise Koru's Goal development-tool floor from 2.1.264 to 2.1.291 in the +canonical dependency declarations and refresh the lockfile. Version 2.1.291 +contains the synchronized-version transition boundary fix, so a repository +whose version was already bumped does not receive a second false bump while a +newer release is still propagating through the package index. + +## Acceptance criteria + +- [x] AC-01: The user explicitly requested testing, publication and updating + Goal in dependent projects, with autonomous continuation. +- [ ] AC-02: `pyproject.toml` and its DSL source require `goal>=2.1.291` in + every existing Goal dependency slot. +- [ ] AC-03: `uv.lock` resolves Goal 2.1.291 from the public index and passes + `uv lock --check`. +- [ ] AC-04: Dependency-focused validation and repository governance pass. + +## Risk boundary + +This is a development-tool floor and lock refresh only. It does not add a new +runtime dependency, change Koru APIs, alter queue/autonomy behavior or modify +generated analysis snapshots. + +## Session authorization + +The user authorized this concrete dependency update and autonomous execution +on 2026-08-10. No fresh confirmation is required for the bounded paths in the +accepted intent. + +## Participants + +- Human participant: unresolved; no user-* file was created by this script. +- Agent participant: [ai-codex.md](ai-codex.md) diff --git a/project/ticket-004/ai-codex-logs.txt b/project/ticket-004/ai-codex-logs.txt new file mode 100644 index 00000000..e69de29b diff --git a/project/ticket-004/ai-codex.md b/project/ticket-004/ai-codex.md new file mode 100644 index 00000000..469da7db --- /dev/null +++ b/project/ticket-004/ai-codex.md @@ -0,0 +1,29 @@ +--- +participant-id: agent:codex +participant: codex +role: agent +ticket: ticket-004 +--- +# Participant: codex (AI agent) + +## Understanding + +The published Goal 2.1.291 fix must become Koru's minimum development-tool +version without touching runtime behavior or the user's dirty primary +checkout. + +## Execution plan + +1. Publish the bounded dependency plan from an isolated worktree. +2. Synchronize the DSL source, Python metadata and uv lock. +3. Run lock, focused test and governance checks. +4. Deliver through Goal and exact-head validation. + +## Actual changes + +- Governance plan prepared in an isolated worktree from `origin/main`. + +## Blockers + +- None. The user's explicit dependency-update request is recorded as session + authorization; protected delivery validation remains mandatory. diff --git a/project/ticket-004/changelog.md b/project/ticket-004/changelog.md new file mode 100644 index 00000000..61131f51 --- /dev/null +++ b/project/ticket-004/changelog.md @@ -0,0 +1,8 @@ +# Ticket Changelog (ticket-004) + +## [0.1.0] - 2026-08-10 + +- Initial governance scaffold created. +- No human participant identity or content was generated. +- Bounded Goal 2.1.291 dependency-floor and lock-refresh intent documented. +- Existing user changes in the primary checkout are isolated from this work. diff --git a/project/ticket-004/intent.json b/project/ticket-004/intent.json new file mode 100644 index 00000000..b8674ed6 --- /dev/null +++ b/project/ticket-004/intent.json @@ -0,0 +1,62 @@ +{ + "schema": "new-project.intent/v2", + "ticket": "ticket-004", + "summary": "Require Goal 2.1.291 release-boundary fix", + "workstream": "integration", + "allowedPaths": [ + "pyproject.toml", + "app.doql.less", + "uv.lock", + "project/ticket-004/**", + "TODO.md", + "project/TICKETS.md" + ], + "forbiddenPaths": [ + ".governance/**", + ".github/**", + "project/ticket-*/user-*.md", + "src/**", + "tests/**", + "docs/**", + "SUMD.md", + "project/*.toon.yaml" + ], + "stacks": ["python"], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null, + "delivery": { + "acceptedBaseSha": "e3bcacc1cf636441249493d663c4281979b5493d", + "targetBranch": "main", + "outcome": "Koru consistently requires and locks the published Goal 2.1.291 release-boundary fix", + "nonGoals": [ + "No new runtime dependency or public interface change", + "No Koru runtime, test, Docker, CI, governance or generated-analysis change" + ], + "complexity": "XS", + "estimatedMinutes": 20, + "budgets": { + "maxImplementationFiles": 3, + "maxAffectedComponents": 1, + "maxPublicInterfaceChanges": 0, + "maxRuntimeDependencies": 0 + }, + "architecture": { + "status": "accepted", + "decision": "Synchronize the existing Goal development-tool floor and deterministic uv resolution", + "components": [ + {"name": "development-toolchain", "paths": ["pyproject.toml", "app.doql.less", "uv.lock"]} + ], + "responsibilityChanges": false, + "interfaceChanges": [], + "dataChanges": [], + "ui": {"impact": "none", "states": [], "evidence": []}, + "rollback": "Revert the dependency-floor and lockfile commit" + }, + "runtimeDependencies": [], + "validation": [ + {"criterion": "AC-03", "commands": ["uv lock --check", "uv tree --locked --package goal"], "evidence": "Lock is current and resolves Goal 2.1.291"}, + {"criterion": "AC-04", "commands": ["./project/governance-check.sh", "python -m pytest tests/test_dev_sync.py -q"], "evidence": "Governance and dependency-tool tests pass"} + ] + } +} diff --git a/project/ticket-004/preprompt.md b/project/ticket-004/preprompt.md new file mode 100644 index 00000000..70018320 --- /dev/null +++ b/project/ticket-004/preprompt.md @@ -0,0 +1,8 @@ +# Ticket preprompt + +- **Task ID**: ticket-004 +- **Task title**: Require Goal 2.1.291 release-boundary fix +- **Created**: 2026-08-10T11:38:29Z + +Keep executable implementation outside this governance/evidence directory. +Read a human-owned user-*.md file only when one exists. From 17b4aef306a66d7600b598ba5ab6c839937c6a72 Mon Sep 17 00:00:00 2001 From: Tom Softreck Date: Mon, 10 Aug 2026 13:40:54 +0200 Subject: [PATCH 2/3] chore(deps): require Goal 2.1.291 Co-authored-by: Koru Agent --- TODO.md | 2 +- app.doql.less | 4 ++-- project/TICKETS.md | 2 +- project/ticket-004/README.md | 4 ++-- pyproject.toml | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/TODO.md b/TODO.md index 79b35de1..30053bac 100644 --- a/TODO.md +++ b/TODO.md @@ -12,7 +12,7 @@ `IN_PROGRESS / EDIT`; classification: `SERVICE / governance`. - [ ] [`ticket-004`](project/ticket-004/README.md) — require published Goal 2.1.291 across the development-tool declarations and lockfile. State: - `PLAN / WAIT_FOR_APPROVAL`; classification: `SERVICE / integration`. + `IN_PROGRESS / EDIT`; classification: `SERVICE / integration`. # TODO diff --git a/app.doql.less b/app.doql.less index 3632eb9b..8fd91246 100644 --- a/app.doql.less +++ b/app.doql.less @@ -19,7 +19,7 @@ dependencies { curllm: curllm[mcp]>=1.0.0; browser: "nlp2uri[envmap]>=0.4.7, env2llm[mqtt]>=0.1.14, testql>=1.2.64, curllm[mcp]>=1.0.0, playwright>=1.40,<2.0"; vdisplay: vdisplay>=0.1.58; - dev: "gillm>=0.1.24, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, ruff>=0.11,<0.16, mypy>=1.11,<3.0, pyright>=1.1.390,<2.0, hypothesis>=6.112,<7.0, pre-commit>=3.8,<5.0, types-PyYAML>=6.0,<7.0, vdisplay>=0.1.58, cryptography>=42.0,<50.0, planfile>=0.1.117, goal>=2.1.264, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0"; + dev: "gillm>=0.1.24, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, ruff>=0.11,<0.16, mypy>=1.11,<3.0, pyright>=1.1.390,<2.0, hypothesis>=6.112,<7.0, pre-commit>=3.8,<5.0, types-PyYAML>=6.0,<7.0, vdisplay>=0.1.58, cryptography>=42.0,<50.0, planfile>=0.1.117, goal>=2.1.291, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0"; api: "fastapi>=0.115,<1.0, uvicorn[standard]>=0.30,<1.0, httpx>=0.27,<1.0, prometheus-client>=0.21,<1.0"; agent: "instructor>=1.6,<2.0, litellm>=1.51,<2.0, openai>=1.54,<3.0, tiktoken>=0.8,<1.0"; fullm: fullm>=0.1.22; @@ -27,7 +27,7 @@ dependencies { obs: "nfo>=0.2.22,<1.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0"; queue: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, cryptography>=42.0,<50.0, redis>=5.1,<8.0"; quality: "import-linter>=2.0,<3.0, mutmut>=3.2,<4.0, pyupgrade>=3.17,<4.0, refurb>=2.0,<3.0"; - all: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, fastapi>=0.115,<1.0, gillm>=0.1.24, hypothesis>=6.112,<7.0, httpx>=0.27,<1.0, import-linter>=2.0,<3.0, instructor>=1.6,<2.0, litellm>=1.51,<2.0, mss>=9.0,<11.0, mutmut>=3.2,<4.0, mypy>=1.11,<3.0, mss>=9.0,<11.0, nfo>=0.2.22,<1.0, openai>=1.54,<3.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, pre-commit>=3.8,<5.0, prometheus-client>=0.21,<1.0, pyright>=1.1.390,<2.0, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, pyupgrade>=3.17,<4.0, redis>=5.1,<8.0, refurb>=2.0,<3.0, ruff>=0.11,<0.16, tillm>=0.1.35, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0, tiktoken>=0.8,<1.0, types-PyYAML>=6.0,<7.0, uvicorn[standard]>=0.30,<1.0, websockets>=12.0,<17.0, goal>=2.1.264, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0, curllm[mcp]>=1.0.0, cryptography>=42.0,<50.0, env2llm[mqtt]>=0.1.14, fullm>=0.1.22, nlp2uri[envmap]>=0.4.7, planfile>=0.1.117, playwright>=1.40,<2.0, testql>=1.2.64, vdisplay>=0.1.58"; + all: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, fastapi>=0.115,<1.0, gillm>=0.1.24, hypothesis>=6.112,<7.0, httpx>=0.27,<1.0, import-linter>=2.0,<3.0, instructor>=1.6,<2.0, litellm>=1.51,<2.0, mss>=9.0,<11.0, mutmut>=3.2,<4.0, mypy>=1.11,<3.0, mss>=9.0,<11.0, nfo>=0.2.22,<1.0, openai>=1.54,<3.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, pre-commit>=3.8,<5.0, prometheus-client>=0.21,<1.0, pyright>=1.1.390,<2.0, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, pyupgrade>=3.17,<4.0, redis>=5.1,<8.0, refurb>=2.0,<3.0, ruff>=0.11,<0.16, tillm>=0.1.35, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0, tiktoken>=0.8,<1.0, types-PyYAML>=6.0,<7.0, uvicorn[standard]>=0.30,<1.0, websockets>=12.0,<17.0, goal>=2.1.291, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0, curllm[mcp]>=1.0.0, cryptography>=42.0,<50.0, env2llm[mqtt]>=0.1.14, fullm>=0.1.22, nlp2uri[envmap]>=0.4.7, planfile>=0.1.117, playwright>=1.40,<2.0, testql>=1.2.64, vdisplay>=0.1.58"; } entity[name="TextContent"] { diff --git a/project/TICKETS.md b/project/TICKETS.md index 627449ce..39814cda 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -6,4 +6,4 @@ | [ticket-002](ticket-002/README.md) | DONE | Adopt immutable new-project 0.11.0 governance and work-classification package | [ai-codex.md](ticket-002/ai-codex.md) | | [ticket-003](ticket-003/README.md) | DONE | Restore the current-main Ruff baseline before governance adoption | [ai-codex.md](ticket-003/ai-codex.md) | | [ticket-005](ticket-005/README.md) | IN_PROGRESS | Assign development DSL and lockfile ownership | [ai-codex.md](ticket-005/ai-codex.md) | -| [ticket-004](ticket-004/README.md) | PLAN | Require Goal 2.1.291 release-boundary fix | [ai-codex.md](ticket-004/ai-codex.md) | +| [ticket-004](ticket-004/README.md) | IN_PROGRESS | Require Goal 2.1.291 release-boundary fix | [ai-codex.md](ticket-004/ai-codex.md) | diff --git a/project/ticket-004/README.md b/project/ticket-004/README.md index e7b8009f..c1031323 100644 --- a/project/ticket-004/README.md +++ b/project/ticket-004/README.md @@ -2,8 +2,8 @@ - **ID**: ticket-004 - **Owner**: unresolved:human -- **Status**: PLAN -- **Workflow state**: WAIT_FOR_APPROVAL +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT - **Created**: 2026-08-10 - **Work classification**: `SERVICE / integration` diff --git a/pyproject.toml b/pyproject.toml index 173206d7..9b2cf3bd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,7 +101,7 @@ dev = [ "vdisplay>=0.1.58", "cryptography>=42.0,<50.0", "planfile>=0.1.117", - "goal>=2.1.264", + "goal>=2.1.291", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", @@ -186,7 +186,7 @@ all = [ "types-PyYAML>=6.0,<7.0", "uvicorn[standard]>=0.30,<1.0", "websockets>=12.0,<17.0", - "goal>=2.1.264", + "goal>=2.1.291", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", @@ -221,7 +221,7 @@ dev = [ "hypothesis>=6.112,<7.0", "pre-commit>=3.8,<5.0", "types-PyYAML>=6.0,<7.0", - "goal>=2.1.264", + "goal>=2.1.291", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", From 340a4fe8ef7f443412133c28cb00d107c5e75633 Mon Sep 17 00:00:00 2001 From: Tom Softreck Date: Mon, 10 Aug 2026 14:27:14 +0200 Subject: [PATCH 3/3] chore(deps): require Goal 2.1.292 Co-authored-by: Koru Agent --- TODO.md | 2 +- app.doql.less | 4 ++-- project/TICKETS.md | 2 +- project/ticket-004/README.md | 15 +++++++-------- project/ticket-004/ai-codex.md | 2 +- project/ticket-004/changelog.md | 2 +- project/ticket-004/intent.json | 6 +++--- project/ticket-004/preprompt.md | 2 +- pyproject.toml | 6 +++--- uv.lock | 12 ++++++------ 10 files changed, 26 insertions(+), 27 deletions(-) diff --git a/TODO.md b/TODO.md index 30053bac..4f99e0b4 100644 --- a/TODO.md +++ b/TODO.md @@ -11,7 +11,7 @@ development DSL and uv lockfile to the integration workstream. State: `IN_PROGRESS / EDIT`; classification: `SERVICE / governance`. - [ ] [`ticket-004`](project/ticket-004/README.md) — require published Goal - 2.1.291 across the development-tool declarations and lockfile. State: + 2.1.292 across the development-tool declarations and lockfile. State: `IN_PROGRESS / EDIT`; classification: `SERVICE / integration`. diff --git a/app.doql.less b/app.doql.less index 8fd91246..be48318b 100644 --- a/app.doql.less +++ b/app.doql.less @@ -19,7 +19,7 @@ dependencies { curllm: curllm[mcp]>=1.0.0; browser: "nlp2uri[envmap]>=0.4.7, env2llm[mqtt]>=0.1.14, testql>=1.2.64, curllm[mcp]>=1.0.0, playwright>=1.40,<2.0"; vdisplay: vdisplay>=0.1.58; - dev: "gillm>=0.1.24, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, ruff>=0.11,<0.16, mypy>=1.11,<3.0, pyright>=1.1.390,<2.0, hypothesis>=6.112,<7.0, pre-commit>=3.8,<5.0, types-PyYAML>=6.0,<7.0, vdisplay>=0.1.58, cryptography>=42.0,<50.0, planfile>=0.1.117, goal>=2.1.291, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0"; + dev: "gillm>=0.1.24, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, ruff>=0.11,<0.16, mypy>=1.11,<3.0, pyright>=1.1.390,<2.0, hypothesis>=6.112,<7.0, pre-commit>=3.8,<5.0, types-PyYAML>=6.0,<7.0, vdisplay>=0.1.58, cryptography>=42.0,<50.0, planfile>=0.1.117, goal>=2.1.292, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0"; api: "fastapi>=0.115,<1.0, uvicorn[standard]>=0.30,<1.0, httpx>=0.27,<1.0, prometheus-client>=0.21,<1.0"; agent: "instructor>=1.6,<2.0, litellm>=1.51,<2.0, openai>=1.54,<3.0, tiktoken>=0.8,<1.0"; fullm: fullm>=0.1.22; @@ -27,7 +27,7 @@ dependencies { obs: "nfo>=0.2.22,<1.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0"; queue: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, cryptography>=42.0,<50.0, redis>=5.1,<8.0"; quality: "import-linter>=2.0,<3.0, mutmut>=3.2,<4.0, pyupgrade>=3.17,<4.0, refurb>=2.0,<3.0"; - all: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, fastapi>=0.115,<1.0, gillm>=0.1.24, hypothesis>=6.112,<7.0, httpx>=0.27,<1.0, import-linter>=2.0,<3.0, instructor>=1.6,<2.0, litellm>=1.51,<2.0, mss>=9.0,<11.0, mutmut>=3.2,<4.0, mypy>=1.11,<3.0, mss>=9.0,<11.0, nfo>=0.2.22,<1.0, openai>=1.54,<3.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, pre-commit>=3.8,<5.0, prometheus-client>=0.21,<1.0, pyright>=1.1.390,<2.0, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, pyupgrade>=3.17,<4.0, redis>=5.1,<8.0, refurb>=2.0,<3.0, ruff>=0.11,<0.16, tillm>=0.1.35, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0, tiktoken>=0.8,<1.0, types-PyYAML>=6.0,<7.0, uvicorn[standard]>=0.30,<1.0, websockets>=12.0,<17.0, goal>=2.1.291, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0, curllm[mcp]>=1.0.0, cryptography>=42.0,<50.0, env2llm[mqtt]>=0.1.14, fullm>=0.1.22, nlp2uri[envmap]>=0.4.7, planfile>=0.1.117, playwright>=1.40,<2.0, testql>=1.2.64, vdisplay>=0.1.58"; + all: "apscheduler>=3.10,<4.0, arq>=0.26,<1.0, fastapi>=0.115,<1.0, gillm>=0.1.24, hypothesis>=6.112,<7.0, httpx>=0.27,<1.0, import-linter>=2.0,<3.0, instructor>=1.6,<2.0, litellm>=1.51,<2.0, mss>=9.0,<11.0, mutmut>=3.2,<4.0, mypy>=1.11,<3.0, mss>=9.0,<11.0, nfo>=0.2.22,<1.0, openai>=1.54,<3.0, opentelemetry-exporter-otlp>=1.28,<2.0, opentelemetry-instrumentation-fastapi>=0.49b0,<1.0, opentelemetry-instrumentation-httpx>=0.49b0,<1.0, opentelemetry-sdk>=1.28,<2.0, pre-commit>=3.8,<5.0, prometheus-client>=0.21,<1.0, pyright>=1.1.390,<2.0, pytest>=8.0,<10.0, pytest-cov>=5.0,<8.0, pytest-rerunfailures>=14.0,<17.0, pytest-timeout>=2.3,<3.0, pytest-xdist>=3.0,<4.0, pyupgrade>=3.17,<4.0, redis>=5.1,<8.0, refurb>=2.0,<3.0, ruff>=0.11,<0.16, tillm>=0.1.35, sentry-sdk>=2.18,<3.0, structlog>=24.4,<26.0, tiktoken>=0.8,<1.0, types-PyYAML>=6.0,<7.0, uvicorn[standard]>=0.30,<1.0, websockets>=12.0,<17.0, goal>=2.1.292, costs>=0.1.53, pfix>=0.1.60, tagi>=0.49.0, curllm[mcp]>=1.0.0, cryptography>=42.0,<50.0, env2llm[mqtt]>=0.1.14, fullm>=0.1.22, nlp2uri[envmap]>=0.4.7, planfile>=0.1.117, playwright>=1.40,<2.0, testql>=1.2.64, vdisplay>=0.1.58"; } entity[name="TextContent"] { diff --git a/project/TICKETS.md b/project/TICKETS.md index 39814cda..1bcf47b6 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -6,4 +6,4 @@ | [ticket-002](ticket-002/README.md) | DONE | Adopt immutable new-project 0.11.0 governance and work-classification package | [ai-codex.md](ticket-002/ai-codex.md) | | [ticket-003](ticket-003/README.md) | DONE | Restore the current-main Ruff baseline before governance adoption | [ai-codex.md](ticket-003/ai-codex.md) | | [ticket-005](ticket-005/README.md) | IN_PROGRESS | Assign development DSL and lockfile ownership | [ai-codex.md](ticket-005/ai-codex.md) | -| [ticket-004](ticket-004/README.md) | IN_PROGRESS | Require Goal 2.1.291 release-boundary fix | [ai-codex.md](ticket-004/ai-codex.md) | +| [ticket-004](ticket-004/README.md) | IN_PROGRESS | Require Goal 2.1.292 version-carrier fix | [ai-codex.md](ticket-004/ai-codex.md) | diff --git a/project/ticket-004/README.md b/project/ticket-004/README.md index c1031323..ae1dac61 100644 --- a/project/ticket-004/README.md +++ b/project/ticket-004/README.md @@ -1,4 +1,4 @@ -# Ticket 004: Require Goal 2.1.291 release-boundary fix +# Ticket 004: Require Goal 2.1.292 version-carrier fix - **ID**: ticket-004 - **Owner**: unresolved:human @@ -9,19 +9,18 @@ ## Goal and scope -Raise Koru's Goal development-tool floor from 2.1.264 to 2.1.291 in the -canonical dependency declarations and refresh the lockfile. Version 2.1.291 -contains the synchronized-version transition boundary fix, so a repository -whose version was already bumped does not receive a second false bump while a -newer release is still propagating through the package index. +Raise Koru's Goal development-tool floor from 2.1.264 to 2.1.292 in the +canonical dependency declarations and refresh the lockfile. Version 2.1.292 +includes the synchronized-version transition boundary fix and detects only +writable Python version declarations, including conventional version modules. ## Acceptance criteria - [x] AC-01: The user explicitly requested testing, publication and updating Goal in dependent projects, with autonomous continuation. -- [ ] AC-02: `pyproject.toml` and its DSL source require `goal>=2.1.291` in +- [ ] AC-02: `pyproject.toml` and its DSL source require `goal>=2.1.292` in every existing Goal dependency slot. -- [ ] AC-03: `uv.lock` resolves Goal 2.1.291 from the public index and passes +- [ ] AC-03: `uv.lock` resolves Goal 2.1.292 from the public index and passes `uv lock --check`. - [ ] AC-04: Dependency-focused validation and repository governance pass. diff --git a/project/ticket-004/ai-codex.md b/project/ticket-004/ai-codex.md index 469da7db..03b0b428 100644 --- a/project/ticket-004/ai-codex.md +++ b/project/ticket-004/ai-codex.md @@ -8,7 +8,7 @@ ticket: ticket-004 ## Understanding -The published Goal 2.1.291 fix must become Koru's minimum development-tool +The published Goal 2.1.292 fix must become Koru's minimum development-tool version without touching runtime behavior or the user's dirty primary checkout. diff --git a/project/ticket-004/changelog.md b/project/ticket-004/changelog.md index 61131f51..f3ea6a8a 100644 --- a/project/ticket-004/changelog.md +++ b/project/ticket-004/changelog.md @@ -4,5 +4,5 @@ - Initial governance scaffold created. - No human participant identity or content was generated. -- Bounded Goal 2.1.291 dependency-floor and lock-refresh intent documented. +- Bounded Goal 2.1.292 dependency-floor and lock-refresh intent documented. - Existing user changes in the primary checkout are isolated from this work. diff --git a/project/ticket-004/intent.json b/project/ticket-004/intent.json index b8674ed6..954cfefb 100644 --- a/project/ticket-004/intent.json +++ b/project/ticket-004/intent.json @@ -1,7 +1,7 @@ { "schema": "new-project.intent/v2", "ticket": "ticket-004", - "summary": "Require Goal 2.1.291 release-boundary fix", + "summary": "Require Goal 2.1.292 version-carrier fix", "workstream": "integration", "allowedPaths": [ "pyproject.toml", @@ -28,7 +28,7 @@ "delivery": { "acceptedBaseSha": "e3bcacc1cf636441249493d663c4281979b5493d", "targetBranch": "main", - "outcome": "Koru consistently requires and locks the published Goal 2.1.291 release-boundary fix", + "outcome": "Koru consistently requires and locks the published Goal 2.1.292 version-carrier fix", "nonGoals": [ "No new runtime dependency or public interface change", "No Koru runtime, test, Docker, CI, governance or generated-analysis change" @@ -55,7 +55,7 @@ }, "runtimeDependencies": [], "validation": [ - {"criterion": "AC-03", "commands": ["uv lock --check", "uv tree --locked --package goal"], "evidence": "Lock is current and resolves Goal 2.1.291"}, + {"criterion": "AC-03", "commands": ["uv lock --check", "uv tree --locked --package goal"], "evidence": "Lock is current and resolves Goal 2.1.292"}, {"criterion": "AC-04", "commands": ["./project/governance-check.sh", "python -m pytest tests/test_dev_sync.py -q"], "evidence": "Governance and dependency-tool tests pass"} ] } diff --git a/project/ticket-004/preprompt.md b/project/ticket-004/preprompt.md index 70018320..280a6f60 100644 --- a/project/ticket-004/preprompt.md +++ b/project/ticket-004/preprompt.md @@ -1,7 +1,7 @@ # Ticket preprompt - **Task ID**: ticket-004 -- **Task title**: Require Goal 2.1.291 release-boundary fix +- **Task title**: Require Goal 2.1.292 version-carrier fix - **Created**: 2026-08-10T11:38:29Z Keep executable implementation outside this governance/evidence directory. diff --git a/pyproject.toml b/pyproject.toml index 9b2cf3bd..3c62c70f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,7 +101,7 @@ dev = [ "vdisplay>=0.1.58", "cryptography>=42.0,<50.0", "planfile>=0.1.117", - "goal>=2.1.291", + "goal>=2.1.292", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", @@ -186,7 +186,7 @@ all = [ "types-PyYAML>=6.0,<7.0", "uvicorn[standard]>=0.30,<1.0", "websockets>=12.0,<17.0", - "goal>=2.1.291", + "goal>=2.1.292", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", @@ -221,7 +221,7 @@ dev = [ "hypothesis>=6.112,<7.0", "pre-commit>=3.8,<5.0", "types-PyYAML>=6.0,<7.0", - "goal>=2.1.291", + "goal>=2.1.292", "costs>=0.1.53", "pfix>=0.1.60", "tagi>=0.49.0", diff --git a/uv.lock b/uv.lock index 4eb642f8..adabb6fe 100644 --- a/uv.lock +++ b/uv.lock @@ -854,7 +854,7 @@ wheels = [ [[package]] name = "goal" -version = "2.1.284" +version = "2.1.292" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -864,9 +864,9 @@ dependencies = [ { name = "tomlkit" }, { name = "typer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/3ef5beaa56627e95a66269adcfce7c219fff1948b93fc6f2f209fb0cea66/goal-2.1.284.tar.gz", hash = "sha256:61d47e6b68ba499fefad17b3df4bc4b6647da9db80a5dbc0918165c81d3f8ab1", size = 334328, upload-time = "2026-07-23T19:42:09.372Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/9a/f23829fd92adf14cf479967985f5eaa811f2928291ccc538637057e04c75/goal-2.1.292.tar.gz", hash = "sha256:47d8c210e61833b693d1d95fd9600890bfe64b0a1035caa466771388007ce7a5", size = 355247, upload-time = "2026-08-10T12:16:10.557Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/30/8155e85057ef3a8871f04db2a14b10d2216c0af68957f36f0417c2b44821/goal-2.1.284-py3-none-any.whl", hash = "sha256:d00dab399a774d07da902e1ef42ad5282e513e65410bace0c3185b555f365777", size = 309816, upload-time = "2026-07-23T19:42:07.494Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/1cb98c1b7972b11eedeaab11066d51b1d856469ea3eea36d433accd5ab71/goal-2.1.292-py3-none-any.whl", hash = "sha256:001a381085482fe80dacae1ab5fdd519e173d3cc866e1846988bfc7117b71137", size = 327596, upload-time = "2026-08-10T12:16:08.582Z" }, ] [[package]] @@ -1672,8 +1672,8 @@ requires-dist = [ { name = "gillm", editable = "../gillm" }, { name = "gillm", marker = "extra == 'all'", editable = "../gillm" }, { name = "gillm", marker = "extra == 'dev'", editable = "../gillm" }, - { name = "goal", marker = "extra == 'all'", specifier = ">=2.1.264" }, - { name = "goal", marker = "extra == 'dev'", specifier = ">=2.1.264" }, + { name = "goal", marker = "extra == 'all'", specifier = ">=2.1.292" }, + { name = "goal", marker = "extra == 'dev'", specifier = ">=2.1.292" }, { name = "httpx", marker = "extra == 'all'", specifier = ">=0.27,<1.0" }, { name = "httpx", marker = "extra == 'api'", specifier = ">=0.27,<1.0" }, { name = "httpx", marker = "extra == 'imgl'", specifier = ">=0.27,<1.0" }, @@ -1785,7 +1785,7 @@ dev = [ { name = "costs", specifier = ">=0.1.53" }, { name = "cryptography", specifier = ">=42.0,<50.0" }, { name = "fastapi", specifier = ">=0.115" }, - { name = "goal", specifier = ">=2.1.264" }, + { name = "goal", specifier = ">=2.1.292" }, { name = "httpx", specifier = ">=0.27" }, { name = "httpx2", specifier = ">=2,<3" }, { name = "hypothesis", specifier = ">=6.112,<7.0" },