Phase 7: serve the vet sample from the template tools and docs

- build.py: _TEMPLATE_COMPONENTS rewritten around the vet sample (53 kinds —
  per-resource slices, jobs, worked appointment_reminder family, tests);
  seed tokens dropped from the manifest ('sample: vet' instead)
- registry.py: get_app_component(kind) no longer renames item/example seeds;
  prompts and tool docs updated to 'copy a slice and adapt'
- templates/README.md, 01_build_recipe, 40_ui_admin, wiki/03 updated off the
  old seed scheme; repo inventory/config now exclude vet (docs move under
  standards; react/vet itself is deleted in a later phase)
- regenerated MCP bundle, vendored templates, and site output
This commit is contained in:
2026-10-20 14:58:17 +05:30
parent 56aa1322fb
commit 0cb35d10a6
107 changed files with 3292 additions and 937 deletions

View File

@@ -69,8 +69,7 @@ Then:
- call `find_library` with `db`, `di`, `routing`, `ingestion`, `pipeline`, `docs`
and note the Tier A libraries that already exist — never reimplement one;
- call `list_app_components()` and pull each file you need with
`get_app_component(kind, resource=..., family=...)` instead of writing it from
scratch.
`get_app_component(kind)` instead of writing it from scratch.
## Steps
@@ -117,10 +116,11 @@ Then:
with its lifespan. If the app has long-running jobs, adapt `worker.py` to poll
the job collection, run the pipeline, and publish progress.
8. **Add pipeline families (only if data-driven)** — copy `pipelines/example/`
to `pipelines/<family>/` with `abc.py`, `impl.py`, `pipeline.yaml`,
`resources/`, and reuse `pipelines/shared/` (loader + registry). Register the
root. Add fixtures and a parity test.
8. **Add pipeline families (only if data-driven)** — copy the worked family
`pipelines/appointment_reminder/` to `pipelines/<family>/` with `abc.py`,
`impl.py`, `pipeline.yaml`, `resources/`, and reuse `pipelines/shared/`
(loader + registry). Register the root, add the `job.kind` handler in
`worker.py`. Add fixtures and a parity test.
9. **Add infrastructure only where needed** — Tier A capability: use the
library. Tier B capability: copy the template. Never hand-write a Tier A

View File

@@ -57,7 +57,7 @@ docs://modules/react-openapi # module: specExtensions — the full catalo
The app's own spec carries the per-resource values; the catalog explains what
each field does. The template's `openapi.yaml` shows the convention on the
example `Item` and `Job` schemas.
example `Job` schema.
---
@@ -82,5 +82,7 @@ example `Item` and `Job` schemas.
- The server template ships authless by default (see
[22 – Auth Integration](22_auth_integration.md)); the client template pairs
with it and degrades to "no login" until a security scheme is declared.
- `react/vet` is the full-stack reference implementation: spec with x-
extensions, server, and the consuming client in one tree.
- The standards **app + client templates** are the full-stack reference: the
server spec carries the x- extensions, and the client renders the admin from
it. The wiki's **Reference App** walkthrough (`06_reference_app`) documents
the pairing end to end.

View File

@@ -10,7 +10,7 @@ chosen by what the repository produces:
|------|------|----------|-------|
| **A — PyPI package** | `templates/drone/python-lib.yaml` | A wheel + sdist on the private index | `dagpipe`, `doc-forge`, `hexa`, `mail-intake`, `mongo-ops`, `omniread`, `openapi-first`, `py-jwt` |
| **B — npm package** | `templates/drone/npm-lib.yaml` | A package published to the private npm registry | `doc-weaver`, `react-auth`, `react-openapi` |
| **C — Docker deployment** | `templates/drone/service-docker.yaml` | An image pushed to the registry and run as a container | `auth-server`, `vet` |
| **C — Docker deployment** | `templates/drone/service-docker.yaml` | An image pushed to the registry and run as a container | `auth-server` |
All templates run on `platform: linux / arm64` with the workspace at
`/drone/src`. Copy the matching template to `<repo>/.drone.yml`; the Type A and

View File

@@ -45,15 +45,14 @@ source is `package.json`; Drone file is `npm-lib.yaml` (tag-triggered).
---
## Services & Apps (Type C)
## Services (Type C)
A container image pushed to the registry and run on the Docker host. Version
source is the `VERSION` file; Drone file is `service-docker.yaml`.
| Repo | Path | Type | Trigger | Docs |
|------|------|------|---------|------|
| `auth-server` | `auth-server` | service | tag | api, lib, wiki |
| `vet` | `react/vet` | app | tag | lib, wiki |
| Repo | Path | Trigger | Docs |
|------|------|---------|------|
| `auth-server` | `auth-server` | tag | api, lib, wiki |
Tag-triggered and enforces `tag == VERSION`.
@@ -65,7 +64,7 @@ Tag-triggered and enforces `tag == VERSION`.
|------|----------------|-----------|-------|
| package (PyPI) | `pyproject.toml` | `CHANGELOG.md` | `python-lib.yaml` |
| package (npm) | `package.json` | `CHANGELOG.md` | `npm-lib.yaml` |
| service / app | `VERSION` | `CHANGELOG.md` | `service-docker.yaml` |
| service | `VERSION` | `CHANGELOG.md` | `service-docker.yaml` |
Every covered repository must be able to satisfy `tag == version`:
the version file (never a commit id) is bumped in the release MR, the MR is