docs(voyage): document v4.1 profiles + observability + doc-consistency-pinning

Step 22 of v4.1 — write top-level docs for the v4.1 feature surface.

Files updated:
  CLAUDE.md       — Commands tables: add --profile to all 6 modes
                    + new ## Profile system + ## Observability sections
  README.md       — per-command Modes tables: add --profile row
                    + new top-level ## Profile system + ## Observability
                    + cross-link from ## Cost profile
  CHANGELOG.md    — new "## v4.1.0 — 2026-05-09" entry per Keep-a-Changelog 1.1.0
                    (Added / Changed / Fixed / Notes)
  docs/profiles.md — NEW: 168-line decision tree, lookup precedence,
                    custom-profile authoring, drift detection,
                    cost-estimation table with disclaimer
  tests/lib/doc-consistency.test.mjs — extend with 5 new pinning tests:
                    CLAUDE.md --profile + phase_models canonical name,
                    README.md --profile coverage (≥ 6 mentions),
                    CHANGELOG.md v4.1.0 entry, docs/profiles.md substantive

ROADMAP.md is gitignored per marketplace policy (sesjonsfiler) — local
edit applied for v4.1 DONE marker, not committed.

Plan-critic Blocker 2 split is honored: Step 21 pinned commands-only;
Step 22 writes the docs and pins them. doc-consistency.test.mjs is
green AFTER Step 22 (would have failed if Step 22 ran in same wave).

Tests: 487 pass + 2 skipped (Docker not installed).
This commit is contained in:
Kjell Tore Guttormsen 2026-05-09 10:09:44 +02:00
commit f2f8246e01
5 changed files with 394 additions and 0 deletions

View file

@ -4,6 +4,73 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## v4.1.0 — 2026-05-09
**Additive. No breaking changes. Forward-compat with all v4.0.0 plans.**
Two new feature surfaces: model profiles (`--profile <name>`) and
opt-in OpenTelemetry / Prometheus export at session-end.
### Added
- **Model profile system** (`lib/profiles/{economy,balanced,premium}.yaml`,
`lib/profiles/resolver.mjs`, `lib/validators/profile-validator.mjs`).
Three built-in tiers + custom-yaml support. Lookup order: explicit
`--profile` flag → plan frontmatter `profile:``VOYAGE_PROFILE`
env-var → `balanced` default. See `docs/profiles.md` for the decision
tree, custom authoring, and cost estimation disclaimer.
- **`--profile <name>` flag** documented in all 6 pipeline commands
(`commands/trek{brief,research,plan,execute,review,continue}.md`).
- **5 additive profile fields** in JSONL stats (`profile`,
`profile_source`, `phase_models`, `model_used`,
`phase_models_resolved`) for cost-attribution and drift detection.
- **OpenTelemetry / Prometheus export** at session-end via new Stop
hook (`hooks/scripts/otel-export.mjs`, wired in `hooks/hooks.json`).
Strict opt-in via `VOYAGE_EXPORT_MODE`:
- `textfile` — Prometheus exposition format → node-exporter textfile
- `otlp` — OTLP/JSON POST → otel-collector
- `off` (default) — no work done
- **Local Docker Compose stack** at `examples/observability/`
(Prometheus 3.0.1 + node-exporter 1.10.2 + Grafana 11.4.0 + OTel
Collector 0.115.0, all version-pinned per research/01).
- **Operator documentation** at `docs/observability.md` (151 lines:
env-var matrix, security mitigations, limitations, CVE-pinned
minimum versions).
- **Cross-tier Jaccard smoke test**
(`tests/integration/profile-jaccard-smoke.test.mjs`) with parked-
synthetic fixtures and 0.55 conservative starting threshold per
research/02. Empirical recalibration deferred to v4.2.
- **MANIFEST_PROFILE_DRIFT warning** in `plan-validator --strict`
when plan frontmatter `profile:` differs from any step manifest's
`profile_used`. Plan remains valid (warning, not error).
### Changed
- **`lib/parsers/arg-parser.mjs` FLAG_SCHEMA** — additively adds
`--profile <name>` to all 6 commands. Existing flags unchanged.
- **`lib/parsers/manifest-yaml.mjs` schema** — additively adds new
`OPTIONAL_STRING_KEYS` collection with `profile_used` as the first
member. Forward-compat: legacy plans without `profile_used` parse
unchanged; new plans with it round-trip cleanly.
### Fixed
- **Doc-consistency coverage** now spans all 6 pipeline commands
(was 5 — `/trekcontinue` was missing per HIGH risk-assessor).
- **Plan-validator strict mode** detects profile-drift between plan-
level frontmatter and step-level manifests (brief Assumptions
block 7).
### Notes
- Forward-compat: every v4.0.0 plan validates `valid: true` under
v4.1.0's `plan-validator --strict`. No migration needed.
- Tests: 361 baseline → 484 pass + 2 skipped (Docker-dependent).
- Path A/B/C decision (v3.4.0) is unchanged. Path C remains closed.
- v4.2 deferred items: ROUGE-L scoring, char-4gram MinHash, empirical
Jaccard re-calibration, `balanced.external_research_enabled`
operator-override.
## v4.0.0 — 2026-05-05
**Breaking. Rebrand. No migration path.**