docker-swarm 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +2 -1
- data/docs/config/configuracion.md +74 -0
- data/lib/docker_swarm/version.rb +1 -1
- data/skill/SKILL.md +1 -0
- metadata +4 -4
- data/docs/config/config.md +0 -140
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4173c79f1bd808f22729c09eda7b4b70a494c4f080625fff33285a410f1224dc
|
|
4
|
+
data.tar.gz: a8d0aaa08dc6ed272e16ef3577d59f7571791d793a7a2192afb4b5be762c2578
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 88d788fdd06036b76b6c666f46acfc6880bbb74b8f80feb706a8cfe71aa6e7a62164717de75b5711dc34086218a3feaf5e90323461ab27f76685417d199a07cd
|
|
7
|
+
data.tar.gz: 44bd8aa057c5b1d9e9e160deed73f13e08d0c441ba4f63a2f0d4142a89c2dc5c3939f732c80adca3c298e7e61b3192506dcf30064c93c9caaf6fa01ee4d4efc9
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.7.2] — 2026-06-29
|
|
6
|
+
|
|
7
|
+
### Documentación
|
|
8
|
+
- Regenerar la capa de configuración conforme RFC-012 (`docs/config/configuracion.md`): inventario de las 7 opciones runtime del bloque `configure`, sin env vars, ninguna secreta — @Gabriel
|
|
9
|
+
- Reindexar `skill/SKILL.md` §4 para apuntar al nuevo artefacto de configuración — @Gabriel
|
|
10
|
+
- Instaurar `AGENTS.md` (stanza "Mapa de conocimiento") y normalizar `skills.yml` al molde fleet — @Gabriel
|
|
11
|
+
|
|
12
|
+
### Mejoras internas
|
|
13
|
+
- Bump excon 1.4.2 → 1.5.0 — @Gabriel
|
|
14
|
+
|
|
5
15
|
## [0.7.1] — 2026-05-29
|
|
6
16
|
|
|
7
17
|
### Correcciones
|
data/README.md
CHANGED
|
@@ -44,12 +44,13 @@ Documentación normada (RFC-001) por capa:
|
|
|
44
44
|
| Datos | — | `n/a` (gema sin DB) |
|
|
45
45
|
| Glosario | [`docs/glossary/glossary.md`](docs/glossary/glossary.md) | F1 completo |
|
|
46
46
|
| Comportamiento | [`docs/behavior/behavior.md`](docs/behavior/behavior.md) | F1 backfill on-demand (8 flujos) |
|
|
47
|
+
| Configuración | [`docs/config/configuracion.md`](docs/config/configuracion.md) | F6 inventario base (7 opciones, sin env vars) |
|
|
47
48
|
| API (operaciones) | — | F2 pendiente; contrato resumido inline en `skill/SKILL.md` |
|
|
48
49
|
| Interfaz | — | F2 pendiente; contrato resumido inline en `skill/SKILL.md` |
|
|
49
50
|
| Topología | — | F2 pendiente |
|
|
50
51
|
| Eventos | — | `n/a` (la gema no emite eventos) |
|
|
51
52
|
|
|
52
|
-
`n/a` = no aplica al tipo de repo. F2 pendiente = capa declarada en la RFC pero todavía no implementada en `
|
|
53
|
+
`n/a` = no aplica al tipo de repo. F2 pendiente = capa declarada en la RFC pero todavía no implementada en `arch-structure`; el contenido relevante vive transitoriamente en `skill/SKILL.md` (RFC-008 §2 coexistencia transitoria).
|
|
53
54
|
|
|
54
55
|
## Desarrollo
|
|
55
56
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Configuración — docker-swarm
|
|
2
|
+
|
|
3
|
+
> meta: artefacto · RFC-012 · generado arch-structure · anclado a `e8c7594` · cobertura: configuración runtime de la gema (clase `DockerSwarm::Configuration`, seteada vía `DockerSwarm.configure`)
|
|
4
|
+
|
|
5
|
+
## 1. Resumen
|
|
6
|
+
|
|
7
|
+
Configuración runtime de la gema. 7 opciones, todas programáticas vía `DockerSwarm.configure { |c| ... }` sobre `DockerSwarm::Configuration` (`lib/docker_swarm/configuration.rb`). **Cero env vars** (verificado: sin `ENV[`/`ENV.fetch` en `lib/`). Todas con default; ninguna requerida ni secreta.
|
|
8
|
+
|
|
9
|
+
## 2. Cuerpo
|
|
10
|
+
|
|
11
|
+
### a. Hecho verificable (conteos)
|
|
12
|
+
|
|
13
|
+
| métrica | valor |
|
|
14
|
+
|---|---|
|
|
15
|
+
| total opciones | 7 |
|
|
16
|
+
| requeridas | 0 |
|
|
17
|
+
| con default | 7 |
|
|
18
|
+
| derivadas | 0 |
|
|
19
|
+
| secretas | 0 |
|
|
20
|
+
|
|
21
|
+
### b. Inventario base
|
|
22
|
+
|
|
23
|
+
| nombre | tipo | requerida | default | origen | consumidor (file:line) | secret? |
|
|
24
|
+
|---|---|---|---|---|---|---|
|
|
25
|
+
| `socket_path` | String | no | `"unix:///var/run/docker.sock"` | code-default | `connection.rb:116-119` (vía `docker_swarm.rb:28`) | no |
|
|
26
|
+
| `logger` | Logger | no | `Logger.new($stdout)` | code-default | `docker_swarm.rb:19-20,28` · `connection.rb:70-85` | no |
|
|
27
|
+
| `log_level` | Integer (Logger level) | no | `Logger::INFO` | code-default | `docker_swarm.rb:20` | no |
|
|
28
|
+
| `read_timeout` | Float | no | `60.0` | code-default | `connection.rb:29` | no |
|
|
29
|
+
| `write_timeout` | Float | no | `60.0` | code-default | `connection.rb:30` | no |
|
|
30
|
+
| `connect_timeout` | Float | no | `10.0` | code-default | `connection.rb:31` | no |
|
|
31
|
+
| `max_retries` | Integer | no | `3` | code-default | `connection.rb:32` | no |
|
|
32
|
+
|
|
33
|
+
> Definición/categoría/failure-mode/side-effect/business-reason: `—` (sembrado, lo llena `arch-enrich` §f).
|
|
34
|
+
|
|
35
|
+
### c. Meta-templates
|
|
36
|
+
|
|
37
|
+
Plantilla `<x>_timeout` (≥3 instancias):
|
|
38
|
+
|
|
39
|
+
- Instancias: `read_timeout`, `write_timeout`, `connect_timeout`.
|
|
40
|
+
- Tipo común: `Float`. Setter coacciona valor con `&.to_f` (`configuration.rb:20-30`).
|
|
41
|
+
- Delta por instancia: default `read`/`write` = `60.0`; `connect` = `10.0`.
|
|
42
|
+
- Consumo: pasadas a Excon como opciones homónimas (`connection.rb:29-31`).
|
|
43
|
+
|
|
44
|
+
### d. Derivaciones simples
|
|
45
|
+
|
|
46
|
+
`—` n/a. No hay constantes derivadas de otras opciones.
|
|
47
|
+
|
|
48
|
+
### e. Scheduling
|
|
49
|
+
|
|
50
|
+
`—` n/a. Gema cliente sin scheduler (`sidekiq.yml`/`queue.yml`/`recurring.yml` ausentes).
|
|
51
|
+
|
|
52
|
+
### i. Inyecciones al host
|
|
53
|
+
|
|
54
|
+
`—` n/a. Sin Railtie/Engine (`lib/**/railtie.rb`/`engine.rb` y `lib/generators/` ausentes). Único efecto al configurar: `DockerSwarm.configure` setea `logger.level = log_level` (`docker_swarm.rb:19-20`) — efecto sobre el logger inyectado por el consumidor, no sobre el host.
|
|
55
|
+
|
|
56
|
+
### j. Inyección a gemas configuradas
|
|
57
|
+
|
|
58
|
+
`—` n/a. No configura otras gemas.
|
|
59
|
+
|
|
60
|
+
## 3. Inferencias
|
|
61
|
+
|
|
62
|
+
| inferencia | confidence | a verificar |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| Sin env vars: config 100% programática vía `DockerSwarm.configure` | declared | `grep -rn "ENV" lib/` → 0 hits (verificado) |
|
|
65
|
+
| `log_level` es constante `Logger` (Integer 0-5); default `Logger::INFO` (=1) | declared | `configuration.rb:13` |
|
|
66
|
+
| `max_retries` se aplica **solo** a requests idempotentes; en no-idempotentes Excon recibe `retries: 0` | inferred | `connection.rb:32` (`idempotent ? max_retries : 0`) |
|
|
67
|
+
| `socket_path` soporta unix socket (`unix://`) y TCP; el transporte se ramifica por prefijo | inferred | `connection.rb:116-119` (`start_with?("unix://")`) |
|
|
68
|
+
|
|
69
|
+
## 4. Cobertura y fronteras
|
|
70
|
+
|
|
71
|
+
- **Frontera con el consumidor:** la gema no lee env. Un servicio que la usa puede mapear sus propias env vars a estos setters en su initializer — eso pertenece al `docs/config/` del consumidor, no a este artefacto.
|
|
72
|
+
- **Enriquecimiento pendiente:** columnas semánticas (`categoría`, `failure-mode`, `side-effect`, `scope-override`, `business-reason`) sembradas `—` → las llena `arch-enrich` (§f Enriquecimiento semántico).
|
|
73
|
+
- **n/a en esta capa:** §d derivaciones, §e scheduling, §i inyecciones al host, §j inyección a gemas — la gema es cliente puro sin Railtie/scheduler/derivaciones.
|
|
74
|
+
- **Linter de secrets:** sin hallazgos (ningún default con literal sensible; ningún nombre matchea `*_KEY|*_SECRET|*_PASS|*_TOKEN`).
|
data/lib/docker_swarm/version.rb
CHANGED
data/skill/SKILL.md
CHANGED
|
@@ -166,6 +166,7 @@ Logs salen en formato KV (`component=docker_swarm.connection event=request_succe
|
|
|
166
166
|
|
|
167
167
|
- [`docs/glossary/glossary.md`](docs/glossary/glossary.md) — definición de términos (primitivas Docker + conceptos internos).
|
|
168
168
|
- [`docs/behavior/behavior.md`](docs/behavior/behavior.md) — secuencias load-bearing (create+reload, update+Version, retry-policy, error-mapping, etc.).
|
|
169
|
+
- [`docs/config/configuracion.md`](docs/config/configuracion.md) — inventario de configuración runtime (7 opciones del bloque `configure`, sin env vars, ninguna secreta). El bloque de arriba es el resumen; shape/defaults/consumidores en el detalle.
|
|
169
170
|
- `docs/data/` — `n/a` (gema sin DB).
|
|
170
171
|
- `docs/api/`, `docs/interface/`, `docs/topology/` — F2 declaradas, **no implementadas**. El contrato resumido de arriba reside **transitoriamente** acá (RFC-008 §2 coexistencia transitoria con destino pendiente).
|
|
171
172
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: docker-swarm
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gabriel
|
|
@@ -91,7 +91,7 @@ files:
|
|
|
91
91
|
- LICENSE
|
|
92
92
|
- README.md
|
|
93
93
|
- docs/behavior/behavior.md
|
|
94
|
-
- docs/config/
|
|
94
|
+
- docs/config/configuracion.md
|
|
95
95
|
- docs/glossary/glossary.md
|
|
96
96
|
- lib/docker-swarm.rb
|
|
97
97
|
- lib/docker_swarm.rb
|
|
@@ -128,9 +128,9 @@ licenses:
|
|
|
128
128
|
metadata:
|
|
129
129
|
homepage_uri: https://github.com/gedera/docker-swarm
|
|
130
130
|
source_code_uri: https://github.com/gedera/docker-swarm
|
|
131
|
-
changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.7.
|
|
131
|
+
changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.7.2/CHANGELOG.md
|
|
132
132
|
bug_tracker_uri: https://github.com/gedera/docker-swarm/issues
|
|
133
|
-
documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.7.
|
|
133
|
+
documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.7.2/skill/SKILL.md
|
|
134
134
|
rubygems_mfa_required: 'true'
|
|
135
135
|
rdoc_options: []
|
|
136
136
|
require_paths:
|
data/docs/config/config.md
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# Inventario de Configuración — docker-swarm
|
|
2
|
-
|
|
3
|
-
> meta: artefacto · generado manual · anclado a `b3549e7` · cobertura: archivos de configuración versionados del repo (excluye `lib/`, `spec/`, `skill/`, `docs/`)
|
|
4
|
-
|
|
5
|
-
## 1. Resumen
|
|
6
|
-
|
|
7
|
-
Lista de archivos de configuración del repo, qué controlan, quién los consume y dónde tocar para cambiar comportamiento. Agrupados por dominio: **gema**, **Ruby/lint**, **CI/CD**, **dependencias automatizadas**, **agentes/skills**, **entorno local**.
|
|
8
|
-
|
|
9
|
-
## 2. Gema
|
|
10
|
-
|
|
11
|
-
### `docker-swarm.gemspec`
|
|
12
|
-
|
|
13
|
-
Especificación de la gema (nombre, versión, autoría, deps runtime, ficheros incluidos, metadatos RubyGems). Versión leída desde `lib/docker_swarm/version.rb`.
|
|
14
|
-
|
|
15
|
-
- Ruby mínimo: `>= 3.2.0`
|
|
16
|
-
- Runtime deps: `activesupport >= 6.0`, `activemodel >= 6.0`, `excon >= 0.80`
|
|
17
|
-
- Dev deps: `rake ~> 13.0`, `rspec ~> 3.0`
|
|
18
|
-
- Files glob: `{lib,exe,skill,docs}/**/*` + `README.md`, `CHANGELOG.md`, `LICENSE`
|
|
19
|
-
- MFA RubyGems: requerido (`rubygems_mfa_required = true`)
|
|
20
|
-
- Cambio típico: bumpear versión → editar `lib/docker_swarm/version.rb` (no acá).
|
|
21
|
-
|
|
22
|
-
### `Gemfile`
|
|
23
|
-
|
|
24
|
-
Sólo declara `gemspec` + grupos `:development, :test` y `:test`. Runtime deps viven en el gemspec.
|
|
25
|
-
|
|
26
|
-
- `:development, :test`: `rspec`, `pry`, `rubocop-rails-omakase`
|
|
27
|
-
- `:test`: `activemodel`, `activesupport`, `excon` (re-declaradas para resolver en test sin runtime gemspec)
|
|
28
|
-
|
|
29
|
-
### `Gemfile.lock`
|
|
30
|
-
|
|
31
|
-
Lock generado por Bundler. Versionado. No editar a mano.
|
|
32
|
-
|
|
33
|
-
## 3. Ruby / Lint
|
|
34
|
-
|
|
35
|
-
### `.rubocop.yml`
|
|
36
|
-
|
|
37
|
-
Base: `rubocop-rails-omakase`.
|
|
38
|
-
|
|
39
|
-
- `TargetRubyVersion: 3.2`
|
|
40
|
-
- Exclude: `bin/**/*`, `vendor/**/*`, `spec/fixtures/**/*`, `Gemfile`, `Gemfile.lock`, `docker-swarm.gemspec`
|
|
41
|
-
- `Style/Documentation`: deshabilitado (ruido masivo; habilitar cuando YARD esté completo)
|
|
42
|
-
- `Naming/MethodName`: excluido en `lib/docker_swarm/base.rb` y `lib/docker_swarm/models/**/*` (justificación: PascalCase fiel a Docker API)
|
|
43
|
-
|
|
44
|
-
Sin `.ruby-version` en el repo. Ruby de runtime se infiere del gemspec (`>= 3.2.0`) y CI fija `3.4.4`.
|
|
45
|
-
|
|
46
|
-
## 4. CI/CD
|
|
47
|
-
|
|
48
|
-
### `.github/workflows/main.yml`
|
|
49
|
-
|
|
50
|
-
Workflow `Ruby` — corre en `push` a `main` y en cada `pull_request`.
|
|
51
|
-
|
|
52
|
-
- Runner: `ubuntu-latest`
|
|
53
|
-
- Matrix Ruby: `['3.4.4']`
|
|
54
|
-
- Steps: checkout (`actions/checkout@v6`, `persist-credentials: false`) → `ruby/setup-ruby@v1` con `bundler-cache: true` → `bundle exec rspec --tag ~type:integration` → `bundle exec rubocop`
|
|
55
|
-
- Tests de integración (`type:integration`) excluidos en CI — requieren Docker Engine real, correr local.
|
|
56
|
-
|
|
57
|
-
### `.github/workflows/release.yml`
|
|
58
|
-
|
|
59
|
-
Workflow `Publish to RubyGems` — corre en push de tag `v*`.
|
|
60
|
-
|
|
61
|
-
- Runner: `ubuntu-latest`
|
|
62
|
-
- Permisos: `contents: read`, `packages: write`
|
|
63
|
-
- Steps: checkout → setup Ruby 3.4.4 → `gem build *.gemspec` → `gem push *.gem`
|
|
64
|
-
- Secret requerido: `RUBYGEMS_API_KEY`
|
|
65
|
-
- Trigger manual: pushear tag `v<version>` (ver `/gem-release`).
|
|
66
|
-
|
|
67
|
-
## 5. Dependencias automatizadas
|
|
68
|
-
|
|
69
|
-
### `.github/dependabot.yml`
|
|
70
|
-
|
|
71
|
-
Dos ecosistemas:
|
|
72
|
-
|
|
73
|
-
- `bundler` (`/`): semanal, máx 10 PRs abiertos. Grupo `development-dependencies` agrupa `rubocop*`, `rspec*`, `pry*` en un sólo PR.
|
|
74
|
-
- `github-actions` (`/`): mensual.
|
|
75
|
-
|
|
76
|
-
## 6. Agentes / Skills
|
|
77
|
-
|
|
78
|
-
### `skills.yml`
|
|
79
|
-
|
|
80
|
-
Declara MCPs y skills externas a sincronizar.
|
|
81
|
-
|
|
82
|
-
- MCPs: `github`, `clickup`
|
|
83
|
-
- Skills (todas `repo: sequre/ai_knowledge` excepto donde se indique): `yard`, `quality-code`, `gem-release`, `dev-structure`, `dev-compose`, `dev-enrich`, `skill-feedback`, `agent-issue`, `dev-flow`, `matrix-element`, `documentation-writer` (`repo: github/awesome-copilot`, `path: skills/documentation-writer`)
|
|
84
|
-
- `matrix-element` consume env `MATRIX_AUTH_TOKEN` + homeserver `https://matrix.cloud.wispro.co` + room `agents`.
|
|
85
|
-
|
|
86
|
-
### `skills.lock`
|
|
87
|
-
|
|
88
|
-
Lock de skills sincronizadas (`synced_at: 2026-04-07`). Todas con `scope: local` y path en `.agents/skills/`. Regenerable con `ruby .agents/skills/skill-manager/scripts/sync.rb`.
|
|
89
|
-
|
|
90
|
-
### `.claude/settings.local.json`
|
|
91
|
-
|
|
92
|
-
Permisos locales de Claude Code (no versionar credenciales acá). Allow:
|
|
93
|
-
|
|
94
|
-
- `Bash(find /Users/gabriel/src/gems/docker-swarm/spec/integration -type f -name "*_spec.rb" -exec wc -l {} \\;)`
|
|
95
|
-
- `Bash(grep "^[[:space:]]*class " /Users/gabriel/src/gems/docker-swarm/lib/docker_swarm/**/*.rb)`
|
|
96
|
-
- `Bash(git rm *)`
|
|
97
|
-
- `Bash(bundle exec *)`
|
|
98
|
-
|
|
99
|
-
### `.claude/commands/*.md`
|
|
100
|
-
|
|
101
|
-
Slash commands del proyecto. Cuatro archivos: `api.md`, `errors.md`, `orm.md`, `test.md`. Invocables como `/api`, `/errors`, `/orm`, `/test` desde Claude Code.
|
|
102
|
-
|
|
103
|
-
## 7. Entorno local
|
|
104
|
-
|
|
105
|
-
### `.env`
|
|
106
|
-
|
|
107
|
-
**No versionado** (`.gitignore`). Variables ClickUp para reporting de agentes:
|
|
108
|
-
|
|
109
|
-
- `AI_REPORTS_SPACE_ID`, `AI_REPORTS_BUG_REPORTS_LIST_ID`, `AI_REPORTS_IMPROVEMENTS_LIST_ID`
|
|
110
|
-
- `AGENT_REVIEW_SAPCE_ID` (sic, typo), `AGENT_LIST_ID`, `AGENT_ACTION_PLAN_LIST_ID`
|
|
111
|
-
|
|
112
|
-
### `.gitignore`
|
|
113
|
-
|
|
114
|
-
Ignora: `.agents/` (skills sincronizadas, regenerables) y `.env` (variables de entorno).
|
|
115
|
-
|
|
116
|
-
## 8. Tabla resumen
|
|
117
|
-
|
|
118
|
-
| Archivo | Dominio | Consumidor | Versionado |
|
|
119
|
-
|---|---|---|---|
|
|
120
|
-
| `docker-swarm.gemspec` | Gema | Bundler / RubyGems | sí |
|
|
121
|
-
| `Gemfile` | Gema | Bundler | sí |
|
|
122
|
-
| `Gemfile.lock` | Gema | Bundler | sí |
|
|
123
|
-
| `.rubocop.yml` | Lint | RuboCop | sí |
|
|
124
|
-
| `.github/workflows/main.yml` | CI | GitHub Actions | sí |
|
|
125
|
-
| `.github/workflows/release.yml` | CD | GitHub Actions | sí |
|
|
126
|
-
| `.github/dependabot.yml` | Deps auto | GitHub Dependabot | sí |
|
|
127
|
-
| `skills.yml` | Skills | `skill-manager` | sí |
|
|
128
|
-
| `skills.lock` | Skills | `skill-manager` | sí |
|
|
129
|
-
| `.claude/settings.local.json` | Agente | Claude Code | sí |
|
|
130
|
-
| `.claude/commands/*.md` | Agente | Claude Code | sí |
|
|
131
|
-
| `.env` | Entorno | runtime local | **no** |
|
|
132
|
-
| `.gitignore` | VCS | git | sí |
|
|
133
|
-
|
|
134
|
-
## 9. Secrets / credenciales
|
|
135
|
-
|
|
136
|
-
- GitHub Actions: `RUBYGEMS_API_KEY` (release.yml)
|
|
137
|
-
- Local `.env`: IDs ClickUp (no secretos pero específicos del workspace)
|
|
138
|
-
- Skills `matrix-element`: `MATRIX_AUTH_TOKEN`
|
|
139
|
-
|
|
140
|
-
Ninguna credencial hardcodeada en archivos versionados.
|