Conversation
… rejected alternatives
|
Restructures docs by pulling context entries and decisions into their own dedicated pages, reframing decisions around rejected alternatives (the "nos"), and slimming protocol.md down to an implementor-focused spec. The nav and cross-links are updated throughout. Good motivation — the old split across protocol + examples made decisions hard to learn. Critical: leaked sctx hook output in four doc pagesAll four doc files in this PR end with a
## Structured Context
- This is a Go project. Follow idiomatic Go conventions...
- The core engine (internal/core) must have zero knowledge...
- Both AGENTS.yaml and AGENTS.yml are recognized...Same thing in:
The protocol.md one is especially bad because it looks like it could be part of the spec. Fix: Delete the Warning: README asymmetry between context entries and decisionsThe Decisions subsection in README.md (line 79) got the full "nos" reframe with an expanded YAML example showing Fix: Even just a closing line like Note: protocol.md summary tables lost their Description columnThe summary tables for context entry fields (lines 56-64) and decision entry fields (lines 68-75) now show field name, type, required, and default — but no description. The old protocol.md had descriptions inline. Implementors building tools against this spec now have to click through to concept pages to learn what Fix: Add a short Description column back. Even terse labels like "Action filter" and "Prompt positioning" would keep the spec self-contained for its audience. The restructure and the "nos" reframing are well done. The leaked Developer metricsTotal duration: 2m 34s
|
|
Restructures docs so context entries and decisions each get their own page, reframes decisions around capturing rejected alternatives ("the nos") rather than restating what the code already shows, and slims protocol.md down to the implementor-facing spec. Good restructure. The "nos" framing is a real improvement — it's the right way to think about what decisions are for. A few things I noticed: Warnings
The context entries section links out to
The REST-over-GraphQL YAML example appears in both README and Notes
The old version linked to the protocol spec here. Now it's gone. Someone arriving from getting-started who's building a tool (not writing AGENTS.yaml) loses the direct path. Maybe add it back as a last bullet: - [Protocol spec](protocol.md) -- file format and resolution algorithm for tool implementors
The text says "See Context entries for the full context entry schema" but those pages are conceptual guides with writing advice, not schema references. Something like "field details and writing guidance" would be more accurate. Nothing blocking here. The two warnings are worth a quick fix before merge. Developer metricsTotal duration: 2m 7s
|
|
Adds dedicated concept pages for context entries and decisions, restructures the nav to feature them, and reframes decisions around capturing rejected alternatives ("the nos") rather than restating what the code already shows. Docs-only, no code changes. Overall this is a well-motivated restructure — the "nos" framing is a genuinely better way to think about decisions, and giving each concept its own page makes the docs easier to navigate. A few things worth looking at:
|
| Stage | Model | Duration | Turns | Tool calls | Tokens (in/out) | Cache read | Cache creation |
|---|---|---|---|---|---|---|---|
| analyze | claude-opus-4-6 | 1m 52s | 30 | 26 | 146,530 / 2,591 | 111,382 | 35,139 |
| review_findings | claude-opus-4-6 | 1m 4s | 3 | 2 | 139,246 / 2,433 | 99,725 | 39,515 |
| draft | claude-opus-4-6 | 0m 27s | 1 | 1 | 99,953 / 666 | 58,274 | 41,676 |
What this changes
Context entries and decisions are the two core concepts of the product, but neither had its own page. Their docs were split across
protocol.md(a spec aimed at implementors) andexamples.md(a cookbook). If you wanted to understand decisions, you'd read part of the protocol spec for the schema, scroll through examples for the patterns, and mentally stitch them together.Now they each get a dedicated page. The nav goes from:
Home -> Getting started -> Protocol -> Examples -> ...
to:
Home -> Getting started -> Context entries -> Decisions -> Examples -> Protocol -> ...
Why: the "nos" framing for decisions
The bigger motivation here is a reframe of what decisions are for.
The old docs framed decisions as "capture what you chose and why." That's fine, but the code already shows what you chose. If you picked Postgres, the agent can see
psycopg2in requirements and SQL migrations on disk. A YAML entry restating that adds almost nothing.What the code can't show is what you rejected. You evaluated DynamoDB and walked away because of single-table design complexity? That's invisible. It lives in people's heads and old Slack threads.
Decisions should primarily capture the "nos": the rejected alternatives, the specific constraints behind each rejection, and the conditions under which those constraints might change. This is the most valuable information for agents because the most expensive agent mistake is confidently proposing a migration to something you already evaluated and ruled out. That wastes review cycles and reopens settled debates.
The
alternatives,reason_rejected, andrevisit_whenfields already existed in the schema. The docs just didn't frame them as the primary reason decisions exist. Now they do.Alternatives considered for the restructure
Keep the current two-page split (protocol + examples), just update the framing. We tried this first. It worked for the reframe itself, but the decisions content ended up scattered: schema in protocol.md, the "nos" explanation in protocol.md, writing guidance in examples.md. A user learning about decisions would bounce between two pages. The framing change made the structural problem more obvious, not less.
Merge everything into protocol.md. Would make protocol.md huge and contradicts its stated purpose ("written for implementors building tools"). Most people writing
AGENTS.yamlfiles aren't building tools. They shouldn't have to read a resolution algorithm spec to learn howmatchpatterns work.Create concept pages but remove the examples page. The examples page shows complete
AGENTS.yamlfiles with context and decisions working together in real project setups (dbt, API, React, Terraform, monorepo). Splitting those examples across two concept pages would lose the "full picture" quality. The examples page earns its existence by showing complete files organized by project type.Create a single "Writing AGENTS.yaml" page covering both concepts. This was tempting. But decisions need room. The "nos" framing, the weak-vs-strong comparison, the
revisit_whenexplanation of constraint expiration. Cramming that into a shared page with context entry docs would bury it. The whole point of this change is that decisions deserve more prominence, not less.We landed on: two concept pages, examples stays as the cookbook, protocol slims down to the implementor-facing spec (file discovery, resolution algorithm, merge order, validation rules).