docker-swarm 0.7.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cfb44c7a62e5acff4c50b2ef3a0e6bf1099a373168dd5ab5b84acaf64b992be
4
- data.tar.gz: cfce12e7a89c7445e529abb318d96b4537ea48f57feeb9a8a868811cf36e5761
3
+ metadata.gz: 4173c79f1bd808f22729c09eda7b4b70a494c4f080625fff33285a410f1224dc
4
+ data.tar.gz: a8d0aaa08dc6ed272e16ef3577d59f7571791d793a7a2192afb4b5be762c2578
5
5
  SHA512:
6
- metadata.gz: 21537e14be775b36a683347b95b20c7bdf470390196aef69ec33f2107beab3b3b05ad293961f17fe9dde25537893323abb54b9cadeae0787aeff2f903cc4133d
7
- data.tar.gz: 65be2402e1745493295b3f399343d659bb3b63bc15af92ad13f788172658229a28af3a6ce22d58b92af103757c4ab384a81c2e6d6ba7045e6b11585e0d3800c8
6
+ metadata.gz: 88d788fdd06036b76b6c666f46acfc6880bbb74b8f80feb706a8cfe71aa6e7a62164717de75b5711dc34086218a3feaf5e90323461ab27f76685417d199a07cd
7
+ data.tar.gz: 44bd8aa057c5b1d9e9e160deed73f13e08d0c441ba4f63a2f0d4142a89c2dc5c3939f732c80adca3c298e7e61b3192506dcf30064c93c9caaf6fa01ee4d4efc9
data/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
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
+
15
+ ## [0.7.1] — 2026-05-29
16
+
17
+ ### Correcciones
18
+ - `Updatable#update`: captura `Version.Index` **antes** de `assign_attributes` para evitar que un payload con versión desactualizada pise el índice real del nodo y provoque `update out of sequence` en Docker — @Pablo
19
+
5
20
  ## [0.7.0] — 2026-05-21
6
21
 
7
22
  ### Breaking changes
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 `dev-structure`; el contenido relevante vive transitoriamente en `skill/SKILL.md` (RFC-008 §2 coexistencia transitoria).
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`).
@@ -6,13 +6,14 @@ module DockerSwarm
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  def update(new_attributes = {})
9
+ current_version = self.Version&.dig("Index")
9
10
  assign_attributes(new_attributes) if new_attributes.present?
10
11
  return false unless valid?
11
12
 
12
13
  Api.request(
13
14
  action: self.class.routes[:update],
14
15
  arguments: { id: self.ID },
15
- query_params: { version: self.Version&.dig("Index") },
16
+ query_params: { version: current_version },
16
17
  payload: payload_for_docker
17
18
  )
18
19
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DockerSwarm
4
- VERSION = "0.7.0"
4
+ VERSION = "0.7.2"
5
5
  end
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.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel
@@ -91,6 +91,7 @@ files:
91
91
  - LICENSE
92
92
  - README.md
93
93
  - docs/behavior/behavior.md
94
+ - docs/config/configuracion.md
94
95
  - docs/glossary/glossary.md
95
96
  - lib/docker-swarm.rb
96
97
  - lib/docker_swarm.rb
@@ -127,9 +128,9 @@ licenses:
127
128
  metadata:
128
129
  homepage_uri: https://github.com/gedera/docker-swarm
129
130
  source_code_uri: https://github.com/gedera/docker-swarm
130
- changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.7.0/CHANGELOG.md
131
+ changelog_uri: https://github.com/gedera/docker-swarm/blob/v0.7.2/CHANGELOG.md
131
132
  bug_tracker_uri: https://github.com/gedera/docker-swarm/issues
132
- documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.7.0/skill/SKILL.md
133
+ documentation_uri: https://github.com/gedera/docker-swarm/blob/v0.7.2/skill/SKILL.md
133
134
  rubygems_mfa_required: 'true'
134
135
  rdoc_options: []
135
136
  require_paths: