fix: the trial's mechanical faults -- approval label, import path, stats, annotate path, red kind
voyage-lekerepo end-to-end trial (2026-10-06), report points 8, 10, 12, 15, 16:
- approval-log: «Approve (Recommended)» / «Godkjenn (anbefalt)» is the
approval it labels; the suffix never turns a hollow answer into a yes.
- trekexecute Phase 8: the state-file block imports atomic-write through
${CLAUDE_PLUGIN_ROOT}; a relative import only ran with cwd = plugin root
(the test runs the block from another directory).
- trekreview, trekresearch, trekcontinue: stats go through stats-append like
the other commands, and a failed write is reported, never skipped
silently (closes the open STATE finding for all three). The schema
fixture's stale line refs for these and trekplan are re-measured.
- annotate prints an absolute path, so file://{$ANNOT_HTML} is a live link.
- red-proof: `red_kind` = load-error | test-failure on a proven red.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
609eb35015
commit
81dc5af680
9 changed files with 191 additions and 24 deletions
|
|
@ -285,13 +285,21 @@ disk. Cannot continue automatically.` and exit. Do not guess.
|
|||
|
||||
## Phase 5 — Stats tracking
|
||||
|
||||
Append a one-line JSON record to `${CLAUDE_PLUGIN_DATA}/trekcontinue-stats.jsonl`
|
||||
if the env var is set; silently skip otherwise.
|
||||
Append one record to `trekcontinue-stats.jsonl` in the plugin data directory.
|
||||
Run it exactly like this. The record goes on stdin, and the writer resolves
|
||||
the directory: `CLAUDE_PLUGIN_DATA`, which the Bash tool env does not carry,
|
||||
else the directory `scripts/yardstick.mjs` reads.
|
||||
|
||||
```json
|
||||
```bash
|
||||
node ${CLAUDE_PLUGIN_ROOT}/lib/stats/stats-append.mjs trekcontinue <<'JSON'
|
||||
{"ts":"<iso-8601>","project":"<project>","next_session_label":"<label>","status":"<status>"}
|
||||
JSON
|
||||
```
|
||||
|
||||
The writer prints `{"written": true, ...}`. On `"written": false` (exit 1),
|
||||
print its `reason` in one line and continue. A tracking failure never blocks
|
||||
the main workflow, but it is reported, not skipped silently.
|
||||
|
||||
## Profile (v4.1) — inheritance from plan-frontmatter
|
||||
|
||||
Accepts `--profile <name>` where `<name>` is `economy`, `balanced`, `premium`,
|
||||
|
|
|
|||
|
|
@ -2164,7 +2164,7 @@ ESM inline block so state-file + prompt-file writes succeed or fail together:
|
|||
node --input-type=module -e "
|
||||
import path from 'node:path';
|
||||
import { writeFileSync } from 'node:fs';
|
||||
import { atomicWriteJson } from './lib/util/atomic-write.mjs';
|
||||
import { atomicWriteJson } from '${CLAUDE_PLUGIN_ROOT}/lib/util/atomic-write.mjs';
|
||||
const [, dir, briefPath, label, status] = process.argv;
|
||||
const now = new Date().toISOString();
|
||||
const stateObj = { schema_version: 1, project: dir, next_session_brief_path: briefPath, next_session_label: label, status, updated_at: now };
|
||||
|
|
|
|||
|
|
@ -774,11 +774,13 @@ You can:
|
|||
|
||||
### Stats tracking
|
||||
|
||||
Write a session record to `${CLAUDE_PLUGIN_DATA}/trekresearch-stats.jsonl`
|
||||
(create the file if it does not exist).
|
||||
Append one record to `trekresearch-stats.jsonl` in the plugin data directory.
|
||||
Run it exactly like this. The record goes on stdin, and the writer resolves
|
||||
the directory: `CLAUDE_PLUGIN_DATA`, which the Bash tool env does not carry,
|
||||
else the directory `scripts/yardstick.mjs` reads.
|
||||
|
||||
Record format (one JSON line):
|
||||
```json
|
||||
```bash
|
||||
node ${CLAUDE_PLUGIN_ROOT}/lib/stats/stats-append.mjs trekresearch <<'JSON'
|
||||
{
|
||||
"ts": "{ISO-8601 timestamp}",
|
||||
"question": "{research question (first 100 chars)}",
|
||||
|
|
@ -802,6 +804,7 @@ Record format (one JSON line):
|
|||
"contradictions": {N},
|
||||
"open_questions": {N}
|
||||
}
|
||||
JSON
|
||||
```
|
||||
|
||||
**The six measurement fields (v5.10).** `effort` is the grouping key — the
|
||||
|
|
@ -819,7 +822,9 @@ that could are prose the exporter allowlist denies. On a standard run the loop
|
|||
never arms, so `dimensions_baseline == dimensions`, both turn counters are `0`,
|
||||
and `dimensions_baseline_preserved` is `true` (nothing touched the list).
|
||||
|
||||
If `${CLAUDE_PLUGIN_DATA}` is not set or not writable, skip tracking silently.
|
||||
The writer prints `{"written": true, ...}`. On `"written": false` (exit 1),
|
||||
print its `reason` in one line and continue. A tracking failure never blocks
|
||||
the main workflow, but it is reported, not skipped silently.
|
||||
|
||||
## Profile (v4.1)
|
||||
|
||||
|
|
|
|||
|
|
@ -620,15 +620,20 @@ with WARN, `--json` also returns `warn_reasons` (the JSON block's
|
|||
as returned. This is the command that later stops a merge or a release on
|
||||
BLOCK; `/trekreview` reports it and never overrides it.
|
||||
|
||||
Append a stats line to `${CLAUDE_PLUGIN_DATA}/trekreview-stats.jsonl`
|
||||
(create the file if it does not exist):
|
||||
Then append one record to `trekreview-stats.jsonl` in the plugin data directory.
|
||||
Run it exactly like this. The record goes on stdin, and the writer resolves
|
||||
the directory: `CLAUDE_PLUGIN_DATA`, which the Bash tool env does not carry,
|
||||
else the directory `scripts/yardstick.mjs` reads.
|
||||
|
||||
```json
|
||||
```bash
|
||||
node ${CLAUDE_PLUGIN_ROOT}/lib/stats/stats-append.mjs trekreview <<'JSON'
|
||||
{"ts":"{ISO-8601}","slug":"{slug}","verdict":"BLOCK|WARN|ALLOW","counts":{"BLOCKER":N,"MAJOR":N,"MINOR":N,"SUGGESTION":N},"reviewed_files_count":N,"mode":"default|quick|validate|dry-run","duration_ms":N}
|
||||
JSON
|
||||
```
|
||||
|
||||
If `${CLAUDE_PLUGIN_DATA}` is unset or not writable, skip stats silently.
|
||||
Never let stats failures block the main workflow.
|
||||
The writer prints `{"written": true, ...}`. On `"written": false` (exit 1),
|
||||
print its `reason` in one line and continue. A tracking failure never blocks
|
||||
the main workflow, but it is reported, not skipped silently.
|
||||
|
||||
**Build the operator-annotation HTML.** After stats land, run:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue