diff --git a/README.md b/README.md index 9f5631f..fe587cc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@
-
+
@@ -23,7 +23,7 @@
## AI Cost Tracking
-   
+   
  
- 🤖 **LLM usage:** $0.9104 (531 commits)
diff --git a/TODO.md b/TODO.md
index 97d7b9b..970a529 100644
--- a/TODO.md
+++ b/TODO.md
@@ -2,6 +2,13 @@
## Governed architecture roadmap
+- [ ] Deliver [ticket-061](project/ticket-061/README.md): publish the merged
+ retry-safe runtime, doctor, producer and tracked configuration fixes as Goal
+ 2.1.300, then prove the public package on a disposable Glon checkout. State:
+ `IN_PROGRESS / PUBLICATION`; 618 tests (2 skips), scoped Ruff, governance
+ and isolated wheel/sdist validation pass; classification:
+ `SERVICE / P0 / requested`; depends on ticket-060.
+
- [x] Deliver [ticket-060](project/ticket-060/README.md): align Goal's own
tracked Python strategy with the retry-safe Twine contract while preserving
Node and Rust publishers. State: `DONE / DONE`; 618 tests (2 skips),
diff --git a/VERSION b/VERSION
index f6e2897..4aeb281 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.299
+2.1.300
diff --git a/goal/__init__.py b/goal/__init__.py
index bf720ef..b1e4971 100644
--- a/goal/__init__.py
+++ b/goal/__init__.py
@@ -1,3 +1,3 @@
"""Goal - Automated git push with smart commit messages, changelog updates, and version tagging."""
-__version__ = "2.1.299"
+__version__ = "2.1.300"
diff --git a/project/TICKETS.md b/project/TICKETS.md
index 59881ac..a1dfee9 100644
--- a/project/TICKETS.md
+++ b/project/TICKETS.md
@@ -63,4 +63,5 @@ This file indexes governance tickets without taking ownership of
| **ticket-058** | [`README.md`](./ticket-058/README.md) | [`preprompt.md`](./ticket-058/preprompt.md) | - | [`ai-codex.md`](./ticket-058/ai-codex.md) | [`ai-codex-logs.txt`](./ticket-058/ai-codex-logs.txt) | [`changelog.md`](./ticket-058/changelog.md) |
| **ticket-059** | [`README.md`](./ticket-059/README.md) | [`preprompt.md`](./ticket-059/preprompt.md) | - | [`ai-codex.md`](./ticket-059/ai-codex.md) | [`ai-codex-logs.txt`](./ticket-059/ai-codex-logs.txt) | [`changelog.md`](./ticket-059/changelog.md) |
| **ticket-060** | [`README.md`](./ticket-060/README.md) | [`preprompt.md`](./ticket-060/preprompt.md) | - | [`ai-codex.md`](./ticket-060/ai-codex.md) | [`ai-codex-logs.txt`](./ticket-060/ai-codex-logs.txt) | [`changelog.md`](./ticket-060/changelog.md) |
+| **ticket-061** | [`README.md`](./ticket-061/README.md) | [`preprompt.md`](./ticket-061/preprompt.md) | - | [`ai-codex.md`](./ticket-061/ai-codex.md) | [`ai-codex-logs.txt`](./ticket-061/ai-codex-logs.txt) | [`changelog.md`](./ticket-061/changelog.md) |
diff --git a/project/ticket-061/README.md b/project/ticket-061/README.md
new file mode 100644
index 0000000..457f4a4
--- /dev/null
+++ b/project/ticket-061/README.md
@@ -0,0 +1,66 @@
+# Ticket 061: Publish Goal 2.1.300 retry-safe release
+
+- **ID**: ticket-061
+- **Owner**: unresolved:human
+- **Status**: IN_PROGRESS
+- **Workflow state**: PUBLICATION
+- **Created**: 2026-08-12
+
+## Goal and scope
+
+Publish Goal 2.1.300 from the exact merged retry-safety chain in tickets 058,
+059 and 060. Synchronize only the five established release carriers through a
+protected PR, then publish the wheel, sdist, annotated tag and final GitHub
+Release exclusively from the clean, retested merge SHA. Prove the public
+package on a disposable exact Glon checkout while preserving the user's dirty
+live checkout.
+
+## Acceptance criteria
+
+- [x] AC-01: The user's instruction to repair and continue records
+ `SESSION_EXECUTION_AUTHORIZATION` for the bounded release.
+- [x] AC-02: The governed PR synchronizes exactly VERSION, `pyproject.toml`,
+ `goal/__init__.py`, README version badges and `uv.lock` to 2.1.300, plus
+ this ticket's governance evidence.
+- [ ] AC-03: Full tests, scoped Ruff, governance and wheel/sdist pass;
+ protected CI and Validator Agent approve the exact final PR head.
+- [ ] AC-04: Clean merged `main` is retested before registry/tag/Release
+ effects and produces exactly one wheel and one sdist for 2.1.300.
+- [ ] AC-05: PyPI, annotated `v2.1.300` and the final GitHub Release bind to
+ the exact merge and immutable hashes are recorded.
+- [ ] AC-06: A fresh public-index install reports 2.1.300 and safely diagnoses
+ or executes the bounded Glon path without changing the live dirty checkout.
+
+## Boundary
+
+- No executable source belongs to this release ticket; implementation is
+ already integrated and independently approved in tickets 058-060.
+- Top-level CHANGELOG is not rewritten; the release narrative lives here.
+- No registry, tag or Release action occurs before protected merge and clean
+ merge validation. Existing immutable releases are never moved.
+- Do not modify the live Glon checkout or its user-owned dirty files.
+
+## Participants
+
+- Human participant: unresolved; no user-* file was created by this script.
+- Agent participant: [ai-codex.md](ai-codex.md)
+
+## Pre-publication evidence
+
+- Accepted base is clean `main@ad06f17`; tickets 058-060 are DONE, their
+ exact-head reviews and post-merge CI passed, and Goal has one main branch,
+ one worktree, zero open PRs and zero open issues.
+- PyPI returned HTTP 404 for 2.1.300; neither local/remote `v2.1.300` nor a
+ GitHub Release exists before publication.
+
+## Candidate evidence
+
+- Goal's own `goal version patch` synchronized exactly the five declared
+ release carriers to 2.1.300; dependency versions and non-carrier files did
+ not change.
+- 618 tests pass with 2 existing skips; scoped Ruff, governance (0 errors / 0
+ warnings) and whitespace validation pass.
+- An isolated package build produced exactly
+ `goal-2.1.300-py3-none-any.whl` and `goal-2.1.300.tar.gz`; both metadata
+ records declare version 2.1.300. Candidate build output and generated
+ metadata were removed after verification.
diff --git a/project/ticket-061/ai-codex-logs.txt b/project/ticket-061/ai-codex-logs.txt
new file mode 100644
index 0000000..fb05ddd
--- /dev/null
+++ b/project/ticket-061/ai-codex-logs.txt
@@ -0,0 +1,7 @@
+2026-08-12T18:36:00Z ticket-061 allocated on clean accepted base ad06f1706ab1e90527bf4b9bc84a940a41af003d after tickets 058-060 closure and exact workspace cleanup.
+2026-08-12T18:36:00Z SESSION_EXECUTION_AUTHORIZATION recorded from the user's instruction to repair and continue.
+2026-08-12T18:36:00Z preflight: PyPI goal/2.1.300 HTTP 404; local tag absent; remote tag absent; GitHub Release absent; Goal has one clean main worktree/branch and zero open PRs/issues.
+2026-08-12T18:40:00Z contract correction: allowedPaths already named goal/__init__.py as one of five release carriers, but a contradictory broad forbidden goal/**/*.py also matched it. Removed only the contradictory forbidden entry; allowed scope and budgets are unchanged. The ambient Glon venv lacks `build`, so package validation uses Goal's repository interpreter.
+2026-08-12T18:42:00Z Goal version patch synchronized exactly VERSION, pyproject.toml, uv.lock, README.md and goal/__init__.py from 2.1.299 to 2.1.300; all five are staged and no other implementation path changed.
+2026-08-12T18:42:00Z candidate validation: 618 full PASS/2 SKIP; scoped Ruff PASS; governance GOV-PASS 0 errors/0 warnings; whitespace PASS. Isolated build produced exactly goal-2.1.300-py3-none-any.whl and goal-2.1.300.tar.gz with matching 2.1.300 metadata.
+2026-08-12T18:42:30Z cleanup: disposable candidate artifacts, goal.egg-info, build and dist are absent; only the five release carriers and ticket evidence remain changed.
diff --git a/project/ticket-061/ai-codex.md b/project/ticket-061/ai-codex.md
new file mode 100644
index 0000000..05ede1e
--- /dev/null
+++ b/project/ticket-061/ai-codex.md
@@ -0,0 +1,41 @@
+---
+participant-id: agent:codex
+participant: codex
+role: agent
+ticket: ticket-061
+---
+# Participant: codex (AI agent)
+
+## Understanding
+
+Tickets 058-060 are already integrated, independently approved and clean.
+This ticket only publishes their exact retry-safe behavior through the
+established release carriers and proves the public package on a disposable
+Glon copy so existing user work remains untouched.
+
+## Execution plan
+
+1. Commit the bounded release plan on the exact clean accepted base.
+2. Use Goal to synchronize the five release carriers and open a protected PR.
+3. Validate the exact candidate with tests, governance and package build.
+4. Require exact-head Validator approval and green hosted checks before merge.
+5. Retest clean merged main, publish immutable artifacts, then verify a fresh
+ public install in the bounded Glon reproduction.
+
+## Actual changes
+
+- Initialized the bounded ticket and recorded SESSION_EXECUTION_AUTHORIZATION
+ from the request to execute this work.
+- Declared a metadata-only release boundary; tickets 058-060 own all source
+ and configuration implementation.
+- Used Goal's version command to synchronize exactly the five declared release
+ carriers, then passed full tests, Ruff, governance and isolated artifact
+ validation.
+- Removed the disposable candidate artifacts and generated package metadata;
+ moved to PUBLICATION for the updated exact PR head.
+
+## Blockers
+
+- None inside the recorded intent; proceed without a second confirmation.
+- New authority remains required for destructive action, secret access, new
+ external coordination, material objective expansion and trusted merge.
diff --git a/project/ticket-061/changelog.md b/project/ticket-061/changelog.md
new file mode 100644
index 0000000..ded83c4
--- /dev/null
+++ b/project/ticket-061/changelog.md
@@ -0,0 +1,10 @@
+# Ticket Changelog (ticket-061)
+
+## [0.1.0] - 2026-08-12
+
+- Initial governance scaffold created.
+- No human participant identity or content was generated.
+- Bounded the 2.1.300 release to five established version carriers after
+ confirming every public artifact namespace is unused.
+- Synchronized the five carriers through Goal, validated the full suite and
+ exact package metadata, then removed all candidate build output.
diff --git a/project/ticket-061/intent.json b/project/ticket-061/intent.json
new file mode 100644
index 0000000..51cf657
--- /dev/null
+++ b/project/ticket-061/intent.json
@@ -0,0 +1,90 @@
+{
+ "schema": "new-project.intent/v3",
+ "ticket": "ticket-061",
+ "summary": "Publish Goal 2.1.300 retry-safe release",
+ "workstream": "integration",
+ "classification": {
+ "kind": "SERVICE",
+ "priority": "P0",
+ "origin": "requested"
+ },
+ "allowedPaths": [
+ "VERSION",
+ "pyproject.toml",
+ "uv.lock",
+ "goal/__init__.py",
+ "README.md",
+ "project/ticket-061/**",
+ "TODO.md",
+ "project/TICKETS.md"
+ ],
+ "forbiddenPaths": [
+ "project/ticket-*/user-*.md",
+ "tests/**",
+ ".github/**",
+ ".env",
+ "**/*.pem",
+ "**/*secret*"
+ ],
+ "stacks": ["python", "docker"],
+ "dependsOn": ["ticket-060"],
+ "conflictsWith": [],
+ "integrationTicket": null,
+ "delivery": {
+ "acceptedBaseSha": "ad06f1706ab1e90527bf4b9bc84a940a41af003d",
+ "targetBranch": "main",
+ "outcome": "Goal 2.1.300 publishes the complete retry-safe Python publication contract and proves it without touching live Glon work",
+ "nonGoals": [
+ "No executable source, dependency-set or top-level CHANGELOG change",
+ "No publication, tag or GitHub Release before protected merge",
+ "No duplicate, replacement or moved registry artifact",
+ "No mutation of the user's live Glon checkout"
+ ],
+ "complexity": "S",
+ "estimatedMinutes": 30,
+ "budgets": {
+ "maxImplementationFiles": 5,
+ "maxAffectedComponents": 2,
+ "maxPublicInterfaceChanges": 0,
+ "maxRuntimeDependencies": 0
+ },
+ "architecture": {
+ "status": "accepted",
+ "decision": "Synchronize the five existing release carriers through governed PR delivery, then publish only from exact validated merged main",
+ "components": [
+ {
+ "name": "release-metadata",
+ "paths": ["VERSION", "pyproject.toml", "uv.lock", "goal/__init__.py", "README.md"]
+ }
+ ],
+ "responsibilityChanges": false,
+ "interfaceChanges": [],
+ "dataChanges": [],
+ "ui": {"impact": "none", "states": [], "evidence": []},
+ "rollback": "Never replace immutable artifacts; issue a later patch if public verification fails"
+ },
+ "runtimeDependencies": [],
+ "validation": [
+ {
+ "criterion": "AC-02",
+ "commands": ["goal -a --delivery-mode pull-request --target-version 2.1.300 push --ticket ticket-061 --no-changelog --no-publish"],
+ "evidence": "project/ticket-061/ai-codex-logs.txt"
+ },
+ {
+ "criterion": "AC-03",
+ "commands": ["pytest -q", "ruff check scoped paths", "./project/governance-check.sh", "python -m build"],
+ "evidence": "project/ticket-061/ai-codex-logs.txt"
+ },
+ {
+ "criterion": "AC-04",
+ "commands": ["clean merged-main retest", "goal -a --delivery-mode publish-only --force-publish"],
+ "evidence": "project/ticket-061/ai-codex-logs.txt"
+ },
+ {
+ "criterion": "AC-06",
+ "commands": ["fresh public-index goal==2.1.300 install", "bounded disposable Glon verification"],
+ "evidence": "project/ticket-061/ai-codex-logs.txt"
+ }
+ ]
+ }
+}
diff --git a/project/ticket-061/preprompt.md b/project/ticket-061/preprompt.md
new file mode 100644
index 0000000..8a9baec
--- /dev/null
+++ b/project/ticket-061/preprompt.md
@@ -0,0 +1,12 @@
+# Ticket preprompt
+
+- **Task ID**: ticket-061
+- **Task title**: Publish Goal 2.1.300 retry-safe release
+- **Created**: 2026-08-12T18:36:11Z
+
+Keep executable implementation outside this governance/evidence directory.
+Read a human-owned user-*.md file only when one exists.
+The request to execute this work creates SESSION_EXECUTION_AUTHORIZATION;
+proceed within the recorded intent without a redundant confirmation prompt.
+Require new authority for destructive action, secrets, external coordination,
+material objective expansion and trusted merge approval.
diff --git a/pyproject.toml b/pyproject.toml
index 07b82e6..6474699 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "goal"
-version = "2.1.299"
+version = "2.1.300"
description = "Goal - Automated git push with enterprise-grade commit intelligence, smart conventional commit generation based on deep code analysis, and interactive release workflow management."
readme = "README.md"
authors = [
diff --git a/uv.lock b/uv.lock
index 08d86f4..cd97cb0 100644
--- a/uv.lock
+++ b/uv.lock
@@ -771,7 +771,7 @@ wheels = [
[[package]]
name = "goal"
-version = "2.1.299"
+version = "2.1.300"
source = { editable = "." }
dependencies = [
{ name = "click" },