Skip to content

Commit 2387eca

Browse files
committed
docs(slice-65): dogfood readme quickstart
1 parent 5c8d2fb commit 2387eca

8 files changed

Lines changed: 109 additions & 2 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Inside a repository:
4545

4646
```bash
4747
codealmanac init
48-
codealmanac search "auth"
48+
codealmanac search "getting"
4949
codealmanac show getting-started
5050
codealmanac serve
5151
```

docs/python-port/idea-evolution.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,3 +1535,29 @@ Follow-up test:
15351535
Keep public-contract tests close to user-facing claims, not only forbidden
15361536
words. When a README section describes command effects, add a guard for the
15371537
actual file or command contract.
1538+
1539+
## 2026-06-30 - Quickstarts Are Executable Use Cases
1540+
1541+
Old hypothesis:
1542+
After the README scaffold tree was fixed, remaining public-doc work was likely
1543+
only wording polish.
1544+
1545+
New hypothesis:
1546+
Treat quickstarts as runnable use cases. A public README command sequence is
1547+
wrong if it exits successfully but teaches a new user an empty first result.
1548+
1549+
Evidence that forced the change:
1550+
A temp repo initialized with `codealmanac init` returned `# 0 results` for the
1551+
README's `codealmanac search "auth"` command. The same starter wiki returned
1552+
`getting-started` for `codealmanac search "getting"` and rendered
1553+
`# Getting Started` through `codealmanac show getting-started --lead`.
1554+
1555+
Code or product assumption affected:
1556+
The README quickstart now uses a search term that matches the starter wiki.
1557+
Public-contract tests guard the quickstart section directly instead of only
1558+
checking that the README mentions `codealmanac search`.
1559+
1560+
Follow-up test:
1561+
For future public examples, distinguish runnable quickstart commands from
1562+
illustrative daily-use commands. Runnable examples should be dogfooded in a
1563+
fresh temp repo.

docs/python-port/next-agent-brief.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,9 @@ Behavior:
561561
recreate a deleted configured root
562562
- Slice 64 README scaffold accuracy, public-contract guard for init-created
563563
source files versus derived runtime state, and live temp `init` tree dogfood
564+
- Slice 65 README quickstart dogfood, public-contract guard for the starter
565+
search term, and live temp proof that `search "getting"` returns
566+
`getting-started` after init
564567

565568
## Next Move
566569

docs/python-port/public-release-readiness.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ unless a gate below exposes a boundary problem.
8484
dogfood showed it mixed initialized wiki source files with later runtime
8585
state. The README now separates init-created source files from derived
8686
`index.db`/`jobs/` state, and public-contract tests guard the distinction.
87+
- Slice 65 dogfooded the README quickstart in a fresh temp repo. The old
88+
`search "auth"` example returned zero results after `init`; the quickstart
89+
now searches `getting`, which returns the starter `getting-started` page.
8790

8891
## Next Useful Pressure Tests
8992

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Slice 65 - README Quickstart Dogfood
2+
3+
Date: 2026-06-30
4+
5+
## Scope
6+
7+
Make the README quickstart executable against a fresh starter wiki.
8+
9+
## Finding
10+
11+
The README quickstart ran:
12+
13+
```bash
14+
codealmanac init
15+
codealmanac search "auth"
16+
codealmanac show getting-started
17+
codealmanac serve
18+
```
19+
20+
Live temp-repo dogfood showed that `search "auth"` returns `# 0 results`
21+
immediately after `init`, because the starter wiki only contains
22+
`getting-started`.
23+
24+
## Decision
25+
26+
The quickstart now uses:
27+
28+
```bash
29+
codealmanac search "getting"
30+
```
31+
32+
This makes the first search command return `getting-started` in the initialized
33+
starter wiki. The later daily-use examples can still use domain-like queries
34+
such as `auth` or `checkout timeout` because those are illustrative examples
35+
after a wiki has real pages.
36+
37+
## Guard
38+
39+
`tests/test_public_contract.py` now checks that the README quickstart uses
40+
`search "getting"` and does not use `search "auth"`.
41+
42+
## Cosmic Python Note
43+
44+
Chapter 4's Service Layer chapter stresses testing use cases at the service
45+
boundary instead of trusting lower-level pieces in isolation. This slice treats
46+
the README quickstart as a public use case: fresh init, search, show. The
47+
correct proof is the end-to-end command path returning the starter page.

