Commit graph

10 commits

Author SHA1 Message Date
f8b3e8b0a9 [ADD] engine: lack, its three figures, dominance and the ranking
Raw meeting counts stop comparing proposals once a table is incomplete;
the lack, realised ceiling minus encounters, compares them. The module
gives the three figures of § 12.10.4, the sorted lack profile, rank
counts and profile dominance between two proposals, and the minimum
certificate read against the a priori ceiling. The ranking orders by gap,
then collision excess, cumulative collisions, repeats and redundancy.

Checked: the operator's three plans rank by excess 0, 2, 3, which either
count alone would invert; dominance and switch rank are pinned by hand.

--- FR ---

[ADD] moteur : manque, ses trois chiffres, dominance et classement

Les nombres bruts de rencontres cessent de comparer deux propositions dès
qu'une table est incomplète ; le manque, plafond réalisé moins
rencontres, les compare. Le module rend les trois chiffres du
§ 12.10.4, le profil trié du manque, le décompte des rangs et la
dominance de profil entre deux propositions, et le certificat de minimum
lu contre le plafond a priori. Le classement ordonne par écart, puis
excédent de collisions, collisions cumulées, répétitions et redondance.

Vérifié : les trois plans de l'opérateur se classent par excédent 0, 2,
3, ce que chaque compte seul inverserait ; dominance et rang de bascule
épinglés à la main.

Assisted-by: Claude Opus 5.5
2026-10-05 22:52:29 -04:00
f5d1bb04bd [ADD] engine: diagnosis of what a configuration makes unavoidable
Before any search, the diagnosis states what no plan can avoid: missing
seats, the a priori ceiling, per-group collision floors in cumulative
occurrences, distinct pairs and excess, imposed returns, anchoring per
table, and the floor of the itinerary gap where the room is tight. A
floor it cannot prove is null, never zero, so the operator is never sent
to rerun towards a value the configuration forbids.

Checked: the large demonstration gives a floor of 1 with at least 24
mobiles; collision floors equal exact minima found by enumeration, the
§ 5.6 example of 8 collisions on 2 pairs included.

--- FR ---

[ADD] moteur : diagnostic de ce qu'une configuration rend inévitable

Avant toute recherche, le diagnostic énonce ce qu'aucun plan n'évite :
places manquantes, plafond a priori, planchers de collisions par groupe
en occurrences cumulées, paires distinctes et excédent, retours imposés,
ancrage par table, et le plancher de l'écart d'itinéraire là où la salle
est tendue. Un plancher qu'il ne sait pas prouver vaut null, jamais
zéro : l'opérateur n'est jamais envoyé relancer vers une valeur que la
configuration interdit.

Vérifié : la grande démonstration donne un plancher de 1 pour 24 mobiles
au moins ; les planchers de collisions égalent les minimums exacts
trouvés par énumération, l'exemple du § 5.6 compris.

Assisted-by: Claude Opus 5.5
2026-10-05 22:52:29 -04:00
74c21ee031 [ADD] search: seeded late acceptance over a lexicographic score
A proposition is the best plan a late-acceptance descent finds from its
derived seed. It stops on a count of moves, never on a duration, so one
seed gives one plan on any machine. The score is a six-integer tuple
compared lexicographically: largest gap to the a priori ceiling, sum of
squared gaps, collision excess, cumulative collisions, repeats with chosen
returns, redundancy. An incremental state scores a swap in O(capacity);
the full recomputation, from the measure, checks it.

Checked: the small demonstration reaches 8 met for all twelve with no
special case; incremental and full scores agree up to 10 000 moves.

--- FR ---

[ADD] recherche : acceptation tardive ensemencée, score lexicographique

Une proposition est le meilleur plan que trouve une descente par
acceptation tardive depuis sa graine dérivée. Elle s'arrête sur un compte
de mouvements, jamais sur une durée : une graine donne un plan sur toute
machine. Le score est un n-uplet de six entiers comparé dans l'ordre
lexicographique : plus grand écart au plafond a priori, somme des carrés
des écarts, excédent de collisions, collisions cumulées, répétitions et
retours choisis, redondance. Un état incrémental évalue un échange en
O(capacité) ; le recalcul complet, tiré de la mesure, le vérifie.

Vérifié : la petite démonstration atteint 8 rencontres pour les douze sans
cas particulier ; scores incrémental et complet s'accordent jusqu'à
10 000 mouvements.

