Skip to content

Fix/init workspace healing#13

Open
SmilosNIJ wants to merge 2 commits into
ai-swiss:mainfrom
SmilosNIJ:fix/init-workspace-healing
Open

Fix/init workspace healing#13
SmilosNIJ wants to merge 2 commits into
ai-swiss:mainfrom
SmilosNIJ:fix/init-workspace-healing

Conversation

@SmilosNIJ

@SmilosNIJ SmilosNIJ commented Jun 27, 2026

Copy link
Copy Markdown

Le healing de base init ne couvrait que detection.type === "root". Les workspaces tombaient dans le else qui retourne un plan vide, sans proposer les artefacts manquants, en contradiction avec FR-INIT-004.

Étendu la condition de healing à "workspace" et ajouté un test qui prouve le comportement corrigé.

Fixes #12
[SPEC-NEUTRAL: no routing or write-gate behaviour changed]

stripFrontmatter() tested startsWith('---\n') without accounting for
Windows CRLF line endings. Fixed by accepting both LF and CRLF, and
splitting on /\r?\n/ to avoid stray \r characters in the rendered body.

Fixes ai-swiss#10
[SPEC-NEUTRAL: docs-site rendering fix, no BASE spec behaviour changed]

Signed-off-by: SmilosNIJ <nicolas.jeanneret@patric.swiss>
base init only healed missing artifacts for detection.type === 'root'.
Workspaces fell into the else branch which returned an empty plan,
silently doing nothing even when CLAUDE.md or other tool artifacts
were absent.

Extended the healing condition to also cover 'workspace' so that
base init proposes missing artifacts on any existing BASE,
as required by FR-INIT-004.

Fixes ai-swiss#12
[SPEC-NEUTRAL: no routing or write-gate behaviour changed]

Signed-off-by: SmilosNIJ <nicolas.jeanneret@patric.swiss>
@SmilosNIJ SmilosNIJ requested a review from cbardyn as a code owner June 27, 2026 13:58
@cbardyn

cbardyn commented Jul 2, 2026

Copy link
Copy Markdown

Merci pour cette contribution.

Le diagnostic est juste: sur un workspace existant, base init retombait dans une branche dont le plan est vide, d'où le silence sur les artefacts manquants, contraire à l'intention de FR-INIT-004. Étendre le soin à la détection workspace et réutiliser le même rendu d'artefacts que pour un root est la bonne approche, au bon endroit; le test ajouté prouve concrètement que CLAUDE.md est proposé puis écrit.

Depuis votre envoi, la 1.1.0 est sortie et change un peu le paysage de cette branche:

  • la tolérance CRLF est désormais dans le cœur (parseFrontmatter lit un document CRLF à l'identique de son jumeau LF), correctif crédité à votre fix(frontmatter): accept CRLF line endings on Windows #16, et .gitattributes normalise tout checkout en LF;
  • votre durcissement de stripFrontmatter côté docs-site reste bienvenu pour autant: il protège les fichiers édités hors git (un éditeur Windows qui enregistre en CRLF), ce que la normalisation de checkout ne couvre pas. Gardez-le au rebase s'il s'applique encore proprement;
  • la CI compte maintenant quatorze contrôles requis, dont un passage Windows qui exécute précisément les tests d'init: votre correctif sera vérifié sur l'OS qu'il vise.

Côté discipline, tout est en règle: commits signés (DCO), marqueurs [SPEC-NEUTRAL] cohérents, entrées CHANGELOG claires. Il ne manque que la mécanique: un rebase sur main (la branche est en retard), qui déclenchera les contrôles. Nous fusionnerons dès qu'ils seront au vert.

Encore merci: deux problèmes réels, réglés en une trentaine de lignes.

@cbardyn cbardyn added the en attente du contributeur Réponse postée; la prochaine action est côté contributeur (rebase, DCO, discussion) label Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

en attente du contributeur Réponse postée; la prochaine action est côté contributeur (rebase, DCO, discussion)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[base init] Workspace existant : artefacts manquants non proposés (FR-INIT-004)

2 participants