fix: enforce alpha versioning (0.0.x), delete erroneous 0.1.x releases
Deleted v0.1.0, v0.1.1, v0.1.3 tags and Gitea releases — project is alpha and should never have crossed 0.1.0. All package.json files synced to 0.0.20. Added version-bump.sh script that hard-rejects any version >= 0.1.0. Added versioning hard gate to AGENTS.md so agents cannot repeat the mistake. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
"status": "active",
|
"status": "active",
|
||||||
"task_prefix": "",
|
"task_prefix": "",
|
||||||
"quality_gates": "",
|
"quality_gates": "",
|
||||||
"milestone_version": "0.0.1",
|
"milestone_version": "0.0.20",
|
||||||
"milestones": [],
|
"milestones": [],
|
||||||
"sessions": []
|
"sessions": []
|
||||||
}
|
}
|
||||||
|
|||||||
15
AGENTS.md
15
AGENTS.md
@@ -46,6 +46,21 @@ pnpm lint
|
|||||||
pnpm build
|
pnpm build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Versioning Protocol (HARD GATE)
|
||||||
|
|
||||||
|
**This project is ALPHA. All versions MUST be `0.0.x`.**
|
||||||
|
|
||||||
|
- The `0.1.0` release is FORBIDDEN until Jason explicitly authorizes it.
|
||||||
|
- Every milestone bump increments the patch: `0.0.20` → `0.0.21` → `0.0.22`, etc.
|
||||||
|
- ALL package.json files in the monorepo MUST stay in sync at the same version.
|
||||||
|
- Use `scripts/version-bump.sh <version>` to bump — it enforces the alpha constraint and updates all packages atomically.
|
||||||
|
- The script rejects any version >= `0.1.0`.
|
||||||
|
- When creating a release tag, the tag MUST match the package version: `v0.0.x`.
|
||||||
|
|
||||||
|
**Milestone-to-version mapping** is defined in the PRD (`docs/PRD.md`) under "Delivery/Milestone Intent". Agents MUST use the version from that table when tagging a milestone release.
|
||||||
|
|
||||||
|
**Violation of this protocol is a blocking error.** If an agent attempts to set a version >= `0.1.0`, stop and escalate.
|
||||||
|
|
||||||
## Standards and Quality
|
## Standards and Quality
|
||||||
|
|
||||||
- Enforce strict typing and no unsafe shortcuts.
|
- Enforce strict typing and no unsafe shortcuts.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/api",
|
"name": "@mosaic/api",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "nest build",
|
"build": "nest build",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/orchestrator",
|
"name": "@mosaic/orchestrator",
|
||||||
"version": "0.0.6",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nest start --watch",
|
"dev": "nest start --watch",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/web",
|
"name": "@mosaic/web",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
|
|||||||
30
docs/PRD.md
30
docs/PRD.md
@@ -40,7 +40,7 @@ Design system + app shell + dashboard page. PRs #451-454.
|
|||||||
- Dashboard page: metrics strip, orchestrator sessions, quick actions, activity feed, token budget
|
- Dashboard page: metrics strip, orchestrator sessions, quick actions, activity feed, token budget
|
||||||
- Grain overlay texture
|
- Grain overlay texture
|
||||||
|
|
||||||
### Go-Live MVP (v0.1.0) — Complete
|
### Go-Live MVP (v0.0.16) — Complete
|
||||||
|
|
||||||
Dashboard polish, task ingestion pipeline, agent cycle visibility, deploy + smoke test. PRs #458, #460, #462, #464.
|
Dashboard polish, task ingestion pipeline, agent cycle visibility, deploy + smoke test. PRs #458, #460, #462, #464.
|
||||||
|
|
||||||
@@ -51,9 +51,9 @@ Dashboard polish, task ingestion pipeline, agent cycle visibility, deploy + smok
|
|||||||
- WebSocket emits for job status/progress/step events
|
- WebSocket emits for job status/progress/step events
|
||||||
- Dashboard auto-refresh with polling + progress bars + step status indicators
|
- Dashboard auto-refresh with polling + progress bars + step status indicators
|
||||||
- Deployed to mosaic.woltje.com, auth working via Authentik
|
- Deployed to mosaic.woltje.com, auth working via Authentik
|
||||||
- Release tag v0.1.0
|
- Release tag v0.0.16
|
||||||
|
|
||||||
### MS16+MS17-PagesDataIntegration (v0.1.1) — Complete
|
### MS16+MS17-PagesDataIntegration (v0.0.17) — Complete
|
||||||
|
|
||||||
All pages built + wired to real API data. PRs #470-484 (15 PRs). Issues #466-469.
|
All pages built + wired to real API data. PRs #470-484 (15 PRs). Issues #466-469.
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ All pages built + wired to real API data. PRs #470-484 (15 PRs). Issues #466-469
|
|||||||
- All 5125 tests passing, CI pipeline #585 green
|
- All 5125 tests passing, CI pipeline #585 green
|
||||||
- Deployed and smoke-tested at mosaic.woltje.com
|
- Deployed and smoke-tested at mosaic.woltje.com
|
||||||
|
|
||||||
### MS18-ThemeWidgets (v0.1.2) — Complete
|
### MS18-ThemeWidgets (v0.0.18) — Complete
|
||||||
|
|
||||||
Theme package system, widget registry, WYSIWYG editor, Kanban filtering. PRs #493-505. Issues #487-491.
|
Theme package system, widget registry, WYSIWYG editor, Kanban filtering. PRs #493-505. Issues #487-491.
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ Theme package system, widget registry, WYSIWYG editor, Kanban filtering. PRs #49
|
|||||||
- Kanban board filtering by project, assignee, priority, search with URL persistence
|
- Kanban board filtering by project, assignee, priority, search with URL persistence
|
||||||
- 1,195 web tests, 3,243 API tests passing
|
- 1,195 web tests, 3,243 API tests passing
|
||||||
|
|
||||||
### MS19-ChatTerminal (v0.1.3) — In Progress
|
### MS19-ChatTerminal (v0.0.19) — Complete
|
||||||
|
|
||||||
Real terminal with PTY backend, chat streaming, orchestrator integration. PRs #515-522. Issues #508-512.
|
Real terminal with PTY backend, chat streaming, orchestrator integration. PRs #515-522. Issues #508-512.
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ Real terminal with PTY backend, chat streaming, orchestrator integration. PRs #5
|
|||||||
- Agent output terminal: SSE streaming from orchestrator, lifecycle indicators, read-only view
|
- Agent output terminal: SSE streaming from orchestrator, lifecycle indicators, read-only view
|
||||||
- Command autocomplete with keyboard navigation in chat input
|
- Command autocomplete with keyboard navigation in chat input
|
||||||
- 328 MS19-specific tests (268 web + 60 API), 4744 total passing
|
- 328 MS19-specific tests (268 web + 60 API), 4744 total passing
|
||||||
- Pending: deployment and smoke testing
|
- Deployed and smoke-tested at mosaic.woltje.com (CI #635 green)
|
||||||
|
|
||||||
### Bugfix: API Global Prefix (post-MS18) — Complete
|
### Bugfix: API Global Prefix (post-MS18) — Complete
|
||||||
|
|
||||||
@@ -363,7 +363,7 @@ This is the active mission scope. MS16 (Pages) and MS17 (Backend Integration) ar
|
|||||||
9. ~~Lint, typecheck, and existing tests pass~~ DONE
|
9. ~~Lint, typecheck, and existing tests pass~~ DONE
|
||||||
10. ~~Grain overlay texture from reference is applied~~ DONE
|
10. ~~Grain overlay texture from reference is applied~~ DONE
|
||||||
|
|
||||||
### Go-Live MVP (v0.1.0) — COMPLETE
|
### Go-Live MVP (v0.0.16) — COMPLETE
|
||||||
|
|
||||||
11. ~~Dashboard widgets wired to real API data~~ DONE
|
11. ~~Dashboard widgets wired to real API data~~ DONE
|
||||||
12. ~~WebSocket emits for agent job lifecycle~~ DONE
|
12. ~~WebSocket emits for agent job lifecycle~~ DONE
|
||||||
@@ -492,14 +492,14 @@ These 19 NestJS modules are already implemented with Prisma and available for fr
|
|||||||
| Milestone | Version | Focus | Status |
|
| Milestone | Version | Focus | Status |
|
||||||
| ------------------------------ | ------- | ----------------------------------------------------------------- | ----------- |
|
| ------------------------------ | ------- | ----------------------------------------------------------------- | ----------- |
|
||||||
| MS15-DashboardShell | 0.0.15 | Design system + app shell + dashboard page | COMPLETE |
|
| MS15-DashboardShell | 0.0.15 | Design system + app shell + dashboard page | COMPLETE |
|
||||||
| Go-Live MVP | 0.1.0 | Dashboard polish, ingestion, agent visibility, deploy | COMPLETE |
|
| Go-Live MVP | 0.0.16 | Dashboard polish, ingestion, agent visibility, deploy | COMPLETE |
|
||||||
| MS16+MS17-PagesDataIntegration | 0.1.1 | All pages built + wired to real API data | COMPLETE |
|
| MS16+MS17-PagesDataIntegration | 0.0.17 | All pages built + wired to real API data | COMPLETE |
|
||||||
| MS18-ThemeWidgets | 0.1.2 | Theme package system, widget registry, WYSIWYG, Kanban filtering | COMPLETE |
|
| MS18-ThemeWidgets | 0.0.18 | Theme package system, widget registry, WYSIWYG, Kanban filtering | COMPLETE |
|
||||||
| MS19-ChatTerminal | 0.1.3 | Global terminal, project chat, master chat session | COMPLETE |
|
| MS19-ChatTerminal | 0.0.19 | Global terminal, project chat, master chat session | COMPLETE |
|
||||||
| MS20-MultiTenant | 0.2.0 | Multi-tenant, teams, RBAC, RLS enforcement, break-glass auth | NOT STARTED |
|
| MS20-MultiTenant | 0.0.20 | Multi-tenant, teams, RBAC, RLS enforcement, break-glass auth | NOT STARTED |
|
||||||
| MS21-Federation | 0.2.x | Federation (M-M, M-S), 3 instances, key exchange, data separation | NOT STARTED |
|
| MS21-Federation | 0.0.21 | Federation (M-M, M-S), 3 instances, key exchange, data separation | NOT STARTED |
|
||||||
| MS22-AgentTelemetry | 0.2.x | Agent task mapping, telemetry, wide-event logging | NOT STARTED |
|
| MS22-AgentTelemetry | 0.0.22 | Agent task mapping, telemetry, wide-event logging | NOT STARTED |
|
||||||
| MS23-Testing | 0.2.x | Playwright E2E, federation tests, documentation finalization | NOT STARTED |
|
| MS23-Testing | 0.0.23 | Playwright E2E, federation tests, documentation finalization | NOT STARTED |
|
||||||
|
|
||||||
## Assumptions
|
## Assumptions
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mosaic-stack",
|
"name": "mosaic-stack",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@10.19.0",
|
"packageManager": "pnpm@10.19.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/cli-tools",
|
"name": "@mosaic/cli-tools",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"description": "CLI tools for Mosaic Stack orchestration - git operations for Gitea/GitHub",
|
"description": "CLI tools for Mosaic Stack orchestration - git operations for Gitea/GitHub",
|
||||||
"private": true,
|
"private": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/config",
|
"name": "@mosaic/config",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/shared",
|
"name": "@mosaic/shared",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
"types": "./dist/index.d.ts",
|
"types": "./dist/index.d.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@mosaic/ui",
|
"name": "@mosaic/ui",
|
||||||
"version": "0.0.1",
|
"version": "0.0.20",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
69
scripts/version-bump.sh
Executable file
69
scripts/version-bump.sh
Executable file
@@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# version-bump.sh — Bump version across all workspace packages
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# scripts/version-bump.sh <new-version>
|
||||||
|
# scripts/version-bump.sh 0.0.21
|
||||||
|
#
|
||||||
|
# Enforces:
|
||||||
|
# - Version MUST be 0.0.x (alpha constraint)
|
||||||
|
# - All package.json files are updated atomically
|
||||||
|
# - Rejects 0.1.0+ until explicitly unlocked
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
|
|
||||||
|
if [[ $# -ne 1 ]]; then
|
||||||
|
echo "Usage: $0 <version>"
|
||||||
|
echo "Example: $0 0.0.21"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NEW_VERSION="$1"
|
||||||
|
|
||||||
|
# Hard gate: alpha constraint (0.0.x only)
|
||||||
|
if [[ ! "$NEW_VERSION" =~ ^0\.0\.[0-9]+$ ]]; then
|
||||||
|
echo "ERROR: Version must be 0.0.x (alpha). Got: $NEW_VERSION"
|
||||||
|
echo ""
|
||||||
|
echo "This project is in ALPHA. Versions >= 0.1.0 are not allowed."
|
||||||
|
echo "If this constraint needs to change, update AGENTS.md and this script."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Patch number must be > 0
|
||||||
|
PATCH="${NEW_VERSION##0.0.}"
|
||||||
|
if [[ "$PATCH" -lt 1 ]]; then
|
||||||
|
echo "ERROR: Patch version must be >= 1. Got: $NEW_VERSION"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find all package.json files in the monorepo
|
||||||
|
PACKAGE_FILES=(
|
||||||
|
"$REPO_ROOT/package.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
for dir in "$REPO_ROOT"/apps/*/package.json "$REPO_ROOT"/packages/*/package.json; do
|
||||||
|
[[ -f "$dir" ]] && PACKAGE_FILES+=("$dir")
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Bumping all packages to $NEW_VERSION"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
for pkg in "${PACKAGE_FILES[@]}"; do
|
||||||
|
REL_PATH="${pkg#"$REPO_ROOT"/}"
|
||||||
|
OLD_VERSION=$(grep -o '"version": "[^"]*"' "$pkg" | head -1 | cut -d'"' -f4)
|
||||||
|
# Use node for reliable JSON editing (preserves formatting better than sed)
|
||||||
|
node -e "
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = '$pkg';
|
||||||
|
const raw = fs.readFileSync(path, 'utf8');
|
||||||
|
const updated = raw.replace(/\"version\": \"[^\"]*\"/, '\"version\": \"$NEW_VERSION\"');
|
||||||
|
fs.writeFileSync(path, updated);
|
||||||
|
"
|
||||||
|
echo " $REL_PATH: $OLD_VERSION -> $NEW_VERSION"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Done. $NEW_VERSION applied to ${#PACKAGE_FILES[@]} packages."
|
||||||
|
echo "Next steps: commit, tag (v$NEW_VERSION), push."
|
||||||
Reference in New Issue
Block a user