diff --git a/goal.yaml b/goal.yaml index 0373b27..13bed26 100644 --- a/goal.yaml +++ b/goal.yaml @@ -436,3 +436,8 @@ code_parsers: - entity_pattern: ^#+\s+(.+)$ + +publishing: + enabled: true + registries: + - pypi diff --git a/project/TICKETS.md b/project/TICKETS.md index 3474951..786e463 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -110,4 +110,5 @@ This file indexes governance tickets without taking ownership of | **ticket-108** | [`README.md`](./ticket-108/README.md) | - | - | - | - | - | | **ticket-118** | [`README.md`](./ticket-118/README.md) | - | - | - | - | - | | **ticket-119** | [`README.md`](./ticket-119/README.md) | - | - | - | - | - | +| **ticket-120** | [`README.md`](./ticket-120/README.md) | - | - | - | - | - | diff --git a/project/ticket-120/README.md b/project/ticket-120/README.md new file mode 100644 index 0000000..35fe8e4 --- /dev/null +++ b/project/ticket-120/README.md @@ -0,0 +1,16 @@ +# Ticket 120: Declare the existing Goal publisher for periodic release observation + +- **ID**: ticket-120 +- **Owner**: agent:codex +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-11-01 +- **maxActiveMinutes**: 30 + +SESSION_EXECUTION_AUTHORIZATION: execute, test and request protected merge for the authorized Goal publication migration and cyclic Heyasa observation. Fixos 2.2.58 is independently merged and publicly verified, but the observer skips the primary as publishing_not_configured because the historical publisher configuration has no publishing.enabled. Add that explicit existing-PyPI opt-in only. No source package, version, runtime requirement, service schedule or registry effect changes. A temporary external configuration already proves the observer recognizes the exact published release. + +- [ ] AC-01: Declare only publishing.enabled=true and publishing.registries=[pypi]; the published observer recognizes the exact existing release. +- [ ] AC-02: Existing governance/adoption regression and actual Goal -a source delivery pass. +- [ ] AC-03: Required checks and independent merge pass; canonical primary observer recognizes the public release and retains explicit unknown for unsupported source layout. + +The qualified public observer recognizes package/version/artifact hashes after opt-in, but full source verification reports unsupported_source_layout: the current setuptools find configuration has no explicit include list. The public wheel also contains a developer script outside fixos/. This separate material packaging defect belongs to an integration follow-up; this configuration ticket preserves the typed unknown and never claims full source verification. diff --git a/project/ticket-120/intent.json b/project/ticket-120/intent.json new file mode 100644 index 0000000..289671b --- /dev/null +++ b/project/ticket-120/intent.json @@ -0,0 +1,91 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-120", + "summary": "Declare the existing Goal publisher for periodic release observation", + "workstream": "governance", + "classification": { + "kind": "BUG", + "priority": "P2", + "origin": "requested" + }, + "allowedPaths": [ + "project/ticket-120/**", + "TODO.md", + "project/TICKETS.md", + "goal.yaml" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null, + "delivery": { + "acceptedBaseSha": "6927102b5a46787bf3cf50d08f284bacef380730", + "targetBranch": "main", + "outcome": "Explicitly opt the existing Goal PyPI publisher into periodic read-only release observation.", + "nonGoals": [ + "No registry adapter or publisher transport change", + "No runtime package version or dependencies change", + "No ticket, source admission or CI bypass" + ], + "complexity": "S", + "estimatedMinutes": 15, + "budgets": { + "maxImplementationFiles": 1, + "maxAffectedComponents": 1, + "maxPublicInterfaceChanges": 0, + "maxRuntimeDependencies": 0 + }, + "architecture": { + "status": "accepted", + "decision": "The observer requires explicit publishing.enabled while the historical Goal publisher defaults to enabled. Add the exact declaration enabled=true and registries=[pypi] in the already-governed configuration; preserve every existing semantic setting. Existing service watch already includes this primary. This is configuration-only observation adoption, not a package release.", + "components": [ + { + "name": "publication-observer-opt-in", + "paths": [ + "goal.yaml" + ] + } + ], + "responsibilityChanges": false, + "interfaceChanges": [], + "dataChanges": [], + "ui": { + "impact": "none", + "states": [], + "evidence": [] + }, + "rollback": "Independent protected revert of the explicit observation declaration." + }, + "runtimeDependencies": [], + "validation": [ + { + "criterion": "AC-01", + "commands": [ + "Exact semantic configuration delta", + "Published observer recognizes the exact existing registry release while retaining typed unknown for unsupported source layout" + ], + "evidence": "receipt:fixos120/observer" + }, + { + "criterion": "AC-02", + "commands": [ + "Existing adoption regression and governed Goal source delivery", + "Native governance" + ], + "evidence": "receipt:fixos120/local" + }, + { + "criterion": "AC-03", + "commands": [ + "Required platform and OneDev checks", + "Independent exact-head/current-base Validator merge", + "Live primary readback recognizes the existing release; unsupported source-layout verification remains explicit unknown" + ], + "evidence": "receipt:fixos120/protected-publication" + } + ] + } +}