docs: sync README ports, teach the skill to read the envelope, record DX-gap resolutions#9
docs: sync README ports, teach the skill to read the envelope, record DX-gap resolutions#9burrows99 wants to merge 2 commits into
Conversation
Keep the prose docs in step with the behavior changes from the collector/trace fixes (#5–#7). - README: the docker-compose section showed the container ports (:4747 · :5432 · :9000) instead of the host-published ports the compose file actually maps. Correct to :14747 · :65432 · :19000 (console :19001), and the S3_ENDPOINT example to :19000, so the README matches docker-compose.yml. The native-serve example keeps :5432 (your own Postgres) — that one was right. - skills/trace/SKILL.md: add a "Reading the result" section. The skill is deliberately minimal (the binary is the source of truth), but it gave zero guidance on interpreting a trace — the gap behind an agent treating an empty or perpetually-"running" trace as success. Names the three stable fields that decide whether a run did what was asked (ok · diagnostics[].code · meta.running) and the rule that ok:true + events:[] + a warn diagnostic means "ran fine, saw nothing — re-aim," not success. Field-level (no drift-prone code list).
The DX-gaps analysis enumerated six ways the CLI misled an agent; all six have since shipped. Keep the analysis verbatim as the rationale, but add a status banner + table and a per-gap resolution note pointing to where each was closed (and flagging the few sub-items still open: dashboard age-out of stale "running" (#6b), done/upload decoupling (#6c), and lockfile-based port auto-discovery (#5)). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
⚠️ Not ready to approve
The new DX-gaps doc includes brittle/now-inaccurate file:line references (e.g. Cli.ts:123) that should be adjusted (remove line numbers or link to a permalink) to avoid misleading readers.
Pull request overview
Docs synchronization following the recent “emit/fail-loudly” work: updates user- and agent-facing documentation to reflect the current port mappings and to teach consumers how to interpret the Trace JSON envelope (especially “empty but ok” and mid-run meta.running envelopes), plus records the DX-gap analysis with resolution pointers.
Changes:
- Update README Docker Compose port/S3 endpoint documentation to match current mappings.
- Extend the trace agent skill doc with explicit guidance on interpreting
ok,diagnostics[], andmeta.running. - Add a resolved “DX gaps” record documenting what was misleading and where each gap was closed (or remains partially open).
File summaries
| File | Description |
|---|---|
| README.md | Sync Compose port and S3_ENDPOINT documentation with current docker-compose mappings. |
| skills/trace/SKILL.md | Teach agents to evaluate envelope completeness via ok, diagnostics[], and meta.running rather than exit code alone. |
| docs/agent-dx-gaps.md | Add a resolved DX-gap record with status table and narrative rationale/snippets. |
Copilot's findings
- Files reviewed: 3/3 changed files
- Comments generated: 1
Note
Your feedback helps us improve the quality of this feature.
Please use 👍 or 👎 to tell us whether this assessment is correct.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| The live `--emit` path drops every failure on the floor: | ||
|
|
||
| ```ts | ||
| // src/cli/Cli.ts:123 |
Documentation sync following the emit/fail-loudly work in #5, #6, #7. Docs-only — no source changes.
Changes
README.md— fix Docker Compose port drift: dashboard:14747, Postgres:65432, S3:19000(console:19001), and the matchingS3_ENDPOINT. (Doc-side of DX-gap #5, "port story inconsistent.")skills/trace/SKILL.md— add a "Reading the result — don't mistake an empty trace for a clean pass" section. The CLI now makes failure/completeness legible in the JSON envelope; this teaches an agent to actually read it:ok(mirrors exit code),diagnostics[](stablecodes;warndoes not flipok, sook:true+events:[]+ a warn = ran-but-saw-nothing), andmeta.running(a partial mid-run envelope; a stuck "running" means the run never finished). Directly addresses the cross-cutting theme of the gaps doc.docs/agent-dx-gaps.md— the DX-gaps analysis (minted from a real debugging session) is now a resolved record: the analysis is kept verbatim as rationale, with a status banner + table and a per-gap resolution note pointing to where each was closed. Status:413/400 INGEST_INVALID/400 INGEST_NO_SESSION/503 STOREEmitResult+Diagnostic.warn(Code.EMIT, …)(fix(collector): make trace failures self-explanatory in the JSON envelope #5/fix(collector): bound emit failure memory and word network failures accurately #6)--conciselooks like it shapes the wire → ✅ help text disclaims--emitBP_BOUND_UNHITdiagnosticserveprints the--emitURL; open: no lockfile for non-default-port auto-discoveryRECORD_EMPTY/UPLOADdiagnostics (fix(trace): make empty/aborted runs fail loudly instead of silently "running" #7); open: dashboard age-out (#6b), done/upload decoupling (#6c)🤖 Generated with Claude Code