1Requirement
「Owner search only works by last name — let people filter by city too」
- Today's search is last-name prefix only
OwnerRepository.findByLastNameStartingWith - Owner already has a
cityfieldOwner.city
Existing codebase × coding agent — before implementation
Before a coding agent changes an existing system, Forge finds the trade-offs the code cannot answer and has the people with authority decide them first. The agent receives only the approved implementation boundary.
For developers, tech leads, and the people who own the spec, maintaining existing systems with coding agents.
Spring PetClinic city search
Why it matters
In Forge's own baseline evaluation, three small change requests to the existing Spring PetClinic were each given to a coding agent as a single sentence, without Forge. It found the impact almost perfectly (one miss across all three). The problem was somewhere else.
What these numbers show — and don't
Real case
A small change to Spring PetClinic (pinned at 88e37c1). An ordinary requirement on an existing system.
1Requirement
「Owner search only works by last name — let people filter by city too」
OwnerRepository.findByLastNameStartingWithcity fieldOwner.city2What the coding agent actually did without Forge
F0 baseline record (C4). Start 88e37c1 → result a894c3c
findByLastNameStartingWithverified with gitThe implementation never got stuck. But along the way, 7 decisions were made that nobody had approved.
What the agent decided on its own
city1–6 were written up in its final report; 7 was not. Each may well be a reasonable choice — the problem is that people learned about them after the implementation.
3Before any code, Forge hands 3 of them back
Not everything becomes a question. Only decisions that change the behavior being approved are stopped before implementation.
City search doesn't exist yet. Nothing in the code says last-name prefix matching should apply to city.
The agent: chose prefixThere is no precedent in this codebase for combining two criteria.
The agent: chose ANDToday the error is attached to the last-name field. A two-criteria result can't be blamed on either field.
The agent: picked a placement itself4You decide
Not approved · awaiting a decision
The requirement doesn't say, and the code can't decide it. Someone with authority over the spec has to.
There is no right answer and no score. Choosing rebuilds the implementation proposal below.
For reference: without Forge, the agent chose prefix without asking anyone.
See how the proposal changedThe remaining points are already decided by a human in this demo (values from the public artifact)
notFound error5Implementation proposal
Decide the matching rule first.
What the coding agent receives
The agent does not re-infer the decisions written here, and does not change anything outside the boundary.
Evidence
Every Forge judgment is tied to a real location in the code at a pinned revision — not an LLM guess.
OwnerRepository.findByLastNameStartingWithOwnerController.processFindFormcity fieldOwner.cityowners/findOwners.htmlcity columndb/h2/schema.sql · owners.cityOwnerControllerTests
Artifacts for this case (curated, public)
Investigation project_context.json
Open issues before the decision gaps.json
Approved package implementation_package.json
Requirement
Pick an example question, or ask about this requirement.
Status
What's public: curated artifacts for three requirements, and Ask Forge to answer questions about them. It is not an implementation that analyzes arbitrary repositories.
Other validated requirementsSame-day visits (PetClinic) Restoring nested documents (Outline)
Carry decisions made in one change, and organizational rules that live outside the repo, into the next change — Context Core / Organization Context.