ktg-plugin-marketplace/docs/state-version-rollout.md
Kjell Tore Guttormsen 2237f6cc4d docs(catalog): mark voyage STATE.md tracking DONE (Workstream A, 3/11)
voyage avgitignored + tracked STATE.md per the rollout brief; matches
config-audit + ms-ai-architect. Remaining: linkedin-studio, claude-design
(have STATE, gitignored) + 6 file-made-later repos — each its own GO.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqBYc8Ltrk7LipyJmGxXiB
2026-06-20 11:21:05 +02:00

93 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Brief — STATE.md tracking + version-consistency rollout (marketplace-wide)
> Coordination brief for two cross-cutting changes across all marketplace plugins.
> Lives in catalog (the marketplace coordinator). **This is the plan — execution happens
> per repo, each needing its own operator GO** (cross-repo edits). Status verified 2026-06-20.
## Goal
1. **STATE.md tracked** in every repo — the updated global continuity rule
(`~/.claude/CLAUDE.md`): STATE.md is tracked and committed, never gitignored; pushed to
private Forgejo, never GitHub/public.
2. **Version-consistency green** — every plugin passes `catalog/scripts/check-versions.mjs`
(no ERROR; ideally no WARN).
These two workstreams are independent and can be done in any order.
---
## Workstream A — STATE.md tracking
### Status (verified 2026-06-20)
| Repo | har STATE.md | tracked | gitignored | Action | `.gitignore` line* |
|------|--------------|---------|------------|--------|--------------------|
| config-audit | yes | **yes** | no | ✅ DONE | — |
| ms-ai-architect | yes | **yes** | no | ✅ DONE | — |
| voyage | yes | **yes** | no | ✅ DONE | — |
| linkedin-studio | yes | no | yes | avgitignore + track | `:62` |
| claude-design | yes | no | yes | avgitignore + track | `:3` |
| llm-security | no | no | yes | avgitignore (file made later) | `:19` |
| graceful-handoff | no | no | yes | avgitignore (file made later) | `:3` |
| ai-psychosis | no | no | yes | avgitignore (file made later) | `:21` |
| okr | no | no | yes | avgitignore (file made later) | `:28` |
| human-friendly-style | no | no | yes | avgitignore (file made later) | `:3` |
| catalog | no | no | yes | avgitignore (file made later) | `:5` |
\* Line numbers as of 2026-06-20 — they drift. At execution time, resolve the exact source with
`git -C <repo> check-ignore -v STATE.md` rather than trusting the number.
### Per-repo steps (for each non-DONE repo)
1. `git -C <repo> check-ignore -v STATE.md` → confirm the exact `.gitignore` line.
2. Remove the `STATE.md` entry from `.gitignore`. Replace the section comment with a tracked-state
note, mirroring config-audit / ms-ai-architect (e.g. *"session/local state — STATE.md is TRACKED
continuity (per ~/.claude; overrides the polyrepo convention); the rest stays local"*).
3. If a `STATE.md` file already exists (voyage / linkedin-studio / claude-design): `git add STATE.md`.
If not (the 6 "file made later"): de-gitignoring is enough — the file is tracked the first time a
session writes it at session-end. Optionally seed a minimal stub now; not required.
4. Commit `chore: track STATE.md per global continuity rule` (+ standard footer). `chore:`/`docs:`
pass any docs-gate freely.
5. Push within the window (weekday 20:0023:00, weekend anytime).
### Verification (testable)
- `git -C <repo> check-ignore STATE.md` → exits non-zero (no longer ignored).
- If a file exists: `git -C <repo> ls-files STATE.md` → prints `STATE.md` (tracked).
- `grep -n STATE <repo>/.gitignore` → no bare `STATE.md` ignore line remains.
---
## Workstream B — Version-consistency
Run from catalog: `node scripts/check-versions.mjs` (add `--strict` to fail on WARN too).
Current run: **8 OK, 2 WARN, 0 ERROR.**
### The 2 WARN — require an operator decision
| Plugin | plugin.json | catalog ref | tag for plugin.json version? |
|--------|-------------|-------------|------------------------------|
| linkedin-studio | 0.5.0 | v0.4.0 | no (`v0.5.0` does not exist) |
| ms-ai-architect | 1.16.0 | v1.15.0 | no (`v1.16.0` does not exist) |
For each, pick one:
- **Bump is unreleased** → no action. The gate WARNs correctly; catalog rightly points at the last
released tag. (Leave as-is.)
- **Bump is meant to be released** → in the plugin repo: tag `vX.Y.Z` on the release commit + push;
in catalog: bump the `ref` + the README version/stat line; re-run the gate (expect that plugin → OK).
> Only the operator knows which case applies — the gate cannot infer release intent.
### Verification (testable)
- `node scripts/check-versions.mjs``0 ERROR` (hard requirement).
- After resolving both WARNs: `node scripts/check-versions.mjs --strict` → exit 0.
---
## Scope fence
- Each repo edit is a separate cross-repo change → **its own operator GO**.
- This brief is the plan; nothing in the 9 non-catalog repos is touched until GO per piece.
- Push window applies to every push (weekday 20:0023:00, weekend anytime).