L'ÉCONOMIE — la valeur sort de l'opération : le battement frappe le bus, mais il s'arrête TROIS portes avant θ
ouvrir la planche en plein écran → · 33 pièces · 20 traverses · 12 marges
Le premier output est bâti et tourne jusqu'au bus, mais il meurt à trois portes RAM vides AVANT d'atteindre θ (témoin de cohérence · chaos · seuil civ 1.0) ; θ est la dernière ligne du DESSIN, pas celle qui refuse aujourd'hui — et le second output (captation temple/forge/mission), seul numérateur de θ, n'a aucun publieur serveur et son autorité est un frozenset() vide.
Mesuré en LECTURE SEULE au COMMIT 8441e8cdf (git show HEAD:...), jamais dans l'arbre de travail — or .github/workflows/ci.yml, backend/app/main.py, backend/app/core/bus_acl.py, refus_publics.py, security.py, ratelimit.py et ~60 routeurs sont MODIFIÉS mais non commités : tout ce rapport peut être en retard d'un geste non commité. Aucune base interrogée (ni atom_db sur 138.197.132.63, ni locale) : donc 'θ = 0' est une conclusion ARITHMÉTIQUE sur l'absence d'écrivain de captation, pas une lecture de treasury_transactions — et la valeur réelle de monetary.burn_rate_on_transactions en production est NON ÉTABLIE. Aucun serveur interrogé : 'monté' se lit dans main.py, et register_router (main.py:1637-1655) AVALE l'ImportError d'un routeur non-core — l'atteignabilité runtime de emission_state_router, event_bus, armure, accounting_router est donc NON ÉTABLIE. Les contre-épreuves n'ont PAS été lancées ici (règle : je ne dis jamais 'verte' une garde non lancée) : je mesure seulement qu'aucun job de CI ne les exécute ; leur verdict local est NON ÉTABLI. _live_records() de geo_coherence_service et les stats RAM de babel_macro_decoder n'ont pas été observées en exercice : je conclus 'zéro au repos' depuis la lecture du code, pas depuis un processus vivant. Le second arbre (≈278 .py hors backend/app/) a été fouillé par git grep sur l'INTÉGRALITÉ de HEAD pour emit_energy, governed_restitution, arecord_entry et les 4 sujets de captation — mais PAS exhaustivement pour les autres pièces. Le frontend n'a été fouillé que pour forge-alchemy/forge-energy-bridge, presentation-economie.html, atom-universe.js, runtime-guards.js et governance-init.js. Aucun journal GitHub Actions consulté (gh absent de la machine) : l'affirmation 'exit 4, zéro test' reprend une émulation locale datée du 2026-09-30 sur un HEAD antérieur, dont j'ai RE-VÉRIFIÉ ici les deux prémisses de code (absence de requirements-test dans ci.yml, présence de timeout+--strict-config dans pytest.ini) mais pas la sortie elle-même.
ne pas dessiner
| PointZeroHeartbeatScheduler produit | → | pointzero.heartbeatbackend/app/main.py:993 · backend/app/services/sanctum/point_zero_heartbeat.py:155-198 | |
| pointzero.heartbeat alimente | → | clock.fractal.snapshot (×101)backend/app/services/fractal_clock_service.py:164-182, :209 · backend/app/main.py:1015, :1068 | |
| clock.fractal.snapshot traverse | → | cosmic_circuit.circulatebackend/app/main.py:1024 · backend/app/services/cosmic_circuit.py:1113-1137 | |
| cosmic_circuit.circulate produit | → | work_unitsbackend/app/services/cosmic_circuit.py:534, :564, :575-583 — chaos=0 au repos ET témoin absent ⇒ work_units=0 (fail-close voulu) | |
| cosmic_circuit autorise | → | babel.fractal.energy.generatedbackend/app/core/bus_acl.py:81-83 (source autorisée) · cosmic_circuit.py:1090-1101 | |
| babel.fractal.energy.generated alimente | → | babel_fractal_treasury_consumerbackend/app/main.py:838-841 · babel_fractal_treasury_consumer.py:412-451 | |
| babel_fractal_treasury_consumer (seuil civ 1.0) gouverne | → | governed_rewardbackend/app/services/babel/babel_fractal_treasury_consumer.py:72, :545-553 — net_value_score=0 < 1.0 ⇒ skip 'below_threshold_civ' AVANT governed_reward : θ n'est pas consulté | |
| governed_reward (emission_producer) traverse | → | θ (reserve_emission_in_transaction)backend/app/services/babel/governed_mint.py:449-452 · g4_emission_guard.py:187-280 | |
| θ gouverne | → | treasury_transactions (captation:%)backend/app/services/babel/g4_emission_guard.py:165-180 | |
| temple_decoder.compute_energy_yield produit | → | babel.temple.energy.generated0 publieur dans tout le dépôt au commit ; backend/app/core/bus_acl.py:84 = frozenset() | |
| forge (navigateur) produit | → | forge.product.distributed / forge.pierre.philosophalefrontend/js/forge-alchemy.js + forge-energy-bridge.js : 0 appel réseau ; backend/app/routers/event_bus.py:90,156 ; bus_acl.py:86-87 = frozenset() | |
| mission_center_service.complete_mission produit | → | mission.rewardedbackend/app/services/mission_center_service.py:621 (raise MissionProofGateUnavailable) ; bus_acl.py:85 = frozenset() | |
| emit_energy produit | → | bioacoustic.energy.emittedbackend/app/services/bioacoustic/energy_emitter.py:49 — 0 appelant de production sur l'INTÉGRALITÉ de HEAD (deux arbres) | |
| bioacoustic_fractal_pipeline_bridge autorise | → | babel.fractal.energy.generatedbackend/app/core/bus_acl.py:81-83 + main.py:874-885 — autorisé et câblé, amont vide | |
| fractal_pipeline (publish positionnel) produit | → | babel.fractal.energy.generatedbackend/app/services/babel/fractal_pipeline.py:928-932 — source par défaut 'system', refusée par bus_acl.py:165-192 | |
| captation (temple/forge) alimente | → | numérateur de θbackend/app/services/babel/g4_emission_guard.py:165-180 — aucun écrivain atteignable ⇒ captation_24h=0 ⇒ θ=0 | |
| armure 15D alimente | → | économie (treasury / ur_coin)backend/app/services/armure_15d.py, armure_store.py, backend/app/routers/armure.py — 0 occurrence des termes monétaires | |
| governed_restitution produit | → | treasury (tx_type restitution)backend/app/services/babel/governed_mint.py:249-308 — organe bâti, 0 appelant de production | |
| accounting_records (grand livre nº2) alimente | → | θbackend/app/models/accounting_contract.py:18 · accounting_engine.py:197-295 — θ ne lit que treasury_transactions | |
| CI (job backend) gouverne | → | contre_epreuves_economie.github/workflows/ci.yml (job backend, 0 'requirements-test') · backend/pytest.ini (timeout = 30 sous --strict-config) ⇒ exit 4, 0 test exécuté |
| 1 | θ — LE GOULOT. La formule et son fail-safeθ = min(1, captation_24h / max(MA7j,1)) ; captation_24h <= 0 → Decimal(0). Règle : lecture du COMMIT 8441e8cdf (git show HEAD:...)backend/app/services/babel/g4_emission_guard.py:54-64 · confirmé dans le code | |
| 2 | θ — SA RÈGLE DE LECTURE : le numérateur ne regarde QU'UN SEUL livre1 seule table lue : TreasuryTransaction, filtre tx_type='reward' AND description LIKE 'captation:%' ; fenêtres 24 h et 24×7 h / 7backend/app/services/babel/g4_emission_guard.py:165-180 (_captation_window) · confirmé dans le code | |
| 3 | PREMIER OUTPUT — l'horloge souveraine : c'est le HEARTBEAT, pas le bio-tick workercadence CYCLE_9 = 39 s ; le payload porte les 7 champs d'identité causale (schema, schema_version, tick_identity_version, clock_id, epoch_id, tick_id, event_id)backend/app/main.py:993 (await get_heartbeat_scheduler().start()) · backend/app/services/sanctum/point_zero_heartbeat.py:155-198 · confirmé dans le code | |
| 4 | PREMIER OUTPUT — le fan-out : le battement devient bien 101 instantanés nommés101 = 3 soleils (cosmic_circuit.py:74-78) + 15 ancres géomag (atom_canon/empirique/geomag_regulators.py, len=15 mesuré par appel) + 83 temples (data/temples/registre/registre-maitre-sites-temples.json, filtre hz_canonique+lat+lon, dédoublonné sur slug — recompté ce tour)backend/app/main.py:1068 (register_canonical_nodes(tier='rich')) · backend/app/services/node_registry_bootstrap.py:139-200 · backend/app/services/fractal_clock_service.py:164-182 · confirmé dans le code | |
| 5 | ⚠ DES 101, UN SEUL PEUT FRAPPER — l'alvéole dédoublonne sur l'identité du tick1 frappe autorisée par (clock_id, epoch_id, tick_id, event_id) ; les 100 autres snapshots du même battement rendent mint_allowed=Falsebackend/app/services/cosmic_circuit.py:768 (MintIdentityAlveolus.decide) + fractal_clock_service.py:168-177 (identité figée AVANT le fan-out) · confirmé dans le code | |
| 6 | ⚠ PORTE 1 AVANT θ — le témoin de cohérence, fail-close à work_units = 0aggregate_r() rend None si _live_records() est vide (geo_coherence_service.py:220-223) — mémoire de processus, vide au démarragebackend/app/services/cosmic_circuit.py:575-583 (if not witness_present → motor_state='sans_temoin' ; work_units = 0) · :191-207 (_temoin_vivant → geo_coherence_service.aggregate_r()) · confirmé dans le codeaucun — c'est une garde VOULUE. Mais elle coupe le battement AVANT θ : la planche annoncée faisait de θ le point d'arrêt | |
| 7 | ⚠ PORTE 2 AVANT θ — le chaos, zéro au reposchaos_level = n_refused/(n_decoded+n_refused) du babel_macro_decoder (RAM) → 0.0 quand total=0 ; chaos=0 ⇒ energy_generated=0 ⇒ work_units=0backend/app/services/cosmic_circuit.py:534 (chaos = _clamp_ratio(tick.get('chaos_level'), default=0.0)) · :564 (work_units = floor(energy_generated / U_METRE)) · fractal_clock_service.py:474 · confirmé dans le codela docstring de g4_emission_guard.py:21-23 affirme encore 'chaos_level absent du snapshot' — PÉRIMÉE : il y est (fractal_clock_service.py:474-476). Ce n'est plus l'absence du champ, c'est sa valeur | |
| 8 | ⚠ PORTE 3 AVANT θ — le seuil civ, et c'est LUI qui refuse aujourd'huinet_value_score = work_units ; seuil civ = 1.0 ; work_units=0 ⇒ skip_reason='below_threshold_civ' AVANT tout appel à governed_rewardbackend/app/services/babel/babel_fractal_treasury_consumer.py:72 (MIN_NET_VALUE_FOR_MINT_CIV = 1.0) · :75-85 · :545-553 (skip below_threshold) · cosmic_circuit.py:265-275 (tree_scope='civ', net_value_score = work_units) · confirmé dans le codeaucun — mais ce seuil est la vraie dernière ligne atteinte. θ n'est JAMAIS consulté tant que work_units < 1 | |
| 9 | PREMIER OUTPUT — la circulation qui frappe : cosmic_circuit est monté et publie bienabonné à clock.fractal.snapshot ; publie babel.fractal.energy.generated avec source='cosmic_circuit' (:1096), seulement si mint_decision['mint_allowed']backend/app/main.py:1024 (attach_cosmic_circuit_to_bus()) · backend/app/services/cosmic_circuit.py:1063-1101 · :1113-1137 · confirmé dans le code | |
| 10 | PREMIER OUTPUT — le consommateur frappe, et il LIT le refussur refus G4_THROTTLED → retour minted=0 et 'RIEN NE PART sur Hedera' ; sur autre refus → refused_governed_count++ et compteur BILAN_HONNETE_REFUSALSbackend/app/main.py:838-841 (subscribe) · backend/app/services/babel/babel_fractal_treasury_consumer.py:598-653 (governed_reward emission_producer='fractal' puis lire_frappe) · confirmé dans le code | |
| 11 | SECOND OUTPUT / FORGE — le consommateur serveur est monté et affamé2 topics abonnés (forge.product.distributed, forge.pierre.philosophale) ; 0 publieur dans les deux arbres ; ACL = frozenset() pour les deuxbackend/app/main.py:912-918 · backend/app/services/babel/forge_energy_consumer.py:196-231 (subscribe) · :412-433 (governed_reward captation + lire_frappe) · confirmé dans le code | |
| 12 | SECOND OUTPUT / FORGE — les producteurs vivent dans le navigateur, sans un seul appel réseau0 occurrence de atomPost / atomFetch / fetch( dans les deux fichiers au commitfrontend/js/governance-init.js:372-373 (forge-alchemy.js + forge-energy-bridge.js CHARGÉS) · frontend/js/forge-alchemy.js, frontend/js/forge-energy-bridge.js · confirmé dans le code | |
| 13 | SECOND OUTPUT / TEMPLE — consommateur monté, recalcul fail-close, écriture de captation0 publieur de babel.temple.energy.generated dans tout le dépôt (backend + frontend) au commit ; ACL = frozenset()backend/app/main.py:929-935 · backend/app/services/babel/babel_temple_treasury_consumer.py:102-122 · :227-260 (rendement non recalculable → mint REFUSÉ) · :289-308 · confirmé dans le codele publieur serveur. temple_decoder.compute_energy_yield existe et n'est jamais publié | |
| 14 | SECOND OUTPUT / ENCRYPTION — l'armure est montée et n'a aucun fil économique0 occurrence de treasury / ur_coin / governed_reward / credit dans les trois fichiers au commitbackend/app/main.py:1957 (register_router armure) · backend/app/services/armure_15d.py · armure_store.py · backend/app/routers/armure.py · confirmé dans le code | |
| 15 | LE GRAND LIVRE nº1 — le gouverneur de frappe, le SEUL que θ littable treasury_transactions ; idempotence durable par index unique partiel v82_256 sur task_id ; refus RENDU, jamais levébackend/app/services/babel/governed_mint.py:36 (CAPTATION_PREFIX) · :59 (G4_THROTTLED) · :187 (lire_frappe) · :393-512 · g4_emission_guard.py:165-180 · confirmé dans le code | |
| 16 | ⚠ LE GRAND LIVRE nº2 — il y en a bien DEUX, et θ n'en voit qu'unarecord_entry (la seule qui persiste) : 2 appelants de production — accounting_router.py:124 et wallet_portfolio.py. θ ne lit QUE treasury_transactionsbackend/app/models/accounting_contract.py:18 (table accounting_records) · backend/app/services/accounting_engine.py:197-245 (record_entry écrit dans self._ledger, dict RAM) · :273-295 (arecord_entry persiste) · backend/app/main.py:2362 · confirmé dans le codeaucun pont entre accounting_records et le numérateur de θ ; le constructeur par défaut écrit en mémoire de processus | |
| 17 | LES PORTES DE VALEUR SONT FERMÉES — fail-close, délibérémentla garde est APPELÉE à chaque publish ; sur refus : status='red', blocked=True, block_reason nommé, 0 handlerbackend/app/core/bus_acl.py:165-192 (EXACT_TOPIC_SOURCES toujours fail-close, hors drapeau BUS_ACL_ENFORCE) · backend/app/services/event_bus.py:510-528 (check_publish appelé, ImportError NON avalé, handlers_called=0 sur blocage) · confirmé dans le code | |
| 18 | ✅ CORRIGÉ DEPUIS LES FICHES — la page publique ne ment plusla phrase « créditée immédiatement » a disparu ; la page dit maintenant « Ce qui est fermé aujourd'hui : l'endpoint […] refuse les appels ordinaires […] aucun crédit n'est donc émis depuis le navigateur, et aucune des quatre parts n'est annoncée comme versée »frontend/presentation-economie.html (section Organe 5, ~l.100-105) · confirmé dans le code | |
| 19 | ✅ CORRIGÉ DEPUIS LES FICHES — la garde sourde du cortex entend à nouveaule producteur rend désormais blocked: true ; le lecteur du routeur de cortex, qui tourne à chaque événement porteur de from/to, n'est plus sourdfrontend/js/runtime-guards.js:160-170 (retourne allowed:false ET blocked:true) · frontend/js/atom-universe.js:291 (lit result.blocked) · confirmé dans le code | |
| 20 | θ — SES ENTRÉES RÉELLES (le compte de la fiche est PÉRIMÉ)2 entrées de production (fractal via emission_producer, mission via emission_allowance) + 1 lecture pure. La fiche du 2026-09-10 annonçait 3 appelants dont fractal_seed : fractal_seed_treasury_consumer ne touche PLUS θ (0 occurrence de governed_reward / emission_allowance dans ce fichier au commit)backend/app/services/babel/governed_mint.py:449-452 · backend/app/services/mission_reward_consumer.py:109-111 · backend/app/routers/babel/emission_state_router.py:305 · confirmé dans le codele 3e appelant annoncé (fractal_seed) a disparu : il refuse désormais par 'hedera_mint_receipt_authority_unavailable' (fractal_seed_treasury_consumer.py:161-168) | |
| 21 | ⚠ L'AUTRE HORLOGE — FractalBioTickWorker démarre et ne publie RIENdémarré, 0 abonnement bus — journal explicite 'FractalBioTickWorker démarré sans bus (fractal_causal_clock_unassigned)'backend/app/main.py:856 (await bio_tick_worker.start()) + main.py:851-860 · confirmé dans le codele raccord à un tick durable ; nommer le bio-tick worker 'l'horloge souveraine' serait faux — il tourne hors du circuit de frappe | |
| 22 | ⚠ L'AUTORITÉ — TROIS entrées non vides sur 7, pas une (claim RÉFUTÉ)7 entrées ; 3 NON VIDES : clock.fractal.snapshot={fractal_clock_service} · bioacoustic.energy.emitted={bioacoustic_energy_emitter} · babel.fractal.energy.generated={cosmic_circuit, bioacoustic_fractal_pipeline_bridge} (DEUX sources). 4 VIDES : temple, mission, forge.product.distributed, forge.pierre.philosophalebackend/app/core/bus_acl.py:78-87 · confirmé dans le codela planche annonçait « UNE SEULE entrée non vide sur 7 » : faux au commit. Et « cosmic_circuit SEUL publieur autorisé » n'est vrai qu'avec le qualificatif « en exercice » explicité ci-dessous | |
| 23 | ⚠ LE SECOND PUBLIEUR AUTORISÉ EXISTE, CÂBLÉ, ET SON AMONT EST VIDEemit_energy( : 0 appelant de production sur TOUT le dépôt au commit (git grep 'emit_energy' HEAD -- . : seulement 2 fichiers de tests, le ré-export __init__.py:12, 3 commentaires et 6 docs). Les DEUX arbres sont couverts : la recherche porte sur l'intégralité de HEAD, pas sur backend/app/ seulbackend/app/main.py:874-885 (FractalPipelineBridge souscrit) · backend/app/services/bioacoustic/fractal_pipeline_bridge.py:19,101-121 · backend/app/services/bioacoustic/energy_emitter.py:49 · confirmé dans le codeun appelant serveur de emit_energy. Le pont est une conduite propre branchée sur un robinet fermé | |
| 24 | LE REFUS — la couture atomique : BÂTIE pour fractal, PAS pour mission1 commit unique sur le chemin fractal (emission_producer fourni) ; 2 transactions séparées sur le chemin mission (emission_allowance committe seule, puis governed_reward SANS emission_producer)backend/app/services/babel/governed_mint.py:393-512 (verrou causal + G4 + ledger sous UN commit) · backend/app/services/mission_reward_consumer.py:109-111 puis :124-129 · confirmé dans le codele chemin mission ne passe pas par reserve_emission_in_transaction : sa réservation G4 et son écriture au grand-livre ne sont pas dans la même transaction | |
| 25 | SECOND OUTPUT / FORGE — la porte refuse, mais par un code GÉNÉRIQUE, pas « par son nom »2 portes REST ; liste du pont = VIDE ; /publish = liste positive de PUBLIC_PUBLISH_ALLOWED_TOPICS (bus_topics.py:800) ; les 7 topics qui frappent sont refusés inconditionnellementbackend/app/routers/event_bus.py:90 (FRONTEND_BRIDGE_ALLOWED_TOPICS = frozenset()) · :156 (TOPICS_QUI_FRAPPENT = frozenset(EXACT_TOPIC_SOURCES)) · :158 (PUBLISH_REFUS_CODE) · main.py:1847 (router monté) · confirmé dans le codele commentaire :110-120 dit explicitement que le refus a été DÉPOUILLÉ de son nom de sujet : « Les deux portes rendent désormais event_topic_forbidden, et rien d'autre ». « Refuse par son nom » décrit l'état ANTÉRIEUR | |
| 26 | ⚠ MISSION — la soudure est posée, et son amont a été RETIRÉ depuis les fichesconsommateur monté, lire_frappe branché ✔ ; publieur de mission.rewarded : 0 — complete_mission LÈVE 'mission_proof_gate_unavailable' ; ACL = frozenset()backend/app/main.py:1033 (attach_to_bus) · backend/app/services/mission_reward_consumer.py:109-150 · backend/app/services/mission_center_service.py:621 (raise MissionProofGateUnavailable) · backend/app/core/bus_acl.py:85 · confirmé dans le codeTROIS fois coupé : plus d'émetteur, ACL vide, porte REST fermée. Et la docstring du consommateur (mission_reward_consumer.py:6) cite encore « mission_center_service.py:333 » comme émetteur — PÉRIMÉE. La soudure est posée sur un tuyau sans amont | |
| 27 | ⚑ LE CALCUL EST SOUSTRAIT — vrai dans la formule, NEUTRALISÉ dans le chemin vivantla soustraction existe dans fractal_pipeline ; le seul publieur autorisé en exercice (cosmic_circuit) écrit compute_cost_ms = 0.0 en dur — ni crédité, ni soustraitbackend/app/services/babel/fractal_pipeline.py:316-331 (_compute_net_value : production − compute_cost_ms × 0.01) · backend/app/services/cosmic_circuit.py:272 ("compute_cost_ms": 0.0) · confirmé dans le codela doctrine du prix inverse n'est exercée par AUCUN chemin atteignable | |
| 28 | ⚑ LE « MINAGE » = LONGUEUR EN OCTETS — vrai, mais sur le chemin que l'ACL REFUSEoctets/1024 × 10 ; 0 nonce, 0 difficulté. Mais publish positionnel ⇒ source par défaut 'system', retiré de TRUSTED_SOURCES et absent de EXACT_TOPIC_SOURCES ⇒ fail-close. Le chemin vivant (cosmic_circuit:259-298) calcule ur_coin_minted = work_units, aucune longueur d'octetsbackend/app/services/babel/fractal_pipeline.py:255-265 (len(utf-8)/1024 × 10 × multiplicateur) · :884-932 (publish POSITIONNEL, sans source=) · backend/app/core/bus_acl.py:81-83 · confirmé dans le codela formule-octets décrit un battement refusé à la porte ; la citer comme « le minage » attribue au système vivant une règle qu'il n'applique pas | |
| 29 | ⚠ LA RESTITUTION NE SE DÉGUISE PAS — l'organe est bâti, la gâchette n'existe pasgoverned_restitution : 0 appelant de production sur TOUT le dépôt (git grep HEAD -- . : sa propre définition, 1 commentaire, 5 fichiers de tests)backend/app/services/babel/governed_mint.py:246 (RESTITUTION_PREFIX) · :249-308 (governed_restitution) · backend/app/services/treasury_service.py:1503-1531 (arestitute_credits : tx_type distinct, jamais un signe) · confirmé dans le codel'appelant. Un mécanisme anti-déguisement que rien ne déclenche | |
| 30 | LE CADRAN HONNÊTE — il dit « db_absente » au lieu de rendre 0GET /api/v2/babel/emission/state ; 2 producteurs de captation déclarés (captation:temple:%, captation:forge:%)backend/app/routers/babel/emission_state_router.py:1-60 · :284-305 (compute_theta en lecture) · backend/app/main.py:1988 (register_router, non-core) · confirmé dans le code« monté » est conditionnel : register_router (main.py:1637-1655) AVALE l'ImportError pour un routeur non-core — il l'inscrit dans _registered_broken et journalise, sans faire échouer le démarrage. L'atteignabilité réelle ne se prouve qu'au runtime, et je n'ai interrogé aucun serveur | |
| 31 | ⚠ LA TAXE DE CIRCULATION — PAS codée en dur : elle est GOUVERNÉE (claim RÉFUTÉ)valeur lue dans economic_settings (monetary.burn_rate_on_transactions), semée à 1.0 puis divisée par 100 via _PERCENTAGE_FRACTION_KEYS ⇒ 0.01. Le 0.01 littéral est le REPLI, pas la règlebackend/app/services/treasury_service.py:154-165 (_get_runtime_burn_rate) · :130 (fallback Decimal('0.01')) · backend/app/services/economic_settings_service.py:18,253 · backend/app/data/economy_data.py:173 · backend/alembic/versions/v82_044_fix_burn_rate_seed.py · confirmé dans le codela planche annonçait « codée en dur ». Faux : le mécanisme de vote existe. Ce qui n'est PAS établi, c'est la valeur réellement en base en production — je n'ai interrogé aucune base | |
| 32 | HEDERA — le serveur signe à la place du porteurune seule clé d'opérateur serveur signe ; admin/supply/freeze/pause keys = la clé de l'opérateur (:272-275). Mock par défautbackend/app/services/hedera_service.py:209-210, 260, 382-391 (PrivateKey.fromString(self.config.operator_key) puis .sign(operator_key)) · backend/app/services/babel/babel_fractal_treasury_consumer.py:292 (HEDERA_LIVE_MODE, default=False) · confirmé dans le codele porteur ne signe nulle part. Et l'appel on-chain n'est atteint qu'APRÈS une frappe gouvernée réussie : inatteignable tant que les trois portes amont rendent 0 | |
| 33 | ⚠ LES CONTRE-ÉPREUVES — ÉCRITES, et AUCUNE n'est exécutée en CI (claim RÉFUTÉ)7 fichiers de contre-épreuves au commit (test_ce_eco_publieurs, _armure_inventaire, _nft_emissions, _requirements_hedera, _identifiant_fabrique, _user_get + _ast_deux_arbres). CI : pytest-timeout absent de requirements.txt, requirements-test.txt installé par 0 job sur 4 ⇒ 'Unknown config option: timeout' sous --strict-config ⇒ code 4, ZÉRO test exécuté.github/workflows/ci.yml (job backend : pip install -r requirements.txt puis pip install pytest pytest-asyncio httpx ; 0 occurrence de 'requirements-test') · backend/pytest.ini (timeout = 30 + --strict-config) · backend/requirements-test.txt:16 (pytest-timeout) · backend/tests/contre_epreuves_economie/ · confirmé dans le codeUNE ligne : pip install -r requirements-test.txt dans le job backend. Le second geste (les 6 marqueurs alembic/atom/mapping/vibration/harmonics/creative_layer) EST posé — pytest.ini les déclare au commit. Il reste le premier |
On ne remplace pas le nom canon, on le double : le terme reste l’autorité, la glose est une poignée. Le lexique entier est sur sa propre page.
Matière : PLANCHES-MATIERE-2-INSTITUTIONNEL-2026-10-03.json (sha256 5cc49a404485) — planche de matière « L'ÉCONOMIE — la valeur sort de l'opération : le battement frappe le bus, mais il s'arrête TROIS portes avant θ ». Générée par scripts/generer-planches-ancrage.py ; la version « avant » (avant le passage du sceptique) que la matière conserve n’est pas dessinée — c’est la version dégradée au doute qui l’est, et les marges portent les dégradations.