Descriptor round-trip drops `starter` on explicit composition commands
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #602 de @elliotBraem — fusionado
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
Start with src/descriptor/resolve.ts, comparing toConfigInput with configInputToDescriptor and tracing how resolveApp uses the conversion. Then read src/utils/save-config.ts and the plugin command flow in src/services/plugins-admin.ts; the acceptance criteria require a round trip that preserves starter during saves while resolved and published configs omit it. Add the integration test for a child with starter surviving bos plugin add.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Context
The descriptor round-trip (src/descriptor/resolve.ts) is lossless for most authored fields, but toConfigInput's pick list (resolve.ts:82-95) omits starter while its inverse configInputToDescriptor (resolve.ts:248-264) includes it. Any code path that reads the authored config, mutates it, and writes it back through saveBosConfig (src/utils/save-config.ts:13-33) re-serializes the descriptor — and the starter field (authoring-only, per schema.ts:103-106) is silently dropped.
Who is affected
The upgrade train no longer re-serializes on the pin stamp (surgical line edit, #TBD PR), but explicit composition commands still do:
bos plugin add/bos plugin remove(src/services/plugins-admin.ts:97-175)bos config registry use(src/handlers/config.ts:65)
A child whose bos.app.ts carries starter: "advanced" loses it the first time it runs one of those commands.
Why not just add `starter` to the pick list
Naively adding it leaks starter into resolved configs during extends resolution (resolveApp → toConfigInput builds the child's own input) — the schema comment says the field is stripped from resolved configs by design (publish canonicalization never carries it). The fix needs a seam that preserves it on the authoring round-trip without carrying it into resolution.
Acceptance
toConfigInput(toConfigInput-invertible path)preservesstarteron descriptor ← → config-input round-trips used bysaveBosConfig- resolved configs produced by
resolveApp/publish canonicalization still never carrystarter - integration test: a child with
startersurvivesbos plugin add
- Lenguaje dominante
- TypeScript
- Estrellas
- 5
- Forks
- 3
- Merge medio
- 9 h 50 min
- PR fusionados (30 d)
- 146
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NEARBuilders/everything-dev
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
NEARBuilders/everything-dev#400 ·
Los mantenedores suelen responder en 1 día
-
Pinnable dev host slot for child CI — versioned host bundle URLs or a first-class local-host runnerAbiertoenhancement ready-for-agent
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
NEARBuilders/everything-dev#613 ·
Los mantenedores suelen responder en 1 día
-
documentation ready-for-agent
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
NEARBuilders/everything-dev#608 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
NEARBuilders/everything-dev#595 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
NEARBuilders/everything-dev#593 ·
Los mantenedores suelen responder en 1 día
Todos los issues de NEARBuilders/everything-dev
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
grafana/profiles-drilldown#1212 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
grafana/traces-drilldown#980 ·
Los mantenedores suelen responder en 1 día
-
Manager flashes an empty "errorOccurred" dialog while redirecting a logged-out user to loginAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
openremote/openremote#3487 · 1 comentario ·
-
triage:needs-human
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
garrytan/gbrain#7635 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
coollabsio/jean#867 ·
Los mantenedores suelen responder en 1 día