--- phase: 11.1-summercms-documentation-for-humans-and-ai-agents plan: 01 type: execute wave: 1 depends_on: [] files_modified: - internal/docsite/docsite.go - internal/docsite/load.go - internal/docsite/render.go - internal/docsite/emit.go - internal/docsite/snippet.go - internal/docsite/docsite_test.go - internal/docsite/theme/templates/page.html - internal/docsite/theme/assets/site.css - cmd/summer/docs.go - cmd/summer/docs_test.go - cmd/summer/main.go - cmd/summer/main_test.go - modules/bonfire/example_test.go - docs/site.yaml - docs/index.md - docs/setup/installation.md - .gitignore - README.md autonomous: true requirements: [DOCS-01, DOCS-02, DOCS-03, DOCS-04] assumption_delta_decision: no-change user_setup: [] estimate: tokens: 95000 raw_tokens: 95000 tasks: 3 confidence: low must_haves: truths: - "Per D-01, every page under docs/ is Markdown that starts with YAML frontmatter (title, description, section, order) followed by a first body line `#
` with the escaped body; fences without `src=` get the same figure without a caption.
5. `Sync(opts)`: rewrite each drifted fence body in place under `Src`, preserving everything else byte for byte; report `docs:sync: updated {n} snippets in {m} files` or `docs:sync: all snippets up to date`. Add `docsSyncCommand()` named `docs:sync` (description "Rewrite src= code blocks from their sources", flags `root`, `src`) in `cmd/summer/docs.go`, register it in `toolCommands()`, and add it to the `TestToolCommandNames` want list.
6. `modules/bonfire/example_test.go` (package `bonfire_test`): `ExampleCall` defines one `bonfire.Command` named `acme:greet` with an `Arg` named `name` whose Run prints `Hello, ` through `out.Printf`, calls `bonfire.Call(context.Background(), cmds, "acme:greet", []string{"blog"}, os.Stdout)`, and ends with `// Output: Hello, blog`. go vet checks the Example name against `bonfire.Call`.
7. `docs/setup/installation.md`: add a "Check your install" section with a `go src=modules/bonfire/example_test.go#ExampleCall` fence whose body is produced by running `go run ./cmd/summer docs:sync` (never hand-typed), explaining that console commands are plain `bonfire.Command` values.
8. Root `README.md`: add a `docs/` row to the "Repository layout" table ("Documentation source; `summer docs:build` renders it into a static site.") and a `summer docs:build` / `summer docs:sync` line in "Development". Use neutral names only.
9. Smoke tests in `internal/docsite/docsite_test.go`: `TestSnippetForms` (whole file, `#Ident`, Example body with Output, `#region`) and `TestSnippetConfinement` (absolute path, `../x`, `.env`, a path inside a nested-go.mod dir, a symlink escaping the root, an Example without Output, and a region inside a `_test.go` helper that no Test or Example calls each yield a `snippet:` problem) over `t.TempDir()` fixtures; `TestSyncRewritesDrift` (a drifted fixture fence is rewritten and a second Sync reports up to date).
Stage only this task's files.