docs/python-port/verification-matrix.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,3 +803,15 @@ means the goal remains active.
803803
| Full tests | `uv run pytest` | 243 passed |
804804
| Full lint | `uv run ruff check .` | passed |
805805
| Diff hygiene | `git diff --check` | passed |
806+
807+
## Gates For Slice 65 README Quickstart Dogfood
808+
809+
| Gate | Command | 2026-06-30 result |
810+
|---|---|---|
811+
| Quickstart mismatch repro | isolated temp `HOME`; temp repo; `codealmanac init`; `codealmanac search "auth"`; `codealmanac search "getting"`; `codealmanac show getting-started --lead` | passed; `search "auth"` returned `# 0 results`, while `search "getting"` returned `getting-started` and `show --lead` rendered `# Getting Started` |
812+
| Public contract tests | `uv run pytest tests/test_public_contract.py -q` | 18 passed; quickstart section now guards `search "getting"` and rejects `search "auth"` |
813+
| Fixed quickstart dogfood | isolated temp `HOME`; temp repo; `codealmanac init`; `codealmanac search "getting"`; `codealmanac show getting-started --lead` | passed; search returned `getting-started` and show rendered `# Getting Started` |
814+
| Cosmic note relay | `doppler run --project almanac --config dev -- relayforge reply --config ../relayforge/relay.config.json --binding rohan-almanac-main ...` | passed; sent the Chapter 4 Service Layer note and how it maps to README quickstart as a public use case |
815+
| Full tests | `uv run pytest` | 244 passed |
816+
| Full lint | `uv run ruff check .` | passed |
817+
| Diff hygiene | `git diff --check` | passed |

docs/python-port/worklog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,12 @@ A live temp-repo `codealmanac init` created `.gitignore`, `README.md`,
733733
`config.toml`, `jobs/`, or `index.db`. The README now separates
734734
`What Gets Created By Init` from `Runtime State`, and public-contract tests
735735
guard that the init section stays source-only.
736+
Slice 65 dogfoods the README quickstart itself. A fresh temp repo proved that
737+
`codealmanac search "auth"` returns zero results immediately after `init`,
738+
because the starter wiki contains `getting-started`, not an auth page. The
739+
quickstart now uses `codealmanac search "getting"` so a new user sees the
740+
starter page on the first search. Public-contract tests guard the quickstart
741+
section against drifting back to a non-starter search term.
736742

737743
## Next Hypothesis
738744

tests/test_public_contract.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"Python 3.12+",
2828
"uv tool install codealmanac",
2929
"codealmanac init",
30-
"codealmanac search",
30+
'codealmanac search "getting"',
3131
"codealmanac serve",
3232
"## What Gets Created By Init",
3333
"Derived local state appears when commands need it:",
@@ -118,6 +118,16 @@ def test_readme_keeps_init_scaffold_separate_from_runtime_state():
118118
assert "config.toml" not in init_section
119119

120120

121+
def test_readme_quickstart_uses_search_that_works_after_init():
122+
readme = (PROJECT_ROOT / "README.md").read_text(encoding="utf-8")
123+
124+
quickstart = readme_section(readme, "## Quickstart")
125+
126+
assert 'codealmanac search "getting"' in quickstart
127+
assert 'codealmanac show getting-started' in quickstart
128+
assert 'codealmanac search "auth"' not in quickstart
129+
130+
121131
def test_release_guide_documents_python_package_release_surface():
122132
release_guide = (PROJECT_ROOT / "RELEASE.md").read_text(encoding="utf-8")
123133

0 commit comments

Comments
 (0)