Skip to content

docs(agents): add an architecture map of the non-guessable facts - #14134

Open
ndeloof wants to merge 1 commit into
docker:mainfrom
ndeloof:a6-agents-architecture-map
Open

ndeloof wants to merge 1 commit into
docker:mainfrom
ndeloof:a6-agents-architecture-map

Conversation

@ndeloof

@ndeloof ndeloof commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

AGENTS.md gains a ~35-line architecture map of the facts local reading cannot reveal: the two lifecycle engines and who calls which, the Run()/events convention distinguishing exported operations from internal helpers, the stdout/stderr split, env-resolution idioms, the config-hash membership invariant, and Docker Desktop integration points.

Note: references service_containers.go, so best merged after #14129.

Epic #14074, section A — split out of #14075 for focused review.

🤖 Generated with Claude Code

@docker-agent docker-agent left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 No issues found — LGTM! View logs.

@glours glours left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@glours
glours enabled auto-merge (rebase) August 27, 2026 09:08
@glours
glours disabled auto-merge August 27, 2026 09:13

@glours glours left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed this one during my first review

Comment thread AGENTS.md Outdated
@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

AGENTS.md covered build/test/lint mechanics but nothing about how the
codebase is organized, so a reader's first mental model comes from file
names and local comments — several of which used to be misleading (see
the previous commits in this series).

The new section states, in ~35 lines, the facts a contributor cannot
derive from local reading: the two coexisting lifecycle engines and
which commands use which (including that the plan never starts
containers), the Run()/EventProcessor operation convention, the
stdout/stderr split, the two environment-resolution idioms and the
setEnvWithDotEnv timing, the config-hash label as the actual project
membership invariant, and the Docker Desktop integration points that
must fail silently.

Part of docker#14074 (A: the code misdescribes its own structure).

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
@ndeloof
ndeloof force-pushed the a6-agents-architecture-map branch from d2d17f9 to db3ff2f Compare October 8, 2026 09:35
@ndeloof
ndeloof requested review from docker-agent and glours October 8, 2026 09:35

@docker-agent docker-agent left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assessment: 🟢 APPROVE

Comment thread AGENTS.md
backend implementation (`NewComposeService`). Everything else under `pkg/`
is exported for historical reasons, not as a stability promise.
- **Two lifecycle engines coexist.** The plan-based reconciler
(`pkg/compose/reconcile.go`) has a single entry point: `create()` — so only

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[low] Parenthetical points to reconcile.go but create() lives in create.go

The text reads:

The plan-based reconciler (pkg/compose/reconcile.go) has a single entry point: create()

The parenthetical (pkg/compose/reconcile.go) is most naturally read as the file where create() is defined — but composeService.create() is in pkg/compose/create.go, not in reconcile.go. The package-level reconciler function actually in reconcile.go is named reconcile().

A suggested rewording to avoid the confusion:

Suggested change
(`pkg/compose/reconcile.go`) has a single entry point: `create()` — so only
- **Two lifecycle engines coexist.** The plan-based reconciler (`pkg/compose/reconcile.go`, called via `composeService.create()` in `create.go`) has a single entry point: `create()` — so only
Confidence Score
🟡 moderate 67/100

This branch has not been deployed

No deployments
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.

3 participants