From 2af856d81d21aa48fe84988ff46b2529c1646f2d Mon Sep 17 00:00:00 2001 From: AIOSAI Date: Thu, 11 Jun 2026 12:49:07 -0700 Subject: [PATCH] =?UTF-8?q?chore(release):=20v2.5.3=20=E2=80=94=20date-bas?= =?UTF-8?q?ed=20CHANGELOG=20headers=20+=20rename=20sunday=5Fmerge=20playbo?= =?UTF-8?q?ok=20to=20merge=20(drop=20weekly=20cadence)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 15 ++++++----- pyproject.toml | 2 +- src/aipass/__init__.py | 2 +- .../devpulse/.aipass/aipass_local_prompt.md | 2 +- src/aipass/flow/apps/modules/create_plan.py | 2 +- .../flow/apps/modules/template_manager.py | 4 +-- .../flow/templates/playbook_plans/default.md | 2 +- .../{sunday_merge.md => merge.md} | 26 +++++++++---------- 8 files changed, 28 insertions(+), 27 deletions(-) rename src/aipass/flow/templates/playbook_plans/{sunday_merge.md => merge.md} (89%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bf23f0d..ddc1cd2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,14 @@ All notable changes to AIPass will be documented in this file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project uses [Calendar Versioning](https://calver.org/) in the format -`YYYY.WNN` (year and ISO week number). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +Entries are grouped by merge under a dated section header (`YYYY-MM-DD`). Package +releases follow [SemVer](https://semver.org/) and are tracked by the git tag and +PyPI version — not the changelog header. --- -## [2026.W24] - 2026-06-08 +## [2026-06-11] ### Fixed @@ -152,7 +153,7 @@ and this project uses [Calendar Versioning](https://calver.org/) in the format --- -## [2026.W23] - 2026-06-02 +## [2026-06-02] ### Fixed @@ -493,7 +494,7 @@ and this project uses [Calendar Versioning](https://calver.org/) in the format --- -## [2026.W22] - 2026-05-30 +## [2026-05-30] ### Added @@ -555,7 +556,7 @@ and this project uses [Calendar Versioning](https://calver.org/) in the format --- -## [2026.W21] - 2026-05-25 +## [2026-05-25] First weekly release. AIPass now follows a Sunday release cadence: changes accumulate on `dev` throughout the week and merge to `main` as a single diff --git a/pyproject.toml b/pyproject.toml index faf0d209..951b18ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "aipass" -version = "2.5.2" +version = "2.5.3" description = "A local multi-agent framework where your AI agents keep their memory, work together, and never ask you to re-explain context" readme = "README.md" license = "MIT" diff --git a/src/aipass/__init__.py b/src/aipass/__init__.py index dc734538..a79a2acc 100644 --- a/src/aipass/__init__.py +++ b/src/aipass/__init__.py @@ -4,4 +4,4 @@ pip install aipass https://github.com/AIOSAI/AIPass """ -__version__ = "2.5.2" +__version__ = "2.5.3" diff --git a/src/aipass/devpulse/.aipass/aipass_local_prompt.md b/src/aipass/devpulse/.aipass/aipass_local_prompt.md index 0493c7f6..af37ea27 100644 --- a/src/aipass/devpulse/.aipass/aipass_local_prompt.md +++ b/src/aipass/devpulse/.aipass/aipass_local_prompt.md @@ -102,7 +102,7 @@ drone, seedgo, prax, cli, ai_mail, api, flow, spawn, trigger, memory, aipass, ho - CWD = identity. Visit other branches, don't move in. - Git awareness: after completing work, `drone @git status`. Suggest commit if coherent. Don't force, don't let pile up. - Git workflow: commit → dev-pr → wait for CI. Every commit must be pushed. Local-only commits are invisible. After fixing CI, push immediately (dev-pr reports "PR already open" = pushed). -- CHANGELOG: update `CHANGELOG.md` when committing/pushing. Add entries to the current week's `[YYYY.WNN]` section as work lands — don't batch at end of week. Sunday = merge to main + tag. +- CHANGELOG: update `CHANGELOG.md` when committing/pushing. Add entries under the current dated section (`[YYYY-MM-DD]`, one per merge) as work lands — don't batch. Merge to main + tag on demand (no fixed weekly cadence). - Never `docker cp` into containers. Merge PR → git pull → test. - Sub-agents build, you PR. diff --git a/src/aipass/flow/apps/modules/create_plan.py b/src/aipass/flow/apps/modules/create_plan.py index c4be5617..401d9b4e 100755 --- a/src/aipass/flow/apps/modules/create_plan.py +++ b/src/aipass/flow/apps/modules/create_plan.py @@ -153,7 +153,7 @@ def print_help(): console.print("[yellow]TEMPLATE SELECTION:[/yellow]") console.print(" The 4th arg selects a non-default template within a type.") console.print(" Any .md file stem in the type's templates/ dir works.") - console.print(' [dim]drone @flow create . "Subject" sunday_merge pplan[/dim]') + console.print(' [dim]drone @flow create . "Subject" merge pplan[/dim]') console.print(' [dim]drone @flow create . "Subject" master[/dim] # FPLAN master') console.print() diff --git a/src/aipass/flow/apps/modules/template_manager.py b/src/aipass/flow/apps/modules/template_manager.py index a5eac074..2562192b 100644 --- a/src/aipass/flow/apps/modules/template_manager.py +++ b/src/aipass/flow/apps/modules/template_manager.py @@ -88,12 +88,12 @@ def print_help(): console.print() console.print("[bold]HOW TO ADD A NEW PLAN TYPE / SOP TEMPLATE:[/bold]") console.print(" 1. Create a directory under templates/ (e.g. templates/playbook_plans/)") - console.print(" 2. Add one or more .md template files (e.g. default.md, sunday_merge.md)") + console.print(" 2. Add one or more .md template files (e.g. default.md, merge.md)") console.print(" 3. Register with your chosen prefix:") console.print(" drone @flow register playbook_plans PBPLAN") console.print(" 4. Create plans:") console.print(' drone @flow create . "Subject" pbplan') - console.print(' drone @flow create . "Subject" sunday_merge pbplan') + console.print(' drone @flow create . "Subject" merge pplan') console.print() console.print(" [dim]Auto-registration runs on any flow command if you skip step 3,[/dim]") console.print(" [dim]but derives the prefix automatically. Use register to choose your own.[/dim]") diff --git a/src/aipass/flow/templates/playbook_plans/default.md b/src/aipass/flow/templates/playbook_plans/default.md index 0ef8f107..960e38af 100644 --- a/src/aipass/flow/templates/playbook_plans/default.md +++ b/src/aipass/flow/templates/playbook_plans/default.md @@ -10,7 +10,7 @@ ## What Are Playbooks? Playbooks (PBPLANs) are **throwaway SOP runs** — a checklist stamped from a reusable -template for a recurring operation (Sunday merge, release cut, branch onboarding, +template for a recurring operation (merge, release cut, branch onboarding, incident response). You tick steps off as you go, log what happened, then close. - **The template = the SOP.** Stable. Refine it over time as the process improves. diff --git a/src/aipass/flow/templates/playbook_plans/sunday_merge.md b/src/aipass/flow/templates/playbook_plans/merge.md similarity index 89% rename from src/aipass/flow/templates/playbook_plans/sunday_merge.md rename to src/aipass/flow/templates/playbook_plans/merge.md index 3649beab..53b2061c 100644 --- a/src/aipass/flow/templates/playbook_plans/sunday_merge.md +++ b/src/aipass/flow/templates/playbook_plans/merge.md @@ -1,17 +1,17 @@ -# {plan_number} - {subject} (SUNDAY MERGE) +# {plan_number} - {subject} (MERGE) **Created**: {today} **Branch**: {location} **Status**: Active -**Type**: Playbook — Sunday Merge SOP +**Type**: Playbook — Merge SOP --- ## Purpose -The weekly `dev → main` merge + release tag. Run by **devpulse** (only branch with git -write). Tick each step as you go; fill the **Run Summary** with PR numbers and tags for -the vectorized trail. Close when done. +The `dev → main` merge + release tag — run on-demand, not on a fixed weekly cadence. +Run by **devpulse** (only branch with git write). Tick each step as you go; fill the +**Run Summary** with PR numbers and tags for the vectorized trail. Close when done. > All git writes go through `drone @git` — **run drone from a branch dir** (it needs > `.trinity/passport.json` in the cwd; running from the repo root fails with "No @@ -65,21 +65,21 @@ commit** on main. Your `dev` branch keeps its **original** commits. Git compares ## 1. Pre-flight - [ ] On `dev`, working tree understood: `drone @git status --all` -- [ ] Confirm what's shipping this week — scan uncommitted changes + already-pushed dev commits ahead of main: `git rev-list --count main..dev` (read git, raw ok) +- [ ] Confirm what's shipping — scan uncommitted changes + already-pushed dev commits ahead of main: `git rev-list --count main..dev` (read git, raw ok) - [ ] No surprise files (stray `/tmp` artifacts, test pollution, `.recovery`/`.archive` churn). Clean = archive, never delete. - [ ] **Version state check** (informs the bump decision): read the **two** release-tied versions — `grep '^version' pyproject.toml` and `grep __version__ src/aipass/__init__.py` (they should match; if drifted, note it) — and what PyPI already has: `curl -s https://pypi.org/pypi/aipass/json | python3 -c "import sys,json;print(json.load(sys.stdin)['info']['version'])"`. PyPI rejects a duplicate, so the target must be > published. -- [ ] Decide: **release tag this week?** (tag = PyPI publish + GitHub Release). If yes, note target version. (Significance call is the user's — the PATCH-default rule below is guidance, and the actual release history is a useful tie-breaker.) +- [ ] Decide: **release tag this merge?** (tag = PyPI publish + GitHub Release). If yes, note target version. (Significance call is the user's — the PATCH-default rule below is guidance, and the actual release history is a useful tie-breaker.) ## 2. Verify, commit, CHANGELOG - [ ] **Run the CI audit gate LOCALLY before pushing** (local == CI, S199 parity — catches red before the PR): `cd && .venv/bin/python .github/scripts/seedgo_audit.py` → expect all 13 branches `>=100%`, exit 0. Uses a relative `src/aipass` path, so run from the repo **root**, not a branch dir. -- [ ] Update `CHANGELOG.md` — add entries under the current week's `[YYYY.WNN]` section (don't batch; mostly done as work landed). Sort into Added / Changed / Fixed. +- [ ] Update `CHANGELOG.md` — add entries under a dated section header `## [YYYY-MM-DD]` (the merge date), one section per merge. Sort into Added / Changed / Fixed. - [ ] Commit: `drone @git commit "msg" --all` (from a branch dir, e.g. devpulse). New/untracked files (e.g. new templates) — confirm they got staged: `git ls-files ` after; `--all` may not pick up untracked. - [ ] Every commit pushed — local-only commits are invisible ## 3. Open / update the PR -- [ ] `drone @git dev-pr "Week summary: what's shipping"` +- [ ] `drone @git dev-pr "Merge summary: what's shipping"` - [ ] "PR already open" in output = push succeeded onto the existing PR (expected on re-runs) - [ ] Record the PR number → Run Summary @@ -110,12 +110,12 @@ The PR gate (verified against `.github/workflows/`): ## 7. Release tag (only if cutting a release) -**Versioning rule — bump by SIGNIFICANCE, not cadence** (keeps the version from inflating weekly): -- **PATCH** (`x.y.Z+1`) = fix / internal / standards / UX only → the default, most weeks +**Versioning rule — bump by SIGNIFICANCE, not cadence:** +- **PATCH** (`x.y.Z+1`) = fix / internal / standards / UX only → the default for most merges - **MINOR** (`x.Y+1.0`) = a new backward-compatible user-facing feature shipped - **MAJOR** (`X+1.0.0`) = breaking public-API change -(aipass is a 2.x library others pin → keep SemVer; the CHANGELOG keeps its `YYYY.WNN` header as a date index.) +(aipass is a 2.x library others pin → keep SemVer; the CHANGELOG uses `YYYY-MM-DD` dated section headers.) How the release fires (verified `publish.yml`): a `v*` **git tag push** runs build → PyPI publish → GitHub Release. Key facts: - PyPI version = `pyproject.toml [project] version` at the tagged commit — **NOT** the tag string (the tag only *triggers* the build). @@ -159,7 +159,7 @@ Steps: ## Listen (TTS-friendly summary) -Write a plain English summary of this Sunday merge here when done. No markdown, no symbols, +Write a plain English summary of this merge here when done. No markdown, no symbols, no tables, no code blocks, no asterisks, no bullet points. Just natural sentences for text to speech. ---