diff --git a/DEVELOPMENT_FLOW.md b/DEVELOPMENT_FLOW.md index 4f0dee7..0fab95b 100644 --- a/DEVELOPMENT_FLOW.md +++ b/DEVELOPMENT_FLOW.md @@ -38,16 +38,27 @@ fixed. Body text is prose plus bullets. Status values: - `conflict`: folded where possible; residual conflict kept in `CONFLICTS.md` (template rule wins) +Every lesson MUST record whether it became part of the DPP template: + +- `dpp_template`: exactly `yes` or `no` (no other values) +- `dpp_reason`: one short dry line. If `yes`, cite the template + section(s) and note any residual conflict. If `no`, state why it was + not folded (blocked, meta-only, withdrawn, or still proposed). + +These two fields are mandatory on every new entry from now on. + ### Skeleton ```markdown ### L-YYYY-MM-DD-NN: Short title -| Field | Value | -|--------|-------| -| date | YYYY-MM-DD | -| agent | grok-bot \| muse-spark \| | -| status | proposed \| folded \| conflict | +| Field | Value | +|--------------|-------| +| date | YYYY-MM-DD | +| agent | grok-bot \| muse-spark \| | +| status | proposed \| folded \| conflict | +| dpp_template | yes \| no | +| dpp_reason | short dry reason | Body starts here. Project-agnostic. Dry. Complete enough that Grok can turn it into MUST / MUST NOT text without asking again. @@ -58,11 +69,13 @@ turn it into MUST / MUST NOT text without asking again. ```markdown ### L-2026-10-05-00: Example (format only) -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | grok-bot | -| status | proposed | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | grok-bot | +| status | proposed | +| dpp_template | no | +| dpp_reason | format example only; not a real lesson | Applications MUST refuse to start when the configured data directory resolves outside `./data`. Prove it with a maintained subprocess test @@ -77,11 +90,13 @@ entry that cites the earlier id. ### L-2026-10-05-01: Storage law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | conflict | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | conflict | +| dpp_template | yes | +| dpp_reason | sections 3.1 (data root, enforcement, no named volumes); residual CONFLICTS.md 1 and 4 | All application data lives under `./data/` inside the project. No exceptions, no second locations. @@ -109,11 +124,13 @@ see `CONFLICTS.md` items 1 and 4. ### L-2026-10-05-02: Environments -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | conflict | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | conflict | +| dpp_template | yes | +| dpp_reason | section 3.5 (envs and one-way snapshots); residual CONFLICTS.md 1 vs bare-metal 28.1 | Four environments, one shape each, fixed localhost ports (example offsets: staging 19847, production 19848, test 19849). @@ -134,11 +151,13 @@ database): see `CONFLICTS.md` item 1. ### L-2026-10-05-03: Docker law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | conflict | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | conflict | +| dpp_template | yes | +| dpp_reason | section 28.2 (per-env compose, PROD_ :? guards, bind mounts); residual CONFLICTS.md 2 and 4 | One compose file per environment, each with its own top-level `name:` so projects can never steal each other's containers. @@ -158,11 +177,13 @@ template zero-config boot and `SECRET_KEY` hardcoded fallback: see ### L-2026-10-05-04: Environment files law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | conflict | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | conflict | +| dpp_template | yes | +| dpp_reason | section 3.4 (env-file contract); residual CONFLICTS.md 2 on secret defaults | `.env.example` lists every variable the code reads, no more, no less. A maintained contract test asserts the exact key set plus non-empty values @@ -180,11 +201,13 @@ secret defaults versus loud failure. ### L-2026-10-05-05: Serving law (molohttp) -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | section 28.4 (front-door reverse proxy); molohttp specifics remain lesson-local | One front door on 80/443, all local reverse-proxy upstreams. @@ -208,11 +231,13 @@ JSON validate steps remain the lesson source here. ### L-2026-10-05-06: Gallery law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | section 28.5 (screenshot galleries) | Every environment gets a screenshot gallery, generated the same way every time. @@ -232,11 +257,13 @@ section 28.5. ### L-2026-10-05-07: Test law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | conflict | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | conflict | +| dpp_template | yes | +| dpp_reason | sections 26.1, 26.3, 27.2 (tests, shared retry, doc text gates); residual CONFLICTS.md 3 (15s vs 60s) | Mirror layout (`tests/unit`, `tests/api`, `tests/e2e`), full suite green before done. @@ -257,11 +284,13 @@ Shared retry helper and related gates were folded. ### L-2026-10-05-08: Git law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | sections 2 and 36 (gitignore list, git law) | Stage named files only, never broad-add a dirty tree. Commit and push only on explicit ask, never as a side effect of finishing. @@ -283,11 +312,13 @@ Source commit (approx.): `60dd597`. Folded into template sections 2 and ### L-2026-10-05-09: Code law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | section 32 (code conventions); already largely present, kept as lesson source | Explicit over implicit, flat over nested, sparse over dense, readable above all. No comments anywhere except the author line @@ -303,11 +334,13 @@ template; kept here as the lesson source. ### L-2026-10-05-10: Docs law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | section 32 (README entry point and operator-guide bullets) | `README.md` is the living entry point (running, testing, docker, screenshots, data, operations) and stays true to the repo. Each @@ -320,11 +353,13 @@ section 32. ### L-2026-10-05-11: Handover law -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | muse-spark | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | muse-spark | +| status | folded | +| dpp_template | yes | +| dpp_reason | section 37 (secrets handover) | Secrets are generated with a cryptographic RNG, stored only in their target (`.env` 600, container env), and reported to the owner once in @@ -334,11 +369,13 @@ Source commit (approx.): `60dd597`. Folded into template section 37. ### L-2026-10-05-12: Multi-agent lesson format for DPP feed -| Field | Value | -|--------|-------| -| date | 2026-10-05 | -| agent | grok-bot | -| status | folded | +| Field | Value | +|--------------|-------| +| date | 2026-10-05 | +| agent | grok-bot | +| status | folded | +| dpp_template | no | +| dpp_reason | process meta for this lesson log; not a template MUST | This file is reformatted as the shared multi-agent lesson log. Grok Bot (AbsurdDevelopmentProject) alone updates `/workspace/dpp/dptemplate.md`. diff --git a/pyproject.toml b/pyproject.toml index 6c57789..432a880 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "molodetz" -version = "1.0.14" +version = "1.0.15" description = "Molodetz, a calm community blog roll." readme = "README.md" requires-python = ">=3.12"