Files
end-finder/openspec/changes/archive/2026-11-11-add-end-portal-triangulation/tasks.md
T
2026-11-11 01:51:55 +01:00

2.1 KiB

Tasks

1. Noyau géométrique et tests unitaires

  • 1.1 Créer end_finder.py avec les fonctions pures parse_point (deux nombres, espace ou virgule), angle_between (angle en degrés entre les deux droites) et intersect_lines (intersection par produits vectoriels, ValueError si vecteur direction nul), ainsi que les constantes PARALLEL_ANGLE_DEG = 0.5 et WARN_ANGLE_DEG = 10.0 — vérifier via les tests du 1.2
  • 1.2 Créer tests/test_end_finder.py (stdlib unittest) couvrant : parsing des formats valides (x z, x,z, décimales) et rejets des invalides ; intersection nominale à résultat exact connu ; droites verticales ; droites exactement parallèles ; vecteur nul ; cohérence de angle_between — vérifier avec python -m unittest depuis la racine (tout passe)

2. Flux interactif et validation manuelle

  • 2.1 Implémenter main() : prompts en français (lancé puis chute de chaque œil), re-saisie en cas d'entrée invalide, re-saisie de la chute si confondue avec le lancé, application des seuils (parallèle → erreur sans coordonnées et sortie non nulle ; angle faible → avertissement avec angle), affichage arrondi à 1 décimale — vérifier manuellement avec python end_finder.py sur un cas nominal aux coordonnées connues
  • 2.2 Valider manuellement les garde-fous : deux lancers alignés (droites parallèles → message d'erreur, aucune coordonnée affichée) et deux lancers formant un angle sous 10° (coordonnées affichées + avertissement) — vérifier la conformité aux scénarios du spec end-portal-triangulation

3. Documentation

  • 3.1 Rédiger README.md : but du programme, mode d'emploi (python end_finder.py), méthode de relevé des coordonnées en jeu (F3 au moment du lancer et à la chute), conseil de garder les deux lancers à quelques centaines de blocs l'un de l'autre et de confirmer par un troisième lancer près du point trouvé — vérifier que la commande documentée s'exécute telle quelle

Workflow follow-up

  • Archiver le changement (opsx-archive) une fois la revue de code approuvée.