Skip to content

docs: describe the API surface the README actually reaches - #217

Merged
dmccoystephenson merged 2 commits into
mainfrom
feature/readme-feature-list-accuracy
Sep 10, 2026
Merged

docs: describe the API surface the README actually reaches#217
dmccoystephenson merged 2 commits into
mainfrom
feature/readme-feature-list-accuracy

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

  • The "📦 Features (MVP Scope)" bullets are rewritten so each one describes the capability set
    actually reachable through the controllers. Renaming (entities, grids, environments), the
    unassigned-entity query, the unoccupied-locations-in-a-grid query, neighbor lookup, occupancy
    reporting, entity listing at a location, and the adjacency-checked move were all absent.
  • The Environment bullet's "update (including renaming)" is narrowed to "rename": renaming is the
    only update the environment surface offers, so the broader wording promised more than exists.
  • The "📂 Project Structure" listing now names PLANNING.md, REBUILD_PLAN.md, and diagrams/
    alongside MVP.md and openapi/, with each described from what the file/directory holds
    (diagrams/ holds a draw.io class-usage diagram and its rendered PNG, not Mermaid sources).

Every claim was checked against src/main/java/preponderous/viron/controllers/*.java rather than
against docs/MVP.md, as the issue's acceptance criteria ask. The two documents agree: all 36
routes are present in both.

Test plan

  • No source, test, or configuration file is touched — the diff is README.md only.
  • Each rewritten bullet traced to its handler method: updateEntityName, updateGridName,
    updateEnvironmentName, getEntitiesNotInAnyLocation, getUnoccupiedLocationsInGrid,
    getNeighbors, isLocationOccupied, getEntityIdsAtLocation, addEntityToLocation,
    moveEntityToLocation, removeEntityFromLocation, removeEntityFromCurrentLocation.
  • The docs/ listing verified against the directory as it stands on main.
  • CI (Java build/tests plus the Python client suite) green on the head commit.

Issues left for a later cycle

The rest of the open backlog was not picked up, for reasons recorded here rather than as comments
on each issue:

Closes #215

This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).


drafted by Claude on behalf of Daniel Stephenson

dmccoystephenson and others added 2 commits September 10, 2026 01:51
The feature list omitted renaming, the unassigned-entity and unoccupied-location
queries, neighbor lookup, occupancy reporting, and the move endpoint. The project
structure listing named only two of the five things under docs/.

Closes #215

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dmccoystephenson

Copy link
Copy Markdown
Member Author

Self-review rubric

  • Scope: PASSgit diff --name-only origin/main...HEAD returns README.md alone; the diff is
    13 added and 3 removed lines, all inside the two sections The README's feature list understates the implemented API surface #215 names.
  • Tests-new: not applicable — no public method or function is added by this PR.
  • Tests-fix: not applicableThe README's feature list understates the implemented API surface #215 is a documentation defect, not a behavioral one; no
    production code path changes, so there is nothing a stash-and-run could make fail.
  • Sibling structure: PASS — the three added lines in the project-structure listing reuse the
    │ ├── prefix, the comment column, and the two trailing spaces (Markdown hard break) of the
    MVP.md line above them; verified with a trailing-whitespace grep rather than by eye.
  • Sibling renames: not applicable — no identifier is renamed.
  • Docs: PASSdocs/MVP.md and docs/openapi/viron-api.json already carried the full 36-route
    surface, so this PR moves the third document onto them rather than the reverse; tickets.md,
    docs/PLANNING.md, docs/REBUILD_PLAN.md, and the Postman collection describe endpoints and
    process, none of which this diff touches.
  • Issue resolution: PASS — both acceptance criteria are met. Each bullet was traced to a handler
    in src/main/java/preponderous/viron/controllers/, and the docs/ entry now names all five
    things the directory holds.
  • CI: PASSbuild, python-client (3.8), and python-client (3.12) all green on head
    e2a8f9f (run 34452272169).
  • DTO boundary: not applicable — no controller is touched.
  • Spec alignment: PASS — no endpoint is added or changed; the README was checked against the
    controllers rather than against the spec, and the two were found to agree.
  • Java/Python parallelism: not applicable — no model or service behavior changes.
  • Override correctness: not applicable — no @Override is added.

Findings folded in from the diff read

  • README.md:64-66 — the three location bullets were first written in a conversational voice
    ("Ask which entities a location holds") that no other bullet in the section uses. Fixed in
    e2a8f9f to the imperative "Retrieve / report / find" the surrounding bullets share.
  • README.md:53 — the Environment bullet's original "update (including renaming)" was narrowed to
    "rename", against the issue's own statement that this bullet needed no change. updateEnvironmentName
    is the only update the environment surface offers, so the broader phrasing promised a general
    update capability that does not exist. Where the issue and the source disagreed, the source was
    taken as authoritative.
  • Not fixed here, worth noting for a later cycle: README.md:159 tells a reader to
    pip install -r requirements.txt and run pytest against a client imported through the
    repository path (src.main.python.preponderous.viron...). That wording is accurate today but is
    exactly what The Python client cannot be installed or imported as a package; its modules import through the repository path #209 proposes to change, so it will need revisiting when the client becomes an
    installable package.

Anchor scope

CI's Java build job does not execute anything this PR changes, and neither do the two
python-client jobs — a documentation-only diff has no automated coverage by construction. The
green run establishes only that nothing was broken. The verification that matters here is the
manual trace of each bullet to its handler method, recorded in the PR body.

This review was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).


drafted by Claude on behalf of Daniel Stephenson

@dmccoystephenson
dmccoystephenson merged commit 85cac4d into main Sep 10, 2026
3 checks passed
@dmccoystephenson
dmccoystephenson deleted the feature/readme-feature-list-accuracy branch September 10, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The README's feature list understates the implemented API surface

1 participant