Repository navigation
docs(readme): bring the README level with the tree - #814
Merged
JSdotNet merged 1 commit intoSep 29, 2026
Merged
Conversation
The README said the project was "in setup mode", listed 52 of its 72 projects, never said how to build or test, and ran the AppHost with dotnet run. It now: - describes the current state in the devbook's and CLAUDE.md's words; - adds a Build and test section, which warns that dotnet test can report "Zero tests ran" and shows how to run the test executables; - starts the AppHost with aspire start --isolated, and names --isolated in the side-by-side worktree paragraph; - lists every csproj under src/ and tests/ in the project table. ReadmeTests keeps the table complete, so it cannot drift again. Build: 0 errors; 9463 tests passed, 0 failed. Refs #761 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 29, 2026
JSdotNet
marked this pull request as ready for review
September 29, 2026 10:13
JSdotNet
deleted the
schedule/issue-sweep/2026-09-28/761-readme-level-with-tree
branch
September 29, 2026 10:24
This was referenced Sep 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #761
What changed
I brought README.md level with the tree for issue #761 and added tests/Backlog.ArchitectureTests/ReadmeTests.cs so it cannot drift again. I wrote the test first. It went red for the stated reasons: the project table was missing exactly the 20 projects the issue lists, there was no Build and test section, the run command had no --isolated, and the README still said "setup mode". Then I changed the README:
(a) Current state now uses the wording from CLAUDE.md and arc42 chapter 01 (local-first, AI-first; desktop, mobile and IDE channels plus a thin cloud sync service; standalone with optional sync). It points to the MSIX and APK install sections and names only the domains that have a module under src/Modules/.
(b) A new Build and test section gives
dotnet build Backlog.slnanddotnet test Backlog.sln. It warns thatdotnet testcan report "Zero tests ran", says to check the assembly count and total, and gives a PowerShell loop that runs each built test executable by project name from its own folder.(c) Running locally now uses
aspire start --isolated --non-interactive --apphost src/Aspire/Backlog.Aspire.AppHost/Backlog.Aspire.AppHost.csproj, with notes that the exit code proves nothing and how to stop it. The side-by-side worktree paragraph names --isolated.(d) The project table now has all 20 missing rows (9 src, 11 tests), each with a one-line role taken from the project's code and csproj comments. Existing rows are kept, including src/App/Backlog.Ide.VsCode.
(e) The Sync paragraph no longer says the service holds data "only until the desktop picks it up". It now says what main does: it pairs devices and carries the task, session, annotation and capture/attachment replicas. It makes no new product claim, and the domain side is left to #762.
Evidence:
dotnet build Backlog.sln: 0 errors, 75 warnings. None of the warnings are in ReadmeTests.cs or the Backlog.ArchitectureTests project.node .devbook/_tools/devbook-meta/build.mjs --checkpasses, and tools/devbook/check-metadata.mjs reports 0 blocking.Could not be proved (belongs in the PR description): once this lands, ReadmeTests.The_project_table_lists_every_project_under_src_and_tests will fail for the open drafts that add projects until each adds its README row:
Merge those first, or have each rebase and add its row.
Files:
D:/iswp/761/README.md,D:/iswp/761/tests/Backlog.ArchitectureTests/ReadmeTests.csAcceptance criteria
dotnet build Backlog.slnand a test command. It says thatdotnet testcan report "Zero tests ran" and that readers should check the per-assembly count and total, or run the built test executables. — see coverage belowaspire start --isolated --non-interactive --apphost src/Aspire/Backlog.Aspire.AppHost/Backlog.Aspire.AppHost.csprojand no longer tells readers to usedotnet run --project src/Aspire/Backlog.Aspire.AppHost. The paragraph on running several worktrees side by side names--isolated. — see coverage belowsrc/App/Backlog.Ide.VsCode. — see coverage belowfoundryis on PATH") still pass. — see coverage belowdotnet build Backlog.slnreports 0 errors and no new warnings, and the Backlog.ArchitectureTests executable reports all tests passed. — see coverage belowVerification
Build:
dotnet build Backlog.slnreported Build succeeded, 0 Warning(s), 0 Error(s), in 4.8s. This was an incremental build. Repo memory warns that an incremental build can hide warnings, so no full rebuild was done to confirm "no new warnings". Backlog.ArchitectureTests.dll (08:12:47) is newer than ReadmeTests.cs (08:12:43), so the new test was compiled in.Targeted run of ReadmeTests + AspireAppModelTests: Total 27, Failed 0.
Full suite: 24 test executables, 9464 tests in total, 0 failed, 0 errors, 1 skipped (Backlog.EndToEndTests, Total 1, Skipped 1).
Sync.Api.UnitTests printed a logged OptionsValidationException for SyncTokenOptions.SigningKey, but its run reported 0 failures. It looks like an expected negative-path log. tests/Fixtures and tests/Shared have no executable, which is expected.
Acceptance criterion 5 (delete one README row, watch the test go red, restore it) was not done here, because this task was build/test only with no edits.
Review
No blocker or major findings.
Minor findings left open:
tests/Backlog.ArchitectureTests/ReadmeTests.cs:94: A second privateReadme()loader and a second home for README contracts. AspireAppModelTests.cs:474 already has an identicalReadme()and holds the README resource-table and Foundry assertions, so the README's text contracts are now split across two classes, each with its own copy of the loader.tests/Backlog.ArchitectureTests/ReadmeTests.cs:60:The_current_state_no_longer_says_setup_modeguards against one retired phrase and says nothing about behaviour. A future stale Current state section that uses any other wording ('in early setup', 'not yet usable') passes it, so it pins this one edit rather than the drift the class says it guards against.What could not be proved
src/Modules/Sync/Backlog.Modules.Sync) must appear in README.md, anywhere in the file rather than only inside the first table. Extra rows with no csproj are allowed.; Should the second table (desktop bounded contexts, README lines 162-171) also be complete? Assumed no: only the main project table is regenerated and tested.; How much of the Sync paragraph (lines 91-95) changes? Assumed the smallest change that stops contradicting main, now that Backlog.Modules.Sync, Sync.Abstractions and Infrastructure.Sync/Cosmos/BlobStorage exist, with no new domain claim. Domain-level wording is left to Add the Sync bounded context to the domain model #762.; What wording replaces Current state? Assumed it is drawn from .devbook/arc42/01-introduction-and-goals.md and CLAUDE.md's opening paragraph, not invented.; Which test instruction goes in the README? Assumed both:dotnet test Backlog.slnwith the zero-tests caveat, and the loop over the built test executables.; The worktree has 48 csproj under src/ (not 49 as the scope summary says) and 24 under tests/. The table has 73 rows: 72 csproj-backed plus the non-csproj Backlog.Ide.VsCode. The set of missing projects matched the issue's 20 exactly.; The table test reads only the table headed '| Project | Channel / role |' up to its first non-table line, so rows in the separate bounded-context table do not count. Folder paths are compared case-sensitively after normalizing to forward slashes.; I did not invoke delivery:flow-code myself. This subagent is a stage of the workflow that owns the flow, and the task says not to commit, push or open a PR.; The 75 build warnings were not compared against a clean baseline build of main (incremental builds can hide warnings). None of them come from Backlog.ArchitectureTests or the new file.; I dropped the old README sentence saying the AppHost uses the Aspire CLI bundle via dotnet run, because it described the dotnet run path. The new text says the Aspire CLI is needed, following .agents/skills/start.md.; The Current state wording counts Dev PC Management and Devbook as 'having a module', although their module folders hold only .Abstractions and .UI projects.Assumptions
src/Modules/Sync/Backlog.Modules.Sync) must appear in README.md, anywhere in the file rather than only inside the first table. Extra rows with no csproj are allowed.dotnet test Backlog.slnwith the zero-tests caveat, and the loop over the built test executables.An unattended run of
delivery-schedule:schedule-issue-sweep(delivery-schedule@1.10.0) opened this pull request as a draft. It verified the change with the unit suite only.🤖 Generated with Claude Code