Skip to content

docs: sync per-project-config.md with shipped single-blob implementation#200

Open
neversettle17-101 wants to merge 2 commits into
mainfrom
feat/issue-199
Open

docs: sync per-project-config.md with shipped single-blob implementation#200
neversettle17-101 wants to merge 2 commits into
mainfrom
feat/issue-199

Conversation

@neversettle17-101

Copy link
Copy Markdown
Collaborator

Summary

Closes #199. Docs-only: docs/design/per-project-config.md had drifted from the shipped implementation. The status header already described reality (single projects.config JSON blob, single PUT /projects/{id}/config, ao project set-config), but the Storage strategy, Surface, Sequencing sections and the Field catalog table still described the originally proposed per-field columns / child tables / per-group routes.

Changes (docs only, no code touched)

  • Field catalog table — retargeted the Storage today / Target columns to Home / Status, mapping each shipped field to its key in the config JSON blob and marking unmodeled fields (rules, tracker, scm, opencode strategy, reactions) as not modeled.
  • Storage strategy — rewritten to describe the single nullable projects.config TEXT column (migration 0008_add_project_config.sql). The per-column / project_env child-table plan is flagged as superseded, citing the migration comment.
  • Surface — rewritten to the single PUT /projects/{id}/config route (config also accepted on POST /projects) and the actual ao project set-config flags. Corrected the CLI: there is no ao project env set subcommand — env is --env KEY=VALUE on set-config.
  • Sequencing — split into shipped slices (all landed in the single blob, no separate column/table migrations) vs. remaining future slices that add typed fields without a schema migration.
  • Preserved as still-accurate: the Typed model code block (verified against backend/internal/domain/projectconfig.go), the "typed over map" principle, and the Field catalog left columns.

Audit grounding

  • backend/internal/domain/projectconfig.go — typed ProjectConfig, one JSON blob per project.
  • backend/internal/storage/sqlite/migrations/0008_add_project_config.sql — single config TEXT column.
  • backend/internal/httpd/controllers/projects.goPUT /projects/{id}/config.
  • backend/internal/cli/project.goset-config flags.

Note for follow-up

No code/doc intent disagreements found that warrant a code change — the implementation is self-consistent; only the doc prose lagged.

🤖 Generated with Claude Code

neversettle17-101 and others added 2 commits June 12, 2026 17:55
Rewrite the Storage strategy, Surface, Sequencing sections and the Field
catalog table so they match what shipped: the whole ProjectConfig is one
projects.config JSON blob, set via a single PUT /projects/{id}/config and
ao project set-config. The originally proposed per-field columns, env
project_env child table, and per-group routes (PUT .../agent-config, .../env)
are marked superseded/future. Correct the CLI surface (no ao project env set;
env is --env KEY=VALUE on set-config). Typed model block and the typed-over-map
principle preserved.

Closes #199

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@greptile-apps greptile-apps Bot 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.

neversettle17-101 has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@codebanditssss codebanditssss requested a review from yyovil June 12, 2026 21:06
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.

docs: per-project-config.md is out of sync with the shipped implementation

1 participant