chore(voyage): release v5.0.0 — remove bespoke playground + /trekrevise + Handover 8; render produced artifacts to HTML + link, annotate via /playground
The v4.2/v4.3 bespoke playground SPA (~388 KB), the /trekrevise command, Handover 8 (annotation → revision), the supporting lib/ modules (anchor-parser, annotation-digest, markdown-write, revision-guard), the Playwright e2e suite, and the @playwright/test / @axe-core/playwright devDeps are removed. A browser walkthrough found the playground borderline unusable, and it duplicated the official /playground plugin's document-critique / diff-review templates. In their place: scripts/render-artifact.mjs — a small, zero-dependency renderer that turns a brief/plan/review .md into a self-contained, design-system-styled, zero-network .html (frontmatter folded into a <details> block). /trekbrief, /trekplan, and /trekreview call it on their last step and print the file:// link; to annotate, run /playground (document-critique) on the .md and paste the generated prompt back. Resolves the v4.3.1-deferred findings as moot (their target files are deleted). npm test green: 509 tests, 507 pass, 0 fail, 2 skipped. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
0f197f6ff6
commit
916d30f63e
96 changed files with 620 additions and 14716 deletions
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
type: trekbrief
|
||||
brief_version: "1.0"
|
||||
task: Demo task for annotation round-trip fixture
|
||||
slug: annotation-brief-demo
|
||||
research_topics: 0
|
||||
research_status: complete
|
||||
---
|
||||
|
||||
# Demo brief for annotation round-trip
|
||||
|
||||
This fixture is used by `tests/integration/annotation-roundtrip.test.mjs`
|
||||
to verify SC2 (byte-identical empty-anchor round-trip) and SC7 (per-target
|
||||
isolation against `validateBrief`).
|
||||
|
||||
It carries no anchors. The round-trip test runs:
|
||||
`stripAnchors(addAnchors(body, [])) === body`.
|
||||
|
||||
## Intent
|
||||
|
||||
Provide a minimal brief that validates against `brief-validator.mjs` so
|
||||
the round-trip integration test has a real artifact to revise.
|
||||
|
||||
## Goal
|
||||
|
||||
The brief should validate cleanly (no errors, no warnings) and contain
|
||||
enough body text that adding an anchor and stripping it back is a
|
||||
non-trivial operation.
|
||||
|
||||
## Success Criteria
|
||||
|
||||
- File parses via `parseDocument`.
|
||||
- `validateBrief` returns `valid: true`.
|
||||
- `stripAnchors(addAnchors(body, []))` is byte-identical to body.
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
type: trekplan-fixture
|
||||
plan_version: "1.7"
|
||||
created: 2026-05-09
|
||||
slug: annotation-example
|
||||
---
|
||||
|
||||
# Sample plan with one anchor
|
||||
|
||||
This fixture is referenced by `docs/annotation-quickstart.md` and the SC12
|
||||
machine-proxy verification (`parseAnchors` exits 0).
|
||||
|
||||
## Section A
|
||||
|
||||
A normal paragraph in section A.
|
||||
|
||||
<!-- voyage:anchor id="ANN-0001" target="section-b" line="20" intent="change" -->
|
||||
|
||||
## Section B
|
||||
|
||||
A paragraph in section B that the anchor above refers to. The anchor is
|
||||
placed on its own line with a blank line above and below — the canonical
|
||||
v4.2 placement disipline.
|
||||
|
||||
## Section C
|
||||
|
||||
Another paragraph.
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,64 +0,0 @@
|
|||
---
|
||||
plan_version: 1.7
|
||||
profile: balanced
|
||||
---
|
||||
|
||||
# Demo plan for annotation round-trip
|
||||
|
||||
This fixture is used by `tests/integration/annotation-roundtrip.test.mjs`
|
||||
to verify SC2 (byte-identical empty-anchor round-trip) and SC7 (per-target
|
||||
isolation against `validatePlan`).
|
||||
|
||||
## Context
|
||||
|
||||
A minimal plan with two steps. Each step has a Manifest block so
|
||||
`plan-validator --strict` accepts the file.
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
### Step 1: Touch a sentinel file
|
||||
|
||||
- **Files:** `tmp/sentinel-1.txt` (new)
|
||||
- **Changes:** Create the sentinel file with the literal content "step-1".
|
||||
- **Reuses:** none.
|
||||
- **Test first:** none — sentinel-only step.
|
||||
- **Verify:** `test -f tmp/sentinel-1.txt`
|
||||
- **On failure:** revert.
|
||||
- **Checkpoint:** `git commit -m "chore: sentinel step 1"`
|
||||
- **Manifest:**
|
||||
```yaml
|
||||
manifest:
|
||||
expected_paths:
|
||||
- tmp/sentinel-1.txt
|
||||
min_file_count: 1
|
||||
commit_message_pattern: "^chore: sentinel step 1"
|
||||
bash_syntax_check: []
|
||||
forbidden_paths: []
|
||||
must_contain: []
|
||||
```
|
||||
|
||||
### Step 2: Touch a second sentinel file
|
||||
|
||||
- **Files:** `tmp/sentinel-2.txt` (new)
|
||||
- **Changes:** Create the sentinel file with the literal content "step-2".
|
||||
- **Reuses:** none.
|
||||
- **Test first:** none.
|
||||
- **Verify:** `test -f tmp/sentinel-2.txt`
|
||||
- **On failure:** revert.
|
||||
- **Checkpoint:** `git commit -m "chore: sentinel step 2"`
|
||||
- **Manifest:**
|
||||
```yaml
|
||||
manifest:
|
||||
expected_paths:
|
||||
- tmp/sentinel-2.txt
|
||||
min_file_count: 1
|
||||
commit_message_pattern: "^chore: sentinel step 2"
|
||||
bash_syntax_check: []
|
||||
forbidden_paths: []
|
||||
must_contain: []
|
||||
```
|
||||
|
||||
## Verification
|
||||
|
||||
- `npm test` passes.
|
||||
- Both sentinel files exist.
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
type: trekreview
|
||||
review_version: "1.0"
|
||||
task: Demo review for annotation round-trip
|
||||
slug: annotation-review-demo
|
||||
project_dir: .claude/projects/2026-05-09-annotation-demo
|
||||
brief_path: .claude/projects/2026-05-09-annotation-demo/brief.md
|
||||
scope_sha_end: 0000000000000000000000000000000000000000
|
||||
reviewed_files_count: 0
|
||||
findings: []
|
||||
---
|
||||
|
||||
# Demo review for annotation round-trip
|
||||
|
||||
This fixture is used by `tests/integration/annotation-roundtrip.test.mjs`
|
||||
to verify SC2 (byte-identical empty-anchor round-trip) and SC7 (per-target
|
||||
isolation against `validateReview`).
|
||||
|
||||
## Executive Summary
|
||||
|
||||
Verdict: ALLOW. No findings. This is a synthetic fixture used to exercise
|
||||
the round-trip mechanics; it does not represent a real review.
|
||||
|
||||
## Coverage
|
||||
|
||||
| File | Treatment |
|
||||
|------|-----------|
|
||||
| _none_ | _no diff_ |
|
||||
|
||||
## Remediation Summary
|
||||
|
||||
No remediation needed. ALLOW.
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
"schema_version": 1,
|
||||
"exported_at": "2026-05-10T18:00:00Z",
|
||||
"target_artifact": "plan",
|
||||
"target_filename": "annotated-plan.md",
|
||||
"annotations": [
|
||||
{
|
||||
"id": "ANN-0001",
|
||||
"target_artifact": "plan",
|
||||
"target_anchor": "step-1-sentinel-touch",
|
||||
"intent": "question",
|
||||
"comment": "Should this sentinel use a deterministic timestamp?",
|
||||
"timestamp": "2026-05-10T18:01:00Z"
|
||||
},
|
||||
{
|
||||
"id": "ANN-0002",
|
||||
"target_artifact": "plan",
|
||||
"target_anchor": "step-2-sentinel-touch-paired",
|
||||
"intent": "fix",
|
||||
"comment": "Step 2 manifest should reference Step 1 in must_contain.",
|
||||
"timestamp": "2026-05-10T18:02:00Z"
|
||||
}
|
||||
],
|
||||
"annotation_digest": "PLACEHOLDER_OVERWRITTEN_AT_TEST_TIME"
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
---
|
||||
plan_version: 1.7
|
||||
profile: balanced
|
||||
revision: 0
|
||||
---
|
||||
|
||||
# v4.3 fixture — pre-annotate plan
|
||||
|
||||
Minimal plan used by Group C tests to seed an annotated round-trip.
|
||||
Two anchors target `Step 1` and `Step 2` so the export-bundle has at
|
||||
least 2 ANN-IDs to canonicalize for `annotation_digest`.
|
||||
|
||||
## Context
|
||||
|
||||
Fixture only — not executed. Anchors below match the v4.2 anchor format
|
||||
`<!-- voyage:anchor id="ANN-NNNN" target="<slug>" line="<N>" -->` and
|
||||
sit on their own line surrounded by blank lines (block-boundary rule).
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
### Step 1: Sentinel touch
|
||||
|
||||
<!-- voyage:anchor id="ANN-0001" target="step-1-sentinel-touch" line="20" -->
|
||||
|
||||
- **Files:** `tmp/sentinel-1.txt` (new)
|
||||
- **Changes:** Create the sentinel file with the literal content "step-1".
|
||||
- **Reuses:** none.
|
||||
- **Test first:** none — sentinel-only step.
|
||||
- **Verify:** `test -f tmp/sentinel-1.txt`
|
||||
- **On failure:** revert.
|
||||
- **Checkpoint:** `git commit -m "chore: sentinel step 1"`
|
||||
- **Manifest:**
|
||||
```yaml
|
||||
manifest:
|
||||
expected_paths:
|
||||
- tmp/sentinel-1.txt
|
||||
min_file_count: 1
|
||||
commit_message_pattern: "^chore: sentinel step 1"
|
||||
bash_syntax_check: []
|
||||
forbidden_paths: []
|
||||
must_contain: []
|
||||
```
|
||||
|
||||
### Step 2: Sentinel touch (paired)
|
||||
|
||||
<!-- voyage:anchor id="ANN-0002" target="step-2-sentinel-touch-paired" line="38" -->
|
||||
|
||||
- **Files:** `tmp/sentinel-2.txt` (new)
|
||||
- **Changes:** Create the sentinel file with the literal content "step-2".
|
||||
- **Reuses:** none.
|
||||
- **Test first:** none.
|
||||
- **Verify:** `test -f tmp/sentinel-2.txt`
|
||||
- **On failure:** revert.
|
||||
- **Checkpoint:** `git commit -m "chore: sentinel step 2"`
|
||||
- **Manifest:**
|
||||
```yaml
|
||||
manifest:
|
||||
expected_paths:
|
||||
- tmp/sentinel-2.txt
|
||||
min_file_count: 1
|
||||
commit_message_pattern: "^chore: sentinel step 2"
|
||||
bash_syntax_check: []
|
||||
forbidden_paths: []
|
||||
must_contain: []
|
||||
```
|
||||
|
||||
## Verification
|
||||
|
||||
- Both sentinel files exist after execution.
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
task: Screenshot gallery fixture for Group D test
|
||||
slug: screenshot-project
|
||||
project_dir: tests/fixtures/screenshot-project
|
||||
---
|
||||
|
||||
# Screenshot fixture brief
|
||||
|
||||
Minimal brief.md so `loadProjectDirectory` reaches its render phase
|
||||
without emitting the "brief.md mangler" warning. Real verification
|
||||
is the data:image PNG count assertion in the Group D test.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 70 B |
Loading…
Add table
Add a link
Reference in a new issue