diff --git a/VERSION b/VERSION index 5e16e7d..62f11b7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.58 +2.2.59 diff --git a/project/TICKETS.md b/project/TICKETS.md index 786e463..39d913e 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -111,4 +111,5 @@ This file indexes governance tickets without taking ownership of | **ticket-118** | [`README.md`](./ticket-118/README.md) | - | - | - | - | - | | **ticket-119** | [`README.md`](./ticket-119/README.md) | - | - | - | - | - | | **ticket-120** | [`README.md`](./ticket-120/README.md) | - | - | - | - | - | +| **ticket-121** | [`README.md`](./ticket-121/README.md) | - | - | - | - | - | diff --git a/project/ticket-121/README.md b/project/ticket-121/README.md new file mode 100644 index 0000000..fa7e1a6 --- /dev/null +++ b/project/ticket-121/README.md @@ -0,0 +1,14 @@ +# Ticket 121: Constrain published package contents and verify Goal source observation + +- **ID**: ticket-121 +- **Owner**: agent:codex +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-11-01 +- **maxActiveMinutes**: 45 + +SESSION_EXECUTION_AUTHORIZATION: execute, test and request protected merge/publication for the existing Goal migration and cyclic release observation. The public Fixos 2.2.58 wheel contains three developer Python files outside fixos/; its implicit namespace discovery also makes source verification unsupported. Constrain package discovery explicitly, retain every Fixos asset, and join 2.2.59 version projections to this material implementation. Consume Goal[publish]>=2.2.8 only after its independent public artifact verification, keeping Python markers and unrelated lock records unchanged. No separate release-only ticket or source/CI bypass. + +- [x] AC-01: Exactly the unintended developer entries leave the wheel; all Fixos package assets and 132 Python sources are preserved and match Git. +- [ ] AC-02: Version/lock projections, supported interpreters, affected regressions and governed local delivery pass. +- [ ] AC-03: Required checks and independent merge pass; Goal publishes the package and the canonical public source observer reports matched. diff --git a/project/ticket-121/intent.json b/project/ticket-121/intent.json new file mode 100644 index 0000000..a7bf726 --- /dev/null +++ b/project/ticket-121/intent.json @@ -0,0 +1,100 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-121", + "summary": "Constrain published package contents and verify Goal source observation", + "workstream": "integration", + "classification": { + "kind": "BUG", + "priority": "P1", + "origin": "requested" + }, + "allowedPaths": [ + "project/ticket-121/**", + "TODO.md", + "project/TICKETS.md", + "VERSION", + "pyproject.toml", + "uv.lock" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [ + "ticket-120" + ], + "conflictsWith": [], + "integrationTicket": null, + "delivery": { + "acceptedBaseSha": "1eb76c6fa66949e8ead941db9581e235449ca769", + "targetBranch": "main", + "outcome": "Restrict distributed library contents to the declared Fixos package, make its public source manifest verifiable, and consume the independently published Goal delegated-failure fix.", + "nonGoals": [ + "No Fixos runtime source, API or dependency changes", + "No broad lock upgrade or managed adoption changes", + "No inferred source verification or registry overwrite", + "No publication before Goal 2.2.8 and independent acceptance" + ], + "complexity": "M", + "estimatedMinutes": 30, + "budgets": { + "maxImplementationFiles": 3, + "maxAffectedComponents": 1, + "maxPublicInterfaceChanges": 0, + "maxRuntimeDependencies": 0 + }, + "architecture": { + "status": "accepted", + "decision": "The public 2.2.58 wheel accidentally includes two docs/examples Python modules and scripts/pyqual-calibrate.py through implicit namespace discovery. Constrain discovery to fixos and fixos.* while retaining all package assets and existing exclusions. The observer supports this explicit manifest and can compare the complete Python package against Git. Join 2.2.59 projections to this material packaging fix and require Goal[publish]>=2.2.8 after its verified public release; preserve interpreter markers and unrelated lock records.", + "components": [ + { + "name": "verified-publication-package", + "paths": [ + "pyproject.toml", + "VERSION", + "uv.lock" + ] + } + ], + "responsibilityChanges": false, + "interfaceChanges": [], + "dataChanges": [], + "ui": { + "impact": "none", + "states": [], + "evidence": [] + }, + "rollback": "Independent protected revert; do not overwrite immutable registry releases." + }, + "runtimeDependencies": [], + "validation": [ + { + "criterion": "AC-01", + "commands": [ + "Build wheel and compare package assets against 2.2.58", + "Only three unintended non-package Python entries are removed", + "All 132 Fixos Python files match Git" + ], + "evidence": "receipt:fixos121/package-contract" + }, + { + "criterion": "AC-02", + "commands": [ + "Preserved lock records and Python support", + "Affected version/adoption regressions", + "Native governance and actual Goal -a delivery" + ], + "evidence": "receipt:fixos121/local-validation" + }, + { + "criterion": "AC-03", + "commands": [ + "Required platform/OneDev and independent exact-head/current-base merge", + "Goal publication and public artifact hash/source verification", + "Canonical observer reports matched published Python content" + ], + "evidence": "receipt:fixos121/protected-publication" + } + ] + } +} diff --git a/pyproject.toml b/pyproject.toml index ce419e7..1b14fcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "fixos" -version = "2.2.58" +version = "2.2.59" description = "AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues" readme = "README.md" requires-python = ">=3.10" @@ -43,7 +43,7 @@ dev = [ "pytest-xdist>=3.5.0", "pytest-timeout>=2.2.0", "pytest-sugar>=0.9.7", - "goal[publish]>=2.2.7; python_version >= '3.12'", + "goal[publish]>=2.2.8; python_version >= '3.12'", "costs>=0.1.20", ] @@ -55,6 +55,7 @@ Homepage = "https://github.com/wronai/fixos" "Bug Tracker" = "https://github.com/wronai/fixos/issues" [tool.setuptools.packages.find] +include = ["fixos", "fixos.*"] exclude = ["tests*", "docker*"] [tool.setuptools.package-data] diff --git a/uv.lock b/uv.lock index 062de14..ebbe4e3 100644 --- a/uv.lock +++ b/uv.lock @@ -927,7 +927,7 @@ wheels = [ [[package]] name = "fixos" -version = "2.2.58" +version = "2.2.59" source = { editable = "." } dependencies = [ { name = "click" }, @@ -956,7 +956,7 @@ dev = [ requires-dist = [ { name = "click", specifier = ">=8.1.0" }, { name = "costs", marker = "extra == 'dev'", specifier = ">=0.1.20" }, - { name = "goal", extras = ["publish"], marker = "python_full_version >= '3.12' and extra == 'dev'", specifier = ">=2.2.7" }, + { name = "goal", extras = ["publish"], marker = "python_full_version >= '3.12' and extra == 'dev'", specifier = ">=2.2.8" }, { name = "openai", specifier = ">=1.35.0" }, { name = "prompt-toolkit", specifier = ">=3.0.43" }, { name = "psutil", specifier = ">=5.9.0" }, @@ -1128,7 +1128,7 @@ wheels = [ [[package]] name = "goal" -version = "2.2.7" +version = "2.2.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -1138,9 +1138,9 @@ dependencies = [ { name = "tomlkit" }, { name = "typer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b6/17/96ba90d0bb05d5b86ad4b6d2795d24b28c1194a9755cd1e96d0c942ea017/goal-2.2.7.tar.gz", hash = "sha256:52e90ba9fe46d5ceb421ed922a4404dfc7957532f66bb1a74134f7c0c207f935", size = 495759, upload-time = "2026-10-31T23:28:59.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/92/9e826b55e3e9df2df3d46a77ba8a290f87ef09b5af314e66c804446059dc/goal-2.2.8.tar.gz", hash = "sha256:d5a8c8327c636fcd78fa1f622f065b07b129e4d8d5adb3713d74cde2348587a0", size = 495912, upload-time = "2026-11-01T01:59:01.255Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/59/9674c028216e6103e2d7d705de6e9d0927c626e02fe759f73a35227fcb07/goal-2.2.7-py3-none-any.whl", hash = "sha256:cd23886de99f2cea51aef4ba036049f2ed301ada853db26a5b97e9c422b446c2", size = 398047, upload-time = "2026-10-31T23:28:57.349Z" }, + { url = "https://files.pythonhosted.org/packages/59/3a/422bfdaf98966586d08bc592d2678be5cce9a02a59e170c223f36a099281/goal-2.2.8-py3-none-any.whl", hash = "sha256:669d0daae21b076a6072e4cdbecf49ac74516fc9df5df6d6547fa302df34be4d", size = 398009, upload-time = "2026-11-01T01:58:58.734Z" }, ] [package.optional-dependencies]