@@ -132,6 +132,29 @@ vers tag delete <name>
132132vers tag delete < name-1> < name-2>
133133```
134134
135+ ### Feedback
136+
137+ Report friction (or anything else) about the CLI. Entries are appended to a
138+ local JSONL journal at ` ~/.vers/feedback.jsonl ` .
139+
140+ ``` bash
141+ # Record locally
142+ vers feedback " the --tier flag rejects 'enterprise' but docs list it as valid"
143+
144+ # List recent entries
145+ vers feedback list
146+ vers feedback list --limit 5 --json
147+
148+ # Opt-in upstream delivery: when VERS_FEEDBACK_ENDPOINT is set, the entry is
149+ # also POSTed there (application/json, 5s timeout). Failures are logged to
150+ # stderr but the local journal entry is still written.
151+ VERS_FEEDBACK_ENDPOINT=https://example.com/cli-feedback \
152+ vers feedback " race condition in --wait when job completes during first poll"
153+ ```
154+
155+ Override the journal path with ` VERS_FEEDBACK_PATH ` (primarily for testing).
156+
157+
135158### Shell Composition
136159
137160Commands with ` -q ` output are designed to compose with standard Unix tools:
@@ -159,6 +182,24 @@ vers get <vm-id> --json | jq '.ip'
159182vers ps -q
160183```
161184
185+ ### Job Ledger
186+
187+ Every ` --wait ` invocation of ` run ` , ` branch ` , ` deploy ` , ` resume ` , or ` run-commit `
188+ appends an entry to a durable JSONL ledger at ` ~/.vers/jobs.jsonl ` (override
189+ with ` VERS_JOBS_DIR ` ). Use ` vers jobs ` to introspect:
190+
191+ ``` bash
192+ vers jobs list --json # all jobs as JSON
193+ vers jobs list --status failed # only failed jobs
194+ vers jobs get job_< id> # full record for one job
195+ vers jobs prune --older-than 7d # trim entries older than 7 days
196+ vers jobs prune --all --dry-run # preview clearing the ledger
197+ ```
198+
199+ Phase 1 ships journaling only. The ledger is written best-effort: a write
200+ failure never causes the underlying command to fail. Resumption of in-flight
201+ jobs is not yet implemented.
202+
162203
163204## Configuration
164205
0 commit comments