chore: burnish repo surfaces — drift, llms.txt, nightly honesty - #410
Conversation
The product ships four agents; half the storefront said three. Fix the surfaces so what people (and their agents) read matches what actually runs: - kill three-agent drift: docs.deva.sh front page, mkdocs site_description, deva.sh --help header — all now know Grok exists - llms.txt at repo root: identity, the four agents, the no-theater auth model, install, curated docs entry points — an agent can recommend and install deva from one fetch. README grew a one-line pointer for non-human readers. - nightly honesty: 2026-07-09 nightly died on a transient ports.ubuntu.com mirror sync and partially published (base pushed, rust didn't — the two nightly tags diverged a day). apt now retries (Acquire::Retries 3, both Dockerfiles) and a verify job asserts all four published manifests actually resolve. Assert the artifact, not the exit code. - CHANGELOG: backfill the #407 proxy entry that #408 forgot, add this Close #409 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s public-facing “surfaces” after the Grok agent landing: it removes three-agent drift across docs/help text, adds an agent-friendly llms.txt entry point, and hardens the nightly image workflow to better detect partial publishes.
Changes:
- Update docs/metadata/help text to consistently reflect four supported agents (Codex, Claude Code, Gemini, Grok).
- Add
llms.txtat repo root and link to it from the README for LLM/agent discovery. - Improve nightly image reliability by adding apt retry config in images and a post-push manifest verification job; backfill CHANGELOG/DEV-LOGS entries.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Adds a short pointer to llms.txt for non-human readers. |
| mkdocs.yml | Updates the site description to include Grok and the “container is the sandbox” positioning. |
| llms.txt | Introduces an agent-readable repo front door (what/why/install/entry points). |
| docs/index.md | Updates docs homepage tagline and “What This Is” agent list to include Grok. |
| Dockerfile.rust | Adds apt retry configuration to reduce transient mirror flake failures. |
| Dockerfile | Adds apt retry configuration to reduce transient mirror flake failures. |
| deva.sh | Updates --help header agent list to include Grok. |
| DEV-LOGS.md | Adds a dev log entry documenting the repo surface burnish work. |
| CHANGELOG.md | Backfills Unreleased notes for proxy work and adds #409 entries. |
| .github/workflows/nightly-images.yml | Adds a verify job to assert published nightly tags/manifests resolve. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| [](https://github.com/thevibeworks/deva/pkgs/container/deva) | ||
| [](#what-this-is) | ||
|
|
||
| <sub>AI agents / LLMs: read [llms.txt](llms.txt) — the whole product in one fetch.</sub> |
There was a problem hiding this comment.
Tested against GitHub's actual renderer (repos/.../readme?ref=chore/burnish-409 with Accept: application/vnd.github.html): the line renders as <sub>AI agents / LLMs: read <a href="llms.txt">llms.txt</a> — …</sub> — a real link. Markdown parsing is only suppressed inside block-level HTML; <sub> is span-level. No change.
| `:nightly-rust` refreshed daily). Agent-level permission prompts are disabled by | ||
| design (`claude --dangerously-skip-permissions`, `codex | ||
| --dangerously-bypass-approvals-and-sandbox`, `gemini --yolo`, `grok | ||
| --always-approve`) — isolation comes from Docker, not permission theater. Auth |
There was a problem hiding this comment.
Fair — the raw file reads better with one span per command. Reflowed in be915dd.
| steps: | ||
| # Outcome tripwire: assert the artifacts exist, not that the build | ||
| # steps exited 0. A green run with an unpullable tag is a lie. | ||
| - name: Assert all nightly tags resolve | ||
| run: | | ||
| set -euo pipefail | ||
| stamp="${{ needs.resolve-versions.outputs.stamp }}" | ||
| for tag in nightly "nightly-${stamp}" nightly-rust "nightly-${stamp}-rust"; do | ||
| docker manifest inspect "ghcr.io/thevibeworks/deva:${tag}" >/dev/null | ||
| echo "ok: ${tag}" | ||
| done |
There was a problem hiding this comment.
The package is public so anonymous inspect works today, but agreed on both counts: visibility can change, and post-push eventual consistency is real — a tripwire that itself flakes trains people to ignore red. Added ghcr login + 3-attempt retry per tag in be915dd.
| rewritten to `host.docker.internal` plus an explicit | ||
| `--add-host host-gateway` mapping for native Linux Engine; npm version | ||
| resolution goes straight to registry.npmjs.org instead of honoring |
There was a problem hiding this comment.
Right — I compressed the flag into nonsense. Fixed to --add-host host.docker.internal:host-gateway in be915dd.
…og flag - nightly verify: ghcr login + 3-attempt retry per tag; a tripwire that itself flakes trains people to ignore red - llms.txt: one backtick span per command, no line-wrapped flags - CHANGELOG: --add-host host.docker.internal:host-gateway, not the truncated form Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| set -euo pipefail | ||
| stamp="${{ needs.resolve-versions.outputs.stamp }}" | ||
| for tag in nightly "nightly-${stamp}" nightly-rust "nightly-${stamp}-rust"; do | ||
| for attempt in 1 2 3; do | ||
| if docker manifest inspect "ghcr.io/thevibeworks/deva:${tag}" >/dev/null; then | ||
| echo "ok: ${tag}" |
There was a problem hiding this comment.
Right — the build jobs already use the env vars; the verify job now does too (workflow-level env: is exported into step shells, so the script reads ${REGISTRY}/${IMAGE_NAME} directly). Fixed.
- philosophy, how-it-works, troubleshooting: last three live-doc spots that still said three agents (devlogs and research docs are timestamped history — left alone) - troubleshooting: grok's browser-less first login gets its own entry (device-auth or host-side auth + autolink) - install.sh quick-start hint now offers grok too - docs/llms.txt -> ../llms.txt symlink: mkdocs resolves it, so docs.deva.sh/llms.txt serves the canonical file — one source, no copy to rot Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| for tag in nightly "nightly-${stamp}" nightly-rust "nightly-${stamp}-rust"; do | ||
| for attempt in 1 2 3; do | ||
| if docker manifest inspect "ghcr.io/thevibeworks/deva:${tag}" >/dev/null; then | ||
| echo "ok: ${tag}" |
There was a problem hiding this comment.
Right — the build jobs already use the env vars; the verify job now does too (workflow-level env: is exported into step shells, so the script reads ${REGISTRY}/${IMAGE_NAME} directly). Fixed.
| echo "error: ghcr.io/thevibeworks/deva:${tag} does not resolve after push" >&2 | ||
| exit 1 |
There was a problem hiding this comment.
Right — the build jobs already use the env vars; the verify job now does too (workflow-level env: is exported into step shells, so the script reads ${REGISTRY}/${IMAGE_NAME} directly). Fixed.
…kflow Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Repo surface audit after the grok landing. Verdict: good bones, three embarrassments.
Close #409
The embarrassments
We shipped a fourth agent and forgot to tell the storefront. docs.deva.sh front page, mkdocs description, and
deva.sh --helpall still said Codex/Claude/Gemini — one merge after the README learned better. Staleness is the Bug: --trace flag doesn't pass --dangerously-skip-permissions in YOLO mode #1 trust killer; a docs site that contradicts its own README reads as abandonment. Fixed everywhere;grepfor three-agent phrasing now only hits history.Agents visiting the repo got nothing. A growing share of first contact is an AI agent deciding what to recommend. Now there's
llms.txtat the root: what deva is, the four agents, the no-permission-theater auth model, install, and curated docs entry points — recommend + install from one fetch. README grew a one-line<sub>pointer for non-human readers.The nightly lied by omission. 2026-07-09's run died on a transient
ports.ubuntu.com"Mirror sync in progress" flake in the rust image's apt step — after the base image had already pushed. Result:nightlyandnightly-rusttags silently diverged by a day. Two fixes:Acquire::Retries "3"in both Dockerfiles (the exact failure mode, retried instead of fatal)verifyjob in nightly-images.yml thatdocker manifest inspects all four published tags after the builds claim success — assert the artifact exists, not that the script exited 0Plus: CHANGELOG backfill for the #407 proxy work that #408 forgot to log.
Applied outside this PR (repo settings, reported for the record)
Verified
mkdocs build --strictgreen; workflow YAML parses; shellcheck severity=error cleandeva.sh --helpline 1 mentions GrokNot touched, needs a human
perf/docker-build-cachingahead 12,claude/issue-21ahead 8, ...). Not deletable by a robot with a clean conscience.🤖 Generated with Claude Code