Assisted-by: Claude Opus 5.5
2026-10-05 22:52:29 -04:00
a2a3a7eca8 [ADD] demo: four seeded configurations, forged names, witness round
The demonstrations are built from a seed in a fixed draw order. The large
one seats 260 at 29 tables of 8 and 4 of 7 with one facilitator each, its
variant at 33 tables of 8; the small one seats 12 at four tables of 3 in
groups 4/4/4, its conflict variant 5/4/3. Group sizes follow the weighted
law, a seed with no witness round is refused, and forged names appear
nowhere else in the repository.

Checked: the large configuration is tight at 260 seats; each of the four
refusals raises its named error; a wrong table split fails 12 tests.

--- FR ---

[ADD] demo : quatre configurations ensemencées, noms forgés, tour témoin

Les démonstrations se construisent depuis une graine, dans un ordre de
tirages fixé. La grande assoit 260 personnes à 29 tables de 8 et 4 de 7,
un animateur par table, sa variante à 33 tables de 8 ; la petite assoit
12 personnes à quatre tables de 3 en groupes 4/4/4, sa variante de
conflit 5/4/3. Les tailles de groupe suivent la loi pondérée, une graine
sans tour témoin est refusée, et les noms forgés n'apparaissent nulle
part ailleurs dans le dépôt.

Vérifié : la grande configuration est tendue à 260 sièges ; chacun des
quatre refus lève son erreur nommée ; une mauvaise répartition des tables
fait échouer 12 épreuves.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:34 -04:00
926a3ff21f [ADD] engine: invariant and indicator verifiers, as application code
Both verifiers ship with the application and run on every generation and
every loaded file: the first judges a plan against the instance, the
second the line N − 1 ≥ a priori ≥ realised ≥ met for each person. Neither
throws on a content defect — each defect is a named violation — and
neither modifies what it receives.

Checked: one mutation per violation code yields that violation and no
other; frozen inputs stay intact; three mutants that wrote to them fail.

--- FR ---

[ADD] moteur : vérificateurs d'invariants et d'indicateurs, applicatifs

Les deux vérificateurs sont livrés avec l'application et jouent à chaque
génération et à chaque fichier chargé : le premier juge un plan contre
l'instance, le second la ligne N − 1 ≥ a priori ≥ réalisé ≥ rencontres
pour chacun. Aucun ne lève sur un défaut du contenu — chaque défaut est
une violation nommée — et aucun ne modifie ce qu'il reçoit.

Vérifié : une mutation par code produit cette violation et aucune autre ;
les entrées gelées restent intactes ; trois mutants qui y écrivaient
échouent.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:34 -04:00
9efcfc9973 [ADD] engine: ceilings a priori and realised, exact dynamic programme
The a priori ceiling is maximised over admissible itineraries by a dynamic
programme over tables, free rounds and capped seats, memoised by
signature, with an exhaustive enumeration as its oracle. The realised
ceiling counts the occupancy of each table at each round, not its
capacity, so a lack of zero means nothing left to take from that plan.

Checked: anchored 16 and mobile 19 on four tables of five; 28, 27, 28 and
24 on the large shape; the programme equals the enumeration on random
instances; five mutants of the formula and the programme each fail.

--- FR ---

[ADD] moteur : plafonds a priori et réalisé, programmation dynamique

Le plafond a priori se maximise sur les itinéraires admissibles par une
programmation dynamique sur les tables, les tours libres et les sièges
plafonnés, mémoïsée par signature, avec une énumération exhaustive pour
oracle. Le plafond réalisé compte l'occupation de chaque table à chaque
tour, non sa capacité : un manque nul veut dire que ce plan n'a plus rien
à reprendre.

Vérifié : ancré 16 et mobile 19 sur quatre tables de cinq ; 28, 27, 28 et
24 sur la forme de la grande ; la programmation égale l'énumération sur
des instances tirées ; cinq mutants de la formule et du calcul échouent.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:34 -04:00
30045182e7 [ADD] engine: indicators measured by full recomputation
Full recomputation is the measure every displayed figure comes from
(§ 5.10). It keeps the three collision units apart — cumulative
occurrences, distinct pairs, their excess — splits table returns and
repeated meetings into those the engine chose and those the reservations
impose, and gives null, never zero, for an empty population.

Checked: the small demonstration's perfect plan gives 8 met, A = 2,
r = 6, d = 0.25 for all twelve; spread and concentrated plans give
excess 0 and 4.

--- FR ---

[ADD] moteur : indicateurs mesurés par recalcul complet

Le recalcul complet est la mesure dont sort tout chiffre affiché
(§ 5.10). Il tient séparées les trois unités de collision — occurrences
cumulées, paires distinctes, leur excédent —, partage les retours à une
table et les rencontres répétées entre ceux que le moteur a choisis et
ceux qu'imposent les réservations, et rend null, jamais zéro, pour une
population vide.

Vérifié : le plan parfait de la petite démonstration donne 8 rencontres,
A = 2, r = 6, d = 0,25 pour les douze ; plans réparti et concentré
donnent un excédent de 0 et de 4.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:34 -04:00
518ef93f67 [ADD] engine: configuration normalised into an indexed instance
The engine works on dense arrays, not on the operator's objects.
normaliser checks the configuration, derives anchored, partially fixed and
mobile statuses from the reservations themselves, and suspends an excluded
person's reservations without stopping on them. It never refuses a room
that is too small: that is a property of the configuration, which the
diagnosis names and the search refuses (§ 5.9). A plan converts both ways
between ids and indices, seats in ascending id.

Checked: a reservation after an excluded one, and a conflict found under
« tous », each fail their mutant; an independent oracle agreed throughout.

--- FR ---

[ADD] moteur : configuration normalisée en une instance indexée

Le moteur travaille sur des tableaux denses, pas sur les objets de
l'opérateur. normaliser vérifie la configuration, dérive les statuts
ancré, partiellement fixé et mobile des réservations elles-mêmes, et
suspend les réservations d'un exclu sans s'y arrêter. Il ne refuse jamais
une salle trop petite : c'est une propriété de la configuration, que le
diagnostic nomme et que la recherche refuse (§ 5.9). Un plan passe dans
les deux sens des ids aux index, sièges par id croissant.

Vérifié : une réservation après celle d'un exclu, et un conflit découvert
sous « tous », font chacune tomber leur mutant ; un oracle indépendant
concorde partout.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:06 -04:00
cd9ea442a6 [ADD] prng: PCG32 checked against the reference C implementation
The demonstrations and the search must give the same plan from the same
seed on any machine, so every draw comes from one generator with explicit
state. PCG32 runs on 16-bit limbs without BigInt, seeded as
pcg32_srandom_r; bounded draws reject as pcg32_boundedrand_r does, and the
shuffle loop is the reference demo's. Expected values come from compiling
and running the reference implementation, never from this code.

Checked: outputs, coins, dice and deck match the reference demo; a wrong
multiplier, rotation or remainder each fail.

--- FR ---

[ADD] prng : PCG32 vérifié contre l'implémentation C de référence

Les démonstrations et la recherche doivent rendre le même plan pour la
même graine sur toute machine : chaque tirage vient d'un seul générateur à
état explicite. PCG32 calcule par mots de 16 bits sans BigInt, ensemencé
comme pcg32_srandom_r ; le tirage borné rejette comme
pcg32_boundedrand_r, et la boucle de mélange est celle de la démo de
référence. Les valeurs attendues sortent de l'implémentation de référence
compilée et exécutée, jamais de ce code.

Vérifié : sorties, pièces, dés et paquet égalent la démo de référence ;
un multiplicateur, une rotation ou un reste faussés échouent chacun.

Assisted-by: Claude Opus 5.5
2026-10-05 17:27:06 -04:00
9fc104d0e9 [ADD] skeleton: Capacitor web app that shows its dated version
The engine to come must be proven against oracles under node in seconds,
so the skeleton sets three test projects: node, watched; node-long; and a
real Chromium that reads computed styles in both themes. The version
lives in version.json alone; a check refuses eight divergences — technical
form, generated module, changelog head, stray version strings — and a
build guard keeps test files and fixture assets out of the bundle.

Checked: on this commit alone, 73 node tests, 7 browser tests and the
version check pass; the guard fails on a fixture joined as an asset.

--- FR ---

[ADD] squelette : application web Capacitor qui affiche sa version datée

Le moteur à venir doit s'éprouver contre des oracles sous node en
quelques secondes : le squelette pose trois projets d'épreuve — node,
sous surveillance ; node-long ; et un vrai Chromium qui lit le style
calculé dans les deux thèmes. La version vit dans version.json seul ; un
contrôle refuse huit divergences — forme technique, module engendré,
tête du changelog, chaînes de version égarées — et une garde de
construction tient fichiers et données d'épreuve hors du paquet.

Vérifié : sur ce commit seul, 73 épreuves node, 7 navigateur et le
contrôle de version passent ; la garde échoue sur une donnée jointe.

Assisted-by: Claude Opus 5.5
2026-10-05 13:13:13 -04:00