Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ Releases up to 2.63.0 are listed in
check-harness rules ([#2082])
- The git template drops its submodule, numbered-document and base64 rules
and the .vscode allowlist ([#2093])
- The backend-quality template is retired; its general rules move to the HTTP
template ([#2102])

### Added

Expand Down Expand Up @@ -206,6 +208,7 @@ Releases up to 2.63.0 are listed in
[#2099]: https://github.com/solid-ai-dev/solid-ai-templates/pull/2099
[#2100]: https://github.com/solid-ai-dev/solid-ai-templates/pull/2100
[#2101]: https://github.com/solid-ai-dev/solid-ai-templates/pull/2101
[#2102]: https://github.com/solid-ai-dev/solid-ai-templates/pull/2102

## [2.90.0] - 2026-09-12

Expand Down
10 changes: 5 additions & 5 deletions docs/architecture/05-building-block-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,13 @@ The core tier, as the manifest states it today:
- `templates/core/review.md`
- `templates/core/oop.md`

Measured: 11 `[DEPENDS ON]` tokens across 7 templates name one of these
files, and 7 manifest entries name a core id in `depends_on`. Declaring one
Measured: 9 `[DEPENDS ON]` tokens across 6 templates name one of these
files, and 6 manifest entries name a core id in `depends_on`. Declaring one
is redundant rather than forbidden — the seeding reaches the file either
way, and the directive documents a dependency a reader would otherwise
infer. Reached by the seeding alone: `base-review`. A chain assembled by
walking the directives does not reach that set and reports nothing about it,
because nothing declares what is absent.
infer. Reached by the seeding alone: `base-review`, `base-oop`. A chain
assembled by walking the directives does not reach that set and reports
nothing about it, because nothing declares what is absent.
<!-- /generated:spec-core-tier -->

Every top-level list of entries except `core` and `fork_core` is a section
Expand Down
3 changes: 3 additions & 0 deletions docs/migrating-to-v3.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ receives nothing (ADR-051).
| Kubernetes: namespaces, two replicas per service, probes, PodDisruptionBudget, ConfigMap secrets | `base-containers` | removed; resources as code and the readiness gate remain, orchestrator-neutral |
| Exact names: plural snake_case tables, `is_` booleans, `<table>_id` keys, alphabetical junctions, `ix_` and `ux_` indexes | `base-data-modeling` | one convention per store, recorded in the context file; relational rules say so |
| Per-target product choices: managed CAs, `step-ca`, F5 and MetalLB, Route 53 and Consul, Harbor and Athens, Vault topologies | `base-deployment` | removed; each section keeps its ID and the rules that hold on any target |
| `backend-quality`: the handler, service and repository layering and its pattern catalogue | `backend-quality` | removed with the template; declare a stack's own architecture in a fork |
| `backend-quality`: process lifecycle, admin processes, outbound timeouts, auth before logic, rate limits | `backend-quality` | `backend-http` |
| `backend-quality`: N+1, async I/O, API deprecation, circuit breaker, outbox | `backend-quality` | already in `backend-database`, `backend-concurrency`, `backend-api`, `backend-errors`, `backend-messaging` |
| The numbered-document check after concurrent merges, the first-CI-run rule for a check on its own change | `base-git` | this repository's playbook; the `check-heading-numbers` hook still ships |
| The submodule update after a pin bump, the base64 bundle mask, the `.vscode` allowlist | `base-git` | removed; a neutral editor-settings rule remains |
| Factory classmethods; `*-overlay.png` naming | `base-oop`, `base-measurement` | neutral rules remain |
Expand Down
21 changes: 21 additions & 0 deletions templates/backend/http.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,29 @@
- Use a well-known default in development, and the port the platform
assigns in production

## Process lifecycle
- Start fast — keep initialisation short (MUST)
- Shut down gracefully on `SIGTERM`: finish in-flight work, release
resources, then exit (MUST)
- Force-exit when a graceful shutdown passes its deadline
- Recover cleanly when a process is killed without warning (`SIGKILL`,
power loss) (MUST)
- Keep no state in the process; use external stores, so any instance can
be replaced

## Admin processes
- Run one-off tasks (migrations, data fixes, REPL sessions) with the
application's code, config and dependencies (MUST)
- Commit admin scripts to the repository; never run them as ad-hoc shell
commands (MUST)
- Prefer idempotent scripts — safe to re-run
- Never run an admin task against production without a tested rollback plan

## Handler design
- Handlers are thin: decode request → call service → encode response
- No business logic in handlers — delegate to a service layer
- Validate all incoming request data before processing
- Set a timeout on every outbound call (HTTP clients, database queries)

## URI design
- Path segments MUST be lowercase with hyphens as word separators —
Expand Down Expand Up @@ -105,3 +124,5 @@
authorisation
- Internal API endpoints SHOULD require authentication at minimum
- Write endpoints MUST NOT be accessible without a valid authenticated identity
- Apply authentication and authorisation before any business logic runs
- Rate-limit public endpoints — never expose an unbounded write operation
77 changes: 0 additions & 77 deletions templates/backend/quality.md

This file was deleted.

4 changes: 0 additions & 4 deletions templates/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,6 @@ backend:
file: templates/backend/monitoring.md
description: Key metrics, thresholds, alerts, dashboards, incidents
depends_on: [backend-observability]
- id: backend-quality
file: templates/backend/quality.md
description: Layered architecture, security, performance, API stability
depends_on: [base-quality, base-oop, base-security, base-containers]
stacks:
- id: stack-fixture
file: templates/fixture/stack.md
Expand Down
3 changes: 1 addition & 2 deletions tests/baselines/template-quality.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,12 @@ templates/backend/edge.md 89.7
templates/backend/errors.md 91.7
templates/backend/features.md 92.2
templates/backend/grpc.md 96.1
templates/backend/http.md 96.4
templates/backend/http.md 97.8
templates/backend/jobs.md 97.2
templates/backend/messaging.md 96.8
templates/backend/microservices.md 93.5
templates/backend/monitoring.md 98.5
templates/backend/observability.md 96.6
templates/backend/quality.md 98.3
templates/backend/webhooks.md 86.9
templates/core/agents.md 100.0
templates/core/config.md 99.3
Expand Down
Loading