Compare commits

...

143 Commits

Author SHA1 Message Date
8605b7198f Merge pull request 'reset(archicrat-ia): resynchronise les sources DOCX/MDX canoniques' (#322) from chore/archicrat-ia-canonical-docx-mdx-resync-20260423 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 19s
CI / build-and-anchors (push) Successful in 36s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 8m5s
Reviewed-on: #322
2026-04-23 11:53:07 +00:00
d41aed040f reset(archicrat-ia): resynchronise les sources DOCX/MDX canoniques
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 33s
CI / build-and-anchors (pull_request) Successful in 37s
2026-04-23 13:51:27 +02:00
bf01a83268 Merge pull request 'Synchronise les contenus glossaire et ajoute les scripts de conversion DOCX/MDX' (#321) from chore/reinject-docx-mdx-and-glossaire-sync-20260423 into main
All checks were successful
CI / build-and-anchors (push) Successful in 35s
Proposer Apply (Queue) / apply-proposer (push) Successful in 28s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 9m56s
Reviewed-on: #321
2026-04-23 10:25:49 +00:00
5b427d5602 Synchronise les contenus glossaire et ajoute les scripts de conversion DOCX/MDX
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 37s
CI / build-and-anchors (pull_request) Successful in 34s
2026-04-23 12:04:31 +02:00
fa46971e76 Merge pull request 'reset(archicrat-ia): canonical docx import and anchors baseline' (#320) from reset/archicrat-ia-canonical-import-anchors into main
All checks were successful
CI / build-and-anchors (push) Successful in 54s
SMOKE / smoke (push) Successful in 12s
Deploy staging+live (annotations) / deploy (push) Successful in 8m25s
Proposer Apply (Queue) / apply-proposer (push) Successful in 8s
Reviewed-on: #320
2026-04-19 17:50:59 +02:00
c313587b26 reset(archicrat-ia): canonical docx import and anchors baseline
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 54s
CI / build-and-anchors (pull_request) Successful in 54s
2026-04-19 16:25:42 +02:00
4976ddcc16 Merge pull request 'fix/ch4-docx-sync-20260330' (#319) from fix/ch4-docx-sync-20260330 into main
All checks were successful
CI / build-and-anchors (push) Successful in 50s
Proposer Apply (Queue) / apply-proposer (push) Successful in 44s
SMOKE / smoke (push) Successful in 22s
Deploy staging+live (annotations) / deploy (push) Successful in 12m42s
Reviewed-on: #319
2026-03-30 16:08:47 +02:00
17e11f0322 fix(archicrat-ia): remove duplicated chapitre 4 heading
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 48s
2026-03-30 16:06:22 +02:00
7df18adfa8 fix(archicrat-ia): sync chapitre 4 from official docx and accept anchor reset
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 58s
2026-03-30 15:57:43 +02:00
535c5108e2 Merge pull request 'fix(archicrat-ia): drop duplicate chapter 3 heading' (#318) from fix/ch3-docx-sync-20260329 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 28s
CI / build-and-anchors (push) Successful in 47s
SMOKE / smoke (push) Successful in 12s
Deploy staging+live (annotations) / deploy (push) Successful in 11m38s
Reviewed-on: #318
2026-03-30 10:30:19 +02:00
20705f6c90 fix(archicrat-ia): drop duplicate chapter 3 heading
All checks were successful
SMOKE / smoke (push) Successful in 2s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-30 10:26:22 +02:00
eabd2f5f29 Merge pull request 'fix(archicrat-ia): sync chapitre 3 from official docx and accept anchor reset' (#317) from fix/ch3-docx-sync-20260329 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 23s
CI / build-and-anchors (push) Successful in 47s
SMOKE / smoke (push) Successful in 9s
Deploy staging+live (annotations) / deploy (push) Successful in 9m38s
Reviewed-on: #317
2026-03-29 21:57:44 +02:00
482151c31c fix(archicrat-ia): sync chapitre 3 from official docx and accept anchor reset
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 46s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-29 21:51:25 +02:00
6d9d5a460e Merge pull request 'fix(archicrat-ia): restore chapitre 1 doctrinal opening' (#315) from fix/ch1-restore-opening-20260329-144234 into main
All checks were successful
CI / build-and-anchors (push) Successful in 46s
Proposer Apply (Queue) / apply-proposer (push) Successful in 27s
SMOKE / smoke (push) Successful in 12s
Deploy staging+live (annotations) / deploy (push) Successful in 10m31s
Reviewed-on: #315
2026-03-29 14:53:31 +02:00
89d06ade16 fix(archicrat-ia): restore chapitre 1 doctrinal opening
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 1m25s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-29 14:46:51 +02:00
69b35df10c Merge pull request 'fix(archicrat-ia): restore advanced chapitre 1/2 sources and accept chapter 2 anchor reset' (#314) from fix/restore-ch1-ch2-sources-and-churn-20260329 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 43s
Deploy staging+live (annotations) / deploy (push) Successful in 12m16s
SMOKE / smoke (push) Successful in 10s
CI / build-and-anchors (push) Successful in 58s
Reviewed-on: #314
2026-03-29 11:31:33 +02:00
b5475e9be1 fix(archicrat-ia): restore advanced chapitre 1/2 sources and accept chapter 2 anchor reset
All checks were successful
SMOKE / smoke (push) Successful in 15s
CI / build-and-anchors (push) Successful in 49s
CI / build-and-anchors (pull_request) Successful in 1m4s
2026-03-29 11:28:19 +02:00
fdd3aace5a Merge pull request 'chore(tooling): add docx source audit and repair helpers' (#313) from chore/docx-tooling-source-audit-and-fix-v3-20260328 into main
All checks were successful
CI / build-and-anchors (push) Successful in 47s
Proposer Apply (Queue) / apply-proposer (push) Successful in 28s
SMOKE / smoke (push) Successful in 6s
Deploy staging+live (annotations) / deploy (push) Successful in 16m22s
Reviewed-on: #313
2026-03-28 23:55:55 +01:00
f86704d67e chore(tooling): add docx source audit and repair helpers
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 47s
2026-03-28 23:34:42 +01:00
ec8e29a313 Merge pull request 'content(archicrat-ia): drop duplicate chapter H1 in chapitres 1 and 2' (#311) from fix/archicrat-ia-drop-duplicate-h1-ch1-ch2-20260328 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 25s
Deploy staging+live (annotations) / deploy (push) Successful in 8m10s
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 51s
Reviewed-on: #311
2026-03-28 23:21:55 +01:00
1dc9a60580 content(archicrat-ia): drop duplicate chapter H1 in chapitres 1 and 2
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 48s
2026-03-28 23:20:01 +01:00
ee18b26d03 Merge pull request 'content(archicrat-ia): refresh official chapitre 2 docx' (#309) from chore/chapitre-2-docx-refresh-20260328 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 22s
Deploy staging+live (annotations) / deploy (push) Successful in 9m29s
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 46s
CI / build-and-anchors (pull_request) Successful in 43s
Reviewed-on: #309
2026-03-28 22:46:24 +01:00
5f4a0f74db content(archicrat-ia): refresh official chapitre 2 docx
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 46s
CI / build-and-anchors (pull_request) Successful in 49s
2026-03-28 22:42:26 +01:00
6b17df7320 Merge pull request 'content(archicrat-ia): refresh official chapitre 1 docx and anchors baseline' (#308) from chore/chapitre-1-docx-refresh-20260328 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 18s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 9m26s
Reviewed-on: #308
2026-03-28 19:14:50 +01:00
0c33495342 content(archicrat-ia): refresh official chapitre 1 docx and anchors baseline
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 46s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-28 19:12:21 +01:00
d8a09b1def Merge pull request 'chore/prologue-docx-corrections-20260328' (#307) from chore/prologue-docx-corrections-20260328 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 27s
CI / build-and-anchors (push) Successful in 49s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 9m15s
Reviewed-on: #307
2026-03-28 14:49:48 +01:00
39af501ea0 test(anchors): refresh prologue baseline after intentional text cleanup
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 51s
CI / build-and-anchors (pull_request) Successful in 47s
2026-03-28 14:44:16 +01:00
4c821d9e83 content(archicrat-ia): refresh official prologue docx corrections 2026-03-28 14:44:16 +01:00
deb4a91348 Merge pull request 'chore/prologue-reimport-final-20260327' (#306) from chore/prologue-reimport-final-20260327 into main
All checks were successful
CI / build-and-anchors (push) Successful in 46s
Proposer Apply (Queue) / apply-proposer (push) Successful in 31s
SMOKE / smoke (push) Successful in 12s
Deploy staging+live (annotations) / deploy (push) Successful in 9m18s
Reviewed-on: #306
2026-03-27 23:20:58 +01:00
5b36b8e54e test(anchors): refresh baseline after prologue reimport
All checks were successful
SMOKE / smoke (push) Successful in 14s
CI / build-and-anchors (push) Successful in 50s
CI / build-and-anchors (pull_request) Successful in 54s
2026-03-27 23:11:01 +01:00
eda5a877ef content(archicrat-ia): reimport official prologue and align importer defaults 2026-03-27 23:11:01 +01:00
5b615a6999 Merge pull request 'fix(glossaire): align reading follow top actions with glossary navigation' (#305) from fix/glossaire-reading-follow-relations-h2 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 20s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 9s
Deploy staging+live (annotations) / deploy (push) Successful in 8m16s
Reviewed-on: #305
2026-03-26 22:33:10 +01:00
99cf0947da fix(glossaire): align reading follow top actions with glossary navigation
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-26 22:30:05 +01:00
dbd1e14e4e Merge pull request 'fix(glossaire): include standalone relation headings in reading follow' (#304) from fix/glossaire-reading-follow-relations-h2 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 21s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 9s
Deploy staging+live (annotations) / deploy (push) Successful in 7m55s
Reviewed-on: #304
2026-03-26 21:35:00 +01:00
7033354011 fix(glossaire): include standalone relation headings in reading follow
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-26 21:29:26 +01:00
7345730e3c Merge pull request 'fix(glossaire): expose relations heading to reading follow' (#303) from fix/glossaire-relations-follow-heading into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 24s
CI / build-and-anchors (push) Successful in 50s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 9m19s
Reviewed-on: #303
2026-03-26 20:47:02 +01:00
cea94c56db fix(glossaire): expose relations heading to reading follow
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 41s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-26 20:42:01 +01:00
c1e24736e3 Merge pull request 'feat(glossaire): deduplicate entry aside relation groups' (#302) from feat/glossaire-entry-aside-dedup into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 21s
CI / build-and-anchors (push) Successful in 49s
SMOKE / smoke (push) Successful in 4s
Deploy staging+live (annotations) / deploy (push) Successful in 9m41s
Reviewed-on: #302
2026-03-26 20:27:31 +01:00
24bbfbc17f feat(glossaire): deduplicate entry aside relation groups
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-26 20:24:49 +01:00
a11e2f1d18 Merge pull request 'fix(glossaire): compact sticky entry hero on glossary pages' (#301) from fix/glossaire-entry-sticky-hero-collapse into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 32s
CI / build-and-anchors (push) Successful in 45s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 9m18s
Reviewed-on: #301
2026-03-26 18:32:19 +01:00
630b146d02 fix(glossaire): compact sticky entry hero on glossary pages
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 50s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-26 18:30:34 +01:00
551360db83 Merge pull request 'fix(ci): use local pagefind binary instead of npx wrapper' (#300) from fix/ci-pagefind-local-bin into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 26s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 9m45s
Reviewed-on: #300
2026-03-26 14:45:29 +01:00
a96c282780 fix(ci): use local pagefind binary instead of npx wrapper
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-26 14:41:02 +01:00
d2e0f147c2 Merge pull request 'audit(glossaire): tighten portal exposure and cross-page coherence' (#299) from audit/glossaire-transverse-coherence-fix into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 33s
SMOKE / smoke (push) Successful in 10s
Deploy staging+live (annotations) / deploy (push) Successful in 10m22s
CI / build-and-anchors (push) Successful in 45s
Reviewed-on: #299
2026-03-26 14:20:37 +01:00
ad95364021 audit(glossaire): tighten portal exposure and cross-page coherence
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 1m11s
CI / build-and-anchors (pull_request) Successful in 1m17s
2026-03-26 14:16:05 +01:00
e48e322363 Merge pull request 'feat(glossaire): harmonize portal pages and sticky reading ux' (#298) from feat/glossaire-portal-polish-final into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 27s
Deploy staging+live (annotations) / deploy (push) Successful in 10m51s
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 43s
Reviewed-on: #298
2026-03-26 13:01:46 +01:00
a9f2a5bbd4 feat(glossaire): harmonize portal pages and sticky reading ux
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 54s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-26 12:58:17 +01:00
0cba8f868e Merge pull request 'feat(glossaire): harmonize portal pages with shared components' (#297) from feat/glossaire-portals-harmonization into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 28s
CI / build-and-anchors (push) Successful in 43s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 10m36s
Reviewed-on: #297
2026-03-25 23:52:36 +01:00
f8e3ee4cca feat(glossaire): harmonize portal pages with shared components
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-25 23:49:00 +01:00
92e0ad01c6 Merge pull request 'refactor(glossaire): componentize glossary entry page' (#296) from refactor/glossaire-entry-componentization into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 22s
CI / build-and-anchors (push) Successful in 48s
SMOKE / smoke (push) Successful in 6s
Deploy staging+live (annotations) / deploy (push) Successful in 9m57s
Reviewed-on: #296
2026-03-25 19:28:10 +01:00
e6c18d6b16 refactor(glossaire): componentize glossary entry page
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-25 19:18:58 +01:00
a3092f5d5b Merge pull request 'refactor(glossaire): componentize glossary home sections' (#295) from refactor/glossaire-home-componentization into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 32s
Deploy staging+live (annotations) / deploy (push) Successful in 11m41s
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 46s
Reviewed-on: #295
2026-03-25 18:30:14 +01:00
7187b69935 refactor(glossaire): componentize glossary home sections
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 48s
2026-03-25 18:26:43 +01:00
4ba4453661 Merge pull request 'refactor(glossaire): centralize aside and home data' (#294) from feat/glossaire-relational-asides-and-home into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 21s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 9m5s
Reviewed-on: #294
2026-03-25 16:50:31 +01:00
ee42e391e3 refactor(glossaire): centralize aside and home data
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-25 16:48:43 +01:00
f7756be59e Merge pull request 'feat/glossaire-entry-relations-rendering' (#293) from feat/glossaire-entry-relations-rendering into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 27s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 6s
Deploy staging+live (annotations) / deploy (push) Successful in 9m40s
Reviewed-on: #293
2026-03-25 15:39:41 +01:00
4abe70e10e refactor(glossaire): extract entry relations rendering
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 41s
2026-03-25 15:30:51 +01:00
b2b4ec35c0 refactor(glossaire): preserve editorial order for entry relations 2026-03-25 15:20:39 +01:00
b255436958 Merge pull request 'refactor(glossaire): centralize glossary relation helpers' (#292) from feat/glossaire-ui-relations-foundation into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 24s
Deploy staging+live (annotations) / deploy (push) Successful in 9m2s
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 43s
Reviewed-on: #292
2026-03-25 14:17:11 +01:00
ad06b34a85 refactor(glossaire): centralize glossary relation helpers
All checks were successful
CI / build-and-anchors (pull_request) Successful in 42s
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 41s
2026-03-25 14:15:39 +01:00
a38f585f3d Merge pull request 'feat(glossaire): strengthen paradigms and support theories cross-links' (#291) from chore/glossaire-paradigmes-and-support-theories-mesh into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 14s
Deploy staging+live (annotations) / deploy (push) Successful in 9m54s
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 48s
Reviewed-on: #291
2026-03-25 10:30:37 +01:00
bf0dc125d1 feat(glossaire): strengthen paradigms and support theories cross-links
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 1m19s
2026-03-25 10:28:42 +01:00
f61dc15b47 Merge pull request 'feat(glossaire): strengthen meta-regimes and archicrations cross-links' (#290) from chore/glossaire-meta-regimes-and-archicrations-mesh into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 16s
Deploy staging+live (annotations) / deploy (push) Successful in 8m31s
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 45s
Reviewed-on: #290
2026-03-24 20:41:52 +01:00
1ac3d91a19 fix(glossaire): repair malformed normativo-politiques frontmatter
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-24 20:40:10 +01:00
100ba10409 feat(glossaire): strengthen meta-regimes and archicrations cross-links
Some checks failed
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Failing after 27s
2026-03-24 20:33:39 +01:00
5f14785abb Merge pull request 'chore/glossaire-pathologies-figures-and-reinstitution-mesh' (#289) from chore/glossaire-pathologies-figures-and-reinstitution-mesh into main
All checks were successful
CI / build-and-anchors (push) Successful in 47s
Proposer Apply (Queue) / apply-proposer (push) Successful in 32s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 11m12s
Reviewed-on: #289
2026-03-24 18:35:06 +01:00
c7043ae9d5 fix(glossaire): repair malformed seeAlso frontmatter
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 51s
2026-03-24 18:32:55 +01:00
bd1235f8c3 feat(glossaire): strengthen pathologies, figures, and reinstitution cross-links 2026-03-24 18:32:12 +01:00
7ae7b4dca3 Merge pull request 'chore/glossaire-scenes-topologies-audit-and-mesh2' (#288) from chore/glossaire-scenes-topologies-audit-and-mesh into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 18s
Deploy staging+live (annotations) / deploy (push) Successful in 8m20s
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 43s
Reviewed-on: #288
2026-03-24 17:57:50 +01:00
f088db57d4 feat(glossaire): strengthen scenes, topologies, and IA audit cross-links
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 43s
CI / build-and-anchors (pull_request) Successful in 42s
2026-03-24 17:56:13 +01:00
311e94ed91 Merge pull request 'feat(glossaire): strengthen tensions cross-links' (#287) from chore/glossaire-tensions-audit-and-mesh into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 18s
Deploy staging+live (annotations) / deploy (push) Successful in 9m53s
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 41s
Reviewed-on: #287
2026-03-24 14:37:57 +01:00
e078f3f9ab feat(glossaire): strengthen tensions cross-links
All checks were successful
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 45s
SMOKE / smoke (push) Successful in 5s
2026-03-24 14:32:44 +01:00
7c4bb5a2cf Merge pull request 'fix(glossaire): sanitize imported artefacts and relation metadata' (#286) from chore/glossaire-sanitize-corpus into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 30s
Deploy staging+live (annotations) / deploy (push) Successful in 11m10s
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 41s
CI / build-and-anchors (pull_request) Successful in 41s
Reviewed-on: #286
2026-03-24 13:37:47 +01:00
214e174635 fix(glossaire): sanitize imported artefacts and relation metadata
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 47s
2026-03-24 13:34:03 +01:00
f1b2f4605f Merge pull request 'feat/glossaire-sticky-entry-and-aside-polish-20260324' (#285) from feat/glossaire-sticky-entry-and-aside-polish-20260324 into main
All checks were successful
CI / build-and-anchors (push) Successful in 48s
Proposer Apply (Queue) / apply-proposer (push) Successful in 34s
SMOKE / smoke (push) Successful in 16s
Deploy staging+live (annotations) / deploy (push) Successful in 10m2s
Reviewed-on: #285
2026-03-24 00:32:36 +01:00
87955adf5d feat(glossaire): polish sticky entry flow and aside navigation
All checks were successful
SMOKE / smoke (push) Successful in 18s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 48s
2026-03-24 00:29:39 +01:00
e39a0c547d feat(glossaire): compress paradigme hero when reading follow is active 2026-03-23 10:27:28 +01:00
c89ddf7237 chore(glossaire): checkpoint before portal hero compression 2026-03-23 00:33:19 +01:00
615effe8bf Merge pull request 'fix(glossaire): description précise du correctif' (#284) from fix/nom-court-et-clair into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 15s
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 44s
Deploy staging+live (annotations) / deploy (push) Successful in 8m29s
Reviewed-on: #284
2026-03-21 21:41:19 +01:00
e952b344a0 fix(glossaire): description précise du correctif
All checks were successful
SMOKE / smoke (push) Successful in 2s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 39s
2026-03-21 21:39:02 +01:00
bb0572cc1a Merge pull request 'fix(glossaire): harmonize portal sticky hero and follow behavior' (#283) from fix/glossaire-portails-sticky-follow-20260321 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 20s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 9s
Deploy staging+live (annotations) / deploy (push) Successful in 9m19s
Reviewed-on: #283
2026-03-21 20:22:43 +01:00
f6a2347278 fix(glossaire): harmonize portal sticky hero and follow behavior
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 39s
2026-03-21 20:15:13 +01:00
d902c2bf98 Merge pull request 'feat(glossaire): refine portal pages and contextual asides' (#282) from feat/glossaire-portails-asides-polish into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 17s
CI / build-and-anchors (push) Successful in 48s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 8m30s
Reviewed-on: #282
2026-03-20 17:46:21 +01:00
baa2082f51 feat(glossaire): refine portal pages and contextual asides
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 49s
CI / build-and-anchors (pull_request) Successful in 45s
2026-03-20 17:42:09 +01:00
2f249b420f Merge pull request 'feat(glossaire): enrich entries and refine glossary navigation' (#281) from feat/glossaire-enrich-navigation into main
All checks were successful
CI / build-and-anchors (push) Successful in 48s
Proposer Apply (Queue) / apply-proposer (push) Successful in 29s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 10m44s
Reviewed-on: #281
2026-03-19 22:18:49 +01:00
d6b4eb82f4 feat(glossaire): enrich entries and refine glossary navigation
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 55s
CI / build-and-anchors (pull_request) Successful in 45s
2026-03-19 21:53:33 +01:00
bfa44fecda Merge pull request 'Add archicrations-esthetico-symboliques.md' (#280) from chore/add-archicrations-esthetico-symboliques into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 23s
CI / build-and-anchors (push) Successful in 47s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 10m53s
Reviewed-on: #280
2026-03-18 23:53:32 +01:00
e329235aa9 Add archicrations-esthetico-symboliques.md
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 51s
CI / build-and-anchors (pull_request) Successful in 45s
2026-03-18 23:51:48 +01:00
8cbaa5117c Merge pull request 'Document cockpit local, NAS supervision, and ops workflow' (#279) from docs-and-ops/cockpit-finalization into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 28s
Deploy staging+live (annotations) / deploy (push) Successful in 49s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 4s
Reviewed-on: #279
2026-03-18 18:24:44 +01:00
3086f333ed Document cockpit local, NAS supervision, and ops workflow
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 49s
CI / build-and-anchors (pull_request) Successful in 42s
2026-03-18 18:21:52 +01:00
c1c3c19d13 Merge pull request 'Use Europe/Paris build time for ops health manifest' (#278) from ops/builtat-paris-time into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 30s
Deploy staging+live (annotations) / deploy (push) Successful in 46s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 2s
Reviewed-on: #278
2026-03-18 11:14:11 +01:00
ddcd0acd4d Use Europe/Paris build time for ops health manifest
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 49s
2026-03-18 11:11:54 +01:00
9bc4eeb3e7 Merge pull request 'Add ops health manifest to deploy pipeline' (#277) from ops/ops-health-deploy into main
All checks were successful
CI / build-and-anchors (push) Successful in 44s
Proposer Apply (Queue) / apply-proposer (push) Successful in 19s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 11m8s
Reviewed-on: #277
2026-03-18 10:31:32 +01:00
7a9a5319ac Add ops health manifest to deploy pipeline
All checks were successful
SMOKE / smoke (push) Successful in 11s
CI / build-and-anchors (push) Successful in 58s
CI / build-and-anchors (pull_request) Successful in 1m3s
2026-03-18 10:28:13 +01:00
7d75de5c9f Merge pull request 'docs: formalize localhost auto-sync architecture' (#276) from docs/localhost-auto-sync into main
All checks were successful
CI / build-and-anchors (push) Successful in 51s
Proposer Apply (Queue) / apply-proposer (push) Successful in 19s
SMOKE / smoke (push) Successful in 6s
Deploy staging+live (annotations) / deploy (push) Successful in 46s
Reviewed-on: #276
2026-03-16 21:19:51 +01:00
69c91cb661 docs: formalize localhost auto-sync architecture
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 45s
2026-03-16 21:14:41 +01:00
a1bfbf4405 Merge pull request 'proposer: apply 2 tickets on /archicrat-ia/prologue/' (#275) from bot/proposer-273-ce91b3d8cf02 into main
All checks were successful
CI / build-and-anchors (push) Successful in 44s
Proposer Apply (Queue) / apply-proposer (push) Successful in 33s
SMOKE / smoke (push) Successful in 12s
Deploy staging+live (annotations) / deploy (push) Successful in 9m57s
Reviewed-on: #275
2026-03-16 16:46:20 +01:00
archicratie-bot
be26b425d8 edit: apply ticket #274 (/archicrat-ia/prologue/#p-23-d91a7b78)
All checks were successful
CI / build-and-anchors (push) Successful in 51s
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (pull_request) Successful in 42s
2026-03-16 15:43:09 +00:00
archicratie-bot
abf88e7037 edit: apply ticket #273 (/archicrat-ia/prologue/#p-22-a416d473) 2026-03-16 15:42:47 +00:00
04fee32fdb Merge pull request 'proposer: apply 2 tickets on /archicrat-ia/prologue/' (#272) from bot/proposer-270-39655773c199 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 26s
CI / build-and-anchors (push) Successful in 43s
SMOKE / smoke (push) Successful in 8s
Deploy staging+live (annotations) / deploy (push) Successful in 9m20s
Reviewed-on: #272
2026-03-16 13:57:16 +01:00
archicratie-bot
fbddf5c3fc edit: apply ticket #271 (/archicrat-ia/prologue/#p-17-b8c5bf21)
All checks were successful
CI / build-and-anchors (push) Successful in 50s
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-16 12:54:46 +00:00
archicratie-bot
bad748df3a edit: apply ticket #270 (/archicrat-ia/prologue/#p-7-64a0ca9c) 2026-03-16 12:54:21 +00:00
0066cf8601 Merge pull request 'fix(actions): harden proposer queue against duplicate batch PRs' (#269) from hotfix/proposer-close-verify into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 21s
Deploy staging+live (annotations) / deploy (push) Successful in 33s
CI / build-and-anchors (push) Successful in 44s
SMOKE / smoke (push) Successful in 4s
Reviewed-on: #269
2026-03-16 13:42:52 +01:00
5d3473d66c fix(actions): harden proposer queue against duplicate batch PRs
All checks were successful
SMOKE / smoke (push) Successful in 2s
CI / build-and-anchors (push) Successful in 40s
CI / build-and-anchors (pull_request) Successful in 39s
2026-03-16 13:39:09 +01:00
f9d34110e4 Merge pull request 'proposer: apply 2 tickets on /archicrat-ia/prologue/' (#266) from bot/proposer-264-20260316-120249 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 20s
CI / build-and-anchors (push) Successful in 41s
SMOKE / smoke (push) Successful in 7s
Deploy staging+live (annotations) / deploy (push) Successful in 7m47s
Reviewed-on: #266
2026-03-16 13:18:27 +01:00
archicratie-bot
84e9c3ead4 edit: apply ticket #265 (/archicrat-ia/prologue/#p-5-85126fa5)
All checks were successful
CI / build-and-anchors (pull_request) Successful in 43s
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 39s
2026-03-16 12:03:37 +00:00
archicratie-bot
72e59175fc edit: apply ticket #264 (/archicrat-ia/prologue/#p-4-8ed4f807) 2026-03-16 12:03:13 +00:00
81b69ac6d5 Merge pull request 'fix(actions): verify proposer issue closure after PR creation' (#263) from hotfix/proposer-close-verify into main
All checks were successful
CI / build-and-anchors (push) Successful in 43s
Deploy staging+live (annotations) / deploy (push) Successful in 47s
Proposer Apply (Queue) / apply-proposer (push) Successful in 33s
SMOKE / smoke (push) Successful in 2s
Reviewed-on: #263
2026-03-16 12:54:26 +01:00
513ae72e85 fix(actions): verify proposer issue closure after PR creation
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 43s
CI / build-and-anchors (pull_request) Successful in 47s
2026-03-16 12:52:47 +01:00
4c4dd1c515 Merge pull request 'fix(actions): remove fragile heredocs from proposer PR step' (#262) from hotfix/proposer-no-heredoc-pr-step into main
All checks were successful
Deploy staging+live (annotations) / deploy (push) Successful in 39s
CI / build-and-anchors (push) Successful in 46s
SMOKE / smoke (push) Successful in 7s
Proposer Apply (Queue) / apply-proposer (push) Successful in 1m30s
Reviewed-on: #262
2026-03-16 12:34:12 +01:00
46b15ed6ab fix(actions): remove fragile heredocs from proposer PR step
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 40s
2026-03-16 12:30:43 +01:00
a015e72f7c Merge pull request 'proposer: apply ticket #257' (#261) from bot/proposer-257-20260316-111742 into main
All checks were successful
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 8s
Proposer Apply (Queue) / apply-proposer (push) Successful in 1m26s
Deploy staging+live (annotations) / deploy (push) Successful in 7m52s
Reviewed-on: #261
2026-03-16 12:21:55 +01:00
archicratie-bot
d5df7d77a0 edit: apply ticket #257 (/archicrat-ia/prologue/#p-0-d7974f88)
All checks were successful
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 40s
SMOKE / smoke (push) Successful in 4s
2026-03-16 11:18:06 +00:00
ec3ceee862 Merge pull request 'fix(actions): tolerate empty label payload in proposer gate' (#260) from debug/proposer-257 into main
Some checks failed
CI / build-and-anchors (push) Successful in 46s
Deploy staging+live (annotations) / deploy (push) Successful in 48s
SMOKE / smoke (push) Successful in 2s
Proposer Apply (Queue) / apply-proposer (push) Failing after 1m39s
Reviewed-on: #260
2026-03-16 12:16:12 +01:00
867475c3ff fix(actions): tolerate empty label payload in proposer gate
All checks were successful
SMOKE / smoke (push) Successful in 8s
CI / build-and-anchors (push) Successful in 45s
CI / build-and-anchors (pull_request) Successful in 39s
2026-03-16 12:14:01 +01:00
b024c5557c Merge pull request 'fix(editorial): preserve frontmatter in apply-ticket' (#259) from hotfix/preserve-frontmatter-apply-ticket into main
All checks were successful
CI / build-and-anchors (push) Successful in 47s
Proposer Apply (Queue) / apply-proposer (push) Successful in 38s
SMOKE / smoke (push) Successful in 11s
Deploy staging+live (annotations) / deploy (push) Successful in 9m38s
Reviewed-on: #259
2026-03-16 11:52:07 +01:00
93306f360d fix(editorial): preserve frontmatter in apply-ticket
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 51s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-16 11:48:08 +01:00
52847d999d Merge pull request 'fix(actions): silence anno workflow on proposer tickets' (#258) from hotfix/fix-proposer-runtime-v2 into main
Some checks failed
Deploy staging+live (annotations) / deploy (push) Successful in 51s
CI / build-and-anchors (push) Successful in 49s
SMOKE / smoke (push) Successful in 5s
Proposer Apply (Queue) / apply-proposer (push) Failing after 48s
Reviewed-on: #258
2026-03-16 11:11:28 +01:00
b9629b43ff fix(actions): silence anno workflow on proposer tickets
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 49s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-16 11:06:11 +01:00
06482a9f8d Merge pull request 'fix(actions): make proposer queue runtime-safe' (#254) from hotfix/fix-proposer-runtime-v2 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 21s
CI / build-and-anchors (push) Successful in 46s
SMOKE / smoke (push) Successful in 6s
Deploy staging+live (annotations) / deploy (push) Successful in 42s
Reviewed-on: #254
2026-03-16 00:59:50 +01:00
f2e4ae5ac2 fix(actions): make proposer queue runtime-safe
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 42s
2026-03-16 00:58:10 +01:00
71baf0f6da Merge pull request 'fix(actions): repair proposer workflow yaml' (#253) from hotfix/fix-proposer-workflow into main
Some checks failed
CI / build-and-anchors (push) Successful in 48s
Deploy staging+live (annotations) / deploy (push) Successful in 1m0s
SMOKE / smoke (push) Successful in 4s
Proposer Apply (Queue) / apply-proposer (push) Failing after 4s
Reviewed-on: #253
2026-03-16 00:42:17 +01:00
d02b6fc347 fix(actions): repair proposer workflow yaml
All checks were successful
SMOKE / smoke (push) Successful in 9s
CI / build-and-anchors (push) Successful in 43s
CI / build-and-anchors (pull_request) Successful in 45s
2026-03-16 00:38:46 +01:00
431f1e347b Merge pull request 'chore(editorial): harden proposer queue and apply-ticket' (#252) from chore/editorial-hardening-v1-clean into main
Some checks are pending
Deploy staging+live (annotations) / deploy (push) Waiting to run
CI / build-and-anchors (push) Successful in 1m6s
SMOKE / smoke (push) Successful in 39s
Reviewed-on: #252
2026-03-16 00:02:31 +01:00
ab6f45ed5c chore(editorial): harden proposer queue and apply-ticket
All checks were successful
SMOKE / smoke (push) Successful in 6s
CI / build-and-anchors (push) Successful in 43s
CI / build-and-anchors (pull_request) Successful in 46s
2026-03-15 23:58:11 +01:00
02c060d239 Merge pull request 'chore/reset-from-docx-clean-base' (#251) from chore/reset-from-docx-clean-base into main
All checks were successful
SMOKE / smoke (push) Successful in 8s
CI / build-and-anchors (push) Successful in 45s
Deploy staging+live (annotations) / deploy (push) Successful in 9m50s
Reviewed-on: #251
2026-03-15 21:19:24 +01:00
be2029de82 ci(anchors): accept intentional chapitre 1 anchor reset
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-15 21:11:20 +01:00
e148eaeaf3 content(archicrat-ia): refresh chapitre 1 from official docx
Some checks failed
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Failing after 42s
2026-03-15 20:50:35 +01:00
c63a1e6ce4 chore(reset): reimport chapitre 1 from docx clean base
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 44s
2026-03-15 20:33:49 +01:00
b3a73a7781 Merge pull request 'chore(reset): reimport chapitre 1 from docx clean base' (#250) from chore/reset-from-docx-clean-base into main
All checks were successful
SMOKE / smoke (push) Successful in 8s
CI / build-and-anchors (push) Successful in 37s
Deploy staging+live (annotations) / deploy (push) Successful in 9m32s
Reviewed-on: #250
2026-03-15 15:31:37 +01:00
1968585d0f chore(reset): reimport chapitre 1 from docx clean base
All checks were successful
CI / build-and-anchors (push) Successful in 57s
CI / build-and-anchors (pull_request) Successful in 50s
SMOKE / smoke (push) Successful in 5s
2026-03-15 15:29:09 +01:00
b33c758411 Merge pull request 'proposer: apply ticket #236' (#243) from bot/proposer-236-20260315-112808 into main
All checks were successful
Deploy staging+live (annotations) / deploy (push) Successful in 12m1s
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 43s
Reviewed-on: #243
2026-03-15 12:55:33 +01:00
afa543125c Merge pull request 'proposer: apply ticket #235' (#242) from bot/proposer-235-20260315-112515 into main
Some checks are pending
Deploy staging+live (annotations) / deploy (push) Has started running
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 51s
Reviewed-on: #242
2026-03-15 12:47:26 +01:00
archicratie-bot
0d0252cac0 edit: apply ticket #236 (/archicrat-ia/chapitre-1/#p-400-8959d62e)
All checks were successful
CI / build-and-anchors (push) Successful in 45s
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (pull_request) Successful in 39s
2026-03-15 11:28:36 +00:00
archicratie-bot
a8bd9aeed5 edit: apply ticket #235 (/archicrat-ia/chapitre-1/#p-139-caa4e99d)
All checks were successful
CI / build-and-anchors (pull_request) Successful in 47s
CI / build-and-anchors (push) Successful in 41s
SMOKE / smoke (push) Successful in 3s
2026-03-15 11:25:43 +00:00
d277c61afd Merge pull request 'proposer: apply ticket #229' (#232) from bot/proposer-229-20260315-105537 into main
Some checks failed
CI / build-and-anchors (push) Successful in 51s
SMOKE / smoke (push) Successful in 10s
Deploy staging+live (annotations) / deploy (push) Has been cancelled
Reviewed-on: #232
2026-03-15 12:24:34 +01:00
archicratie-bot
86479952d1 edit: apply ticket #229 (/archicrat-ia/chapitre-1/#p-10-1a706744)
All checks were successful
CI / build-and-anchors (pull_request) Successful in 42s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 5s
2026-03-15 10:56:03 +00:00
c94024a8ae Merge pull request 'feat(glossaire): add advanced external paradigms from chapter 3' (#228) from feat/glossaire-archicrations-cartographie into main
All checks were successful
SMOKE / smoke (push) Successful in 7s
CI / build-and-anchors (push) Successful in 45s
Deploy staging+live (annotations) / deploy (push) Successful in 9m53s
Reviewed-on: #228
2026-03-15 10:08:48 +01:00
70611d16f8 feat(glossaire): add advanced external paradigms from chapter 3
All checks were successful
SMOKE / smoke (push) Successful in 11s
CI / build-and-anchors (push) Successful in 44s
CI / build-and-anchors (pull_request) Successful in 44s
2026-03-15 10:05:32 +01:00
354db231b8 Merge pull request 'feat(glossaire): enrichit la cartographie archicratique et les archicrations' (#227) from feat/glossaire-archicrations-cartographie into main
All checks were successful
SMOKE / smoke (push) Successful in 14s
CI / build-and-anchors (push) Successful in 45s
Deploy staging+live (annotations) / deploy (push) Successful in 9m37s
Reviewed-on: #227
2026-03-14 19:57:38 +01:00
9d8d60d00f feat(glossaire): enrichit la cartographie archicratique et les archicrations
All checks were successful
SMOKE / smoke (push) Successful in 4s
CI / build-and-anchors (push) Successful in 42s
CI / build-and-anchors (pull_request) Successful in 38s
2026-03-14 19:55:16 +01:00
f5d25abbec Merge pull request 'feat(glossaire): add advanced external paradigms from chapter 3' (#226) from feat/glossaire-paradigmes-externes into main
All checks were successful
SMOKE / smoke (push) Successful in 10s
CI / build-and-anchors (push) Successful in 44s
Deploy staging+live (annotations) / deploy (push) Successful in 7m13s
Reviewed-on: #226
2026-03-13 18:55:10 +01:00
8e9f7314f5 feat(glossaire): add advanced external paradigms from chapter 3
All checks were successful
SMOKE / smoke (push) Successful in 3s
CI / build-and-anchors (push) Successful in 41s
CI / build-and-anchors (pull_request) Successful in 40s
2026-03-13 18:48:33 +01:00
174 changed files with 57517 additions and 11173 deletions

View File

@@ -41,7 +41,7 @@ jobs:
run: |
set -euo pipefail
export EVENT_JSON="/var/run/act/workflow/event.json"
test -f "$EVENT_JSON" || { echo "Missing $EVENT_JSON"; exit 1; }
test -f "$EVENT_JSON" || { echo "Missing $EVENT_JSON"; exit 1; }
node --input-type=module - <<'NODE' > /tmp/anno.env
import fs from "node:fs";
@@ -66,7 +66,10 @@ jobs:
if (!owner || !repo) {
const m = cloneUrl.match(/[:/](?<o>[^/]+)\/(?<r>[^/]+?)(?:\.git)?$/);
if (m?.groups) { owner = owner || m.groups.o; repo = repo || m.groups.r; }
if (m?.groups) {
owner = owner || m.groups.o;
repo = repo || m.groups.r;
}
}
if (!owner || !repo) throw new Error("Cannot infer owner/repo");
@@ -81,7 +84,6 @@ jobs:
throw new Error("No issue number in event.json or workflow_dispatch input");
}
// label name: best-effort (non-bloquant)
let labelName = "workflow_dispatch";
const lab = ev?.label;
if (typeof lab === "string") labelName = lab;
@@ -95,7 +97,7 @@ jobs:
? String(process.env.FORGE_API).trim().replace(/\/+$/,"")
: origin;
function sh(s){ return JSON.stringify(String(s)); }
function sh(s) { return JSON.stringify(String(s)); }
process.stdout.write([
`CLONE_URL=${sh(cloneUrl)}`,
@@ -108,7 +110,7 @@ jobs:
].join("\n") + "\n");
NODE
echo "context:"
echo "context:"
sed -n '1,120p' /tmp/anno.env
- name: Early gate (label event fast-skip, but tolerant)
@@ -116,18 +118,16 @@ jobs:
set -euo pipefail
source /tmp/anno.env
echo " event label = $LABEL_NAME"
echo "event label = $LABEL_NAME"
# Fast skip on obvious non-approved label events (avoid noise),
# BUT do NOT skip if label payload is weird/unknown.
if [[ "$LABEL_NAME" != "state/approved" && "$LABEL_NAME" != "workflow_dispatch" && "$LABEL_NAME" != "" && "$LABEL_NAME" != "[object Object]" ]]; then
echo " label=$LABEL_NAME => skip early"
echo "label=$LABEL_NAME => skip early"
echo "SKIP=1" >> /tmp/anno.env
echo "SKIP_REASON=\"label_not_approved_event\"" >> /tmp/anno.env
exit 0
fi
echo "continue to API gating (issue=$ISSUE_NUMBER)"
echo "continue to API gating (issue=$ISSUE_NUMBER)"
- name: Fetch issue + hard gate on labels + Type
env:
@@ -135,9 +135,9 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
test -n "${FORGE_TOKEN:-}" || { echo "Missing secret FORGE_TOKEN"; exit 1; }
test -n "${FORGE_TOKEN:-}" || { echo "Missing secret FORGE_TOKEN"; exit 1; }
curl -fsS \
-H "Authorization: token $FORGE_TOKEN" \
@@ -148,11 +148,12 @@ jobs:
node --input-type=module - <<'NODE' >> /tmp/anno.env
import fs from "node:fs";
const issue = JSON.parse(fs.readFileSync("/tmp/issue.json","utf8"));
const title = String(issue.title || "");
const issue = JSON.parse(fs.readFileSync("/tmp/issue.json", "utf8"));
const body = String(issue.body || "").replace(/\r\n/g, "\n");
const labels = Array.isArray(issue.labels) ? issue.labels.map(l => String(l.name || "")).filter(Boolean) : [];
const labels = Array.isArray(issue.labels)
? issue.labels.map(l => String(l.name || "")).filter(Boolean)
: [];
const hasApproved = labels.includes("state/approved");
function pickLine(key) {
@@ -164,14 +165,12 @@ jobs:
const typeRaw = pickLine("Type");
const type = String(typeRaw || "").trim().toLowerCase();
const allowed = new Set(["type/media","type/reference","type/comment"]);
const proposer = new Set(["type/correction","type/fact-check"]);
const allowedAnno = new Set(["type/media", "type/reference", "type/comment"]);
const proposerTypes = new Set(["type/correction", "type/fact-check"]);
const out = [];
out.push(`ISSUE_TITLE=${JSON.stringify(title)}`);
out.push(`ISSUE_TYPE=${JSON.stringify(type)}`);
// HARD gate: must currently have state/approved (avoids depending on event payload)
if (!hasApproved) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("not_approved_label_present")}`);
@@ -182,23 +181,23 @@ jobs:
if (!type) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("missing_type")}`);
} else if (allowed.has(type)) {
} else if (allowedAnno.has(type)) {
// proceed
} else if (proposer.has(type)) {
} else if (proposerTypes.has(type)) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("proposer_type:"+type)}`);
out.push(`SKIP_REASON=${JSON.stringify("proposer_type:" + type)}`);
} else {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("unsupported_type:"+type)}`);
out.push(`SKIP_REASON=${JSON.stringify("unsupported_type:" + type)}`);
}
process.stdout.write(out.join("\n") + "\n");
NODE
echo "gating result:"
echo "gating result:"
grep -E '^(ISSUE_TYPE|SKIP|SKIP_REASON)=' /tmp/anno.env || true
- name: Comment issue if skipped (Proposer / unsupported / missing Type)
- name: Comment issue if skipped (unsupported / missing Type only)
if: ${{ always() }}
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
@@ -208,9 +207,13 @@ jobs:
[[ "${SKIP:-0}" == "1" ]] || exit 0
# IMPORTANT: do NOT comment for "not_approved_label_present" (avoid spam on other label events)
if [[ "${SKIP_REASON:-}" == "not_approved_label_present" || "${SKIP_REASON:-}" == "label_not_approved_event" ]]; then
echo " skip reason=${SKIP_REASON} -> no comment"
echo "skip reason=${SKIP_REASON} -> no comment"
exit 0
fi
if [[ "${SKIP_REASON:-}" == proposer_type:* ]]; then
echo "proposer ticket detected -> anno stays silent"
exit 0
fi
@@ -219,15 +222,13 @@ jobs:
REASON="${SKIP_REASON:-}"
TYPE="${ISSUE_TYPE:-}"
if [[ "$REASON" == proposer_type:* ]]; then
MSG=" Ticket #${ISSUE_NUMBER} détecté comme **Proposer** (${TYPE}).\n\n- Ce type est **traité manuellement par les editors**.\n✅ Aucun traitement automatique."
elif [[ "$REASON" == unsupported_type:* ]]; then
MSG=" Ticket #${ISSUE_NUMBER} ignoré : Type non supporté par le bot (${TYPE}).\n\nTypes supportés : type/media, type/reference, type/comment."
if [[ "$REASON" == unsupported_type:* ]]; then
MSG="Ticket #${ISSUE_NUMBER} ignored: unsupported Type (${TYPE}). Supported types: type/media, type/reference, type/comment."
else
MSG=" Ticket #${ISSUE_NUMBER} ignoré : champ 'Type:' manquant ou illisible.\n\nAjoute : Type: type/media|type/reference|type/comment"
MSG="Ticket #${ISSUE_NUMBER} ignored: missing or unreadable 'Type:'. Expected: type/media|type/reference|type/comment"
fi
PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1]||""}))' "$MSG")"
PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1] || ""}))' "$MSG")"
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
@@ -239,7 +240,7 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
rm -rf .git
git init -q
@@ -252,16 +253,16 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
npm ci --no-audit --no-fund
- name: Check apply script exists
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
test -f scripts/apply-annotation-ticket.mjs || {
echo "missing scripts/apply-annotation-ticket.mjs on $DEFAULT_BRANCH"
echo "missing scripts/apply-annotation-ticket.mjs on $DEFAULT_BRANCH"
ls -la scripts | sed -n '1,200p' || true
exit 1
}
@@ -270,16 +271,16 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
npm run build
test -f dist/para-index.json || {
echo "missing dist/para-index.json after build"
echo "missing dist/para-index.json after build"
ls -la dist | sed -n '1,200p' || true
exit 1
}
echo "dist/para-index.json present"
echo "dist/para-index.json present"
- name: Apply ticket on bot branch (strict+verify, commit)
continue-on-error: true
@@ -290,10 +291,10 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
test -d .git || { echo "not a git repo (checkout failed)"; echo "APPLY_RC=90" >> /tmp/anno.env; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
test -d .git || { echo "not a git repo (checkout failed)"; echo "APPLY_RC=90" >> /tmp/anno.env; exit 0; }
test -n "${FORGE_TOKEN:-}" || { echo "Missing secret FORGE_TOKEN"; exit 1; }
test -n "${FORGE_TOKEN:-}" || { echo "Missing secret FORGE_TOKEN"; exit 1; }
git config user.name "${BOT_GIT_NAME:-archicratie-bot}"
git config user.email "${BOT_GIT_EMAIL:-bot@archicratie.local}"
@@ -340,11 +341,11 @@ jobs:
run: |
set -euo pipefail
source /tmp/anno.env || true
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
RC="${APPLY_RC:-0}"
if [[ "$RC" == "0" ]]; then
echo " no failure detected"
echo "no failure detected"
exit 0
fi
@@ -356,8 +357,8 @@ jobs:
BODY="(no apply log found)"
fi
MSG="apply-annotation-ticket a échoué (rc=${RC}).\n\n\`\`\`\n${BODY}\n\`\`\`\n"
PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1]||""}))' "$MSG")"
MSG="apply-annotation-ticket failed (rc=${RC}).\n\n\`\`\`\n${BODY}\n\`\`\`\n"
PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1] || ""}))' "$MSG")"
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
@@ -374,9 +375,9 @@ jobs:
source /tmp/anno.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || { echo " apply failed -> skip push"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo " no-op -> skip push"; exit 0; }
test -d .git || { echo " no git repo -> skip push"; exit 0; }
[[ "${APPLY_RC:-0}" == "0" ]] || { echo "apply failed -> skip push"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo "no-op -> skip push"; exit 0; }
test -d .git || { echo "no git repo -> skip push"; exit 0; }
AUTH_URL="$(node --input-type=module -e '
const [clone, tok] = process.argv.slice(1);
@@ -398,8 +399,8 @@ jobs:
source /tmp/anno.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || { echo " apply failed -> skip PR"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo " no-op -> skip PR"; exit 0; }
[[ "${APPLY_RC:-0}" == "0" ]] || { echo "apply failed -> skip PR"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo "no-op -> skip PR"; exit 0; }
PR_TITLE="anno: apply ticket #${ISSUE_NUMBER}"
PR_BODY="PR auto depuis ticket #${ISSUE_NUMBER} (state/approved).\n\n- Branche: ${BRANCH}\n- Commit: ${END_SHA}\n\nMerge si CI OK."
@@ -420,10 +421,10 @@ jobs:
console.log(pr.html_url || pr.url || "");
' "$PR_JSON")"
test -n "$PR_URL" || { echo "PR URL missing. Raw: $PR_JSON"; exit 1; }
test -n "$PR_URL" || { echo "PR URL missing. Raw: $PR_JSON"; exit 1; }
MSG="PR créée pour ticket #${ISSUE_NUMBER} : ${PR_URL}"
C_PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1]||""}))' "$MSG")"
MSG="PR created for ticket #${ISSUE_NUMBER}: ${PR_URL}"
C_PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1] || ""}))' "$MSG")"
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
@@ -431,7 +432,7 @@ jobs:
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE_NUMBER/comments" \
--data-binary "$C_PAYLOAD"
echo "PR: $PR_URL"
echo "PR: $PR_URL"
- name: Finalize (fail job if apply failed)
if: ${{ always() }}
@@ -439,11 +440,11 @@ jobs:
set -euo pipefail
source /tmp/anno.env || true
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "skipped"; exit 0; }
RC="${APPLY_RC:-0}"
if [[ "$RC" != "0" ]]; then
echo "apply failed (rc=$RC)"
echo "apply failed (rc=$RC)"
exit "$RC"
fi
echo "apply ok"
echo "apply ok"

View File

@@ -297,6 +297,19 @@ jobs:
docker image tag archicratie-web:blue "archicratie-web:blue.BAK.${TS}" || true
docker image tag archicratie-web:green "archicratie-web:green.BAK.${TS}" || true
BUILD_TIME_RAW="$(TZ=Europe/Paris date '+%Y-%m-%dT%H:%M:%S%z')"
BUILD_TIME="${BUILD_TIME_RAW:0:${#BUILD_TIME_RAW}-2}:${BUILD_TIME_RAW:${#BUILD_TIME_RAW}-2}"
PUBLIC_OPS_ENV=staging \
PUBLIC_OPS_UPSTREAM=web_blue \
PUBLIC_BUILD_SHA="${AFTER}" \
PUBLIC_BUILD_TIME="${BUILD_TIME}" \
node scripts/write-ops-health.mjs
test -f public/__ops/health.json
echo "=== public/__ops/health.json (blue/staging) ==="
cat public/__ops/health.json
docker compose -p "$PROJ" -f docker-compose.yml build web_blue
docker rm -f archicratie-web-blue || true
docker compose -p "$PROJ" -f docker-compose.yml up -d --force-recreate --remove-orphans web_blue
@@ -306,6 +319,11 @@ jobs:
wait_url "http://127.0.0.1:8081/annotations-index.json" "blue annotations-index"
wait_url "http://127.0.0.1:8081/pagefind/pagefind.js" "blue pagefind.js"
wait_url "http://127.0.0.1:8081/__ops/health.json" "blue ops health"
curl -fsS --max-time 6 "http://127.0.0.1:8081/__ops/health.json" \
| python3 -c 'import sys, json; j=json.load(sys.stdin); print("env=", j.get("env")); print("upstream=", j.get("upstream")); print("buildSha=", j.get("buildSha")); print("builtAt=", j.get("builtAt"))'
CANON="$(curl -fsS --max-time 6 "http://127.0.0.1:8081/archicrat-ia/chapitre-1/" | grep -oE 'rel="canonical" href="[^"]+"' | head -n1 || true)"
echo "canonical(blue)=$CANON"
echo "$CANON" | grep -q 'https://staging\.archicratie\.trans-hands\.synology\.me/' || {
@@ -353,6 +371,19 @@ jobs:
docker compose -p "$PROJ" -f docker-compose.yml up -d --force-recreate --remove-orphans web_green || true
}
BUILD_TIME_RAW="$(TZ=Europe/Paris date '+%Y-%m-%dT%H:%M:%S%z')"
BUILD_TIME="${BUILD_TIME_RAW:0:${#BUILD_TIME_RAW}-2}:${BUILD_TIME_RAW:${#BUILD_TIME_RAW}-2}"
PUBLIC_OPS_ENV=prod \
PUBLIC_OPS_UPSTREAM=web_green \
PUBLIC_BUILD_SHA="${AFTER}" \
PUBLIC_BUILD_TIME="${BUILD_TIME}" \
node scripts/write-ops-health.mjs
test -f public/__ops/health.json
echo "=== public/__ops/health.json (green/prod) ==="
cat public/__ops/health.json
# build/restart green
if ! docker compose -p "$PROJ" -f docker-compose.yml build web_green; then
echo "❌ build green failed"; rollback; exit 4
@@ -366,6 +397,11 @@ jobs:
if ! wait_url "http://127.0.0.1:8082/annotations-index.json" "green annotations-index"; then rollback; exit 4; fi
if ! wait_url "http://127.0.0.1:8082/pagefind/pagefind.js" "green pagefind.js"; then rollback; exit 4; fi
if ! wait_url "http://127.0.0.1:8082/__ops/health.json" "green ops health"; then rollback; exit 4; fi
curl -fsS --max-time 6 "http://127.0.0.1:8082/__ops/health.json" \
| python3 -c 'import sys, json; j=json.load(sys.stdin); print("env=", j.get("env")); print("upstream=", j.get("upstream")); print("buildSha=", j.get("buildSha")); print("builtAt=", j.get("builtAt"))'
CANON="$(curl -fsS --max-time 6 "http://127.0.0.1:8082/archicrat-ia/chapitre-1/" | grep -oE 'rel="canonical" href="[^"]+"' | head -n1 || true)"
echo "canonical(green)=$CANON"
echo "$CANON" | grep -q 'https://archicratie\.trans-hands\.synology\.me/' || {

View File

@@ -1,13 +1,16 @@
name: Proposer Apply (PR)
name: Proposer Apply (Queue)
on:
issues:
types: [labeled]
push:
branches: [main]
workflow_dispatch:
inputs:
issue:
description: "Issue number to apply (Proposer: correction/fact-check)"
required: true
description: "Issue number to prioritize (optional)"
required: false
default: ""
env:
NODE_OPTIONS: --dns-result-order=ipv4first
@@ -17,8 +20,8 @@ defaults:
shell: bash
concurrency:
group: proposer-apply-${{ github.event.issue.number || inputs.issue || 'manual' }}
cancel-in-progress: true
group: proposer-queue-main
cancel-in-progress: false
jobs:
apply-proposer:
@@ -34,14 +37,15 @@ jobs:
node --version
npm --version
- name: Derive context (event.json / workflow_dispatch)
- name: Derive context (event.json / workflow_dispatch / push)
env:
INPUT_ISSUE: ${{ inputs.issue }}
EVENT_NAME_IN: ${{ github.event_name }}
FORGE_API: ${{ vars.FORGE_API || vars.FORGE_BASE }}
run: |
set -euo pipefail
export EVENT_JSON="/var/run/act/workflow/event.json"
test -f "$EVENT_JSON" || { echo "Missing $EVENT_JSON"; exit 1; }
test -f "$EVENT_JSON" || { echo "Missing $EVENT_JSON"; exit 1; }
node --input-type=module - <<'NODE' > /tmp/proposer.env
import fs from "node:fs";
@@ -51,7 +55,7 @@ jobs:
const cloneUrl =
repoObj?.clone_url ||
(repoObj?.html_url ? (repoObj.html_url.replace(/\/$/,"") + ".git") : "");
(repoObj?.html_url ? (repoObj.html_url.replace(/\/$/, "") + ".git") : "");
if (!cloneUrl) throw new Error("No repository clone_url/html_url in event.json");
@@ -66,8 +70,12 @@ jobs:
if (!owner || !repo) {
const m = cloneUrl.match(/[:/](?<o>[^/]+)\/(?<r>[^/]+?)(?:\.git)?$/);
if (m?.groups) { owner = owner || m.groups.o; repo = repo || m.groups.r; }
if (m?.groups) {
owner = owner || m.groups.o;
repo = repo || m.groups.r;
}
}
if (!owner || !repo) throw new Error("Cannot infer owner/repo");
const defaultBranch = repoObj?.default_branch || "main";
@@ -75,25 +83,30 @@ jobs:
const issueNumber =
ev?.issue?.number ||
ev?.issue?.index ||
(process.env.INPUT_ISSUE ? Number(process.env.INPUT_ISSUE) : 0);
if (!issueNumber || !Number.isFinite(Number(issueNumber))) {
throw new Error("No issue number in event.json or workflow_dispatch input");
}
(process.env.INPUT_ISSUE ? Number(process.env.INPUT_ISSUE) : 0) ||
0;
const labelName =
ev?.label?.name ||
ev?.label ||
"workflow_dispatch";
(typeof ev?.label === "string" ? ev.label : "") ||
"";
const eventName =
String(process.env.EVENT_NAME_IN || "").trim() ||
(ev?.issue ? "issues" : (ev?.before || ev?.after ? "push" : "workflow_dispatch"));
const u = new URL(cloneUrl);
const origin = u.origin;
const apiBase = (process.env.FORGE_API && String(process.env.FORGE_API).trim())
? String(process.env.FORGE_API).trim().replace(/\/+$/,"")
: origin;
const apiBase =
(process.env.FORGE_API && String(process.env.FORGE_API).trim())
? String(process.env.FORGE_API).trim().replace(/\/+$/, "")
: origin;
function sh(s) {
return JSON.stringify(String(s));
}
function sh(s){ return JSON.stringify(String(s)); }
process.stdout.write([
`CLONE_URL=${sh(cloneUrl)}`,
`OWNER=${sh(owner)}`,
@@ -101,82 +114,230 @@ jobs:
`DEFAULT_BRANCH=${sh(defaultBranch)}`,
`ISSUE_NUMBER=${sh(issueNumber)}`,
`LABEL_NAME=${sh(labelName)}`,
`EVENT_NAME=${sh(eventName)}`,
`API_BASE=${sh(apiBase)}`
].join("\n") + "\n");
NODE
echo "✅ context:"
sed -n '1,120p' /tmp/proposer.env
echo "Context:"
sed -n '1,200p' /tmp/proposer.env
- name: Gate on label state/approved
- name: Early gate (tolerant on empty issue label payload)
run: |
set -euo pipefail
source /tmp/proposer.env
if [[ "$LABEL_NAME" != "state/approved" && "$LABEL_NAME" != "workflow_dispatch" ]]; then
echo " label=$LABEL_NAME => skip"
echo "SKIP=1" >> /tmp/proposer.env
exit 0
fi
echo "✅ proceed (issue=$ISSUE_NUMBER)"
echo "event=$EVENT_NAME label=${LABEL_NAME:-<empty>}"
- name: Fetch issue + API-hard gate on (state/approved present + proposer type)
if [[ "$EVENT_NAME" == "issues" ]]; then
if [[ -n "${LABEL_NAME:-}" && "$LABEL_NAME" != "state/approved" ]]; then
echo "issues/labeled with explicit non-approved label=$LABEL_NAME -> skip"
echo 'SKIP=1' >> /tmp/proposer.env
echo 'SKIP_REASON="label_not_state_approved_event"' >> /tmp/proposer.env
exit 0
fi
fi
echo "Proceed to API-based selection/gating"
- name: Checkout default branch
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
rm -rf .git
git init -q
git remote add origin "$CLONE_URL"
git fetch --depth 1 origin "$DEFAULT_BRANCH"
git -c advice.detachedHead=false checkout -q FETCH_HEAD
git log -1 --oneline
- name: Detect app dir (repo-root vs ./site)
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
APP_DIR="."
if [[ -d "site" && -f "site/package.json" ]]; then
APP_DIR="site"
fi
echo "APP_DIR=$APP_DIR" >> /tmp/proposer.env
echo "APP_DIR=$APP_DIR"
test -f "$APP_DIR/package.json" || {
echo "package.json missing in APP_DIR=$APP_DIR"
exit 1
}
test -d "$APP_DIR/scripts" || {
echo "scripts/ missing in APP_DIR=$APP_DIR"
exit 1
}
- name: Select next proposer batch (by path)
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
test -n "${FORGE_TOKEN:-}" || { echo "❌ Missing secret FORGE_TOKEN"; exit 1; }
test -n "${FORGE_TOKEN:-}" || {
echo "Missing secret FORGE_TOKEN"
exit 1
}
export GITEA_OWNER="$OWNER"
export GITEA_REPO="$REPO"
export FORGE_API="$API_BASE"
cd "$APP_DIR"
test -f scripts/pick-proposer-issue.mjs || {
echo "missing scripts/pick-proposer-issue.mjs in APP_DIR=$APP_DIR"
ls -la scripts | sed -n '1,200p' || true
exit 1
}
node scripts/pick-proposer-issue.mjs "${ISSUE_NUMBER:-0}" > /tmp/proposer.pick.env
cat /tmp/proposer.pick.env >> /tmp/proposer.env
source /tmp/proposer.pick.env
if [[ "${TARGET_FOUND:-0}" != "1" ]]; then
echo 'SKIP=1' >> /tmp/proposer.env
echo "SKIP_REASON=${TARGET_REASON:-no_target}" >> /tmp/proposer.env
echo "No target batch"
exit 0
fi
echo "Target batch:"
grep -E '^(TARGET_PRIMARY_ISSUE|TARGET_ISSUES|TARGET_COUNT|TARGET_CHEMIN)=' /tmp/proposer.env
- name: Derive deterministic batch identity
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
export TARGET_ISSUES TARGET_CHEMIN
node --input-type=module - <<'NODE'
import fs from "node:fs";
import crypto from "node:crypto";
const issues = String(process.env.TARGET_ISSUES || "")
.trim()
.split(/\s+/)
.filter(Boolean)
.sort((a, b) => Number(a) - Number(b));
const chemin = String(process.env.TARGET_CHEMIN || "").trim();
const keySource = `${chemin}::${issues.join(",")}`;
const hash = crypto.createHash("sha1").update(keySource).digest("hex").slice(0, 12);
const primary = issues[0] || "0";
const batchBranch = `bot/proposer-${primary}-${hash}`;
fs.appendFileSync(
"/tmp/proposer.env",
[
`BATCH_KEY=${JSON.stringify(keySource)}`,
`BATCH_HASH=${JSON.stringify(hash)}`,
`BATCH_BRANCH=${JSON.stringify(batchBranch)}`
].join("\n") + "\n"
);
NODE
echo "Batch identity:"
grep -E '^(BATCH_KEY|BATCH_HASH|BATCH_BRANCH)=' /tmp/proposer.env
- name: Inspect open proposer PRs
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
curl -fsS \
-H "Authorization: token $FORGE_TOKEN" \
-H "Accept: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE_NUMBER" \
-o /tmp/issue.json
"$API_BASE/api/v1/repos/$OWNER/$REPO/pulls?state=open&limit=100" \
-o /tmp/open_pulls.json
export TARGET_ISSUES="${TARGET_ISSUES:-}"
export BATCH_BRANCH="${BATCH_BRANCH:-}"
export BATCH_KEY="${BATCH_KEY:-}"
node --input-type=module - <<'NODE' >> /tmp/proposer.env
import fs from "node:fs";
const issue = JSON.parse(fs.readFileSync("/tmp/issue.json","utf8"));
const title = String(issue.title || "");
const body = String(issue.body || "").replace(/\r\n/g, "\n");
const labels = Array.isArray(issue.labels) ? issue.labels.map(l => String(l.name||"")).filter(Boolean) : [];
function pickLine(key) {
const re = new RegExp(`^\\s*${key}\\s*:\\s*([^\\n\\r]+)`, "mi");
const m = body.match(re);
return m ? m[1].trim() : "";
}
const pulls = JSON.parse(fs.readFileSync("/tmp/open_pulls.json", "utf8"));
const issues = String(process.env.TARGET_ISSUES || "")
.trim()
.split(/\s+/)
.filter(Boolean);
const typeRaw = pickLine("Type");
const type = String(typeRaw || "").trim().toLowerCase();
const batchBranch = String(process.env.BATCH_BRANCH || "");
const batchKey = String(process.env.BATCH_KEY || "");
const hasApproved = labels.includes("state/approved");
const proposer = new Set(["type/correction","type/fact-check"]);
const proposerOpen = Array.isArray(pulls)
? pulls.filter((pr) => String(pr?.head?.ref || "").startsWith("bot/proposer-"))
: [];
const sameBatch = proposerOpen.find((pr) => {
const ref = String(pr?.head?.ref || "");
const title = String(pr?.title || "");
const body = String(pr?.body || "");
if (batchBranch && ref === batchBranch) return true;
if (batchKey && body.includes(`Batch-Key: ${batchKey}`)) return true;
return issues.some((n) =>
ref.startsWith(`bot/proposer-${n}-`) ||
title.includes(`#${n}`) ||
body.includes(`#${n}`) ||
body.includes(`ticket #${n}`)
);
});
const out = [];
out.push(`ISSUE_TITLE=${JSON.stringify(title)}`);
out.push(`ISSUE_TYPE=${JSON.stringify(type)}`);
out.push(`HAS_APPROVED=${hasApproved ? "1":"0"}`);
if (!hasApproved) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("approved_not_present")}`);
} else if (!type) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("missing_type")}`);
} else if (!proposer.has(type)) {
out.push(`SKIP=1`);
out.push(`SKIP_REASON=${JSON.stringify("not_proposer:"+type)}`);
if (sameBatch) {
out.push("SKIP=1");
out.push(`SKIP_REASON=${JSON.stringify("issue_already_has_open_pr")}`);
out.push(`OPEN_PR_URL=${JSON.stringify(String(sameBatch.html_url || sameBatch.url || ""))}`);
out.push(`OPEN_PR_BRANCH=${JSON.stringify(String(sameBatch?.head?.ref || ""))}`);
} else if (proposerOpen.length > 0) {
const first = proposerOpen[0];
out.push("SKIP=1");
out.push(`SKIP_REASON=${JSON.stringify("queue_busy_open_proposer_pr")}`);
out.push(`OPEN_PR_URL=${JSON.stringify(String(first.html_url || first.url || ""))}`);
out.push(`OPEN_PR_BRANCH=${JSON.stringify(String(first?.head?.ref || ""))}`);
}
process.stdout.write(out.join("\n") + "\n");
process.stdout.write(out.join("\n") + (out.length ? "\n" : ""));
NODE
echo "✅ proposer gating:"
grep -E '^(ISSUE_TYPE|HAS_APPROVED|SKIP|SKIP_REASON)=' /tmp/proposer.env || true
- name: Guard on remote batch branch before heavy work
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
- name: Comment issue if skipped
if git ls-remote --exit-code --heads origin "$BATCH_BRANCH" >/dev/null 2>&1; then
echo 'SKIP=1' >> /tmp/proposer.env
echo 'SKIP_REASON="batch_branch_exists_without_pr"' >> /tmp/proposer.env
echo "OPEN_PR_BRANCH=${BATCH_BRANCH}" >> /tmp/proposer.env
echo "Remote batch branch already exists -> skip duplicate materialization"
exit 0
fi
echo "Remote batch branch is free"
- name: Comment issue if queued / skipped
if: ${{ always() }}
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
@@ -185,122 +346,149 @@ jobs:
source /tmp/proposer.env || true
[[ "${SKIP:-0}" == "1" ]] || exit 0
[[ "$LABEL_NAME" == "state/approved" || "$LABEL_NAME" == "workflow_dispatch" ]] || exit 0
[[ "${EVENT_NAME:-}" != "push" ]] || exit 0
REASON="${SKIP_REASON:-}"
TYPE="${ISSUE_TYPE:-}"
if [[ "$REASON" == "approved_not_present" ]]; then
MSG=" Proposer Apply: skip — le label **state/approved** n'est pas présent sur le ticket au moment du run (gate API-hard)."
elif [[ "$REASON" == "missing_type" ]]; then
MSG=" Proposer Apply: skip — champ **Type:** manquant/illisible. Attendu: type/correction ou type/fact-check."
else
MSG=" Proposer Apply: skip — Type non-Proposer (${TYPE}). (Ce workflow ne traite que correction/fact-check.)"
if [[ "${SKIP_REASON:-}" == "label_not_state_approved_event" || "${SKIP_REASON:-}" == "label_not_state_approved" ]]; then
echo "Skip reason=${SKIP_REASON} -> no comment"
exit 0
fi
PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1]||""}))' "$MSG")"
test -n "${FORGE_TOKEN:-}" || exit 0
ISSUE_TO_COMMENT="${ISSUE_NUMBER:-0}"
if [[ "$ISSUE_TO_COMMENT" == "0" || -z "$ISSUE_TO_COMMENT" ]]; then
ISSUE_TO_COMMENT="${TARGET_PRIMARY_ISSUE:-0}"
fi
[[ "$ISSUE_TO_COMMENT" != "0" ]] || exit 0
case "${SKIP_REASON:-}" in
queue_busy_open_proposer_pr)
MSG="Ticket queued in proposer queue. An open proposer PR already exists: ${OPEN_PR_URL:-"(URL unavailable)"}. The workflow will resume after merge on main."
;;
issue_already_has_open_pr)
MSG="This batch already has an open proposer PR: ${OPEN_PR_URL:-"(URL unavailable)"}"
;;
batch_branch_exists_without_pr)
MSG="This batch already has a remote batch branch (${OPEN_PR_BRANCH:-"(unknown branch)"}). Manual inspection is required before any new proposer PR is created."
;;
batch_branch_already_materialized)
MSG="This batch was already materialized by another run on branch ${OPEN_PR_BRANCH:-"(unknown branch)"}. No duplicate PR was created."
;;
explicit_issue_missing_chemin)
MSG="Proposer Apply: cannot process this ticket automatically because field Chemin is missing or unreadable."
;;
explicit_issue_missing_type)
MSG="Proposer Apply: cannot process this ticket automatically because field Type is missing or unreadable."
;;
explicit_issue_not_approved)
MSG="Proposer Apply: this ticket is not currently labeled state/approved."
;;
explicit_issue_rejected)
MSG="Proposer Apply: this ticket has state/rejected and is not eligible for the proposer queue."
;;
no_open_approved_proposer_issue)
MSG="No approved proposer ticket is currently waiting."
;;
*)
MSG="Proposer Apply: skip - ${SKIP_REASON:-unspecified reason}."
;;
esac
export MSG
node --input-type=module - <<'NODE' > /tmp/proposer.skip.comment.json
const msg = process.env.MSG || "";
process.stdout.write(JSON.stringify({ body: msg }));
NODE
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE_NUMBER/comments" \
--data-binary "$PAYLOAD" || true
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE_TO_COMMENT/comments" \
--data-binary @/tmp/proposer.skip.comment.json || true
- name: Checkout default branch
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
rm -rf .git
git init -q
git remote add origin "$CLONE_URL"
git fetch --depth 1 origin "$DEFAULT_BRANCH"
git -c advice.detachedHead=false checkout -q FETCH_HEAD
git log -1 --oneline
echo "✅ workspace:"
ls -la | sed -n '1,120p'
- name: Detect app dir (repo-root vs ./site)
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
APP_DIR="."
if [[ -d "site" && -f "site/package.json" ]]; then
APP_DIR="site"
fi
echo "APP_DIR=$APP_DIR" >> /tmp/proposer.env
echo "✅ APP_DIR=$APP_DIR"
ls -la "$APP_DIR" | sed -n '1,120p'
test -f "$APP_DIR/package.json" || { echo "❌ package.json missing in APP_DIR=$APP_DIR"; exit 1; }
test -d "$APP_DIR/scripts" || { echo "❌ scripts/ missing in APP_DIR=$APP_DIR"; exit 1; }
- name: NPM harden (reduce flakiness)
- name: NPM harden
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || exit 0
cd "$APP_DIR"
npm config set fetch-retries 5
npm config set fetch-retry-mintimeout 20000
npm config set fetch-retry-maxtimeout 120000
npm config set registry https://registry.npmjs.org
- name: Install deps (APP_DIR)
- name: Install deps
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || exit 0
cd "$APP_DIR"
npm ci --no-audit --no-fund
- name: Build dist baseline (APP_DIR)
- name: Build dist baseline
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || exit 0
cd "$APP_DIR"
npm run build
- name: Apply ticket (alias + commit) on bot branch
- name: Apply proposer batch on bot branch
continue-on-error: true
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
BOT_GIT_NAME: ${{ secrets.BOT_GIT_NAME }}
BOT_GIT_EMAIL: ${{ secrets.BOT_GIT_EMAIL }}
FORGE_API: ${{ vars.FORGE_API || vars.FORGE_BASE }}
run: |
set -euo pipefail
source /tmp/proposer.env
[[ "${SKIP:-0}" != "1" ]] || { echo " skipped"; exit 0; }
[[ "${SKIP:-0}" != "1" ]] || { echo "Skipped"; exit 0; }
git config user.name "${BOT_GIT_NAME:-archicratie-bot}"
git config user.name "${BOT_GIT_NAME:-archicratie-bot}"
git config user.email "${BOT_GIT_EMAIL:-bot@archicratie.local}"
START_SHA="$(git rev-parse HEAD)"
TS="$(date -u +%Y%m%d-%H%M%S)"
BR="bot/proposer-${ISSUE_NUMBER}-${TS}"
BR="$BATCH_BRANCH"
echo "BRANCH=$BR" >> /tmp/proposer.env
git checkout -b "$BR"
export GITEA_OWNER="$OWNER"
export GITEA_REPO="$REPO"
export FORGE_BASE="$API_BASE"
export FORGE_API="$API_BASE"
LOG="/tmp/proposer-apply.log"
set +e
(cd "$APP_DIR" && node scripts/apply-ticket.mjs "$ISSUE_NUMBER" --alias --commit) >"$LOG" 2>&1
RC=$?
set -e
: > "$LOG"
RC=0
FAILED_ISSUE=""
for ISSUE in $TARGET_ISSUES; do
echo "" >> "$LOG"
echo "== ticket #$ISSUE ==" >> "$LOG"
set +e
(cd "$APP_DIR" && node scripts/apply-ticket.mjs "$ISSUE" --alias --commit) >> "$LOG" 2>&1
STEP_RC=$?
set -e
if [[ "$STEP_RC" -ne 0 ]]; then
RC="$STEP_RC"
FAILED_ISSUE="$ISSUE"
break
fi
done
echo "APPLY_RC=$RC" >> /tmp/proposer.env
echo "FAILED_ISSUE=${FAILED_ISSUE}" >> /tmp/proposer.env
echo "== apply log (tail) =="
tail -n 200 "$LOG" || true
echo "Apply log (tail):"
tail -n 220 "$LOG" || true
END_SHA="$(git rev-parse HEAD)"
if [[ "$RC" -ne 0 ]]; then
echo "NOOP=0" >> /tmp/proposer.env
exit 0
@@ -313,7 +501,34 @@ jobs:
echo "END_SHA=$END_SHA" >> /tmp/proposer.env
fi
- name: Push bot branch
- name: Rebase bot branch on latest main
continue-on-error: true
run: |
set -euo pipefail
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || exit 0
[[ "${NOOP:-0}" == "0" ]] || exit 0
LOG="/tmp/proposer-apply.log"
git fetch origin "$DEFAULT_BRANCH"
set +e
git rebase "origin/$DEFAULT_BRANCH" >> "$LOG" 2>&1
RC=$?
set -e
if [[ "$RC" -ne 0 ]]; then
git rebase --abort || true
fi
echo "REBASE_RC=$RC" >> /tmp/proposer.env
echo "Rebase log (tail):"
tail -n 220 "$LOG" || true
- name: Comment issues on failure
if: ${{ always() }}
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
@@ -322,9 +537,86 @@ jobs:
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || { echo " apply failed -> skip push"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo " no-op -> skip push"; exit 0; }
[[ -n "${BRANCH:-}" ]] || { echo " BRANCH unset -> skip push"; exit 0; }
APPLY_RC="${APPLY_RC:-0}"
REBASE_RC="${REBASE_RC:-0}"
if [[ "$APPLY_RC" == "0" && "$REBASE_RC" == "0" ]]; then
echo "No failure detected"
exit 0
fi
test -n "${FORGE_TOKEN:-}" || exit 0
if [[ -f /tmp/proposer-apply.log ]]; then
BODY="$(tail -n 160 /tmp/proposer-apply.log | sed 's/\r$//')"
else
BODY="(no proposer log found)"
fi
export BODY APPLY_RC REBASE_RC FAILED_ISSUE
if [[ "$APPLY_RC" != "0" ]]; then
export FAILURE_KIND="apply"
else
export FAILURE_KIND="rebase"
fi
node --input-type=module - <<'NODE' > /tmp/proposer.failure.comment.json
const body = process.env.BODY || "";
const applyRc = process.env.APPLY_RC || "0";
const rebaseRc = process.env.REBASE_RC || "0";
const failedIssue = process.env.FAILED_ISSUE || "unknown";
const kind = process.env.FAILURE_KIND || "apply";
const msg =
kind === "apply"
? `Batch proposer failed on ticket #${failedIssue} (rc=${applyRc}).\n\n\`\`\`\n${body}\n\`\`\`\n`
: `Rebase proposer failed on main (rc=${rebaseRc}).\n\n\`\`\`\n${body}\n\`\`\`\n`;
process.stdout.write(JSON.stringify({ body: msg }));
NODE
for ISSUE in ${TARGET_ISSUES:-}; do
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE/comments" \
--data-binary @/tmp/proposer.failure.comment.json || true
done
- name: Late guard against duplicate batch materialization
run: |
set -euo pipefail
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || exit 0
[[ "${REBASE_RC:-0}" == "0" ]] || exit 0
[[ "${NOOP:-0}" == "0" ]] || exit 0
REMOTE_SHA="$(git ls-remote --heads origin "$BATCH_BRANCH" | awk 'NR==1 {print $1}')"
if [[ -n "${REMOTE_SHA:-}" && "${REMOTE_SHA}" != "${END_SHA:-}" ]]; then
echo 'SKIP=1' >> /tmp/proposer.env
echo 'SKIP_REASON="batch_branch_already_materialized"' >> /tmp/proposer.env
echo "OPEN_PR_BRANCH=${BATCH_BRANCH}" >> /tmp/proposer.env
echo "Remote batch branch already exists at $REMOTE_SHA -> skip duplicate push/PR"
exit 0
fi
echo "Late guard OK"
- name: Push bot branch
if: ${{ always() }}
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
run: |
set -euo pipefail
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || { echo "Apply failed -> skip push"; exit 0; }
[[ "${REBASE_RC:-0}" == "0" ]] || { echo "Rebase failed -> skip push"; exit 0; }
[[ "${NOOP:-0}" == "0" ]] || { echo "No-op -> skip push"; exit 0; }
[[ -n "${BRANCH:-}" ]] || { echo "BRANCH unset -> skip push"; exit 0; }
AUTH_URL="$(node --input-type=module -e '
const [clone, tok] = process.argv.slice(1);
@@ -337,7 +629,7 @@ jobs:
git remote set-url origin "$AUTH_URL"
git push -u origin "$BRANCH"
- name: Create PR + comment issue
- name: Create PR + comment issues + close issues
if: ${{ always() }}
env:
FORGE_TOKEN: ${{ secrets.FORGE_TOKEN }}
@@ -345,51 +637,152 @@ jobs:
set -euo pipefail
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
[[ "${APPLY_RC:-0}" == "0" ]] || exit 0
[[ "${REBASE_RC:-0}" == "0" ]] || exit 0
[[ "${NOOP:-0}" == "0" ]] || exit 0
[[ -n "${BRANCH:-}" ]] || { echo " BRANCH unset -> skip PR"; exit 0; }
[[ -n "${BRANCH:-}" ]] || { echo "BRANCH unset -> skip PR"; exit 0; }
PR_TITLE="proposer: apply ticket #${ISSUE_NUMBER}"
PR_BODY="PR auto depuis ticket #${ISSUE_NUMBER} (state/approved).\n\n- Branche: ${BRANCH}\n- Commit: ${END_SHA:-unknown}\n\nMerge si CI OK."
test -n "${FORGE_TOKEN:-}" || { echo "Missing FORGE_TOKEN"; exit 1; }
PR_PAYLOAD="$(node --input-type=module -e '
const [title, body, base, head] = process.argv.slice(1);
console.log(JSON.stringify({ title, body, base, head, allow_maintainer_edit: true }));
' "$PR_TITLE" "$PR_BODY" "$DEFAULT_BRANCH" "${OWNER}:${BRANCH}")"
OPEN_PRS_JSON="$(curl -fsS \
-H "Authorization: token $FORGE_TOKEN" \
-H "Accept: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/pulls?state=open&limit=100")"
export OPEN_PRS_JSON BATCH_BRANCH BATCH_KEY
EXISTING_PR_URL="$(node --input-type=module -e '
const pulls = JSON.parse(process.env.OPEN_PRS_JSON || "[]");
const branch = String(process.env.BATCH_BRANCH || "");
const key = String(process.env.BATCH_KEY || "");
const current = Array.isArray(pulls)
? pulls.find((pr) => {
const ref = String(pr?.head?.ref || "");
const body = String(pr?.body || "");
return (branch && ref === branch) || (key && body.includes(`Batch-Key: ${key}`));
})
: null;
process.stdout.write(current ? String(current.html_url || current.url || "") : "");
')"
if [[ -n "${EXISTING_PR_URL:-}" ]]; then
echo "PR already exists for this batch: $EXISTING_PR_URL"
exit 0
fi
if [[ "${TARGET_COUNT:-0}" == "1" ]]; then
PR_TITLE="proposer: apply ticket #${TARGET_PRIMARY_ISSUE}"
else
PR_TITLE="proposer: apply ${TARGET_COUNT} tickets on ${TARGET_CHEMIN}"
fi
export PR_TITLE TARGET_CHEMIN TARGET_ISSUES BRANCH END_SHA DEFAULT_BRANCH OWNER BATCH_KEY
node --input-type=module -e '
import fs from "node:fs";
const issues = String(process.env.TARGET_ISSUES || "")
.trim()
.split(/\s+/)
.filter(Boolean);
const body = [
`PR auto depuis ticket${issues.length > 1 ? "s" : ""} ${issues.map((n) => `#${n}`).join(", ")} (state/approved).`,
"",
`- Chemin: ${process.env.TARGET_CHEMIN || "(inconnu)"}`,
"- Tickets:",
...issues.map((n) => ` - #${n}`),
`- Branche: ${process.env.BRANCH || ""}`,
`- Commit: ${process.env.END_SHA || "unknown"}`,
`- Batch-Key: ${process.env.BATCH_KEY || ""}`,
"",
"Merge si CI OK."
].join("\n");
fs.writeFileSync(
"/tmp/proposer.pr.json",
JSON.stringify({
title: process.env.PR_TITLE || "proposer: apply tickets",
body,
base: process.env.DEFAULT_BRANCH || "main",
head: `${process.env.OWNER}:${process.env.BRANCH}`,
allow_maintainer_edit: true
})
);
'
PR_JSON="$(curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/pulls" \
--data-binary "$PR_PAYLOAD")"
--data-binary @/tmp/proposer.pr.json)"
PR_URL="$(node --input-type=module -e '
const pr = JSON.parse(process.argv[1] || "{}");
console.log(pr.html_url || pr.url || "");
' "$PR_JSON")"
PR_URL="$(node --input-type=module -e 'const pr = JSON.parse(process.argv[1] || "{}"); console.log(pr.html_url || pr.url || "");' "$PR_JSON")"
test -n "$PR_URL" || { echo "❌ PR URL missing. Raw: $PR_JSON"; exit 1; }
test -n "$PR_URL" || {
echo "PR URL missing. Raw: $PR_JSON"
exit 1
}
MSG="✅ PR Proposer créée pour ticket #${ISSUE_NUMBER} : ${PR_URL}"
C_PAYLOAD="$(node --input-type=module -e 'console.log(JSON.stringify({body: process.argv[1]||""}))' "$MSG")"
for ISSUE in $TARGET_ISSUES; do
export ISSUE PR_URL
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE_NUMBER/comments" \
--data-binary "$C_PAYLOAD"
node --input-type=module -e '
import fs from "node:fs";
- name: Finalize (fail job if apply failed)
const issue = process.env.ISSUE || "";
const url = process.env.PR_URL || "";
const msg =
`PR proposer creee pour le ticket #${issue} : ${url}\n\n` +
`Le ticket est cloture automatiquement ; la discussion peut se poursuivre dans la PR.`;
fs.writeFileSync(
"/tmp/proposer.issue.close.comment.json",
JSON.stringify({ body: msg })
);
'
curl -fsS -X POST \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE/comments" \
--data-binary @/tmp/proposer.issue.close.comment.json
curl -fsS -X PATCH \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE" \
--data-binary '{"state":"closed"}'
ISSUE_STATE="$(curl -fsS \
-H "Authorization: token $FORGE_TOKEN" \
-H "Accept: application/json" \
"$API_BASE/api/v1/repos/$OWNER/$REPO/issues/$ISSUE" | \
node --input-type=module -e 'let s=""; process.stdin.on("data", d => s += d); process.stdin.on("end", () => { const j = JSON.parse(s || "{}"); process.stdout.write(String(j.state || "")); });')"
[[ "$ISSUE_STATE" == "closed" ]] || {
echo "Issue #$ISSUE is still not closed after PATCH"
exit 1
}
done
echo "PR: $PR_URL"
- name: Finalize
if: ${{ always() }}
run: |
set -euo pipefail
source /tmp/proposer.env || true
[[ "${SKIP:-0}" != "1" ]] || exit 0
RC="${APPLY_RC:-0}"
if [[ "$RC" != "0" ]]; then
echo "❌ apply failed (rc=$RC)"
exit "$RC"
if [[ "${APPLY_RC:-0}" != "0" ]]; then
echo "Apply failed (rc=${APPLY_RC})"
exit "${APPLY_RC}"
fi
echo "✅ apply ok"
if [[ "${REBASE_RC:-0}" != "0" ]]; then
echo "Rebase failed (rc=${REBASE_RC})"
exit "${REBASE_RC}"
fi
echo "Proposer queue OK"

4
.gitignore vendored
View File

@@ -28,3 +28,7 @@ public/favicon_io.zip
# macOS
.DS_Store
# local temp workspace
.tmp/
public/__ops/health.json

View File

@@ -0,0 +1,11 @@
{
"accepted_resets": {
"archicrat-ia/prologue/index.html": "Reset intentionnel des ancres après réimport DOCX et révision substantielle du prologue depuis la source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/chapitre-1/index.html": "Reset intentionnel des ancres après révision doctrinale substantielle du chapitre 1. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/chapitre-2/index.html": "Reset intentionnel des ancres après restauration doctrinale substantielle du chapitre 2 depuis la bonne source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/chapitre-3/index.html": "Reset intentionnel des ancres après réimport DOCX et perfectionnement doctrinal substantiel du chapitre 3 depuis la source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/chapitre-4/index.html": "Reset intentionnel des ancres après réimport DOCX et stabilisation doctrinale substantielle du chapitre 4 depuis la source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/chapitre-5/index.html": "Reset intentionnel des ancres après réimport DOCX et stabilisation doctrinale substantielle du chapitre 5 depuis la source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver.",
"archicrat-ia/conclusion/index.html": "Reset intentionnel des ancres après réimport DOCX et révision substantielle de la conclusion depuis la source officielle. Site neuf, sans annotations ni compatibilité descendante à préserver."
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +1,147 @@
# START-HERE — Archicratie / Édition Web (v2)
> Onboarding + exploitation “nickel chrome” (DEV → Gitea → CI → Release → Blue/Green → Edge/SSO)
# START-HERE — Archicratie / Édition Web (v3)
> Onboarding + exploitation “nickel chrome” (DEV → Gitea → CI → Release → Blue/Green → Edge/SSO → localhost auto-sync)
## 0) TL;DR (la règle dor)
- **Gitea = source canonique**.
- **main est protégé** : toute modification passe par **branche → PR → CI → merge**.
- **Le NAS nest pas la source** : si un hotfix est fait sur NAS, on **backporte** via PR immédiatement.
- **Le site est statique Astro** : la prod sert du HTML (nginx), laccès est contrôlé au niveau reverse-proxy (Traefik + Authelia).
- **Gitea = source canonique**.
- **`main` est protégée** : toute modification passe par **branche → PR → CI → merge**.
- **Le NAS nest pas la source** : si un hotfix est fait sur NAS, il doit être **backporté immédiatement** via PR.
- **Le site est statique Astro** : la prod sert du HTML via nginx ; laccès est contrôlé au niveau reverse-proxy (Traefik + Authelia).
- **Le localhost automatique nest pas le repo de dev** : il tourne depuis un **worktree dédié**, synchronisé sur `origin/main`.
---
## 1) Architecture mentale (ultra simple)
- **DEV (Mac Studio)** : édition + tests + commit + push
- **Gitea** : dépôt canon + PR + CI (CI.yaml)
- **NAS (DS220+)** : déploiement “blue/green”
- `web_blue` (staging upstream) → `127.0.0.1:8081`
- `web_green` (live upstream)`127.0.0.1:8082`
- **Edge (Traefik)** : route les hosts
- **DEV canonique (Mac Studio)** : édition, dev, tests, commits, pushes
- **Gitea** : dépôt canonique, PR, CI, workflows éditoriaux
- **NAS (DS220+)** : déploiement blue/green
- `web_blue` → staging upstream → `127.0.0.1:8081`
- `web_green` → live upstream → `127.0.0.1:8082`
- **Edge (Traefik)** : routage des hosts
- `staging.archicratie...` → 8081
- `archicratie...` → 8082
- **Authelia** devant, via middleware `chain-auth@file`
- **Localhost auto-sync**
- un **repo canonique de développement**
- un **worktree localhost miroir de `origin/main`**
- un **agent de sync**
- un **agent Astro**
---
## 2) Répertoires & conventions (repo)
### 2.1 Contenu canon (édition)
- `src/content/**` : contenu MD / MDX canon (Astro content collections)
- `src/pages/**` : routes Astro (index, [...slug], etc.)
- `src/components/**` : composants UI (SiteNav, TOC, SidePanel, etc.)
- `src/layouts/**` : layouts (EditionLayout, SiteLayout)
- `src/content/**` : contenu MD / MDX canon
- `src/pages/**` : routes Astro
- `src/components/**` : composants UI
- `src/layouts/**` : layouts
- `src/styles/**` : CSS global
### 2.2 Annotations (pré-Édition “tickets”)
- `src/annotations/<workKey>/<slug>.yml`
- Exemple : `src/annotations/archicrat-ia/prologue.yml`
- Objectif : stocker “Références / Médias / Commentaires” par page et par paragraphe (`p-...`).
- Exemple :
`src/annotations/archicrat-ia/prologue.yml`
Objectif :
stocker “Références / Médias / Commentaires” par page et par paragraphe (`p-...`).
### 2.3 Scripts (tooling / build)
- `scripts/inject-anchor-aliases.mjs` : injection aliases dans dist
- `scripts/dedupe-ids-dist.mjs` : retire IDs dupliqués dans dist
- `scripts/build-para-index.mjs` : index paragraphes (postbuild / predev)
- `scripts/build-annotations-index.mjs` : index annotations (postbuild / predev)
- `scripts/check-anchors.mjs` : contrat stabilité dancres (CI)
- `scripts/inject-anchor-aliases.mjs` : injection aliases dans `dist`
- `scripts/dedupe-ids-dist.mjs` : retrait IDs dupliqués
- `scripts/build-para-index.mjs` : index paragraphes
- `scripts/build-annotations-index.mjs` : index annotations
- `scripts/check-anchors.mjs` : contrat stabilité dancres
- `scripts/check-annotations*.mjs` : sanity YAML + médias
> Important : les scripts sont **partie intégrante** de la stabilité (IDs/ancres/indexation).
> On évite “la magie” : tout est scripté + vérifié.
> Important : ces scripts ne sont pas accessoires.
> Ils font partie du contrat de stabilité éditoriale.
## 3) Workflow Git “pro” (main protégé)
### 3.1 Cycle standard (toute modif)
en bash :
---
## 3) Les trois espaces à ne jamais confondre
### 3.1 Repo canonique de développement
```text
/Volumes/FunIA/dev/archicratie-edition/site
```
Usage :
- développement normal
- branches de travail
- nouvelles fonctionnalités
- corrections manuelles
- commits
- pushes
- PR
### 3.2 Worktree localhost miroir de `main`
```text
/Users/s-funia/ops-local/archicratie/localhost-worktree
```
Branche attendue :
```text
localhost-sync
```
Usage :
- exécuter le localhost automatique
- refléter `origin/main`
- ne jamais servir despace de développement
### 3.3 Ops local hors repo
```text
/Users/s-funia/ops-local/archicratie
```
Usage :
- scripts dexploitation
- état
- logs
- automatisation `launchd`
---
## 4) Pourquoi cette séparation existe
Il ne faut pas utiliser le repo canonique de développement comme serveur localhost permanent.
Sinon on mélange :
- travail en cours
- commits non poussés
- essais temporaires
- état réellement publié sur `main`
Le résultat devient ambigu.
La séparation retenue est donc :
- **repo canonique** = espace de développement
- **worktree localhost** = miroir exécutable de `origin/main`
- **ops local** = scripts et automatisation
Cest cette séparation qui rend le système lisible, robuste et opérable.
---
## 5) Workflow Git “pro” (main protégée)
### 5.1 Cycle standard (toute modif)
```bash
git checkout main
git pull --ff-only
@@ -60,37 +156,48 @@ npm run test:anchors
git add -A
git commit -m "xxx: description claire"
git push -u origin "$BR"
```
### 3.2 PR vers main
### 5.2 PR vers `main`
Ouvrir PR dans Gitea
- ouvrir une PR dans Gitea
- attendre une CI verte
- merger
- laisser les workflows faire le reste
CI doit être verte
### 5.3 Cas spécial : hotfix prod (NAS)
Merge PR → main
On peut faire un hotfix durgence côté NAS si nécessaire.
### 3.3 Cas spécial : hotfix prod (NAS)
Mais létat final doit toujours revenir dans Gitea :
On peut faire un hotfix “urgence” en prod/staging si nécessaire…
- branche
- PR
- CI
- merge
MAIS : létat final doit revenir dans Gitea : branche → PR → CI → merge.
---
## 4) Déploiement (NAS) — principe
### 4.1 Release pack
## 6) Déploiement (NAS) — principe
On génère un pack “reproductible” (source + config + scripts) puis on déploie.
### 6.1 Release pack
### 4.2 Blue/Green
On génère un pack reproductible, puis on déploie.
web_blue = staging upstream (8081)
### 6.2 Blue/Green
web_green = live upstream (8082)
- `web_blue` = staging (`8081`)
- `web_green` = live (`8082`)
Edge Traefik sélectionne quel host pointe vers quel upstream.
Le reverse-proxy choisit lupstream selon le host demandé.
## 5) Check-list “≤ 10 commandes” (happy path complet)
### 5.1 DEV (Mac)
---
## 7) Happy path complet
### 7.1 DEV (Mac)
```bash
git checkout main && git pull --ff-only
git checkout -b chore/my-change-$(date +%Y%m%d)
@@ -99,55 +206,258 @@ rm -rf .astro node_modules/.vite dist
npm run build
npm run test:anchors
npm run dev
```
### 5.2 Push + PR
### 7.2 Push + PR
```bash
git add -A
git commit -m "chore: my change"
git push -u origin chore/my-change-YYYYMMDD
# ouvrir PR dans Gitea
```
### 5.3 Déploiement NAS (résumé)
Puis ouvrir la PR dans Gitea.
Voir docs/runbooks/DEPLOY-BLUE-GREEN.md.
### 7.3 Déploiement NAS
## 6) Problèmes “classiques” + diagnostic rapide
### 6.1 “Le staging ne ressemble pas au local”
Voir :
# Comparer upstream direct 8081 vs 8082 :
```text
docs/runbooks/DEPLOY-BLUE-GREEN.md
```
---
## 8) Localhost auto-sync — ce quil faut retenir
Le localhost automatique sert à voir **la vérité de `main`**, pas à développer du neuf.
### 8.1 Scripts principaux
#### Script de sync
```text
~/ops-local/archicratie/auto-sync-localhost.sh
```
Rôle :
- fetch `origin/main`
- réaligner le worktree localhost
- lancer `npm ci` si besoin
- redéclencher lagent Astro si nécessaire
#### Script Astro
```text
~/ops-local/archicratie/run-astro-localhost.sh
```
Rôle :
- lancer `astro dev`
- depuis le bon worktree
- avec le bon runtime Node
- sur `127.0.0.1:4321`
> Oui : ce script est nécessaire.
> Il isole proprement le lancement du serveur Astro dans un contexte `launchd` stable.
### 8.2 LaunchAgents
#### Agent sync
```text
~/Library/LaunchAgents/me.archicratie.localhost-sync.plist
```
#### Agent Astro
```text
~/Library/LaunchAgents/me.archicratie.localhost-astro.plist
```
### 8.3 Document de référence
Pour tout le détail dexploitation du localhost automatique, lire :
```text
docs/OPS-LOCALHOST-AUTO-SYNC.md
```
---
## 9) Règle dor : il y a deux usages locaux distincts
### 9.1 Voir ce qui est réellement sur `main`
Utiliser :
```text
http://127.0.0.1:4321
```
Ce localhost doit être considéré comme :
**un miroir local exécutable de `origin/main`**
### 9.2 Développer / tester une nouvelle fonctionnalité
Utiliser le repo canonique :
```bash
cd /Volumes/FunIA/dev/archicratie-edition/site
npm run dev
```
Donc :
- **localhost auto-sync** = vérité de `main`
- **localhost de dev manuel** = expérimentation en cours
Il ne faut pas les confondre.
---
## 10) Ce quil ne faut pas faire
### 10.1 Ne pas développer dans le worktree localhost
Le worktree localhost est piloté automatiquement.
Il peut être :
- réaligné
- nettoyé
- redémarré
Donc :
- pas de commits dedans
- pas de dev feature dedans
- pas dexpérimentation de fond dedans
### 10.2 Ne pas utiliser le repo canonique comme miroir auto-sync
Sinon on mélange :
- espace de dev
- état publié
- serveur local permanent
### 10.3 Ne pas remettre les scripts ops sur un volume externe
Les scripts dops doivent rester sous `HOME`.
Le fait de les mettre sous `/Volumes/...` a déjà provoqué des erreurs du type :
```text
Operation not permitted
```
### 10.4 Ne pas supprimer `run-astro-localhost.sh`
Ce script fait partie de larchitecture actuelle.
Le supprimer reviendrait à réintroduire le flou entre sync Git et exécution dAstro.
---
## 11) Commandes de contrôle essentielles
### 11.1 État global
```bash
~/ops-local/archicratie/doctor-localhost.sh
```
### 11.2 État Git
```bash
git -C ~/ops-local/archicratie/localhost-worktree rev-parse HEAD
git -C /Volumes/FunIA/dev/archicratie-edition/site ls-remote origin refs/heads/main
git -C ~/ops-local/archicratie/localhost-worktree branch --show-current
```
### 11.3 État LaunchAgents
```bash
launchctl print "gui/$(id -u)/me.archicratie.localhost-sync" | sed -n '1,160p'
launchctl print "gui/$(id -u)/me.archicratie.localhost-astro" | sed -n '1,160p'
```
### 11.4 État logs
```bash
tail -n 120 ~/ops-local/archicratie/logs/auto-sync-localhost.log
tail -n 120 ~/ops-local/archicratie/logs/astro-localhost.log
tail -n 80 ~/Library/Logs/archicratie-localhost-sync.err.log
tail -n 80 ~/Library/Logs/archicratie-localhost-astro.err.log
```
### 11.5 État serveur
```bash
lsof -nP -iTCP:4321 -sTCP:LISTEN
PID="$(lsof -tiTCP:4321 -sTCP:LISTEN | head -n 1)"
ps -p "$PID" -o pid=,command=
lsof -a -p "$PID" -d cwd
```
### 11.6 Vérification contenu
```bash
curl -s http://127.0.0.1:4321/archicrat-ia/prologue/ | grep -n "taxe Zucman"
```
---
## 12) Problèmes classiques + diagnostic
### 12.1 “Le staging ne ressemble pas au local”
Comparer les upstream directs :
```bash
curl -sS http://127.0.0.1:8081/ | head -n 2
curl -sS http://127.0.0.1:8082/ | head -n 2
```
# Vérifier quel routeur edge répond (header diag) :
Vérifier le routeur edge :
```bash
curl -sSI -H 'Host: staging.archicratie.trans-hands.synology.me' http://127.0.0.1:18080/ \
| grep -iE 'HTTP/|location:|x-archi-router'
```
# Lire docs/runbooks/EDGE-TRAEFIK.md.
Voir :
### 6.2 Canonical incorrect (localhost en prod)
```text
docs/runbooks/EDGE-TRAEFIK.md
```
Cause racine : site dans Astro = PUBLIC_SITE non injecté au build.
### 12.2 Canonical incorrect
Fix canonique : voir docs/runbooks/ENV-PUBLIC_SITE.md.
Cause probable : `PUBLIC_SITE` mal injecté au build.
Test :
```bash
curl -sS http://127.0.0.1:8082/ | grep -oE 'rel="canonical" href="[^"]+"' | head -1
```
### 6.3 Contrat “anchors” en échec après migration dURL
Voir :
Quand on déplace des routes (ex: /archicratie/archicrat-ia/* → /archicrat-ia/*), le test dancres peut échouer même si les IDs nont pas changé, car les pages ont changé de chemin.
```text
docs/runbooks/ENV-PUBLIC_SITE.md
```
# Procédure safe :
### 12.3 Contrat anchors en échec après migration dURL
Backup baseline :
Procédure safe :
```bash
cp -a tests/anchors-baseline.json /tmp/anchors-baseline.json.bak.$(date +%F-%H%M%S)
Mettre à jour les clés (chemins) sans toucher aux IDs :
node - <<'NODE'
import fs from 'fs';
const p='tests/anchors-baseline.json';
@@ -161,16 +471,213 @@ fs.writeFileSync(p, JSON.stringify(out,null,2)+'\n');
console.log('updated keys:', Object.keys(j).length, '->', Object.keys(out).length);
NODE
Re-run :
npm run test:anchors
```
## 7) Ce que létape 9 doit faire (orientation)
### 12.4 “Le localhost auto-sync ne montre pas les dernières modifs”
Stabiliser le pipeline “tickets → YAML annotations”
Commande réflexe :
Formaliser la spec YAML + merge + anti-doublon (voir docs/EDITORIAL-ANNOTATIONS-SPEC.md)
```bash
~/ops-local/archicratie/doctor-localhost.sh
```
Durcir lonboarding (ce START-HERE + runbooks)
Puis :
Éviter les régressions par tests (anchors / annotations / smoke)
```bash
git -C ~/ops-local/archicratie/localhost-worktree rev-parse HEAD
git -C /Volumes/FunIA/dev/archicratie-edition/site ls-remote origin refs/heads/main
```
Si les SHA diffèrent :
- le sync na pas tourné
- ou lagent sync a un problème
### 12.5 “Le SHA est bon mais le contenu web est faux”
Vérifier quel Astro écoute réellement :
```bash
lsof -nP -iTCP:4321 -sTCP:LISTEN
PID="$(lsof -tiTCP:4321 -sTCP:LISTEN | head -n 1)"
ps -p "$PID" -o pid=,command=
lsof -a -p "$PID" -d cwd
```
Attendu :
- commande contenant `astro dev`
- cwd = `~/ops-local/archicratie/localhost-worktree`
### 12.6 Erreur `EBADENGINE`
Cause probable :
- Node 23 utilisé au lieu de Node 22
Résolution :
- forcer `node@22` dans les scripts et les LaunchAgents
### 12.7 Erreur `Operation not permitted`
Cause probable :
- scripts dops placés sous `/Volumes/...`
Résolution :
- garder les scripts sous :
```text
~/ops-local/archicratie
```
### 12.8 Erreur `EPERM` sur `astro.mjs`
Cause probable :
- ancien worktree sur volume externe
- ancien chemin résiduel
- Astro lancé depuis un mauvais emplacement
Résolution :
- worktree localhost sous :
```text
~/ops-local/archicratie/localhost-worktree
```
- scripts cohérents avec ce chemin
- réinstallation propre via :
```bash
~/ops-local/archicratie/install-localhost-sync.sh
```
---
## 13) Redémarrage machine
Après reboot, le comportement attendu est :
1. le LaunchAgent sync se recharge
2. le LaunchAgent Astro se recharge
3. le worktree localhost est réaligné
4. Astro redémarre sur `127.0.0.1:4321`
### Vérification rapide après reboot
```bash
~/ops-local/archicratie/doctor-localhost.sh
```
Si nécessaire :
```bash
~/ops-local/archicratie/install-localhost-sync.sh
```
---
## 14) Procédure de secours manuelle
### Forcer un sync
```bash
~/ops-local/archicratie/auto-sync-localhost.sh
```
### Réinstaller proprement le dispositif local
```bash
~/ops-local/archicratie/install-localhost-sync.sh
```
### Diagnostic complet
```bash
~/ops-local/archicratie/doctor-localhost.sh
```
---
## 15) Décision dexploitation finale
La politique retenue est la suivante :
- **repo canonique** = espace de développement
- **worktree localhost** = miroir automatique de `main`
- **ops sous HOME** = scripts, logs, automation
- **LaunchAgent sync** = réalignement Git
- **LaunchAgent Astro** = exécution stable du serveur local
- **Astro local** = lancé uniquement depuis le worktree localhost
Cette séparation rend le dispositif plus :
- lisible
- robuste
- opérable
- antifragile
---
## 16) Résumé opératoire
### Pour voir la vérité de `main`
Ouvrir :
```text
http://127.0.0.1:4321
```
Le serveur doit provenir de :
```text
/Users/s-funia/ops-local/archicratie/localhost-worktree
```
### Pour développer
Travailler dans :
```text
/Volumes/FunIA/dev/archicratie-edition/site
```
avec les commandes habituelles.
### Pour réparer vite
```bash
~/ops-local/archicratie/doctor-localhost.sh
~/ops-local/archicratie/auto-sync-localhost.sh
```
---
## 17) Mémoire courte
Si un jour plus rien nest clair, repartir de ces commandes :
```bash
~/ops-local/archicratie/doctor-localhost.sh
git -C ~/ops-local/archicratie/localhost-worktree rev-parse HEAD
git -C /Volumes/FunIA/dev/archicratie-edition/site ls-remote origin refs/heads/main
lsof -nP -iTCP:4321 -sTCP:LISTEN
```
Puis lire :
```bash
tail -n 120 ~/ops-local/archicratie/logs/auto-sync-localhost.log
tail -n 120 ~/ops-local/archicratie/logs/astro-localhost.log
```
---
## 18) Statut actuel visé
Quand tout fonctionne correctement :
- le worktree localhost pointe sur le même SHA que `origin/main`
- `astro dev` écoute sur `127.0.0.1:4321`
- son cwd est `~/ops-local/archicratie/localhost-worktree`
- le contenu servi correspond au contenu mergé sur `main`
Cest létat de référence à préserver.

View File

@@ -10,7 +10,8 @@
"clean": "rm -rf dist",
"build": "astro build",
"build:clean": "npm run clean && npm run build",
"postbuild": "node scripts/inject-anchor-aliases.mjs && node scripts/dedupe-ids-dist.mjs && node scripts/build-para-index.mjs && node scripts/build-annotations-index.mjs && node scripts/purge-dist-dev-whoami.mjs && npx pagefind --site dist",
"build:search": "pagefind --site dist",
"postbuild": "node scripts/inject-anchor-aliases.mjs && node scripts/dedupe-ids-dist.mjs && node scripts/build-para-index.mjs && node scripts/build-annotations-index.mjs && node scripts/purge-dist-dev-whoami.mjs && npm run build:search",
"import": "node scripts/import-docx.mjs",
"apply:ticket": "node scripts/apply-ticket.mjs",
"audit:dist": "node scripts/audit-dist.mjs",

View File

@@ -9,8 +9,9 @@ import { spawnSync } from "node:child_process";
*
* Conçu pour:
* - prendre un ticket [Correction]/[Fact-check] (issue) avec Chemin + Ancre + Proposition
* - retrouver le bon paragraphe dans le .mdx
* - retrouver le bon paragraphe dans le .mdx/.md
* - remplacer proprement
* - ne JAMAIS toucher au frontmatter
* - optionnel: écrire un alias dancre old->new (build-time) dans src/anchors/anchor-aliases.json
* - optionnel: committer automatiquement
* - optionnel: fermer le ticket (après commit)
@@ -39,7 +40,7 @@ Env (recommandé):
Notes:
- Si dist/<chemin>/index.html est absent, le script lance "npm run build" sauf si --no-build.
- Sauvegarde automatique: <fichier>.bak.issue-<N> (uniquement si on écrit)
- Sauvegarde automatique: .tmp/apply-ticket/<fichier>.bak.issue-<N> (uniquement si on écrit)
- Avec --alias : le script rebuild pour identifier le NOUVEL id, puis écrit l'alias old->new.
- Refuse automatiquement les Pull Requests (PR) : ce ne sont pas des tickets éditoriaux.
`);
@@ -89,6 +90,7 @@ const CWD = process.cwd();
const CONTENT_ROOT = path.join(CWD, "src", "content");
const DIST_ROOT = path.join(CWD, "dist");
const ALIASES_FILE = path.join(CWD, "src", "anchors", "anchor-aliases.json");
const BACKUP_ROOT = path.join(CWD, ".tmp", "apply-ticket");
/* -------------------------- utils texte / matching -------------------------- */
@@ -136,31 +138,26 @@ function scoreText(candidate, targetText) {
let hit = 0;
for (const w of tgtSet) if (blkSet.has(w)) hit++;
// Bonus si un long préfixe ressemble
const tgtNorm = normalizeText(stripMd(targetText));
const blkNorm = normalizeText(stripMd(candidate));
const prefix = tgtNorm.slice(0, Math.min(180, tgtNorm.length));
const prefixBonus = prefix && blkNorm.includes(prefix) ? 1000 : 0;
// Ratio bonus (0..100)
const ratio = hit / Math.max(1, tgtSet.size);
const ratioBonus = Math.round(ratio * 100);
return prefixBonus + hit + ratioBonus;
}
function bestBlockMatchIndex(blocks, targetText) {
let best = { i: -1, score: -1 };
for (let i = 0; i < blocks.length; i++) {
const sc = scoreText(blocks[i], targetText);
if (sc > best.score) best = { i, score: sc };
}
return best;
}
function splitParagraphBlocks(mdxText) {
const raw = String(mdxText ?? "").replace(/\r\n/g, "\n");
return raw.split(/\n{2,}/);
function rankedBlockMatches(blocks, targetText, limit = 5) {
return blocks
.map((b, i) => ({
i,
score: scoreText(b, targetText),
excerpt: stripMd(b).slice(0, 140),
}))
.sort((a, b) => b.score - a.score)
.slice(0, limit);
}
function isLikelyExcerpt(s) {
@@ -172,6 +169,89 @@ function isLikelyExcerpt(s) {
return false;
}
/* --------------------------- frontmatter / structure ------------------------ */
function normalizeNewlines(s) {
return String(s ?? "").replace(/^\uFEFF/, "").replace(/\r\n/g, "\n");
}
function splitMdxFrontmatter(src) {
const text = normalizeNewlines(src);
const m = text.match(/^---\n[\s\S]*?\n---\n?/);
if (!m) {
return {
hasFrontmatter: false,
frontmatter: "",
body: text,
};
}
const frontmatter = m[0];
const body = text.slice(frontmatter.length);
return {
hasFrontmatter: true,
frontmatter,
body,
};
}
function joinMdxFrontmatter(frontmatter, body) {
if (!frontmatter) return String(body ?? "");
return String(frontmatter) + String(body ?? "");
}
function assertFrontmatterIntegrity({ hadFrontmatter, originalFrontmatter, finalText, filePath }) {
if (!hadFrontmatter) return;
const text = normalizeNewlines(finalText);
if (!text.startsWith("---\n")) {
throw new Error(`Frontmatter perdu pendant la mise à jour de ${filePath}`);
}
if (!text.startsWith(originalFrontmatter)) {
throw new Error(`Frontmatter altéré pendant la mise à jour de ${filePath}`);
}
}
function splitParagraphBlocksPreserve(bodyText) {
const text = normalizeNewlines(bodyText);
if (!text) {
return { blocks: [], separators: [] };
}
const blocks = [];
const separators = [];
const re = /(\n{2,})/g;
let last = 0;
let m;
while ((m = re.exec(text))) {
blocks.push(text.slice(last, m.index));
separators.push(m[1]);
last = m.index + m[1].length;
}
blocks.push(text.slice(last));
return { blocks, separators };
}
function joinParagraphBlocksPreserve(blocks, separators) {
if (!Array.isArray(blocks) || blocks.length === 0) return "";
let out = "";
for (let i = 0; i < blocks.length; i++) {
out += blocks[i];
if (i < separators.length) out += separators[i];
}
return out;
}
/* ------------------------------ utils système ------------------------------ */
function run(cmd, args, opts = {}) {
@@ -251,7 +331,9 @@ function pickSection(body, markers) {
.map((m) => ({ m, i: text.toLowerCase().indexOf(m.toLowerCase()) }))
.filter((x) => x.i >= 0)
.sort((a, b) => a.i - b.i)[0];
if (!idx) return "";
const start = idx.i + idx.m.length;
const tail = text.slice(start);
@@ -266,11 +348,13 @@ function pickSection(body, markers) {
"\n## Proposition",
"\n## Problème",
];
let end = tail.length;
for (const s of stops) {
const j = tail.toLowerCase().indexOf(s.toLowerCase());
if (j >= 0 && j < end) end = j;
}
return tail.slice(0, end).trim();
}
@@ -298,8 +382,6 @@ function extractAnchorIdAnywhere(text) {
function extractCheminFromAnyUrl(text) {
const s = String(text || "");
// Exemple: http://localhost:4321/archicratie/prologue/#p-3-xxxx
// ou: /archicratie/prologue/#p-3-xxxx
const m = s.match(/(\/[a-z0-9\-]+\/[a-z0-9\-\/]+\/)#p-\d+-[0-9a-f]{8}/i);
return m ? m[1] : "";
}
@@ -400,7 +482,7 @@ async function fetchIssue({ forgeApiBase, owner, repo, token, issueNum }) {
headers: {
Authorization: `token ${token}`,
Accept: "application/json",
"User-Agent": "archicratie-apply-ticket/2.0",
"User-Agent": "archicratie-apply-ticket/2.1",
},
});
if (!res.ok) {
@@ -416,7 +498,7 @@ async function closeIssue({ forgeApiBase, owner, repo, token, issueNum, comment
Authorization: `token ${token}`,
Accept: "application/json",
"Content-Type": "application/json",
"User-Agent": "archicratie-apply-ticket/2.0",
"User-Agent": "archicratie-apply-ticket/2.1",
};
if (comment) {
@@ -425,7 +507,11 @@ async function closeIssue({ forgeApiBase, owner, repo, token, issueNum, comment
}
const url = `${base}/api/v1/repos/${owner}/${repo}/issues/${issueNum}`;
const res = await fetch(url, { method: "PATCH", headers, body: JSON.stringify({ state: "closed" }) });
const res = await fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify({ state: "closed" }),
});
if (!res.ok) {
const t = await res.text().catch(() => "");
@@ -529,10 +615,9 @@ async function main() {
console.log(`🔎 Fetch ticket #${issueNum} from ${owner}/${repo}`);
const issue = await fetchIssue({ forgeApiBase, owner, repo, token, issueNum });
// Guard PR (Pull Request = "Demande d'ajout" = pas un ticket éditorial)
if (issue?.pull_request) {
console.error(`❌ #${issueNum} est une Pull Request (demande dajout), pas un ticket éditorial.`);
console.error(`➡️ Ouvre un ticket [Correction]/[Fact-check] depuis le site (Proposer), puis relance apply-ticket sur ce numéro.`);
console.error("➡️ Ouvre un ticket [Correction]/[Fact-check] depuis le site (Proposer), puis relance apply-ticket sur ce numéro.");
process.exit(2);
}
@@ -553,7 +638,6 @@ async function main() {
ancre = (ancre || "").trim();
if (ancre.startsWith("#")) ancre = ancre.slice(1);
// fallback si ticket mal formé
if (!ancre) ancre = extractAnchorIdAnywhere(title) || extractAnchorIdAnywhere(body);
chemin = normalizeChemin(chemin);
@@ -592,7 +676,6 @@ async function main() {
const distHtmlPath = path.join(DIST_ROOT, chemin.replace(/^\/+|\/+$/g, ""), "index.html");
await ensureBuildIfNeeded(distHtmlPath);
// Texte cible: préférence au texte complet (ticket), sinon dist si extrait probable
let targetText = texteActuel;
let distText = "";
@@ -609,21 +692,24 @@ async function main() {
throw new Error("Impossible de reconstruire le texte du paragraphe (ni texte actuel, ni dist html).");
}
const original = await fs.readFile(contentFile, "utf-8");
const blocks = splitParagraphBlocks(original);
const originalRaw = await fs.readFile(contentFile, "utf-8");
const { hasFrontmatter, frontmatter, body: originalBody } = splitMdxFrontmatter(originalRaw);
const best = bestBlockMatchIndex(blocks, targetText);
const split = splitParagraphBlocksPreserve(originalBody);
const blocks = split.blocks;
const separators = split.separators;
if (!blocks.length) {
throw new Error(`Aucun bloc éditorial exploitable dans ${path.relative(CWD, contentFile)}`);
}
const ranked = rankedBlockMatches(blocks, targetText, 5);
const best = ranked[0] || { i: -1, score: -1, excerpt: "" };
const runnerUp = ranked[1] || null;
// seuil de sécurité
if (best.i < 0 || best.score < 40) {
console.error("❌ Match trop faible: je refuse de remplacer automatiquement.");
console.error(`➡️ Score=${best.score}. Recommandation: ticket avec 'Texte actuel (copie exacte du paragraphe)'.`);
const ranked = blocks
.map((b, i) => ({ i, score: scoreText(b, targetText), excerpt: stripMd(b).slice(0, 140) }))
.sort((a, b) => b.score - a.score)
.slice(0, 5);
console.error("Top candidates:");
for (const r of ranked) {
console.error(` #${r.i + 1} score=${r.score} ${r.excerpt}${r.excerpt.length >= 140 ? "…" : ""}`);
@@ -631,12 +717,34 @@ async function main() {
process.exit(2);
}
if (runnerUp) {
const ambiguityGap = best.score - runnerUp.score;
if (ambiguityGap < 15) {
console.error("❌ Match ambigu: le meilleur candidat est trop proche du second.");
console.error(`➡️ best=${best.score} / second=${runnerUp.score} / gap=${ambiguityGap}`);
console.error("Top candidates:");
for (const r of ranked) {
console.error(` #${r.i + 1} score=${r.score} ${r.excerpt}${r.excerpt.length >= 140 ? "…" : ""}`);
}
process.exit(2);
}
}
const beforeBlock = blocks[best.i];
const afterBlock = proposition.trim();
const nextBlocks = blocks.slice();
nextBlocks[best.i] = afterBlock;
const updated = nextBlocks.join("\n\n");
const updatedBody = joinParagraphBlocksPreserve(nextBlocks, separators);
const updatedRaw = joinMdxFrontmatter(frontmatter, updatedBody);
assertFrontmatterIntegrity({
hadFrontmatter: hasFrontmatter,
originalFrontmatter: frontmatter,
finalText: updatedRaw,
filePath: path.relative(CWD, contentFile),
});
console.log(`🧩 Matched block #${best.i + 1}/${blocks.length} score=${best.score}`);
@@ -650,13 +758,15 @@ async function main() {
return;
}
// backup uniquement si on écrit
const bakPath = `${contentFile}.bak.issue-${issueNum}`;
const relContentFile = path.relative(CWD, contentFile);
const bakPath = path.join(BACKUP_ROOT, `${relContentFile}.bak.issue-${issueNum}`);
await fs.mkdir(path.dirname(bakPath), { recursive: true });
if (!(await fileExists(bakPath))) {
await fs.writeFile(bakPath, original, "utf-8");
await fs.writeFile(bakPath, originalRaw, "utf-8");
}
await fs.writeFile(contentFile, updated, "utf-8");
await fs.writeFile(contentFile, updatedRaw, "utf-8");
console.log("✅ Applied.");
let aliasChanged = false;
@@ -677,13 +787,13 @@ async function main() {
if (aliasChanged) {
console.log(`✅ Alias ajouté: ${chemin} ${ancre} -> ${newId}`);
// MàJ dist sans rebuild complet (inject seulement)
run("node", ["scripts/inject-anchor-aliases.mjs"], { cwd: CWD });
} else {
console.log(` Alias déjà présent ou inutile (${ancre} -> ${newId}).`);
}
// garde-fous rapides
run("node", ["scripts/check-anchor-aliases.mjs"], { cwd: CWD });
run("node", ["scripts/verify-anchor-aliases-in-dist.mjs"], { cwd: CWD });
run("npm", ["run", "test:anchors"], { cwd: CWD });
run("node", ["scripts/check-inline-js.mjs"], { cwd: CWD });
}
@@ -713,7 +823,6 @@ async function main() {
return;
}
// mode manuel
console.log("Next (manuel) :");
console.log(` git diff -- ${path.relative(CWD, contentFile)}`);
console.log(
@@ -730,4 +839,4 @@ async function main() {
main().catch((e) => {
console.error("💥", e?.message || e);
process.exit(1);
});
});

72
scripts/audit-docx-source.py Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/env python3
from __future__ import annotations
import argparse
import sys
import unicodedata
import xml.etree.ElementTree as ET
from zipfile import ZipFile
NS = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"}
FORBIDDEN = [
"coviabilité",
"sacroinstitutionnelle",
"technologistique",
"scripturonormative",
"textesrepères",
"ellemême",
"opérateur de darchicration",
"systèmes plusieurs statuts",
"celle-ci se donne à voir",
"Pour autant il serait",
"Telles peuvent être le cas de",
"la co-viabilité devient ,",
]
def norm(s: str) -> str:
return unicodedata.normalize("NFC", s or "")
def main() -> int:
parser = argparse.ArgumentParser(description="Audit simple dun DOCX source officiel.")
parser.add_argument("docx", help="Chemin du fichier .docx")
args = parser.parse_args()
try:
with ZipFile(args.docx) as zf:
data = zf.read("word/document.xml")
except FileNotFoundError:
print(f"ECHEC: fichier introuvable: {args.docx}", file=sys.stderr)
return 2
except KeyError:
print("ECHEC: word/document.xml introuvable dans le DOCX.", file=sys.stderr)
return 2
except Exception as e:
print(f"ECHEC: impossible douvrir le DOCX: {e}", file=sys.stderr)
return 2
root = ET.fromstring(data)
found = False
for i, p in enumerate(root.findall(".//w:p", NS), start=1):
txt = "".join(t.text or "" for t in p.findall(".//w:t", NS))
txt_n = norm(txt)
hits = [needle for needle in FORBIDDEN if needle in txt_n]
if hits:
found = True
print(f"\n[paragraphe {i}]")
print("Hits :", ", ".join(hits))
print(txt_n)
if found:
print("\nECHEC: formes interdites encore présentes dans le DOCX.")
return 1
print("OK: aucune forme interdite trouvée dans le DOCX.")
return 0
if __name__ == "__main__":
raise SystemExit(main())

View File

@@ -74,7 +74,24 @@ function loadAllowMissing() {
return new Set(arr.map(String));
}
function loadAcceptedResets() {
const p = path.resolve("config/anchor-churn-allowlist.json");
if (!fssync.existsSync(p)) return {};
const raw = fssync.readFileSync(p, "utf8").trim();
if (!raw) return {};
const data = JSON.parse(raw);
if (!data || typeof data !== "object" || Array.isArray(data)) {
throw new Error("anchor-churn-allowlist.json must be an object");
}
const accepted = data.accepted_resets || {};
if (!accepted || typeof accepted !== "object" || Array.isArray(accepted)) {
throw new Error("anchor-churn-allowlist.json: accepted_resets must be an object");
}
return accepted;
}
const ALLOW_MISSING = loadAllowMissing();
const ACCEPTED_RESETS = loadAcceptedResets();
async function buildSnapshot() {
const absDist = path.resolve(DIST_DIR);
@@ -139,6 +156,7 @@ function diffPage(prevIds, curIds) {
let failed = false;
let changedPages = 0;
let acceptedPages = 0;
for (const p of pages) {
const prevIds = base[p] || null;
@@ -172,6 +190,7 @@ function diffPage(prevIds, curIds) {
const prevN = prevIds.length || 1;
const churn = (added.length + removed.length) / prevN;
const removedRatio = removed.length / prevN;
const acceptedReason = ACCEPTED_RESETS[p] || null;
console.log(
`~ ${p} prev=${prevIds.length} now=${curIds.length}` +
@@ -182,11 +201,23 @@ function diffPage(prevIds, curIds) {
console.log(` removed: ${removed.slice(0, 20).join(", ")}${removed.length > 20 ? " …" : ""}`);
}
if (prevIds.length >= MIN_PREV && churn > THRESHOLD) failed = true;
if (prevIds.length >= MIN_PREV && removedRatio > THRESHOLD) failed = true;
const exceeds =
(prevIds.length >= MIN_PREV && churn > THRESHOLD) ||
(prevIds.length >= MIN_PREV && removedRatio > THRESHOLD);
if (exceeds && acceptedReason) {
acceptedPages += 1;
console.log(` ✅ accepted reset: ${acceptedReason}`);
continue;
}
if (exceeds) failed = true;
}
console.log(`\nSummary: pages compared=${pages.length}, pages changed=${changedPages}`);
console.log(
`\nSummary: pages compared=${pages.length}, pages changed=${changedPages}, accepted resets=${acceptedPages}`
);
if (failed) {
console.error(`FAIL: anchor churn above threshold (threshold=${pct(THRESHOLD)} minPrev=${MIN_PREV})`);
process.exit(1);

241
scripts/convert_docx_to_mdx.py Executable file
View File

@@ -0,0 +1,241 @@
#!/usr/bin/env python3
import argparse
import os
import re
import shutil
import subprocess
import sys
from pathlib import Path
try:
import yaml
except ImportError:
print("Erreur : PyYAML n'est pas installé. Lance : pip3 install pyyaml")
sys.exit(1)
EDITION = "archicrat-ia"
STATUS = "essai_these"
VERSION = "0.1.0"
ORDER_MAP = {
"prologue": 10,
"chapitre-1": 20,
"chapitre-2": 30,
"chapitre-3": 40,
"chapitre-4": 50,
"chapitre-5": 60,
"conclusion": 70,
}
TITLE_MAP = {
"prologue": "Prologue — Fondation, finalité sociopolitique et historique",
"chapitre-1": "Chapitre 1 — Fondements épistémologiques et modélisation",
"chapitre-2": "Chapitre 2 — Archéogenèse des régimes de co-viabilité",
"chapitre-3": "Chapitre 3 — Philosophies du pouvoir et archicration",
"chapitre-4": "Chapitre 4 — Histoire archicratique des révolutions industrielles",
"chapitre-5": "Chapitre 5 — Tensions, co-viabilités et régulations",
"conclusion": "Conclusion — ArchiCraT-IA",
}
def slugify_name(path: Path) -> str:
stem = path.stem.lower().strip()
replacements = {
" ": "-",
"_": "-",
"": "-",
"": "-",
"é": "e",
"è": "e",
"ê": "e",
"ë": "e",
"à": "a",
"â": "a",
"ä": "a",
"î": "i",
"ï": "i",
"ô": "o",
"ö": "o",
"ù": "u",
"û": "u",
"ü": "u",
"ç": "c",
"'": "",
"": "",
}
for old, new in replacements.items():
stem = stem.replace(old, new)
stem = re.sub(r"-+", "-", stem).strip("-")
# normalisations spécifiques
stem = stem.replace("chapitre-1-fondements-epistemologiques-et-modelisation-archicratie-version-officielle-revise", "chapitre-1")
stem = stem.replace("chapitre-2", "chapitre-2")
stem = stem.replace("chapitre-3", "chapitre-3")
stem = stem.replace("chapitre-4", "chapitre-4")
stem = stem.replace("chapitre-5", "chapitre-5")
if "prologue" in stem:
return "prologue"
if "chapitre-1" in stem:
return "chapitre-1"
if "chapitre-2" in stem:
return "chapitre-2"
if "chapitre-3" in stem:
return "chapitre-3"
if "chapitre-4" in stem:
return "chapitre-4"
if "chapitre-5" in stem:
return "chapitre-5"
if "conclusion" in stem:
return "conclusion"
return stem
def extract_title_from_markdown(md_text: str) -> str | None:
for line in md_text.splitlines():
line = line.strip()
if not line:
continue
if line.startswith("# "):
return line[2:].strip()
return None
def remove_first_h1(md_text: str) -> str:
lines = md_text.splitlines()
out = []
removed = False
for line in lines:
if not removed and line.strip().startswith("# "):
removed = True
continue
out.append(line)
text = "\n".join(out).lstrip()
return text
def clean_markdown(md_text: str) -> str:
text = md_text.replace("\r\n", "\n").replace("\r", "\n")
# nettoyer espaces multiples
text = re.sub(r"\n{3,}", "\n\n", text)
# supprimer éventuels signets/artefacts de liens internes Pandoc
text = re.sub(r"\[\]\(#.*?\)", "", text)
# convertir astérismes parasites
text = re.sub(r"[ \t]+$", "", text, flags=re.MULTILINE)
return text.strip() + "\n"
def compute_level(slug: str) -> int:
if slug == "prologue":
return 1
if slug.startswith("chapitre-"):
return 1
if slug == "conclusion":
return 1
return 1
def convert_one_file(input_docx: Path, output_dir: Path, source_root: Path):
slug = slugify_name(input_docx)
output_mdx = output_dir / f"{slug}.mdx"
cmd = [
"pandoc",
str(input_docx),
"-f",
"docx",
"-t",
"gfm+smart",
]
result = subprocess.run(cmd, check=True, capture_output=True, text=True)
md_text = result.stdout
detected_title = extract_title_from_markdown(md_text)
md_body = remove_first_h1(md_text)
md_body = clean_markdown(md_body)
title = TITLE_MAP.get(slug) or detected_title or input_docx.stem
order = ORDER_MAP.get(slug, 999)
level = compute_level(slug)
relative_source = input_docx
try:
relative_source = input_docx.relative_to(source_root)
except ValueError:
relative_source = input_docx.name
frontmatter = {
"title": title,
"edition": EDITION,
"status": STATUS,
"level": level,
"version": VERSION,
"concepts": [],
"links": [],
"order": order,
"summary": "",
"source": {
"kind": "docx",
"path": str(relative_source),
},
}
yaml_block = yaml.safe_dump(
frontmatter,
allow_unicode=True,
sort_keys=False,
default_flow_style=False,
).strip()
final_text = f"---\n{yaml_block}\n---\n{md_body if md_body.startswith(chr(10)) else chr(10) + md_body}"
output_mdx.write_text(final_text, encoding="utf-8")
print(f"{input_docx.name} -> {output_mdx.name}")
def main():
parser = argparse.ArgumentParser(description="Convertit un dossier DOCX en MDX avec frontmatter.")
parser.add_argument("input_dir", help="Dossier source contenant les DOCX")
parser.add_argument("output_dir", help="Dossier de sortie pour les MDX")
args = parser.parse_args()
input_dir = Path(args.input_dir).expanduser().resolve()
output_dir = Path(args.output_dir).expanduser().resolve()
if not shutil.which("pandoc"):
print("Erreur : pandoc n'est pas installé. Lance : brew install pandoc")
sys.exit(1)
if not input_dir.exists() or not input_dir.is_dir():
print(f"Erreur : dossier source introuvable : {input_dir}")
sys.exit(1)
output_dir.mkdir(parents=True, exist_ok=True)
docx_files = sorted(input_dir.glob("*.docx"))
if not docx_files:
print(f"Aucun DOCX trouvé dans : {input_dir}")
sys.exit(1)
for docx_file in docx_files:
convert_one_file(docx_file, output_dir, input_dir)
print()
print("Conversion DOCX -> MDX terminée.")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,304 @@
#!/usr/bin/env python3
import argparse
import re
import shutil
import subprocess
import sys
import tempfile
from pathlib import Path
import zipfile
try:
import yaml
except ImportError:
print("Erreur : PyYAML n'est pas installé. Lance : pip3 install pyyaml")
sys.exit(1)
try:
from docx import Document
except ImportError:
print("Erreur : python-docx n'est pas installé. Lance : pip3 install python-docx")
sys.exit(1)
def split_frontmatter(text: str):
if not text.startswith("---\n"):
return {}, text
match = re.match(r"^---\n(.*?)\n---\n(.*)$", text, flags=re.DOTALL)
if not match:
return {}, text
yaml_block = match.group(1)
body = match.group(2)
try:
metadata = yaml.safe_load(yaml_block) or {}
except Exception as e:
print(f"Avertissement : frontmatter YAML illisible : {e}")
metadata = {}
return metadata, body
def strip_mdx_artifacts(text: str):
# imports / exports MDX
text = re.sub(r"^\s*(import|export)\s+.+?$", "", text, flags=re.MULTILINE)
# composants autofermants : <Component />
text = re.sub(r"<[A-Z][A-Za-z0-9._-]*\b[^>]*\/>", "", text)
# composants bloc : <Component ...>...</Component>
text = re.sub(
r"<([A-Z][A-Za-z0-9._-]*)\b[^>]*>.*?</\1>",
"",
text,
flags=re.DOTALL,
)
# accolades seules résiduelles sur ligne
text = re.sub(r"^\s*{\s*}\s*$", "", text, flags=re.MULTILINE)
# lignes vides multiples
text = re.sub(r"\n{3,}", "\n\n", text)
return text.strip() + "\n"
def inject_h1_from_title(metadata: dict, body: str):
title = metadata.get("title", "")
if not title:
return body
if re.match(r"^\s*#\s+", body):
return body
return f"# {title}\n\n{body.lstrip()}"
def find_style_by_candidates(doc, candidates):
# Cherche d'abord par nom visible
for style in doc.styles:
for candidate in candidates:
if style.name == candidate:
return style
# Puis par style_id Word interne
for style in doc.styles:
style_id = getattr(style, "style_id", "")
if style_id in {"BodyText", "Heading1", "Heading2", "Heading3", "Heading4"}:
for candidate in candidates:
if candidate in {"Body Text", "Corps de texte"} and style_id == "BodyText":
return style
if candidate in {"Heading 1", "Titre 1"} and style_id == "Heading1":
return style
if candidate in {"Heading 2", "Titre 2"} and style_id == "Heading2":
return style
if candidate in {"Heading 3", "Titre 3"} and style_id == "Heading3":
return style
if candidate in {"Heading 4", "Titre 4"} and style_id == "Heading4":
return style
return None
def strip_leading_paragraph_numbers(text: str):
"""
Supprime les numéros de paragraphe du type :
2. Texte...
11. Texte...
101. Texte...
sans toucher aux titres Markdown (#, ##, ###).
"""
fixed_lines = []
for line in text.splitlines():
stripped = line.lstrip()
# Ne jamais toucher aux titres Markdown
if stripped.startswith("#"):
fixed_lines.append(line)
continue
# Supprime un numéro de paragraphe en début de ligne
line = re.sub(r"^\s*\d+\.\s+", "", line)
fixed_lines.append(line)
return "\n".join(fixed_lines) + "\n"
def normalize_non_heading_paragraphs(docx_path: Path):
"""
Force tous les paragraphes non-titres en Body Text / Corps de texte.
On laisse intacts les Heading 1-4.
"""
doc = Document(str(docx_path))
body_style = find_style_by_candidates(doc, ["Body Text", "Corps de texte"])
if body_style is None:
print(f"Avertissement : style 'Body Text / Corps de texte' introuvable dans {docx_path.name}")
return
heading_names = {
"Heading 1", "Heading 2", "Heading 3", "Heading 4",
"Titre 1", "Titre 2", "Titre 3", "Titre 4",
}
heading_ids = {"Heading1", "Heading2", "Heading3", "Heading4"}
changed = 0
for para in doc.paragraphs:
text = para.text.strip()
if not text:
continue
current_style = para.style
current_name = current_style.name if current_style else ""
current_id = getattr(current_style, "style_id", "") if current_style else ""
if current_name in heading_names or current_id in heading_ids:
continue
# Tout le reste passe en Body Text
para.style = body_style
changed += 1
doc.save(str(docx_path))
print(f" ↳ normalisation styles : {changed} paragraphe(s) mis en 'Body Text / Corps de texte'")
def remove_word_bookmarks(docx_path: Path):
"""
Supprime les bookmarks Word (signets) du DOCX.
Ce sont eux qui apparaissent comme crochets gris dans LibreOffice/Word
quand l'affichage des signets est activé.
"""
with tempfile.TemporaryDirectory() as tmpdir:
tmpdir = Path(tmpdir)
# Dézipper le docx
with zipfile.ZipFile(docx_path, "r") as zin:
zin.extractall(tmpdir)
xml_targets = [
tmpdir / "word" / "document.xml",
tmpdir / "word" / "footnotes.xml",
tmpdir / "word" / "endnotes.xml",
tmpdir / "word" / "comments.xml",
]
removed = 0
for xml_file in xml_targets:
if not xml_file.exists():
continue
text = xml_file.read_text(encoding="utf-8")
# enlever <w:bookmarkStart .../> et <w:bookmarkEnd .../>
text, c1 = re.subn(r"<w:bookmarkStart\b[^>]*/>", "", text)
text, c2 = re.subn(r"<w:bookmarkEnd\b[^>]*/>", "", text)
removed += c1 + c2
xml_file.write_text(text, encoding="utf-8")
# Rezipper
tmp_output = docx_path.with_suffix(".cleaned.docx")
with zipfile.ZipFile(tmp_output, "w", zipfile.ZIP_DEFLATED) as zout:
for file in tmpdir.rglob("*"):
if file.is_file():
zout.write(file, file.relative_to(tmpdir))
tmp_output.replace(docx_path)
print(f" ↳ suppression signets : {removed} balise(s) supprimée(s)")
def convert_one_file(input_path: Path, output_path: Path, reference_doc: Path | None):
raw = input_path.read_text(encoding="utf-8")
metadata, body = split_frontmatter(raw)
body = strip_mdx_artifacts(body)
body = strip_leading_paragraph_numbers(body)
body = inject_h1_from_title(metadata, body)
with tempfile.NamedTemporaryFile("w", suffix=".md", delete=False, encoding="utf-8") as tmp:
tmp.write(body)
tmp_md = Path(tmp.name)
cmd = [
"pandoc",
str(tmp_md),
"-f",
"markdown",
"-o",
str(output_path),
]
if reference_doc:
cmd.extend(["--reference-doc", str(reference_doc)])
try:
subprocess.run(cmd, check=True)
finally:
try:
tmp_md.unlink()
except FileNotFoundError:
pass
normalize_non_heading_paragraphs(output_path)
remove_word_bookmarks(output_path)
def main():
parser = argparse.ArgumentParser(
description="Convertit des fichiers MDX en DOCX en conservant H1/H2/H3/H4 et en forçant le corps en Body Text."
)
parser.add_argument("input_dir", help="Dossier contenant les .mdx")
parser.add_argument(
"--output-dir",
default=str(Path.home() / "Desktop" / "archicrat-ia-docx"),
help="Dossier de sortie DOCX"
)
parser.add_argument(
"--reference-doc",
default=None,
help="DOCX modèle Word à utiliser comme reference-doc"
)
args = parser.parse_args()
input_dir = Path(args.input_dir)
output_dir = Path(args.output_dir)
reference_doc = Path(args.reference_doc) if args.reference_doc else None
if not shutil.which("pandoc"):
print("Erreur : pandoc n'est pas installé. Installe-le avec : brew install pandoc")
sys.exit(1)
if not input_dir.exists() or not input_dir.is_dir():
print(f"Erreur : dossier introuvable : {input_dir}")
sys.exit(1)
if reference_doc and not reference_doc.exists():
print(f"Erreur : reference-doc introuvable : {reference_doc}")
sys.exit(1)
output_dir.mkdir(parents=True, exist_ok=True)
mdx_files = sorted(input_dir.glob("*.mdx"))
if not mdx_files:
print(f"Aucun fichier .mdx trouvé dans : {input_dir}")
sys.exit(1)
print(f"Conversion de {len(mdx_files)} fichier(s)...")
print(f"Entrée : {input_dir}")
print(f"Sortie : {output_dir}")
if reference_doc:
print(f"Modèle : {reference_doc}")
print()
for mdx_file in mdx_files:
docx_name = mdx_file.with_suffix(".docx").name
out_file = output_dir / docx_name
print(f"{mdx_file.name} -> {docx_name}")
convert_one_file(mdx_file, out_file, reference_doc)
print()
print("✅ Conversion terminée.")
if __name__ == "__main__":
main()

132
scripts/fix-docx-source.py Executable file
View File

@@ -0,0 +1,132 @@
#!/usr/bin/env python3
from __future__ import annotations
import argparse
import shutil
import tempfile
import unicodedata
import xml.etree.ElementTree as ET
from pathlib import Path
from zipfile import ZIP_DEFLATED, ZipFile
W_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
XML_NS = "http://www.w3.org/XML/1998/namespace"
NS = {"w": W_NS}
ET.register_namespace("w", W_NS)
REPLACEMENTS = {
"coviabilité": "co-viabilité",
"sacroinstitutionnelle": "sacro-institutionnelle",
"technologistique": "techno-logistique",
"scripturonormative": "scripturo-normative",
"textesrepères": "textes-repères",
"ellemême": "elle-même",
"opérateur de darchicration": "opérateur darchicration",
"systèmes plusieurs statuts": "systèmes à plusieurs statuts",
"celle-ci se donne à voir": "Celle-ci se donne à voir",
"Pour autant il serait": "Pour autant, il serait",
"Telles peuvent être le cas de": "Tels peuvent être les cas de",
}
# volontairement NON auto-corrigé : "la co-viabilité devient ,"
# ce cas demande une décision éditoriale humaine.
def qn(tag: str) -> str:
prefix, local = tag.split(":")
if prefix != "w":
raise ValueError(tag)
return f"{{{W_NS}}}{local}"
def norm(s: str) -> str:
return unicodedata.normalize("NFC", s or "")
def paragraph_text(p: ET.Element) -> str:
return "".join(t.text or "" for t in p.findall(".//w:t", NS))
def replaced_text(s: str) -> str:
out = norm(s)
for bad, good in REPLACEMENTS.items():
out = out.replace(bad, good)
return out
def rewrite_paragraph_text(p: ET.Element, new_text: str) -> None:
ppr = p.find("w:pPr", NS)
for child in list(p):
if ppr is not None and child is ppr:
continue
p.remove(child)
r = ET.Element(qn("w:r"))
t = ET.SubElement(r, qn("w:t"))
t.set(f"{{{XML_NS}}}space", "preserve")
t.text = new_text
p.append(r)
def process_document_xml(xml_path: Path) -> int:
tree = ET.parse(xml_path)
root = tree.getroot()
changed = 0
for p in root.findall(".//w:p", NS):
old = paragraph_text(p)
new = replaced_text(old)
if new != old:
rewrite_paragraph_text(p, new)
changed += 1
tree.write(xml_path, encoding="utf-8", xml_declaration=True)
return changed
def repack_docx(tmpdir: Path, out_docx: Path) -> None:
tmp_out = out_docx.with_suffix(out_docx.suffix + ".tmp")
with ZipFile(tmp_out, "w", ZIP_DEFLATED) as zf:
for p in sorted(tmpdir.rglob("*")):
if p.is_file():
zf.write(p, p.relative_to(tmpdir))
shutil.move(tmp_out, out_docx)
def main() -> int:
parser = argparse.ArgumentParser(description="Répare mécaniquement certaines scories DOCX.")
parser.add_argument("docx", help="Chemin du DOCX")
parser.add_argument("--in-place", action="store_true", help="Réécrit le DOCX en place")
args = parser.parse_args()
src = Path(args.docx)
if not src.exists():
print(f"ECHEC: fichier introuvable: {src}", file=sys.stderr)
return 2
out = src if args.in_place else src.with_name(src.stem + ".fixed.docx")
with tempfile.TemporaryDirectory(prefix="docx-fix-") as td:
td_path = Path(td)
with ZipFile(src) as zf:
zf.extractall(td_path)
document_xml = td_path / "word" / "document.xml"
if not document_xml.exists():
print("ECHEC: word/document.xml absent.", file=sys.stderr)
return 2
changed = process_document_xml(document_xml)
repack_docx(td_path, out)
print(f"OK: DOCX réparé par réécriture paragraphe/XML. Paragraphes modifiés: {changed}")
return 0
if __name__ == "__main__":
import sys
raise SystemExit(main())

View File

@@ -205,12 +205,28 @@ async function main() {
const manifestPath = path.resolve(args.manifest);
const items = await readManifest(manifestPath);
const selected = args.all ? items : items.filter(it => args.only.includes(it.slug));
const selected = args.all
? items
: items.filter((it) => {
const rawSlug = String(it.slug || "").trim();
const rawCollection = String(it.collection || "").trim();
const qualified = `${rawCollection}/${rawSlug}`;
return args.only.includes(rawSlug) || args.only.includes(qualified);
});
if (!args.all && selected.length !== args.only.length) {
const found = new Set(selected.map(s => s.slug));
const missing = args.only.filter(s => !found.has(s));
throw new Error(`Some --only slugs not found in manifest: ${missing.join(", ")}`);
if (!args.all) {
const found = new Set(
selected.flatMap((s) => {
const rawSlug = String(s.slug || "").trim();
const rawCollection = String(s.collection || "").trim();
return [rawSlug, `${rawCollection}/${rawSlug}`];
})
);
const missing = args.only.filter((s) => !found.has(s));
if (missing.length > 0) {
throw new Error(`Some --only slugs not found in manifest: ${missing.join(", ")}`);
}
}
const pandocOk = havePandoc();
@@ -275,7 +291,22 @@ async function main() {
atlas: { edition: "atlas", status: "atlas", level: 1 },
};
const defaults = schemaDefaultsByCollection[outCollection] || { edition: outCollection, status: "draft", level: 1 };
// Compat legacy :
// manifest collection="archicratie" + slug="archicrat-ia/..."
// => on écrit bien dans src/content/archicrat-ia/...
// => mais on conserve edition/status historiques de type archicratie/modele_sociopolitique
const defaultsKey =
String(it.collection || "").trim() === "archicratie" &&
String(it.slug || "").trim().startsWith("archicrat-ia/")
? "archicratie"
: outCollection;
const defaults =
schemaDefaultsByCollection[defaultsKey] || {
edition: defaultsKey,
status: "draft",
level: 1,
};
const fm = [
"---",

View File

@@ -0,0 +1,241 @@
#!/usr/bin/env node
import process from "node:process";
function getEnv(name, fallback = "") {
return String(process.env[name] ?? fallback).trim();
}
function sh(value) {
return JSON.stringify(String(value ?? ""));
}
function escapeRegExp(s) {
return String(s).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function pickLine(body, key) {
const re = new RegExp(`^\\s*${escapeRegExp(key)}\\s*:\\s*([^\\n\\r]+)`, "mi");
const m = String(body || "").match(re);
return m ? m[1].trim() : "";
}
function pickHeadingValue(body, headingKey) {
const re = new RegExp(
`^##\\s*${escapeRegExp(headingKey)}[^\\n]*\\n([\\s\\S]*?)(?=\\n##\\s|\\n\\s*$)`,
"mi"
);
const m = String(body || "").match(re);
if (!m) return "";
const lines = m[1].split(/\r?\n/).map((l) => l.trim());
for (const l of lines) {
if (!l) continue;
if (l.startsWith("<!--")) continue;
return l.replace(/^\/?/, "/").trim();
}
return "";
}
function normalizeChemin(chemin) {
let c = String(chemin || "").trim();
if (!c) return "";
if (!c.startsWith("/")) c = "/" + c;
if (!c.endsWith("/")) c += "/";
return c;
}
function extractCheminFromAnyUrl(text) {
const s = String(text || "");
const m = s.match(/(\/[a-z0-9\-]+\/[a-z0-9\-\/]+\/)#p-\d+-[0-9a-f]{8}/i);
return m ? m[1] : "";
}
function inferType(issue) {
const title = String(issue?.title || "");
const body = String(issue?.body || "").replace(/\r\n/g, "\n");
const fromBody = String(pickLine(body, "Type") || "").trim().toLowerCase();
if (fromBody) return fromBody;
if (title.startsWith("[Correction]")) return "type/correction";
if (title.startsWith("[Fact-check]") || title.startsWith("[Vérification]")) return "type/fact-check";
return "";
}
function inferChemin(issue) {
const title = String(issue?.title || "");
const body = String(issue?.body || "").replace(/\r\n/g, "\n");
return normalizeChemin(
pickLine(body, "Chemin") ||
pickHeadingValue(body, "Chemin") ||
extractCheminFromAnyUrl(body) ||
extractCheminFromAnyUrl(title)
);
}
function labelsOf(issue) {
return Array.isArray(issue?.labels)
? issue.labels.map((l) => String(l?.name || "")).filter(Boolean)
: [];
}
function issueNumber(issue) {
return Number(issue?.number || issue?.index || 0);
}
function parseMeta(issue) {
const labels = labelsOf(issue);
const type = inferType(issue);
const chemin = inferChemin(issue);
const number = issueNumber(issue);
const hasApproved = labels.includes("state/approved");
const hasRejected = labels.includes("state/rejected");
const isProposer = type === "type/correction" || type === "type/fact-check";
const isOpen = String(issue?.state || "open") === "open";
const isPR = Boolean(issue?.pull_request);
const eligible =
number > 0 &&
isOpen &&
!isPR &&
hasApproved &&
!hasRejected &&
isProposer &&
Boolean(chemin);
return {
issue,
number,
type,
chemin,
labels,
hasApproved,
hasRejected,
eligible,
};
}
async function fetchJson(url, token) {
const res = await fetch(url, {
headers: {
Authorization: `token ${token}`,
Accept: "application/json",
"User-Agent": "archicratie-pick-proposer-issue/1.0",
},
});
if (!res.ok) {
const t = await res.text().catch(() => "");
throw new Error(`HTTP ${res.status} ${url}\n${t}`);
}
return await res.json();
}
async function fetchIssue(apiBase, owner, repo, token, n) {
const url = `${apiBase}/api/v1/repos/${owner}/${repo}/issues/${n}`;
return await fetchJson(url, token);
}
async function listOpenIssues(apiBase, owner, repo, token) {
const out = [];
let page = 1;
const limit = 100;
while (true) {
const url = `${apiBase}/api/v1/repos/${owner}/${repo}/issues?state=open&page=${page}&limit=${limit}`;
const batch = await fetchJson(url, token);
if (!Array.isArray(batch) || batch.length === 0) break;
out.push(...batch);
if (batch.length < limit) break;
page += 1;
}
return out;
}
function emitNone(reason) {
process.stdout.write(
[
`TARGET_FOUND="0"`,
`TARGET_REASON=${sh(reason)}`,
`TARGET_PRIMARY_ISSUE=""`,
`TARGET_ISSUES=""`,
`TARGET_COUNT="0"`,
`TARGET_CHEMIN=""`,
].join("\n") + "\n"
);
}
async function main() {
const token = getEnv("FORGE_TOKEN");
const owner = getEnv("GITEA_OWNER");
const repo = getEnv("GITEA_REPO");
const apiBase = (getEnv("FORGE_API") || getEnv("FORGE_BASE")).replace(/\/+$/, "");
const explicit = Number(process.argv[2] || 0);
if (!token) throw new Error("Missing FORGE_TOKEN");
if (!owner || !repo) throw new Error("Missing GITEA_OWNER / GITEA_REPO");
if (!apiBase) throw new Error("Missing FORGE_API / FORGE_BASE");
let metas = [];
if (explicit > 0) {
const issue = await fetchIssue(apiBase, owner, repo, token, explicit);
const meta = parseMeta(issue);
if (!meta.eligible) {
emitNone(
!meta.hasApproved
? "explicit_issue_not_approved"
: meta.hasRejected
? "explicit_issue_rejected"
: !meta.type
? "explicit_issue_missing_type"
: !meta.chemin
? "explicit_issue_missing_chemin"
: "explicit_issue_not_eligible"
);
return;
}
const openIssues = await listOpenIssues(apiBase, owner, repo, token);
metas = openIssues.map(parseMeta).filter((m) => m.eligible && m.chemin === meta.chemin);
} else {
const openIssues = await listOpenIssues(apiBase, owner, repo, token);
metas = openIssues.map(parseMeta).filter((m) => m.eligible);
if (metas.length === 0) {
emitNone("no_open_approved_proposer_issue");
return;
}
metas.sort((a, b) => a.number - b.number);
const first = metas[0];
metas = metas.filter((m) => m.chemin === first.chemin);
}
metas.sort((a, b) => a.number - b.number);
if (metas.length === 0) {
emitNone("no_batch_for_path");
return;
}
const primary = metas[0];
const issues = metas.map((m) => String(m.number));
process.stdout.write(
[
`TARGET_FOUND="1"`,
`TARGET_REASON="ok"`,
`TARGET_PRIMARY_ISSUE=${sh(primary.number)}`,
`TARGET_ISSUES=${sh(issues.join(" "))}`,
`TARGET_COUNT=${sh(issues.length)}`,
`TARGET_CHEMIN=${sh(primary.chemin)}`,
].join("\n") + "\n"
);
}
main().catch((e) => {
console.error("💥 pick-proposer-issue:", e?.message || e);
process.exit(1);
});

29
scripts/refresh-chapter2.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/usr/bin/env bash
set -euo pipefail
DOCX="sources/docx/archicrat-ia/Chapitre_2Archeogenese_des_regimes_de_co-viabilite-version_officielle.docx"
MANIFEST="sources/manifest.yml"
ONLY="archicrat-ia/chapitre-2"
echo "== Audit source avant fix =="
if ! python3 scripts/audit-docx-source.py "$DOCX"; then
echo
echo "== Fix source =="
python3 scripts/fix-docx-source.py --in-place "$DOCX"
echo
echo "== Audit source après fix =="
python3 scripts/audit-docx-source.py "$DOCX"
fi
echo
echo "== Réimport =="
node scripts/import-docx.mjs --manifest "$MANIFEST" --only "$ONLY" --force
echo
echo "== Build =="
npm run build
echo
echo "== Tests =="
npm test

View File

@@ -0,0 +1,20 @@
import fs from "node:fs";
import path from "node:path";
const root = process.cwd();
const outDir = path.join(root, "public", "__ops");
const outFile = path.join(outDir, "health.json");
const payload = {
service: "archicratie-site",
env: process.env.PUBLIC_OPS_ENV || "unknown",
upstream: process.env.PUBLIC_OPS_UPSTREAM || "unknown",
buildSha: process.env.PUBLIC_BUILD_SHA || "unknown",
builtAt: process.env.PUBLIC_BUILD_TIME || new Date().toISOString(),
};
fs.mkdirSync(outDir, { recursive: true });
fs.writeFileSync(outFile, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
console.log(`✅ ops health written: ${outFile}`);
console.log(payload);

View File

@@ -14,44 +14,44 @@ docs:
# Archicratie — Essai-thèse "ArchiCraT-IA"
# =========================
- source: sources/docx/archicrat-ia/Prologue—Archicratie-fondation_et_finalite_sociopolitique_et_historique-version_officielle.docx
collection: archicratie
slug: archicrat-ia/prologue
title: "Prologue — Fondation et finalité sociopolitique et historique"
collection: archicrat-ia
slug: prologue
title: "Prologue — Fondation, finalité sociopolitique et historique"
order: 10
- source: sources/docx/archicrat-ia/Chapitre_1—Fondements_epistemologiques_et_modelisation_Archicratie-version_officielle.docx
collection: archicratie
slug: archicrat-ia/chapitre-1
collection: archicrat-ia
slug: chapitre-1
title: "Chapitre 1 — Fondements épistémologiques et modélisation"
order: 20
- source: sources/docx/archicrat-ia/Chapitre_2Archeogenese_des_regimes_de_co-viabilite-version_officielle.docx
collection: archicratie
slug: archicrat-ia/chapitre-2
collection: archicrat-ia
slug: chapitre-2
title: "Chapitre 2 — Archéogenèse des régimes de co-viabilité"
order: 30
- source: sources/docx/archicrat-ia/Chapitre_3—Philosophies_du_pouvoir_et_Archicration-pour_une_topologie_differenciee_des_regimes_regulateurs-version_officielle.docx
collection: archicratie
slug: archicrat-ia/chapitre-3
collection: archicrat-ia
slug: chapitre-3
title: "Chapitre 3 — Philosophies du pouvoir et archicration"
order: 40
- source: sources/docx/archicrat-ia/Chapitre_4—Vers_une_histoire_archicratique_des_revolutions_industrielles-version_officielle.docx
collection: archicratie
slug: archicrat-ia/chapitre-4
collection: archicrat-ia
slug: chapitre-4
title: "Chapitre 4 — Histoire archicratique des révolutions industrielles"
order: 50
- source: sources/docx/archicrat-ia/Chapitre_5—Problematiques_des_tensions_des_co-viabilites_et_des_regulations_archicratiques-version_officielle.docx
collection: archicratie
slug: archicrat-ia/chapitre-5
collection: archicrat-ia
slug: chapitre-5
title: "Chapitre 5 — Tensions, co-viabilités et régulations"
order: 60
- source: sources/docx/archicrat-ia/Conclusion-Archicrat-IA-version_officielle.docx
collection: archicratie
slug: archicrat-ia/conclusion
collection: archicrat-ia
slug: conclusion
title: "Conclusion — ArchiCraT-IA"
order: 70

View File

@@ -1,9 +1 @@
{
"/archicrat-ia/chapitre-3/": {
"p-1-60c7ea48": "p-1-a21087b0"
},
"/cas-ia/introduction/": {
"p-10-ceba29a2": "p-10-93d1eda0",
"p-16-615e3d61": "p-16-5b453a81"
}
}
{}

View File

@@ -22,43 +22,58 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
const bt = String(b.data.title ?? b.data.term ?? slugOf(b));
return collator.compare(at, bt);
});
const tocId = `toc-global-${collection}-${String(basePath).replace(/[^\w-]+/g, "-")}`;
---
<nav class="toc-global" aria-label={label}>
<div class="toc-global__head">
<div class="toc-global__title">{label}</div>
</div>
<nav
class="toc-global"
aria-label={label}
data-toc-global
data-toc-key={`global:${collection}:${basePath}`}
>
<button
class="toc-global__head toc-global__toggle"
type="button"
aria-expanded="true"
aria-controls={tocId}
>
<span class="toc-global__title">{label}</span>
<span class="toc-global__chevron" aria-hidden="true">▾</span>
</button>
<ol class="toc-global__list">
{entries.map((e) => {
const slug = slugOf(e);
const active = slug === currentSlug;
<div class="toc-global__body-clip" id={tocId}>
<div class="toc-global__body">
<ol class="toc-global__list">
{entries.map((e) => {
const slug = slugOf(e);
const active = slug === currentSlug;
return (
<li class={`toc-item ${active ? "is-active" : ""}`}>
<a class="toc-link" href={hrefOf(e)} aria-current={active ? "page" : undefined}>
<span class="toc-link__row">
{active ? (
<span class="toc-active-indicator" aria-hidden="true">👉</span>
) : (
<span class="toc-active-spacer" aria-hidden="true"></span>
)}
return (
<li class={`toc-item ${active ? "is-active" : ""}`}>
<a class="toc-link" href={hrefOf(e)} aria-current={active ? "page" : undefined}>
<span class="toc-link__row">
<span class={`toc-active-mark ${active ? "is-on" : ""}`} aria-hidden="true">
<span class="toc-active-mark__dot"></span>
</span>
<span class="toc-link__title">{e.data.title}</span>
<span class="toc-link__title">{e.data.title}</span>
{active && (
<span class="toc-badge" aria-label="Chapitre en cours">
En cours
{active && (
<span class="toc-badge" aria-label="Chapitre en cours">
En cours
</span>
)}
</span>
)}
</span>
{active && <span class="toc-underline" aria-hidden="true"></span>}
</a>
</li>
);
})}
</ol>
{active && <span class="toc-underline" aria-hidden="true"></span>}
</a>
</li>
);
})}
</ol>
</div>
</div>
</nav>
<style>
@@ -69,7 +84,22 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
background: rgba(127,127,127,0.06);
}
.toc-global__toggle{
width: 100%;
appearance: none;
border: 0;
background: transparent;
color: inherit;
text-align: left;
padding: 0;
cursor: pointer;
}
.toc-global__head{
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px dashed rgba(127,127,127,0.25);
@@ -82,11 +112,36 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
opacity: .88;
}
.toc-global__chevron{
font-size: 12px;
opacity: .7;
transition: transform 180ms ease;
}
.toc-global__body-clip{
display: grid;
grid-template-rows: 1fr;
transition:
grid-template-rows 220ms ease,
opacity 160ms ease,
margin-top 220ms ease;
}
.toc-global__body{
min-height: 0;
overflow: hidden;
}
.toc-global__list{
list-style: none;
margin: 0;
padding: 0;
max-height: 44vh;
overflow: auto;
padding-right: 8px;
scrollbar-gutter: stable;
}
.toc-global__list li::marker{ content: ""; }
.toc-item{ margin: 6px 0; }
@@ -112,13 +167,33 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
align-items: center;
}
.toc-active-indicator{
font-size: 14px;
line-height: 1;
.toc-active-mark{
width: 14px;
height: 14px;
display: inline-grid;
place-items: center;
border-radius: 999px;
border: 1px solid transparent;
opacity: .55;
}
.toc-active-spacer{
width: 14px;
.toc-active-mark__dot{
width: 5px;
height: 5px;
border-radius: 999px;
background: currentColor;
opacity: .65;
}
.toc-active-mark.is-on{
border-color: rgba(127,127,127,0.34);
opacity: 1;
}
.toc-active-mark.is-on .toc-active-mark__dot{
width: 6px;
height: 6px;
opacity: 1;
}
.toc-link__title{
@@ -156,11 +231,66 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
border-radius: 999px;
}
.toc-global__list{
max-height: 44vh;
overflow: auto;
padding-right: 8px;
scrollbar-gutter: stable;
@media (max-width: 980px){
.toc-global{
padding: 10px 12px;
border-radius: 14px;
}
.toc-global__head{
margin-bottom: 0;
padding-bottom: 0;
border-bottom: 0;
min-height: 28px;
}
.toc-global__title{
font-size: 13px;
}
.toc-global__body-clip{
margin-top: 10px;
}
.toc-global.is-collapsed .toc-global__body-clip{
grid-template-rows: 0fr;
opacity: 0;
margin-top: 0;
}
.toc-global__body{
min-height: 0;
overflow: hidden;
transition: opacity 180ms ease;
}
.toc-global.is-collapsed .toc-global__body{
opacity: 0;
}
.toc-global.is-collapsed .toc-global__chevron{
transform: rotate(-90deg);
}
.toc-link{
padding: 7px 9px;
border-radius: 12px;
}
.toc-link__title{
font-size: 12.5px;
line-height: 1.22;
}
.toc-badge{
font-size: 10px;
padding: 2px 7px;
}
.toc-global__list{
max-height: min(42vh, 360px);
padding-right: 4px;
}
}
@media (prefers-color-scheme: dark){
@@ -168,12 +298,88 @@ const entries = [...await getCollection(collection)].sort((a, b) => {
.toc-link:hover{ background: rgba(255,255,255,0.06); }
.toc-item.is-active .toc-link{ background: rgba(255,255,255,0.06); }
.toc-badge{ background: rgba(255,255,255,0.06); }
.toc-active-mark.is-on{ border-color: rgba(255,255,255,0.22); }
}
</style>
<script is:inline>
(() => {
const active = document.querySelector(".toc-global .toc-item.is-active");
if (active) active.scrollIntoView({ block: "nearest" });
function init() {
document.querySelectorAll("[data-toc-global]").forEach((nav) => {
if (nav.dataset.tocReady === "1") return;
nav.dataset.tocReady = "1";
const toggle = nav.querySelector(".toc-global__toggle");
const bodyClip = nav.querySelector(".toc-global__body-clip");
const active = nav.querySelector(".toc-item.is-active");
const mq = window.matchMedia("(max-width: 980px)");
const key = `archicratie:${nav.dataset.tocKey || "toc-global"}`;
if (!toggle || !bodyClip) return;
const read = () => {
try {
const v = localStorage.getItem(key);
if (v === "open") return true;
if (v === "closed") return false;
} catch {}
return null;
};
const write = (open) => {
try { localStorage.setItem(key, open ? "open" : "closed"); } catch {}
};
const setOpen = (open, { persist = true } = {}) => {
const isMobile = mq.matches;
nav.classList.toggle("is-collapsed", isMobile && !open);
toggle.setAttribute("aria-expanded", open ? "true" : "false");
if (persist && isMobile) write(open);
};
const initState = () => {
if (!mq.matches) {
setOpen(true, { persist: false });
if (active) active.scrollIntoView({ block: "nearest" });
return;
}
const stored = read();
const open = stored == null ? false : stored;
setOpen(open, { persist: false });
if (open && active) active.scrollIntoView({ block: "nearest" });
};
toggle.addEventListener("click", () => {
const open = toggle.getAttribute("aria-expanded") !== "true";
setOpen(open);
if (open && active) active.scrollIntoView({ block: "nearest" });
if (open) {
window.dispatchEvent(new CustomEvent("archicratie:tocGlobalOpen"));
}
});
window.addEventListener("archicratie:tocLocalOpen", () => {
if (!mq.matches) return;
setOpen(false);
});
if (mq.addEventListener) {
mq.addEventListener("change", initState);
} else if (mq.addListener) {
mq.addListener(initState);
}
initState();
});
}
if (document.readyState === "loading") {
window.addEventListener("DOMContentLoaded", init, { once: true });
} else {
init();
}
})();
</script>

View File

@@ -1,225 +1,162 @@
---
import {
getGlossaryEntryAsideData,
getGlossaryPortalLinks,
hrefOfGlossaryEntry,
slugOfGlossaryEntry,
} from "../lib/glossary";
const {
currentEntry,
allEntries = [],
} = Astro.props;
const slugOf = (entry) => String(entry.id).replace(/\.(md|mdx)$/i, "");
const hrefOf = (entry) => `/glossaire/${slugOf(entry)}/`;
const currentSlug = slugOfGlossaryEntry(currentEntry);
const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
const bySlug = new Map(allEntries.map((entry) => [slugOf(entry), entry]));
const currentSlug = slugOf(currentEntry);
const {
displayFamily,
displayDomain,
displayLevel,
showNoyau,
showSameFamily,
fondamentaux,
sameFamilyTitle,
sameFamilyEntries,
relationSections,
contextualTheory,
} = getGlossaryEntryAsideData(currentEntry, allEntries);
const fondamentauxWanted = [
"archicratie",
"tension",
"arcalite",
"cratialite",
"archicration",
"co-viabilite",
];
const fondamentaux = fondamentauxWanted
.map((slug) => bySlug.get(slug))
.filter(Boolean);
function resolveList(slugs = []) {
return slugs
.map((slug) => bySlug.get(slug))
.filter(Boolean);
}
function uniqueBySlug(entries) {
const seen = new Set();
const out = [];
for (const entry of entries) {
const slug = slugOf(entry);
if (seen.has(slug)) continue;
seen.add(slug);
out.push(entry);
}
return out;
}
const relatedEntries = uniqueBySlug(resolveList(currentEntry.data.related ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
const opposedEntries = uniqueBySlug(resolveList(currentEntry.data.opposedTo ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
const seeAlsoEntries = uniqueBySlug(resolveList(currentEntry.data.seeAlso ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
const paradigmes = [...allEntries]
.filter((e) => e.data.kind === "paradigme" && slugOf(e) !== currentSlug)
.sort((a, b) => collator.compare(a.data.term, b.data.term));
function contextualParadigmsFor(entry) {
const relatedParadigms = (entry.data.related ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const seeAlsoParadigms = (entry.data.seeAlso ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const opposedParadigms = (entry.data.opposedTo ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const merged = uniqueBySlug([
...relatedParadigms,
...seeAlsoParadigms,
...opposedParadigms,
]);
if (merged.length > 0) {
return merged.slice(0, 5);
}
if (entry.data.kind === "paradigme") {
const preferred = [
"gouvernementalite",
"gouvernementalite-algorithmique",
"cybernetique",
"biopolitique",
"bureaucratie",
"decisionnisme",
"rationalite-bureaucratique",
"democratie-deliberative",
"gouvernance-des-communs",
"liberalisme-proprietaire",
];
return uniqueBySlug(
preferred
.filter((slug) => slug !== currentSlug)
.map((slug) => bySlug.get(slug))
.filter(Boolean)
).slice(0, 6);
}
return paradigmes.slice(0, 5);
}
const contextualParadigms = contextualParadigmsFor(currentEntry);
const kindLabels = {
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
const domainLabels = {
transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const metaLabel = [
kindLabels[currentEntry.data.kind] ?? currentEntry.data.kind,
domainLabels[currentEntry.data.domain] ?? currentEntry.data.domain,
levelLabels[currentEntry.data.level] ?? currentEntry.data.level,
].join(" · ");
const portalLinks = getGlossaryPortalLinks();
---
<nav class="glossary-aside" aria-label="Navigation du glossaire">
<div class="glossary-aside__block glossary-aside__block--intro">
<a class="glossary-aside__back" href="/glossaire/">← Retour au glossaire</a>
<div class="glossary-aside__title">Glossaire archicratique</div>
<div class="glossary-aside__meta">{metaLabel}</div>
<div class="glossary-aside__pills" aria-label="Repères de lecture">
<span class="glossary-aside__pill glossary-aside__pill--family">
{displayFamily}
</span>
{displayDomain && (
<span class="glossary-aside__pill">{displayDomain}</span>
)}
{displayLevel && (
<span class="glossary-aside__pill">{displayLevel}</span>
)}
</div>
</div>
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Portails</h2>
<ul class="glossary-aside__list">
<li><a href="/glossaire/">Index général</a></li>
<li><a href="/glossaire/paradigmes/">Page paradigmes</a></li>
</ul>
</section>
<details class="glossary-aside__block glossary-aside__disclosure" open>
<summary class="glossary-aside__summary">
<span class="glossary-aside__heading">Portails</span>
<span class="glossary-aside__chevron" aria-hidden="true">▾</span>
</summary>
{fondamentaux.length > 0 && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Noyau archicratique</h2>
<div class="glossary-aside__panel">
<ul class="glossary-aside__list">
{fondamentaux.map((entry) => {
const active = slugOf(entry) === currentSlug;
return (
<li>
<a
href={hrefOf(entry)}
aria-current={active ? "page" : undefined}
class={active ? "is-active" : undefined}
>
{entry.data.term}
</a>
</li>
);
})}
</ul>
</section>
)}
{(relatedEntries.length > 0 || opposedEntries.length > 0 || seeAlsoEntries.length > 0) && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Autour de cette fiche</h2>
{relatedEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Liés</h3>
<ul class="glossary-aside__list">
{relatedEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
{opposedEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Opposés</h3>
<ul class="glossary-aside__list">
{opposedEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
{seeAlsoEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Voir aussi</h3>
<ul class="glossary-aside__list">
{seeAlsoEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
</section>
)}
{contextualParadigms.length > 0 && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">
{currentEntry.data.kind === "paradigme" ? "Paradigmes voisins" : "Paradigmes mobilisés"}
</h2>
<ul class="glossary-aside__list">
{contextualParadigms.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
{portalLinks.map((item) => (
<li><a href={item.href}>{item.label}</a></li>
))}
</ul>
</section>
</div>
</details>
{showNoyau && (
<details class="glossary-aside__block glossary-aside__disclosure" open>
<summary class="glossary-aside__summary">
<span class="glossary-aside__heading">Noyau archicratique</span>
<span class="glossary-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-aside__panel">
<ul class="glossary-aside__list">
{fondamentaux.map((entry) => {
const active = slugOfGlossaryEntry(entry) === currentSlug;
return (
<li>
<a
href={hrefOfGlossaryEntry(entry)}
aria-current={active ? "page" : undefined}
class={active ? "is-active" : undefined}
>
{entry.data.term}
</a>
</li>
);
})}
</ul>
</div>
</details>
)}
{showSameFamily && (
<details class="glossary-aside__block glossary-aside__disclosure" open>
<summary class="glossary-aside__summary">
<span class="glossary-aside__heading">{sameFamilyTitle}</span>
<span class="glossary-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-aside__panel">
<ul class="glossary-aside__list">
{sameFamilyEntries.map((entry) => {
const active = slugOfGlossaryEntry(entry) === currentSlug;
return (
<li>
<a
href={hrefOfGlossaryEntry(entry)}
aria-current={active ? "page" : undefined}
class={active ? "is-active" : undefined}
>
{entry.data.term}
</a>
</li>
);
})}
</ul>
</div>
</details>
)}
{relationSections.length > 0 && (
<details class="glossary-aside__block glossary-aside__disclosure" open>
<summary class="glossary-aside__summary">
<span class="glossary-aside__heading">Autour de cette fiche</span>
<span class="glossary-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-aside__panel">
{relationSections.map((section) => (
<>
<h3 class="glossary-aside__subheading">{section.title}</h3>
<ul class="glossary-aside__list">
{section.items.map((entry) => (
<li><a href={hrefOfGlossaryEntry(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
))}
</div>
</details>
)}
{contextualTheory.length > 0 && (
<details class="glossary-aside__block glossary-aside__disclosure" open>
<summary class="glossary-aside__summary">
<span class="glossary-aside__heading">Paysage théorique</span>
<span class="glossary-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-aside__panel">
<ul class="glossary-aside__list">
{contextualTheory.map((entry) => (
<li><a href={hrefOfGlossaryEntry(entry)}>{entry.data.term}</a></li>
))}
</ul>
</div>
</details>
)}
</nav>
@@ -228,54 +165,119 @@ const metaLabel = [
display: flex;
flex-direction: column;
gap: 14px;
min-width: 0;
}
.glossary-aside__block{
border: 1px solid rgba(127,127,127,0.22);
border-radius: 16px;
padding: 12px;
padding: 14px;
background: rgba(127,127,127,0.05);
min-width: 0;
}
.glossary-aside__block--intro{
padding-top: 11px;
padding-bottom: 11px;
padding-top: 13px;
padding-bottom: 13px;
}
.glossary-aside__back{
display: inline-block;
margin-bottom: 8px;
font-size: 13px;
margin-bottom: 10px;
font-size: 14px;
font-weight: 700;
line-height: 1.35;
text-decoration: none;
}
.glossary-aside__title{
font-size: 14px;
font-weight: 800;
letter-spacing: .2px;
line-height: 1.25;
font-size: 18px;
font-weight: 850;
letter-spacing: .1px;
line-height: 1.22;
}
.glossary-aside__meta{
margin-top: 8px;
font-size: 12px;
.glossary-aside__pills{
display: flex;
flex-wrap: wrap;
gap: 7px;
margin-top: 10px;
}
.glossary-aside__pill{
display: inline-flex;
align-items: center;
padding: 5px 10px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 13px;
line-height: 1.35;
opacity: .78;
opacity: .92;
min-width: 0;
}
.glossary-aside__pill--family{
border-color: rgba(127,127,127,0.38);
font-weight: 800;
}
.glossary-aside__disclosure{
padding: 0;
overflow: hidden;
}
.glossary-aside__summary{
list-style: none;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 14px;
cursor: pointer;
user-select: none;
}
.glossary-aside__summary::-webkit-details-marker{
display: none;
}
.glossary-aside__summary:hover{
background: rgba(127,127,127,0.035);
}
.glossary-aside__heading{
margin: 0 0 10px;
font-size: 13px;
font-weight: 800;
opacity: .9;
margin: 0;
font-size: 16px;
font-weight: 850;
line-height: 1.28;
opacity: .97;
}
.glossary-aside__chevron{
flex: 0 0 auto;
font-size: 14px;
line-height: 1;
opacity: .72;
transform: rotate(0deg);
transition: transform 160ms ease, opacity 160ms ease;
}
.glossary-aside__disclosure[open] .glossary-aside__chevron{
transform: rotate(180deg);
opacity: .96;
}
.glossary-aside__panel{
padding: 0 14px 14px;
}
.glossary-aside__subheading{
margin: 12px 0 8px;
font-size: 12px;
margin: 13px 0 8px;
font-size: 12.5px;
font-weight: 800;
opacity: .8;
line-height: 1.35;
opacity: .82;
text-transform: uppercase;
letter-spacing: .04em;
}
@@ -287,22 +289,217 @@ const metaLabel = [
}
.glossary-aside__list li{
margin: 6px 0;
margin: 7px 0;
}
.glossary-aside__list a{
text-decoration: none;
font-size: 13px;
line-height: 1.3;
font-size: 14px;
line-height: 1.4;
word-break: break-word;
}
.glossary-aside__list a.is-active{
font-weight: 800;
}
@media (prefers-color-scheme: dark){
@media (max-width: 860px){
.glossary-aside{
gap: 10px;
}
.glossary-aside__block{
background: rgba(255,255,255,0.04);
border-radius: 14px;
}
.glossary-aside__block--intro{
padding: 12px;
}
.glossary-aside__back{
margin-bottom: 8px;
font-size: 13px;
line-height: 1.28;
}
.glossary-aside__title{
font-size: 19px;
line-height: 1.18;
}
.glossary-aside__pills{
gap: 6px;
margin-top: 8px;
}
.glossary-aside__pill{
padding: 4px 9px;
font-size: 12px;
line-height: 1.26;
}
.glossary-aside__summary{
padding: 12px;
}
.glossary-aside__heading{
font-size: 17px;
line-height: 1.2;
}
.glossary-aside__panel{
padding: 0 12px 12px;
}
.glossary-aside__subheading{
margin: 10px 0 6px;
font-size: 11.5px;
line-height: 1.26;
}
.glossary-aside__list li{
margin: 5px 0;
}
.glossary-aside__list a{
font-size: 14px;
line-height: 1.34;
}
.glossary-aside__disclosure:not([open]) .glossary-aside__panel{
display: none;
}
}
</style>
@media (max-width: 860px){
.glossary-aside__disclosure{
background: rgba(127,127,127,0.045);
}
.glossary-aside__disclosure[open] .glossary-aside__summary{
border-bottom: 1px solid rgba(127,127,127,0.12);
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-aside{
gap: 8px;
}
.glossary-aside__block{
border-radius: 12px;
}
.glossary-aside__block--intro{
padding: 10px 11px;
}
.glossary-aside__back{
margin-bottom: 6px;
font-size: 12px;
line-height: 1.2;
}
.glossary-aside__title{
font-size: 16px;
line-height: 1.14;
}
.glossary-aside__pills{
gap: 5px;
margin-top: 7px;
}
.glossary-aside__pill{
padding: 3px 8px;
font-size: 11px;
line-height: 1.2;
}
.glossary-aside__summary{
padding: 10px 11px;
}
.glossary-aside__heading{
font-size: 15px;
line-height: 1.16;
}
.glossary-aside__panel{
padding: 0 11px 10px;
}
.glossary-aside__subheading{
margin: 8px 0 5px;
font-size: 11px;
line-height: 1.18;
}
.glossary-aside__list li{
margin: 4px 0;
}
.glossary-aside__list a{
font-size: 13px;
line-height: 1.28;
}
}
@media (min-width: 861px){
.glossary-aside__summary{
cursor: default;
}
.glossary-aside__chevron{
display: none;
}
}
@media (prefers-color-scheme: dark){
.glossary-aside__block,
.glossary-aside__pill{
background: rgba(255,255,255,0.04);
}
.glossary-aside__summary:hover{
background: rgba(255,255,255,0.03);
}
}
</style>
<script is:inline>
(() => {
const syncMobileDisclosure = () => {
const mobile = window.matchMedia("(max-width: 860px)").matches;
const smallLandscape = window.matchMedia(
"(orientation: landscape) and (max-width: 920px) and (max-height: 520px)"
).matches;
const compact = mobile || smallLandscape;
document
.querySelectorAll(".glossary-aside__disclosure")
.forEach((el, index) => {
if (!(el instanceof HTMLDetailsElement)) return;
if (compact) {
if (!el.dataset.mobileInit) {
el.open = index === 0;
el.dataset.mobileInit = "true";
}
} else {
el.open = true;
}
});
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", syncMobileDisclosure, { once: true });
} else {
syncMobileDisclosure();
}
window.addEventListener("resize", syncMobileDisclosure);
window.addEventListener("pageshow", syncMobileDisclosure);
})();
</script>

View File

@@ -0,0 +1,110 @@
---
import { hrefOfGlossaryEntry, type GlossaryEntry } from "../lib/glossary";
export interface Props {
entries?: GlossaryEntry[];
wide?: boolean;
}
const {
entries = [],
wide = false,
} = Astro.props;
---
<div class="glossary-cards">
{entries.map((entry) => (
<a
class:list={[
"glossary-card",
wide && "glossary-card--wide",
]}
href={hrefOfGlossaryEntry(entry)}
>
<strong>{entry.data.term}</strong>
<span>{entry.data.definitionShort}</span>
</a>
))}
</div>
<style>
.glossary-cards{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
margin-top: 12px;
}
.glossary-card{
display: flex;
flex-direction: column;
gap: 7px;
padding: 13px 14px;
border: 1px solid var(--glossary-border);
border-radius: 16px;
background: var(--glossary-bg-soft);
text-decoration: none;
transition: transform 120ms ease, background 120ms ease, border-color 120ms ease;
}
.glossary-card:hover{
transform: translateY(-1px);
background: var(--glossary-bg-soft-strong);
border-color: rgba(0,217,255,0.16);
text-decoration: none;
}
.glossary-card--wide{
grid-column: 1 / -1;
}
.glossary-card strong{
color: var(--glossary-accent);
font-size: 1.02rem;
line-height: 1.24;
}
.glossary-card span{
color: inherit;
font-size: .98rem;
line-height: 1.46;
opacity: .94;
}
@media (max-width: 760px){
.glossary-cards{
grid-template-columns: 1fr;
gap: 10px;
margin-top: 10px;
}
.glossary-card{
gap: 6px;
padding: 12px 12px;
border-radius: 14px;
}
.glossary-card strong{
font-size: .98rem;
}
.glossary-card span{
font-size: .94rem;
line-height: 1.42;
}
.glossary-card--wide{
grid-column: auto;
}
}
@media (prefers-color-scheme: dark){
.glossary-card{
background: rgba(255,255,255,0.04);
}
.glossary-card:hover{
background: rgba(255,255,255,0.07);
}
}
</style>

View File

@@ -0,0 +1,16 @@
<div class="glossary-entry-body">
<slot />
</div>
<style>
.glossary-entry-body{
margin-bottom: 28px;
}
:global(.glossary-entry-body h2),
:global(.glossary-entry-body h3),
:global(.glossary-relations h2),
:global(.glossary-relations h3){
scroll-margin-top: calc(var(--sticky-offset-px, 96px) + 18px);
}
</style>

View File

@@ -0,0 +1,260 @@
---
interface Props {
term: string;
definitionShort: string;
displayFamily: string;
displayDomain?: string;
displayLevel?: string;
mobilizedAuthors?: string[];
comparisonTraditions?: string[];
}
const {
term,
definitionShort,
displayFamily,
displayDomain = "",
displayLevel = "",
mobilizedAuthors = [],
comparisonTraditions = [],
} = Astro.props;
const hasScholarlyMeta =
mobilizedAuthors.length > 0 ||
comparisonTraditions.length > 0;
---
<header class="glossary-entry-head" data-ge-hero>
<div class="glossary-entry-head__title">
<h1>{term}</h1>
</div>
<div class="glossary-entry-summary">
<p class="glossary-entry-dek">
<em>{definitionShort}</em>
</p>
<div class="glossary-entry-signals" aria-label="Repères de lecture">
<span class="glossary-pill glossary-pill--family">
<strong>Famille :</strong> {displayFamily}
</span>
{displayDomain && (
<span class="glossary-pill">
<strong>Domaine :</strong> {displayDomain}
</span>
)}
{displayLevel && (
<span class="glossary-pill">
<strong>Niveau :</strong> {displayLevel}
</span>
)}
</div>
{hasScholarlyMeta && (
<div class="glossary-entry-meta">
{mobilizedAuthors.length > 0 && (
<p>
<strong>Auteurs mobilisés :</strong> {mobilizedAuthors.join(" / ")}
</p>
)}
{comparisonTraditions.length > 0 && (
<p>
<strong>Traditions de comparaison :</strong> {comparisonTraditions.join(" / ")}
</p>
)}
</div>
)}
</div>
</header>
<style>
.glossary-entry-head{
position: sticky;
top: calc(var(--sticky-header-h, 0px) + var(--page-gap, 12px));
z-index: 11;
margin: 0 0 22px;
border: 1px solid rgba(127,127,127,0.18);
border-radius: 24px;
background:
linear-gradient(180deg, rgba(0,0,0,0.60), rgba(0,0,0,0.92)),
radial-gradient(900px 240px at 20% 0%, rgba(0,217,255,0.08), transparent 60%);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
overflow: hidden;
transition:
border-radius 180ms ease,
box-shadow 180ms ease,
border-color 180ms ease;
}
.glossary-entry-head__title{
padding:
var(--entry-hero-pad-top, 18px)
var(--entry-hero-pad-x, 18px)
calc(var(--entry-hero-pad-top, 18px) - 2px);
transition: padding 180ms ease;
}
.glossary-entry-head h1{
margin: 0;
font-size: var(--entry-hero-h1-size, clamp(2.2rem, 4vw, 3.15rem));
line-height: 1.02;
letter-spacing: -.04em;
font-weight: 850;
transition: font-size 180ms ease;
}
.glossary-entry-summary{
display: grid;
gap: var(--entry-hero-gap, 14px);
padding:
calc(var(--entry-hero-pad-bottom, 18px) - 2px)
var(--entry-hero-pad-x, 18px)
var(--entry-hero-pad-bottom, 18px);
border-top: 1px solid rgba(127,127,127,0.14);
background: rgba(255,255,255,0.02);
transition: gap 180ms ease, padding 180ms ease;
}
.glossary-entry-dek{
margin: 0;
max-width: var(--entry-hero-dek-maxw, 76ch);
font-size: var(--entry-hero-dek-size, 1.04rem);
line-height: var(--entry-hero-dek-lh, 1.55);
opacity: .94;
transition:
max-width 180ms ease,
font-size 180ms ease,
line-height 180ms ease;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
overflow: hidden;
}
.glossary-entry-signals{
display: flex;
flex-wrap: wrap;
gap: 7px;
margin: 0;
transition: gap 180ms ease;
}
.glossary-pill{
display: inline-flex;
align-items: center;
gap: 5px;
padding: 5px 9px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.05);
font-size: 12.5px;
line-height: 1.28;
transition:
padding 180ms ease,
font-size 180ms ease,
background 120ms ease,
border-color 120ms ease;
}
.glossary-pill--family{
border-color: rgba(127,127,127,0.36);
font-weight: 700;
}
.glossary-entry-meta{
margin: 0;
padding: 10px 12px;
border: 1px solid rgba(127,127,127,0.18);
border-radius: 12px;
background: rgba(127,127,127,0.04);
max-height: var(--entry-hero-meta-max-h, 12rem);
opacity: var(--entry-hero-meta-opacity, 1);
overflow: hidden;
transition:
max-height 180ms ease,
opacity 140ms ease,
padding 180ms ease,
border-color 180ms ease;
}
.glossary-entry-meta p{
margin: 0;
font-size: 13.5px;
line-height: 1.45;
}
.glossary-entry-meta p + p{
margin-top: 6px;
}
@media (max-width: 860px){
.glossary-entry-head{
position: static;
border-radius: 18px;
margin-bottom: 16px;
}
.glossary-entry-head__title{
padding: 12px 12px 10px;
}
.glossary-entry-summary{
gap: 9px;
padding: 10px 12px 12px;
}
.glossary-entry-dek{
max-width: none;
-webkit-line-clamp: 3;
}
.glossary-entry-signals{
gap: 6px;
}
.glossary-pill{
font-size: 12px;
padding: 4px 8px;
}
}
@media (max-width: 520px){
.glossary-entry-head{
border-radius: 16px;
margin-bottom: 14px;
}
.glossary-entry-head__title{
padding: 10px 10px 9px;
}
.glossary-entry-summary{
gap: 8px;
padding: 9px 10px 10px;
}
.glossary-entry-dek{
-webkit-line-clamp: 2;
}
.glossary-pill{
font-size: 11.5px;
padding: 3px 7px;
}
}
@media (prefers-color-scheme: dark){
.glossary-entry-meta{
background: rgba(255,255,255,0.03);
}
.glossary-pill{
background: rgba(255,255,255,0.04);
}
}
</style>

View File

@@ -0,0 +1,31 @@
---
interface Props {
canonicalHref: string;
term: string;
}
const { canonicalHref, term } = Astro.props;
---
<p class="glossary-legacy-note">
Cette entrée a été renommée. Lintitulé canonique est :
<a href={canonicalHref}>{term}</a>.
</p>
<style>
.glossary-legacy-note{
padding: 10px 12px;
border: 1px solid rgba(127,127,127,0.22);
border-radius: 12px;
background: rgba(127,127,127,0.05);
font-size: 14px;
line-height: 1.45;
margin-bottom: 18px;
}
@media (prefers-color-scheme: dark){
.glossary-legacy-note{
background: rgba(255,255,255,0.04);
}
}
</style>

View File

@@ -0,0 +1,289 @@
<script is:inline>
(() => {
const boot = () => {
const body = document.body;
const root = document.documentElement;
const hero = document.querySelector("[data-ge-hero]");
const follow = document.getElementById("reading-follow");
const mqMobile = window.matchMedia("(max-width: 860px)");
const mqSmallLandscape = window.matchMedia(
"(orientation: landscape) and (max-width: 920px) and (max-height: 520px)"
);
if (!body || !root || !hero || !follow) return;
const BODY_CLASS = "is-glossary-entry-page";
const FOLLOW_ON_CLASS = "glossary-entry-follow-on";
let lastHeight = -1;
let lastFollowOn = null;
let raf = 0;
body.classList.add(BODY_CLASS);
const isCompactViewport = () =>
mqMobile.matches || mqSmallLandscape.matches;
const heroHeight = () =>
Math.max(0, Math.round(hero.getBoundingClientRect().height || 0));
const neutralizeGlobalFollowIfCompact = () => {
if (!isCompactViewport()) {
follow.style.display = "";
return;
}
follow.classList.remove("is-on");
follow.setAttribute("aria-hidden", "true");
follow.style.display = "none";
root.style.setProperty("--followbar-h", "0px");
};
const computeFollowOn = () =>
!isCompactViewport() &&
follow.classList.contains("is-on") &&
follow.style.display !== "none" &&
follow.getAttribute("aria-hidden") !== "true";
const stripLocalSticky = () => {
document
.querySelectorAll(
".glossary-entry-body h2, .glossary-entry-body h3, .glossary-relations h2, .glossary-relations h3"
)
.forEach((el) => {
el.classList.remove("is-sticky");
el.removeAttribute("data-sticky-active");
});
};
const applyLocalStickyHeight = () => {
const h = isCompactViewport() ? 0 : heroHeight();
if (h === lastHeight) return;
lastHeight = h;
if (typeof window.__archiSetLocalStickyHeight === "function") {
window.__archiSetLocalStickyHeight(h);
} else {
root.style.setProperty("--glossary-local-sticky-h", `${h}px`);
}
};
const syncFollowState = () => {
const on = computeFollowOn();
if (on === lastFollowOn) return;
lastFollowOn = on;
body.classList.toggle(FOLLOW_ON_CLASS, on);
};
const syncAll = () => {
neutralizeGlobalFollowIfCompact();
stripLocalSticky();
syncFollowState();
applyLocalStickyHeight();
};
const schedule = () => {
if (raf) return;
raf = requestAnimationFrame(() => {
raf = 0;
syncAll();
});
};
const followObserver = new MutationObserver(schedule);
followObserver.observe(follow, {
attributes: true,
attributeFilter: ["class", "style", "aria-hidden"],
subtree: false,
});
const heroResizeObserver =
typeof ResizeObserver !== "undefined"
? new ResizeObserver(schedule)
: null;
heroResizeObserver?.observe(hero);
window.addEventListener("resize", schedule);
window.addEventListener("pageshow", schedule);
if (document.fonts?.ready) {
document.fonts.ready.then(schedule).catch(() => {});
}
if (mqMobile.addEventListener) {
mqMobile.addEventListener("change", schedule);
} else if (mqMobile.addListener) {
mqMobile.addListener(schedule);
}
if (mqSmallLandscape.addEventListener) {
mqSmallLandscape.addEventListener("change", schedule);
} else if (mqSmallLandscape.addListener) {
mqSmallLandscape.addListener(schedule);
}
schedule();
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", boot, { once: true });
} else {
boot();
}
})();
</script>
<style>
:global(body.is-glossary-entry-page #reading-follow){
z-index: 10;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-head){
margin-bottom: 0;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
box-shadow: 0 8px 20px rgba(0,0,0,0.10);
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-head h1){
letter-spacing: -.03em;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-summary){
gap: 8px;
padding-top: 10px;
padding-bottom: 8px;
border-top-color: rgba(127,127,127,0.10);
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-dek){
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-signals){
gap: 5px;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-pill){
gap: 4px;
padding: 3px 7px;
font-size: 11px;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-meta){
padding: 0;
border-color: transparent;
max-height: 0;
opacity: 0;
overflow: hidden;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on #reading-follow){
transform: translateY(-1px);
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on #reading-follow .reading-follow__inner){
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
:global(body.is-glossary-entry-page .glossary-entry-body h2.is-sticky),
:global(body.is-glossary-entry-page .glossary-entry-body h2[data-sticky-active="true"]),
:global(body.is-glossary-entry-page .glossary-entry-body h3.is-sticky),
:global(body.is-glossary-entry-page .glossary-entry-body h3[data-sticky-active="true"]),
:global(body.is-glossary-entry-page .glossary-relations h2.is-sticky),
:global(body.is-glossary-entry-page .glossary-relations h2[data-sticky-active="true"]),
:global(body.is-glossary-entry-page .glossary-relations h3.is-sticky),
:global(body.is-glossary-entry-page .glossary-relations h3[data-sticky-active="true"]){
position: static !important;
top: auto !important;
z-index: auto !important;
padding: 0 !important;
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
@media (max-width: 860px){
:global(body.is-glossary-entry-page #reading-follow),
:global(body.is-glossary-entry-page #reading-follow .reading-follow__inner){
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
visibility: hidden !important;
}
:global(body.is-glossary-entry-page){
--followbar-h: 0px !important;
--sticky-offset-px: calc(var(--sticky-header-h, 0px) + var(--page-gap, 12px)) !important;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-head){
margin-bottom: 18px;
border-radius: 20px;
box-shadow: none;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-summary){
gap: 6px;
padding-top: 8px;
padding-bottom: 8px;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-dek){
display: none;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-signals){
gap: 5px;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-pill){
padding: 3px 6px;
font-size: 10.5px;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
:global(body.is-glossary-entry-page #reading-follow),
:global(body.is-glossary-entry-page #reading-follow .reading-follow__inner){
display: none !important;
opacity: 0 !important;
pointer-events: none !important;
visibility: hidden !important;
}
:global(body.is-glossary-entry-page){
--followbar-h: 0px !important;
--sticky-offset-px: calc(var(--sticky-header-h, 0px) + var(--page-gap, 12px)) !important;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-head){
margin-bottom: 14px;
border-radius: 16px;
box-shadow: none;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-summary){
gap: 5px;
padding-top: 6px;
padding-bottom: 6px;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-entry-dek){
display: none;
}
:global(body.is-glossary-entry-page.glossary-entry-follow-on .glossary-pill){
padding: 2px 6px;
font-size: 10px;
}
}
</style>

View File

@@ -0,0 +1,382 @@
---
import {
getFondamentaux,
getGlossaryHomeStats,
getGlossaryPortalLinks,
hrefOfGlossaryEntry,
} from "../lib/glossary";
const {
allEntries = [],
} = Astro.props;
const fondamentaux = getFondamentaux(allEntries);
const portalLinks = getGlossaryPortalLinks();
const {
totalEntries,
paradigmesCount,
doctrinesCount,
metaRegimesCount,
} = getGlossaryHomeStats(allEntries);
---
<nav class="glossary-home-aside" aria-label="Navigation du portail du glossaire">
<div class="glossary-home-aside__block glossary-home-aside__block--intro">
<div class="glossary-home-aside__title">Glossaire archicratique</div>
<div class="glossary-home-aside__meta">
portail de lecture · cartographie conceptuelle
</div>
<div class="glossary-home-aside__pills" aria-label="Repères de navigation">
<span class="glossary-home-aside__pill">{totalEntries} entrées</span>
<span class="glossary-home-aside__pill">{metaRegimesCount} méta-régimes</span>
<span class="glossary-home-aside__pill">
{doctrinesCount} doctrine{doctrinesCount > 1 ? "s" : ""} · {paradigmesCount} paradigme{paradigmesCount > 1 ? "s" : ""}
</span>
</div>
</div>
<details class="glossary-home-aside__block glossary-home-aside__disclosure" open>
<summary class="glossary-home-aside__summary">
<span class="glossary-home-aside__heading">Parcours du glossaire</span>
<span class="glossary-home-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-home-aside__panel">
<ul class="glossary-home-aside__list">
{portalLinks.map((item) => (
<li><a href={item.href}>{item.label}</a></li>
))}
</ul>
</div>
</details>
{fondamentaux.length > 0 && (
<details class="glossary-home-aside__block glossary-home-aside__disclosure" open>
<summary class="glossary-home-aside__summary">
<span class="glossary-home-aside__heading">Noyau archicratique</span>
<span class="glossary-home-aside__chevron" aria-hidden="true">▾</span>
</summary>
<div class="glossary-home-aside__panel">
<ul class="glossary-home-aside__list">
{fondamentaux.map((entry) => (
<li><a href={hrefOfGlossaryEntry(entry)}>{entry.data.term}</a></li>
))}
</ul>
</div>
</details>
)}
</nav>
<style>
.glossary-home-aside{
display: flex;
flex-direction: column;
gap: 14px;
min-width: 0;
}
.glossary-home-aside__block{
border: 1px solid rgba(127,127,127,0.22);
border-radius: 16px;
padding: 14px;
background: rgba(127,127,127,0.05);
min-width: 0;
}
.glossary-home-aside__block--intro{
padding-top: 13px;
padding-bottom: 13px;
}
.glossary-home-aside__title{
font-size: 18px;
font-weight: 850;
letter-spacing: .1px;
line-height: 1.22;
}
.glossary-home-aside__meta{
margin-top: 8px;
font-size: 13px;
line-height: 1.4;
opacity: .8;
}
.glossary-home-aside__pills{
display: flex;
flex-wrap: wrap;
gap: 7px;
margin-top: 11px;
}
.glossary-home-aside__pill{
display: inline-flex;
align-items: center;
padding: 5px 10px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 13px;
line-height: 1.35;
opacity: .92;
min-width: 0;
}
.glossary-home-aside__disclosure{
padding: 0;
overflow: hidden;
}
.glossary-home-aside__summary{
list-style: none;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 14px;
cursor: pointer;
user-select: none;
}
.glossary-home-aside__summary::-webkit-details-marker{
display: none;
}
.glossary-home-aside__summary:hover{
background: rgba(127,127,127,0.035);
}
.glossary-home-aside__heading{
margin: 0;
font-size: 16px;
font-weight: 850;
line-height: 1.28;
opacity: .97;
}
.glossary-home-aside__chevron{
flex: 0 0 auto;
font-size: 14px;
line-height: 1;
opacity: .72;
transform: rotate(0deg);
transition: transform 160ms ease, opacity 160ms ease;
}
.glossary-home-aside__disclosure[open] .glossary-home-aside__chevron{
transform: rotate(180deg);
opacity: .96;
}
.glossary-home-aside__panel{
padding: 0 14px 14px;
}
.glossary-home-aside__list{
list-style: none;
margin: 0;
padding: 0;
}
.glossary-home-aside__list li{
margin: 7px 0;
}
.glossary-home-aside__list a{
text-decoration: none;
font-size: 14px;
line-height: 1.42;
word-break: break-word;
}
@media (max-width: 860px){
.glossary-home-aside{
gap: 10px;
}
.glossary-home-aside__block{
border-radius: 14px;
}
.glossary-home-aside__block--intro{
padding: 12px;
}
.glossary-home-aside__title{
font-size: 19px;
line-height: 1.18;
}
.glossary-home-aside__meta{
margin-top: 6px;
font-size: 12px;
line-height: 1.32;
}
.glossary-home-aside__pills{
gap: 6px;
margin-top: 9px;
}
.glossary-home-aside__pill{
padding: 4px 9px;
font-size: 12px;
line-height: 1.28;
}
.glossary-home-aside__summary{
padding: 12px;
}
.glossary-home-aside__heading{
font-size: 17px;
line-height: 1.2;
}
.glossary-home-aside__panel{
padding: 0 12px 12px;
}
.glossary-home-aside__list li{
margin: 5px 0;
}
.glossary-home-aside__list a{
font-size: 14px;
line-height: 1.34;
}
.glossary-home-aside__disclosure:not([open]) .glossary-home-aside__panel{
display: none;
}
}
@media (max-width: 860px){
.glossary-home-aside__disclosure{
background: rgba(127,127,127,0.045);
}
.glossary-home-aside__disclosure[open] .glossary-home-aside__summary{
border-bottom: 1px solid rgba(127,127,127,0.12);
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-home-aside{
gap: 8px;
}
.glossary-home-aside__block{
border-radius: 12px;
}
.glossary-home-aside__block--intro{
padding: 10px 11px;
}
.glossary-home-aside__title{
font-size: 16px;
line-height: 1.14;
}
.glossary-home-aside__meta{
font-size: 11px;
line-height: 1.26;
margin-top: 5px;
}
.glossary-home-aside__pills{
gap: 5px;
margin-top: 8px;
}
.glossary-home-aside__pill{
padding: 3px 8px;
font-size: 11px;
line-height: 1.2;
}
.glossary-home-aside__summary{
padding: 10px 11px;
}
.glossary-home-aside__heading{
font-size: 15px;
line-height: 1.16;
}
.glossary-home-aside__panel{
padding: 0 11px 10px;
}
.glossary-home-aside__list li{
margin: 4px 0;
}
.glossary-home-aside__list a{
font-size: 13px;
line-height: 1.28;
}
}
@media (min-width: 861px){
.glossary-home-aside__summary{
cursor: default;
}
.glossary-home-aside__chevron{
display: none;
}
}
@media (prefers-color-scheme: dark){
.glossary-home-aside__block,
.glossary-home-aside__pill{
background: rgba(255,255,255,0.04);
}
.glossary-home-aside__summary:hover{
background: rgba(255,255,255,0.03);
}
}
</style>
<script is:inline>
(() => {
const syncMobileDisclosure = () => {
const mobile = window.matchMedia("(max-width: 860px)").matches;
const smallLandscape = window.matchMedia(
"(orientation: landscape) and (max-width: 920px) and (max-height: 520px)"
).matches;
const compact = mobile || smallLandscape;
document
.querySelectorAll(".glossary-home-aside__disclosure")
.forEach((el, index) => {
if (!(el instanceof HTMLDetailsElement)) return;
if (compact) {
if (!el.dataset.mobileInit) {
el.open = index === 0;
el.dataset.mobileInit = "true";
}
} else {
el.open = true;
}
});
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", syncMobileDisclosure, { once: true });
} else {
syncMobileDisclosure();
}
window.addEventListener("resize", syncMobileDisclosure);
window.addEventListener("pageshow", syncMobileDisclosure);
})();
</script>

View File

@@ -0,0 +1,364 @@
---
export interface Props {
kicker?: string;
title?: string;
intro?: string;
}
const {
kicker = "Référentiel terminologique",
title = "Glossaire archicratique",
intro = "Ce glossaire nest pas seulement un index de définitions. Il constitue une porte dentrée dans la pensée archicratique : une cartographie raisonnée des concepts fondamentaux, des scènes, des dynamiques et des méta-régimes à partir desquels une société peut être décrite comme organisation de tensions et recherche de co-viabilité.",
} = Astro.props;
---
<header class="glossary-hero" id="glossary-hero">
<p class="glossary-kicker">{kicker}</p>
<h1>{title}</h1>
<div class="glossary-hero__collapsible">
<p
class="glossary-intro"
id="glossary-hero-intro"
aria-hidden="false"
>
{intro}
</p>
<button
class="glossary-hero__toggle"
id="glossary-hero-toggle"
type="button"
aria-controls="glossary-hero-intro"
aria-expanded="false"
hidden
>
lire la suite
</button>
</div>
<h2
class="glossary-hero-follow"
id="glossary-hero-follow"
aria-hidden="true"
></h2>
</header>
<style>
.glossary-hero{
position: sticky;
top: var(--glossary-sticky-top);
z-index: 12;
margin-bottom: 28px;
padding: 14px 16px 18px;
border: 1px solid rgba(127,127,127,0.18);
border-radius: 28px;
background:
linear-gradient(180deg, rgba(0,0,0,0.60), rgba(0,0,0,0.90)),
radial-gradient(900px 240px at 20% 0%, rgba(0,217,255,0.08), transparent 60%);
transition:
padding 220ms cubic-bezier(.22,.8,.22,1),
border-radius 220ms cubic-bezier(.22,.8,.22,1),
background 300ms cubic-bezier(.22,.8,.22,1),
border-color 300ms cubic-bezier(.22,.8,.22,1),
box-shadow 300ms cubic-bezier(.22,.8,.22,1);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
display: grid;
row-gap: 12px;
min-width: 0;
overflow: clip;
}
.glossary-kicker{
margin: 0;
font-size: 12px;
letter-spacing: .12em;
text-transform: uppercase;
opacity: .72;
}
.glossary-hero h1{
margin: 0;
font-size: clamp(2.2rem, 4vw, 3.15rem);
line-height: 1.02;
letter-spacing: -.04em;
font-weight: 850;
transition:
font-size 220ms cubic-bezier(.22,.8,.22,1),
line-height 220ms cubic-bezier(.22,.8,.22,1);
min-width: 0;
}
.glossary-hero__collapsible{
display: grid;
row-gap: 6px;
min-width: 0;
}
.glossary-intro{
margin: 0;
max-width: 72ch;
font-size: 1.05rem;
line-height: 1.55;
opacity: .94;
min-width: 0;
transition:
font-size 220ms cubic-bezier(.22,.8,.22,1),
line-height 220ms cubic-bezier(.22,.8,.22,1),
max-height 220ms cubic-bezier(.22,.8,.22,1),
opacity 180ms ease;
}
.glossary-hero__toggle{
display: inline-flex;
align-items: center;
justify-content: center;
width: fit-content;
min-height: 30px;
padding: 3px 0;
border: 0;
border-radius: 0;
background: transparent;
color: inherit;
font-size: 12px;
line-height: 1.2;
letter-spacing: .01em;
opacity: .72;
cursor: pointer;
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
transition:
opacity 120ms ease,
transform 120ms ease;
}
.glossary-hero__toggle:hover{
opacity: .92;
transform: translateY(-1px);
}
.glossary-hero__toggle:focus-visible{
outline: 2px solid rgba(0,217,255,0.24);
outline-offset: 4px;
border-radius: 4px;
}
.glossary-hero__toggle[hidden]{
display: none !important;
}
.glossary-hero-follow{
margin: 2px 0 0;
min-height: var(--glossary-follow-height);
display: block;
max-width: min(100%, 22ch);
opacity: 0;
transform: translateY(10px) scale(.985);
filter: blur(6px);
transition:
opacity 220ms cubic-bezier(.22,1,.36,1),
transform 320ms cubic-bezier(.22,1,.36,1),
filter 320ms cubic-bezier(.22,1,.36,1);
pointer-events: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
will-change: opacity, transform, filter;
min-width: 0;
}
.glossary-hero-follow.is-visible{
opacity: 1;
transform: translateY(0) scale(1);
filter: blur(0);
}
:global(body.glossary-home-follow-on) .glossary-hero{
padding: 12px 14px 14px;
border-bottom-left-radius: 18px;
border-bottom-right-radius: 18px;
}
:global(body.glossary-home-follow-on) .glossary-hero h1{
font-size: clamp(1.7rem, 3.2vw, 2.2rem);
line-height: 1.02;
}
:global(body.glossary-home-follow-on:not(.glossary-home-hero-expanded)) .glossary-intro{
font-size: .94rem;
line-height: 1.34;
max-height: 2.7em;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
:global(body.glossary-home-follow-on:not(.glossary-home-hero-expanded)) .glossary-hero__toggle{
display: inline-flex;
}
@media (max-width: 760px){
.glossary-hero{
top: calc(var(--glossary-sticky-top) - 2px);
padding: 12px 14px 16px;
border-radius: 22px;
row-gap: 10px;
}
.glossary-hero h1{
font-size: clamp(1.9rem, 8vw, 2.45rem);
line-height: 1.02;
letter-spacing: -.03em;
}
.glossary-hero__collapsible{
row-gap: 7px;
}
.glossary-intro{
max-width: 100%;
width: 100%;
font-size: .98rem;
line-height: 1.44;
}
:global(body.glossary-home-follow-on) .glossary-hero{
padding: 10px 13px 12px;
border-radius: 18px;
}
:global(body.glossary-home-follow-on) .glossary-hero h1{
font-size: clamp(1.45rem, 6vw, 1.8rem);
}
:global(body.glossary-home-follow-on:not(.glossary-home-hero-expanded)) .glossary-intro{
max-width: 100%;
width: 100%;
font-size: .86rem;
line-height: 1.24;
max-height: 2.48em;
-webkit-line-clamp: 2;
opacity: .9;
}
.glossary-hero__toggle{
min-height: 28px;
font-size: 11.5px;
}
.glossary-hero-follow{
max-width: min(100%, 24ch);
}
}
@media (max-width: 520px){
.glossary-hero{
padding: 11px 12px 14px;
border-radius: 20px;
}
.glossary-intro{
max-width: 100%;
width: 100%;
font-size: .94rem;
line-height: 1.4;
}
:global(body.glossary-home-follow-on) .glossary-hero{
padding: 9px 11px 11px;
}
:global(body.glossary-home-follow-on:not(.glossary-home-hero-expanded)) .glossary-intro{
max-width: 100%;
width: 100%;
font-size: .84rem;
line-height: 1.22;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-hero{
padding: 10px 12px 12px;
border-radius: 16px;
row-gap: 8px;
}
.glossary-kicker{
font-size: 10px;
letter-spacing: .1em;
}
.glossary-hero h1{
font-size: clamp(1.35rem, 4vw, 1.8rem);
line-height: 1;
}
.glossary-intro{
font-size: .84rem;
line-height: 1.24;
}
:global(body.glossary-home-follow-on) .glossary-hero{
padding: 9px 11px 10px;
border-radius: 16px;
}
:global(body.glossary-home-follow-on) .glossary-hero h1{
font-size: clamp(1.1rem, 3vw, 1.35rem);
}
:global(body.glossary-home-follow-on:not(.glossary-home-hero-expanded)) .glossary-intro{
font-size: .8rem;
line-height: 1.18;
max-height: 2.36em;
-webkit-line-clamp: 2;
opacity: .88;
}
.glossary-hero__toggle{
min-height: 24px;
font-size: 11px;
}
.glossary-hero-follow{
max-width: min(100%, 26ch);
}
}
@media (max-width: 860px){
.glossary-hero{
position: static !important;
top: auto !important;
z-index: auto !important;
margin-bottom: 18px !important;
}
.glossary-hero-follow{
display: none !important;
min-height: 0 !important;
opacity: 0 !important;
transform: none !important;
filter: none !important;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-hero{
position: static !important;
top: auto !important;
z-index: auto !important;
margin-bottom: 14px !important;
}
.glossary-hero-follow{
display: none !important;
min-height: 0 !important;
opacity: 0 !important;
transform: none !important;
filter: none !important;
}
}
</style>

View File

@@ -0,0 +1,133 @@
---
export interface Props {
id?: string;
title: string;
intro?: string;
followSection?: string;
ctaHref?: string;
ctaLabel?: string;
}
const {
id,
title,
intro,
followSection,
ctaHref,
ctaLabel,
} = Astro.props;
const resolvedFollowSection = (followSection || title || "").trim();
const showCta = Boolean(ctaHref && ctaLabel);
---
<section id={id} class="glossary-section">
<div class="glossary-section__head">
<div>
<h2 data-follow-section={resolvedFollowSection}>{title}</h2>
{intro && (
<p class="glossary-intro">{intro}</p>
)}
</div>
{showCta && (
<a class="glossary-cta" href={ctaHref}>
{ctaLabel}
</a>
)}
</div>
<slot />
</section>
<style>
.glossary-section{
margin-top: 34px;
scroll-margin-top: calc(var(--glossary-sticky-top) + 150px);
}
.glossary-section__head{
display: flex;
justify-content: space-between;
align-items: start;
gap: 14px;
flex-wrap: wrap;
margin-bottom: 12px;
}
.glossary-section h2{
margin: 0;
font-size: clamp(1.8rem, 3vw, 2.55rem);
line-height: 1.06;
letter-spacing: -.03em;
font-weight: 800;
}
.glossary-intro{
margin: 0;
max-width: 72ch;
font-size: 1rem;
line-height: 1.52;
opacity: .94;
}
.glossary-section__head .glossary-intro{
margin-top: 8px;
}
.glossary-cta{
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 38px;
border: 1px solid var(--glossary-border-strong);
border-radius: 999px;
padding: 6px 13px;
color: var(--glossary-accent);
text-decoration: none;
white-space: nowrap;
transition: transform 120ms ease, background 120ms ease;
}
.glossary-cta:hover{
background: var(--glossary-bg-soft-strong);
text-decoration: none;
transform: translateY(-1px);
}
@media (max-width: 760px){
.glossary-section{
margin-top: 24px;
scroll-margin-top: calc(var(--glossary-sticky-top) + 110px);
}
.glossary-section__head{
flex-direction: column;
align-items: stretch;
gap: 10px;
margin-bottom: 10px;
}
.glossary-section h2{
font-size: clamp(1.45rem, 6vw, 1.95rem);
line-height: 1.05;
}
.glossary-intro{
font-size: .95rem;
line-height: 1.42;
}
.glossary-section__head .glossary-intro{
margin-top: 6px;
}
.glossary-cta{
width: fit-content;
min-height: 35px;
padding: 5px 12px;
font-size: .95rem;
}
}
</style>

View File

@@ -0,0 +1,219 @@
---
interface LinkItem {
href: string;
label: string;
}
interface Props {
ariaLabel: string;
title: string;
meta?: string;
backHref?: string;
backLabel?: string;
pageItems?: LinkItem[];
usefulLinks?: LinkItem[];
}
const {
ariaLabel,
title,
meta,
backHref = "/glossaire/",
backLabel = "← Retour au glossaire",
pageItems = [],
usefulLinks = [],
} = Astro.props;
---
<nav class="glossary-portal-aside" aria-label={ariaLabel}>
<div class="glossary-portal-aside__block">
<a class="glossary-portal-aside__back" href={backHref}>{backLabel}</a>
<div class="glossary-portal-aside__title">{title}</div>
{meta && <div class="glossary-portal-aside__meta">{meta}</div>}
</div>
{pageItems.length > 0 && (
<div class="glossary-portal-aside__block">
<h2 class="glossary-portal-aside__heading">Dans cette page</h2>
<ul class="glossary-portal-aside__list">
{pageItems.map((item) => (
<li><a href={item.href}>{item.label}</a></li>
))}
</ul>
</div>
)}
{usefulLinks.length > 0 && (
<div class="glossary-portal-aside__block">
<h2 class="glossary-portal-aside__heading">Renvois utiles</h2>
<ul class="glossary-portal-aside__list">
{usefulLinks.map((item) => (
<li><a href={item.href}>{item.label}</a></li>
))}
</ul>
</div>
)}
</nav>
<style>
.glossary-portal-aside{
display: flex;
flex-direction: column;
gap: 14px;
}
.glossary-portal-aside__block{
border: 1px solid rgba(127,127,127,0.22);
border-radius: 16px;
padding: 14px;
background: rgba(127,127,127,0.05);
}
.glossary-portal-aside__back{
display: inline-block;
margin-bottom: 10px;
font-size: 14px;
font-weight: 700;
line-height: 1.35;
text-decoration: none;
}
.glossary-portal-aside__title{
font-size: 16px;
font-weight: 800;
letter-spacing: .2px;
line-height: 1.3;
}
.glossary-portal-aside__meta{
margin-top: 8px;
font-size: 13px;
line-height: 1.4;
opacity: .8;
}
.glossary-portal-aside__heading{
margin: 0 0 11px;
font-size: 14px;
font-weight: 800;
line-height: 1.35;
opacity: .94;
}
.glossary-portal-aside__list{
list-style: none;
margin: 0;
padding: 0;
}
.glossary-portal-aside__list li{
margin: 7px 0;
}
.glossary-portal-aside__list a{
text-decoration: none;
font-size: 14px;
line-height: 1.4;
}
@media (max-width: 980px){
.glossary-portal-aside{
gap: 12px;
}
.glossary-portal-aside__block{
padding: 12px;
border-radius: 14px;
}
}
@media (max-width: 760px){
.glossary-portal-aside{
gap: 10px;
}
.glossary-portal-aside__block{
padding: 11px 12px;
border-radius: 14px;
}
.glossary-portal-aside__back{
margin-bottom: 8px;
font-size: 13px;
}
.glossary-portal-aside__title{
font-size: 15px;
line-height: 1.22;
}
.glossary-portal-aside__meta{
margin-top: 6px;
font-size: 12px;
line-height: 1.32;
}
.glossary-portal-aside__heading{
margin-bottom: 8px;
font-size: 13px;
line-height: 1.22;
}
.glossary-portal-aside__list li{
margin: 5px 0;
}
.glossary-portal-aside__list a{
font-size: 12.5px;
line-height: 1.3;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-portal-aside{
gap: 8px;
}
.glossary-portal-aside__block{
padding: 9px 10px;
border-radius: 12px;
}
.glossary-portal-aside__back{
margin-bottom: 6px;
font-size: 12px;
}
.glossary-portal-aside__title{
font-size: 14px;
line-height: 1.18;
}
.glossary-portal-aside__meta{
margin-top: 4px;
font-size: 11px;
line-height: 1.24;
}
.glossary-portal-aside__heading{
margin-bottom: 6px;
font-size: 12px;
line-height: 1.18;
}
.glossary-portal-aside__list li{
margin: 4px 0;
}
.glossary-portal-aside__list a{
font-size: 11.5px;
line-height: 1.22;
}
}
@media (prefers-color-scheme: dark){
.glossary-portal-aside__block{
background: rgba(255,255,255,0.04);
}
}
</style>

View File

@@ -0,0 +1,67 @@
---
export interface Props {
href: string;
label: string;
icon?: string;
className?: string;
}
const {
href,
label,
icon = "↗",
className,
} = Astro.props;
---
<a class:list={["glossary-portal-cta", className]} href={href}>
<span>{label}</span>
<span aria-hidden="true">{icon}</span>
</a>
<style>
.glossary-portal-cta{
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 40px;
padding: 7px 14px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.05);
text-decoration: none;
line-height: 1.2;
transition:
transform 120ms ease,
background 120ms ease,
border-color 120ms ease;
}
.glossary-portal-cta:hover{
transform: translateY(-1px);
background: rgba(127,127,127,0.08);
border-color: rgba(0,217,255,0.18);
text-decoration: none;
}
.glossary-portal-cta:focus-visible{
outline: 2px solid rgba(0,217,255,0.28);
outline-offset: 3px;
}
@media (max-width: 760px){
.glossary-portal-cta{
min-height: 36px;
padding: 6px 12px;
font-size: 12px;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-portal-cta{
min-height: 32px;
padding: 5px 10px;
font-size: 11px;
}
}
</style>

View File

@@ -0,0 +1,118 @@
---
export type GlossaryPortalGridItem = {
href: string;
title: string;
description: string;
meta: string;
};
export interface Props {
items?: GlossaryPortalGridItem[];
secondary?: boolean;
}
const {
items = [],
secondary = false,
} = Astro.props;
---
<div
class:list={[
"glossary-portals",
secondary && "glossary-portals--secondary",
]}
>
{items.map((item) => (
<a class="glossary-portal-card" href={item.href}>
<strong>{item.title}</strong>
<span>{item.description}</span>
<small>{item.meta}</small>
</a>
))}
</div>
<style>
.glossary-portals{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 12px;
margin-top: 12px;
}
.glossary-portal-card{
display: flex;
flex-direction: column;
gap: 7px;
padding: 14px 15px;
border: 1px solid var(--glossary-border);
border-radius: 16px;
background: var(--glossary-bg-soft);
text-decoration: none;
transition: transform 120ms ease, background 120ms ease, border-color 120ms ease;
}
.glossary-portal-card:hover{
transform: translateY(-1px);
background: var(--glossary-bg-soft-strong);
border-color: rgba(0,217,255,0.16);
text-decoration: none;
}
.glossary-portal-card strong{
color: var(--glossary-accent);
font-size: 1.04rem;
line-height: 1.24;
}
.glossary-portal-card span{
color: inherit;
font-size: .98rem;
line-height: 1.46;
opacity: .94;
}
.glossary-portal-card small{
color: var(--glossary-accent);
font-size: .9rem;
line-height: 1.28;
opacity: .9;
}
@media (max-width: 760px){
.glossary-portals{
grid-template-columns: 1fr;
gap: 10px;
margin-top: 10px;
}
.glossary-portal-card{
padding: 12px 12px;
border-radius: 14px;
gap: 6px;
}
.glossary-portal-card strong{
font-size: .98rem;
}
.glossary-portal-card span{
font-size: .94rem;
line-height: 1.42;
}
.glossary-portal-card small{
font-size: .85rem;
}
}
@media (prefers-color-scheme: dark){
.glossary-portal-card{
background: rgba(255,255,255,0.04);
}
.glossary-portal-card:hover{
background: rgba(255,255,255,0.07);
}
}
</style>

View File

@@ -0,0 +1,260 @@
---
interface Props {
prefix: string;
kicker: string;
title: string;
intro: string;
moreParagraphs?: string[];
introMaxWidth?: string;
followIntroMaxWidth?: string;
moreMaxHeight?: string;
}
const {
prefix,
kicker,
title,
intro,
moreParagraphs = [],
introMaxWidth = "70ch",
followIntroMaxWidth = "62ch",
moreMaxHeight = "18rem",
} = Astro.props;
---
<div
class="glossary-portal-hero glossary-page-hero"
data-glossary-portal-hero
style={`--portal-hero-intro-max-w:${introMaxWidth}; --portal-hero-follow-intro-max-w:${followIntroMaxWidth}; --portal-hero-secondary-max-h:${moreMaxHeight};`}
>
<p class="glossary-portal-hero__kicker">{kicker}</p>
<h1>{title}</h1>
<p class="glossary-portal-hero__intro glossary-portal-hero__intro--lead">
{intro}
</p>
{moreParagraphs.length > 0 && (
<div class="glossary-portal-hero__collapsible">
<div
class="glossary-portal-hero__more"
id={`${prefix}-hero-more`}
data-glossary-portal-more
aria-hidden="false"
>
{moreParagraphs.map((paragraph) => (
<p class="glossary-portal-hero__intro glossary-portal-hero__intro--more">
{paragraph}
</p>
))}
</div>
<button
class="glossary-portal-hero__toggle"
id={`${prefix}-hero-toggle`}
data-glossary-portal-toggle
type="button"
aria-controls={`${prefix}-hero-more`}
aria-expanded="false"
hidden
>
lire la suite
</button>
</div>
)}
</div>
<style>
.glossary-portal-hero{
position: sticky;
top: var(--glossary-sticky-top);
z-index: 12;
margin-bottom: var(--portal-hero-margin-bottom, 28px);
padding:
var(--portal-hero-pad-top, 20px)
var(--portal-hero-pad-x, 18px)
var(--portal-hero-pad-bottom, 22px);
border: 1px solid rgba(127,127,127,0.18);
border-radius: 28px;
background:
linear-gradient(180deg, rgba(0,0,0,0.60), rgba(0,0,0,0.92)),
radial-gradient(980px 260px at 18% 0%, rgba(0,217,255,0.08), transparent 60%);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
display: grid;
row-gap: var(--portal-hero-gap, 16px);
min-width: 0;
overflow: hidden;
transition:
background 280ms cubic-bezier(.22,.8,.22,1),
border-color 220ms cubic-bezier(.22,.8,.22,1),
box-shadow 220ms cubic-bezier(.22,.8,.22,1),
border-radius 220ms ease,
padding 220ms ease,
row-gap 220ms ease,
margin-bottom 220ms ease;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.02),
0 10px 26px rgba(0,0,0,0.08);
}
.glossary-portal-hero__kicker{
margin: 0;
font-size: var(--portal-kicker-size, 12px);
line-height: var(--portal-kicker-lh, 1.2);
letter-spacing: var(--portal-kicker-spacing, .14em);
text-transform: uppercase;
font-weight: 650;
opacity: .74;
}
.glossary-portal-hero h1{
margin: 0;
font-size: var(--portal-hero-h1-size, clamp(3rem, 4.8vw, 4.15rem));
line-height: var(--portal-hero-h1-lh, .98);
letter-spacing: var(--portal-hero-h1-spacing, -.045em);
font-weight: 850;
text-wrap: balance;
transition:
font-size 180ms ease,
line-height 180ms ease,
letter-spacing 180ms ease;
}
.glossary-portal-hero__intro{
margin: 0;
max-width: var(--portal-hero-intro-max-w, 70ch);
font-size: var(--portal-hero-intro-size, 1.06rem);
line-height: var(--portal-hero-intro-lh, 1.6);
text-wrap: pretty;
transition:
font-size 180ms ease,
line-height 180ms ease,
max-width 180ms ease,
opacity 180ms ease;
}
.glossary-portal-hero__intro--lead{ opacity: .95; }
.glossary-portal-hero__intro--more{ opacity: .89; }
.glossary-portal-hero__collapsible{
display: grid;
row-gap: 8px;
min-width: 0;
}
.glossary-portal-hero__more{
display: grid;
gap: 12px;
max-height: var(--portal-hero-secondary-max-h, 20em);
overflow: hidden;
opacity: var(--portal-hero-secondary-opacity, .92);
min-width: 0;
transition:
max-height 220ms ease,
opacity 180ms ease;
}
.glossary-portal-hero__toggle{
display: inline-flex;
align-items: center;
justify-content: center;
width: fit-content;
min-height: 34px;
padding: 5px 0;
border: 0;
border-radius: 0;
background: transparent;
color: inherit;
font-size: 12.5px;
line-height: 1.2;
letter-spacing: .01em;
opacity: .72;
cursor: pointer;
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 2px;
transition:
opacity 120ms ease,
transform 120ms ease;
}
.glossary-portal-hero__toggle:hover{
opacity: .92;
transform: translateY(-1px);
}
.glossary-portal-hero__toggle:focus-visible{
outline: 2px solid rgba(0,217,255,0.24);
outline-offset: 4px;
border-radius: 4px;
}
.glossary-portal-hero__toggle[hidden]{
display: none !important;
}
@media (max-width: 980px){
.glossary-portal-hero{
border-radius: 24px;
}
.glossary-portal-hero h1{
text-wrap: pretty;
}
.glossary-portal-hero__more{
gap: 10px;
}
}
@media (max-width: 860px){
.glossary-portal-hero{
position: static !important;
top: auto !important;
z-index: auto !important;
margin-bottom: 18px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
}
.glossary-portal-hero h1,
.glossary-portal-hero__intro,
.glossary-portal-hero__more,
.glossary-portal-hero__collapsible{
min-width: 0 !important;
max-width: 100% !important;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-portal-hero{
position: static !important;
top: auto !important;
z-index: auto !important;
margin-bottom: 14px !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
border-radius: 16px !important;
}
.glossary-portal-hero h1,
.glossary-portal-hero__intro,
.glossary-portal-hero__more,
.glossary-portal-hero__collapsible{
min-width: 0 !important;
max-width: 100% !important;
}
}
@media (prefers-color-scheme: dark){
.glossary-portal-hero{
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.02),
0 14px 34px rgba(0,0,0,0.16);
}
}
</style>

View File

@@ -0,0 +1,127 @@
---
export interface Props {
id?: string;
title: string;
count?: string;
intro?: string;
surface?: boolean;
className?: string;
}
const {
id,
title,
count,
intro,
surface = false,
className,
} = Astro.props;
---
<div
class:list={[
"glossary-portal-panel",
surface && "glossary-portal-panel--surface",
className,
]}
>
<div class="glossary-portal-panel__head">
<h3 id={id}>{title}</h3>
{count && <span class="glossary-portal-panel__count">{count}</span>}
</div>
{intro && <p class="glossary-portal-panel__intro">{intro}</p>}
<slot />
</div>
<style>
.glossary-portal-panel{
display: grid;
gap: 10px;
}
.glossary-portal-panel--surface{
padding:
var(--portal-panel-pad-y, 16px)
var(--portal-panel-pad-x, 16px);
border: 1px solid var(--glossary-border, rgba(127,127,127,0.18));
border-radius: var(--portal-panel-radius, 18px);
background:
var(--glossary-bg-soft, rgba(127,127,127,0.035));
}
.glossary-portal-panel__head{
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
}
.glossary-portal-panel__head h3{
margin: 0;
font-size: var(--portal-local-h3-size, clamp(1.35rem, 2vw, 1.7rem));
line-height: var(--portal-local-h3-lh, 1.15);
letter-spacing: -.02em;
}
.glossary-portal-panel__count{
display: inline-flex;
align-items: center;
min-height: 26px;
padding: 0 9px;
border: 1px solid rgba(127,127,127,0.20);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 11.5px;
line-height: 1.2;
opacity: .8;
white-space: nowrap;
}
.glossary-portal-panel__intro{
margin: 0;
font-size: var(--portal-card-text-size, 14px);
line-height: var(--portal-card-text-lh, 1.45);
opacity: .92;
}
@media (max-width: 760px){
.glossary-portal-panel{
gap: 8px;
}
.glossary-portal-panel__head{
gap: 8px;
}
.glossary-portal-panel__count{
min-height: 23px;
padding: 0 8px;
font-size: 10.5px;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-portal-panel{
gap: 6px;
}
.glossary-portal-panel__head{
gap: 6px;
}
.glossary-portal-panel__count{
min-height: 21px;
padding: 0 7px;
font-size: 10px;
}
}
@media (prefers-color-scheme: dark){
.glossary-portal-panel--surface{
background: rgba(255,255,255,0.04);
}
}
</style>

View File

@@ -0,0 +1,143 @@
---
interface Props {
id: string;
title: string;
count?: string;
intro?: string;
final?: boolean;
className?: string;
}
const {
id,
title,
count,
intro,
final = false,
className,
} = Astro.props;
---
<section class:list={["glossary-portal-section", final && "glossary-portal-section--final", className]}>
<div class="glossary-portal-section__head">
<h2 id={id}>{title}</h2>
{count && <span class="glossary-portal-section__count">{count}</span>}
</div>
{intro && <p class="glossary-portal-section__intro">{intro}</p>}
<slot />
</section>
<style>
.glossary-portal-section{
margin-top: 30px;
}
.glossary-portal-section h2{
margin: 0;
font-size: clamp(1.8rem, 3vw, 2.35rem);
line-height: 1.05;
letter-spacing: -.03em;
font-weight: 800;
}
.glossary-portal-section__head{
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
margin-bottom: 10px;
}
.glossary-portal-section__count{
display: inline-flex;
align-items: center;
min-height: 28px;
padding: 0 10px;
border: 1px solid rgba(127,127,127,0.20);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 12px;
line-height: 1.2;
opacity: .8;
white-space: nowrap;
}
.glossary-portal-section__intro{
margin: 0;
max-width: 76ch;
font-size: var(--portal-body-size, 1rem);
line-height: var(--portal-body-lh, 1.55);
opacity: .94;
}
.glossary-portal-section--final{
margin-top: 34px;
}
@media (max-width: 980px){
.glossary-portal-section{
margin-top: 24px;
}
.glossary-portal-section h2{
font-size: clamp(1.6rem, 4.4vw, 2rem);
line-height: 1.04;
}
}
@media (max-width: 760px){
.glossary-portal-section{
margin-top: 20px;
}
.glossary-portal-section__head{
gap: 8px;
margin-bottom: 8px;
}
.glossary-portal-section h2{
font-size: clamp(1.34rem, 6.5vw, 1.72rem);
line-height: 1.04;
letter-spacing: -.022em;
}
.glossary-portal-section__count{
min-height: 24px;
padding: 0 8px;
font-size: 11px;
}
.glossary-portal-section--final{
margin-top: 24px;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
.glossary-portal-section{
margin-top: 16px;
}
.glossary-portal-section__head{
gap: 6px;
margin-bottom: 6px;
}
.glossary-portal-section h2{
font-size: clamp(1.12rem, 4.2vw, 1.34rem);
line-height: 1.02;
}
.glossary-portal-section__count{
min-height: 22px;
padding: 0 7px;
font-size: 10px;
}
.glossary-portal-section--final{
margin-top: 18px;
}
}
</style>

View File

@@ -0,0 +1,487 @@
---
interface Props {
heroMoreId: string;
heroToggleId: string;
sectionHeadSelector?: string;
mobileBreakpoint?: number;
autoCollapseDelta?: number;
}
const {
heroMoreId,
heroToggleId,
sectionHeadSelector = ".glossary-portal-section__head",
mobileBreakpoint = 860,
autoCollapseDelta = 160,
} = Astro.props;
---
<script
is:inline
define:vars={{ heroMoreId, heroToggleId, sectionHeadSelector, mobileBreakpoint, autoCollapseDelta }}
>
(() => {
const boot = () => {
const body = document.body;
const root = document.documentElement;
const hero = document.querySelector("[data-glossary-portal-hero]");
const follow = document.getElementById("reading-follow");
const heroMore = document.getElementById(heroMoreId);
const heroToggle = document.getElementById(heroToggleId);
if (!body || !root || !hero || !follow) return;
const BODY_CLASS = "is-glossary-portal-page";
const FOLLOW_ON_CLASS = "glossary-portal-follow-on";
const EXPANDED_CLASS = "glossary-portal-hero-expanded";
const CONDENSED_CLASS = "glossary-portal-hero-condensed";
const mqMobile = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
const mqSmallLandscape = window.matchMedia(
"(orientation: landscape) and (max-width: 920px) and (max-height: 520px)"
);
let expandedAtY = null;
let lastScrollY = window.scrollY || 0;
let raf = 0;
let lastFollowOn = null;
let lastCondensed = null;
let lastHeroHeight = -1;
body.classList.add(BODY_CLASS);
const isCompactViewport = () =>
mqMobile.matches || mqSmallLandscape.matches;
const stripLocalSticky = () => {
document.querySelectorAll(sectionHeadSelector).forEach((el) => {
el.classList.remove("is-sticky");
el.removeAttribute("data-sticky-active");
});
};
const readStickyTop = () => {
const raw = getComputedStyle(document.documentElement)
.getPropertyValue("--glossary-sticky-top")
.trim();
const n = Number.parseFloat(raw);
return Number.isFinite(n) ? n : 64;
};
const computeFollowOn = () =>
!isCompactViewport() &&
follow.classList.contains("is-on") &&
follow.style.display !== "none" &&
follow.getAttribute("aria-hidden") !== "true";
const computeCondensed = () => {
if (isCompactViewport()) return false;
const heroRect = hero.getBoundingClientRect();
const stickyTop = readStickyTop();
return heroRect.top <= stickyTop + 2;
};
const measureHeroHeight = () =>
Math.max(0, Math.round(hero.getBoundingClientRect().height || 0));
const PIN_EPS = 3;
const isHeroPinned = () => {
if (isCompactViewport()) return false;
const rect = hero.getBoundingClientRect();
const stickyTop = readStickyTop();
const cs = getComputedStyle(hero);
if (cs.position !== "sticky") return false;
const pinnedOnRail = Math.abs(rect.top - stickyTop) <= PIN_EPS;
const stillVisible = rect.bottom > stickyTop + 24;
return pinnedOnRail && stillVisible;
};
const applyLocalStickyHeight = () => {
const h = isHeroPinned() ? measureHeroHeight() : 0;
if (h === lastHeroHeight) return;
lastHeroHeight = h;
if (typeof window.__archiSetLocalStickyHeight === "function") {
window.__archiSetLocalStickyHeight(h);
} else {
root.style.setProperty("--glossary-local-sticky-h", `${h}px`);
}
};
const syncFollowState = () => {
const on = computeFollowOn();
if (on !== lastFollowOn) {
lastFollowOn = on;
body.classList.toggle(FOLLOW_ON_CLASS, on);
}
return on;
};
const syncCondensedState = () => {
const condensed = computeCondensed();
if (condensed !== lastCondensed) {
lastCondensed = condensed;
body.classList.toggle(CONDENSED_CLASS, condensed);
}
return condensed;
};
const collapseHero = () => {
if (!body.classList.contains(EXPANDED_CLASS)) return;
body.classList.remove(EXPANDED_CLASS);
expandedAtY = null;
if (heroMore) {
heroMore.setAttribute("aria-hidden", "true");
}
if (heroToggle) {
heroToggle.hidden = false;
heroToggle.setAttribute("aria-expanded", "false");
}
try {
window.__archiUpdateFollow?.();
} catch {}
schedule();
};
const expandHero = () => {
body.classList.add(EXPANDED_CLASS);
expandedAtY = window.scrollY || 0;
if (heroMore) {
heroMore.setAttribute("aria-hidden", "false");
}
if (heroToggle) {
heroToggle.hidden = true;
heroToggle.setAttribute("aria-expanded", "true");
}
try {
window.__archiUpdateFollow?.();
} catch {}
schedule();
};
const syncHeroState = (condensed) => {
const expanded = body.classList.contains(EXPANDED_CLASS);
const collapsed = condensed && !expanded;
if (isCompactViewport() || !condensed) {
body.classList.remove(EXPANDED_CLASS);
expandedAtY = null;
if (heroMore) {
heroMore.setAttribute("aria-hidden", "false");
}
if (heroToggle) {
heroToggle.hidden = true;
heroToggle.setAttribute("aria-expanded", "false");
}
return;
}
if (heroMore) {
heroMore.setAttribute("aria-hidden", collapsed ? "true" : "false");
}
if (heroToggle) {
heroToggle.hidden = !collapsed;
heroToggle.setAttribute("aria-expanded", expanded ? "true" : "false");
}
};
const maybeAutoCollapseOnScroll = () => {
if (isCompactViewport()) {
lastScrollY = window.scrollY || 0;
return;
}
if (!body.classList.contains(EXPANDED_CLASS)) {
lastScrollY = window.scrollY || 0;
return;
}
if (expandedAtY == null) {
lastScrollY = window.scrollY || 0;
return;
}
const currentY = window.scrollY || 0;
const scrollingDown = currentY > lastScrollY;
const delta = currentY - expandedAtY;
if (scrollingDown && delta >= autoCollapseDelta) {
collapseHero();
}
lastScrollY = currentY;
};
const syncAll = () => {
stripLocalSticky();
if (isCompactViewport()) {
body.classList.remove(FOLLOW_ON_CLASS);
body.classList.remove(CONDENSED_CLASS);
body.classList.remove(EXPANDED_CLASS);
lastFollowOn = false;
lastCondensed = false;
expandedAtY = null;
if (heroMore) {
heroMore.setAttribute("aria-hidden", "false");
}
if (heroToggle) {
heroToggle.hidden = true;
heroToggle.setAttribute("aria-expanded", "false");
}
requestAnimationFrame(() => {
applyLocalStickyHeight();
try {
window.__archiUpdateFollow?.();
} catch {}
});
return;
}
const condensed = syncCondensedState();
syncHeroState(condensed);
requestAnimationFrame(() => {
applyLocalStickyHeight();
syncFollowState();
try {
window.__archiUpdateFollow?.();
} catch {}
});
requestAnimationFrame(() => {
applyLocalStickyHeight();
try {
window.__archiUpdateFollow?.();
} catch {}
});
};
const schedule = () => {
if (raf) return;
raf = requestAnimationFrame(() => {
raf = 0;
syncAll();
});
};
heroToggle?.addEventListener("click", expandHero);
const onScroll = () => {
maybeAutoCollapseOnScroll();
schedule();
};
const followObserver = new MutationObserver(schedule);
followObserver.observe(follow, {
attributes: true,
attributeFilter: ["class", "style", "aria-hidden"],
subtree: false,
});
const heroResizeObserver =
typeof ResizeObserver !== "undefined"
? new ResizeObserver(schedule)
: null;
heroResizeObserver?.observe(hero);
window.addEventListener("scroll", onScroll, { passive: true });
window.addEventListener("resize", schedule);
window.addEventListener("pageshow", schedule);
if (document.fonts?.ready) {
document.fonts.ready.then(schedule).catch(() => {});
}
if (mqMobile.addEventListener) {
mqMobile.addEventListener("change", schedule);
} else if (mqMobile.addListener) {
mqMobile.addListener(schedule);
}
if (mqSmallLandscape.addEventListener) {
mqSmallLandscape.addEventListener("change", schedule);
} else if (mqSmallLandscape.addListener) {
mqSmallLandscape.addListener(schedule);
}
schedule();
};
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", boot, { once: true });
} else {
boot();
}
})();
</script>
<style>
:global(body.is-glossary-portal-page #reading-follow){
z-index: 10;
}
/* Le hero se condense dès quil devient sticky */
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed .glossary-portal-hero){
padding:
var(--portal-hero-pad-top-condensed, 14px)
var(--portal-hero-pad-x-condensed, 16px)
var(--portal-hero-pad-bottom-condensed, 16px);
row-gap: var(--portal-hero-gap-condensed, 10px);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.02),
0 8px 20px rgba(0,0,0,0.12);
}
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed .glossary-portal-hero h1){
font-size: var(--portal-hero-h1-size-condensed, clamp(2.05rem, 3.15vw, 2.7rem));
line-height: var(--portal-hero-h1-lh-condensed, 1);
letter-spacing: var(--portal-hero-h1-spacing-condensed, -.04em);
}
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed .glossary-portal-hero__intro){
max-width: var(--portal-hero-follow-intro-max-w, 62ch);
font-size: var(--portal-hero-intro-size-condensed, .98rem);
line-height: var(--portal-hero-intro-lh-condensed, 1.46);
}
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed .glossary-portal-hero__kicker){
opacity: .68;
}
/* Le more se replie dès létat condensé */
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed:not(.glossary-portal-hero-expanded) .glossary-portal-hero__more){
max-height: 0;
opacity: 0;
overflow: hidden;
pointer-events: none;
}
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed:not(.glossary-portal-hero-expanded) .glossary-portal-hero__toggle){
display: inline-flex;
}
/* Laccolage hero + follow narrive que quand le follow est actif */
:global(body.is-glossary-portal-page.glossary-portal-hero-condensed.glossary-portal-follow-on .glossary-portal-hero){
margin-bottom: 0;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
:global(body.is-glossary-portal-page.glossary-portal-follow-on #reading-follow .reading-follow__inner){
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
:global(body.is-glossary-portal-page.glossary-portal-follow-on #reading-follow .rf-h2){
letter-spacing: -.02em;
}
:global(body.is-glossary-portal-page .glossary-portal-section__head.is-sticky),
:global(body.is-glossary-portal-page .glossary-portal-section__head[data-sticky-active="true"]){
position: static !important;
top: auto !important;
z-index: auto !important;
padding: 0 !important;
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
@media (max-width: 860px){
:global(body.is-glossary-portal-page #reading-follow),
:global(body.is-glossary-portal-page #reading-follow .reading-follow__inner){
display: none !important;
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
}
:global(body.is-glossary-portal-page){
--followbar-h: 0px !important;
--sticky-offset-px: calc(var(--sticky-header-h, 0px) + var(--page-gap, 12px)) !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero){
margin-bottom: var(--portal-hero-margin-bottom, 18px);
border-radius: 20px !important;
box-shadow: none !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero__more){
max-height: none !important;
opacity: 1 !important;
overflow: visible !important;
pointer-events: auto !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero__toggle){
display: none !important;
}
}
@media (orientation: landscape) and (max-width: 920px) and (max-height: 520px){
:global(body.is-glossary-portal-page #reading-follow),
:global(body.is-glossary-portal-page #reading-follow .reading-follow__inner){
display: none !important;
opacity: 0 !important;
visibility: hidden !important;
pointer-events: none !important;
}
:global(body.is-glossary-portal-page){
--followbar-h: 0px !important;
--sticky-offset-px: calc(var(--sticky-header-h, 0px) + var(--page-gap, 12px)) !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero){
margin-bottom: var(--portal-hero-margin-bottom, 12px);
border-radius: 16px !important;
box-shadow: none !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero__more){
max-height: none !important;
opacity: 1 !important;
overflow: visible !important;
pointer-events: auto !important;
}
:global(body.is-glossary-portal-page .glossary-portal-hero__toggle){
display: none !important;
}
}
</style>

View File

@@ -0,0 +1,125 @@
---
import type { GlossaryRelationBlock } from "../lib/glossary";
import { hrefOfGlossaryEntry } from "../lib/glossary";
interface Props {
relationBlocks: GlossaryRelationBlock[];
}
const { relationBlocks = [] } = Astro.props;
const relationsHeadingId = "relations-conceptuelles";
---
{relationBlocks.length > 0 && (
<section
class="glossary-relations"
aria-labelledby={relationsHeadingId}
>
<h2 id={relationsHeadingId}>Relations conceptuelles</h2>
<div class="glossary-relations-grid">
{relationBlocks.map((block) => (
<section class={`glossary-relations-card ${block.className}`}>
<h3>{block.title}</h3>
<ul>
{block.items.map((item) => (
<li>
<a href={hrefOfGlossaryEntry(item)}>{item.data.term}</a>
<span> — {item.data.definitionShort}</span>
</li>
))}
</ul>
</section>
))}
</div>
</section>
)}
<style>
.glossary-relations{
margin-top: 22px;
padding-top: 14px;
border-top: 1px solid rgba(127,127,127,0.18);
}
.glossary-relations h2{
margin: 0 0 12px;
font-size: clamp(1.35rem, 3vw, 1.8rem);
line-height: 1.08;
}
.glossary-relations-grid{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 10px;
}
.glossary-relations-card{
border: 1px solid rgba(127,127,127,0.20);
border-radius: 14px;
padding: 12px 13px;
background: rgba(127,127,127,0.05);
}
.glossary-relations-card h3{
margin: 0 0 8px;
font-size: 14px;
line-height: 1.3;
}
.glossary-relations-card ul{
margin: 0;
padding-left: 16px;
}
.glossary-relations-card li{
margin-bottom: 7px;
font-size: 13.5px;
line-height: 1.42;
}
.glossary-relations-card li:last-child{
margin-bottom: 0;
}
.glossary-relations-card span{
opacity: .88;
}
@media (max-width: 760px){
.glossary-relations{
margin-top: 18px;
padding-top: 12px;
}
.glossary-relations h2{
margin-bottom: 10px;
font-size: 1.3rem;
}
.glossary-relations-grid{
grid-template-columns: 1fr;
gap: 8px;
}
.glossary-relations-card{
padding: 11px 11px;
border-radius: 13px;
}
.glossary-relations-card h3{
font-size: 13px;
margin-bottom: 7px;
}
.glossary-relations-card li{
font-size: 13px;
line-height: 1.38;
}
}
@media (prefers-color-scheme: dark){
.glossary-relations-card{
background: rgba(255,255,255,0.04);
}
}
</style>

View File

@@ -68,7 +68,6 @@ const { initialLevel = 1 } = Astro.props;
} catch {}
}
// init : storage > initialLevel
let start = clampLevel(initialLevel);
try {
const stored = localStorage.getItem(KEY);
@@ -77,13 +76,11 @@ const { initialLevel = 1 } = Astro.props;
applyLevel(start, { persist: false });
// clicks
wrap.addEventListener("click", (ev) => {
const btn = ev.target?.closest?.("button[data-level]");
if (!btn) return;
ev.preventDefault();
// ✅ crucial : on capture la position AVANT le reflow lié au changement de niveau
captureBeforeLevelSwitch();
applyLevel(btn.dataset.level);
});
@@ -95,6 +92,8 @@ const { initialLevel = 1 } = Astro.props;
display: inline-flex;
gap: 8px;
align-items: center;
flex-wrap: wrap;
max-width: 100%;
}
.level-btn{
@@ -106,6 +105,7 @@ const { initialLevel = 1 } = Astro.props;
cursor: pointer;
user-select: none;
transition: filter .12s ease, transform .12s ease, background .12s ease, border-color .12s ease;
white-space: nowrap;
}
.level-btn:hover{
@@ -125,4 +125,21 @@ const { initialLevel = 1 } = Astro.props;
.level-btn:active{
transform: translateY(1px);
}
</style>
@media (max-width: 980px){
.level-toggle{
gap: 6px;
}
.level-btn{
padding: 5px 9px;
font-size: 12px;
}
}
@media (max-width: 760px){
.level-toggle{
display: none;
}
}
</style>

View File

@@ -3,49 +3,122 @@ const { headings } = Astro.props;
// H2/H3 seulement
const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
const tocId = `toc-local-${Math.random().toString(36).slice(2, 9)}`;
---
{items.length > 0 && (
<nav class="toc-local" aria-label="Dans ce chapitre">
<div class="toc-local__title">Dans ce chapitre</div>
<nav class="toc-local" aria-label="Dans ce chapitre" data-toc-local>
<button
class="toc-local__head toc-local__toggle"
type="button"
aria-expanded="true"
aria-controls={tocId}
>
<span class="toc-local__title">Dans ce chapitre</span>
<span class="toc-local__chevron" aria-hidden="true">▾</span>
</button>
<ol class="toc-local__list">
{items.map((h) => (
<li
class={`toc-local__item d${h.depth}`}
data-toc-item
data-depth={h.depth}
data-id={h.slug}
>
<a href={`#${h.slug}`} data-toc-link data-slug={h.slug}>
{h.text}
</a>
</li>
))}
</ol>
<div class="toc-local__body-clip" id={tocId}>
<div class="toc-local__body">
<ol class="toc-local__list">
{items.map((h) => (
<li
class={`toc-local__item d${h.depth}`}
data-toc-item
data-depth={h.depth}
data-id={h.slug}
>
<a href={`#${h.slug}`} data-toc-link data-slug={h.slug}>
<span class="toc-local__mark" aria-hidden="true"></span>
<span class="toc-local__text">{h.text}</span>
</a>
</li>
))}
</ol>
</div>
</div>
</nav>
)}
<script is:inline>
(() => {
function init() {
const toc = document.querySelector(".toc-local");
if (!toc) return;
const toc = document.querySelector(".toc-local[data-toc-local]");
if (!toc || toc.dataset.tocReady === "1") return;
toc.dataset.tocReady = "1";
const toggle = toc.querySelector(".toc-local__toggle");
const bodyClip = toc.querySelector(".toc-local__body-clip");
const mq = window.matchMedia("(max-width: 980px)");
const KEY = `archicratie:toc-local:${window.location.pathname}`;
if (!toggle || !bodyClip) return;
const readState = () => {
try {
const v = localStorage.getItem(KEY);
if (v === "open") return true;
if (v === "closed") return false;
} catch {}
return null;
};
const writeState = (open) => {
try { localStorage.setItem(KEY, open ? "open" : "closed"); } catch {}
};
const setOpen = (open, { persist = true, emit = true } = {}) => {
const isMobile = mq.matches;
toc.classList.toggle("is-collapsed", isMobile && !open);
toggle.setAttribute("aria-expanded", open ? "true" : "false");
if (persist && isMobile) writeState(open);
if (emit && open && isMobile) {
window.dispatchEvent(new CustomEvent("archicratie:tocLocalOpen"));
}
};
const initAccordion = () => {
if (!mq.matches) {
setOpen(true, { persist: false, emit: false });
return;
}
const stored = readState();
setOpen(stored == null ? true : stored, { persist: false, emit: false });
};
toggle.addEventListener("click", () => {
const next = toggle.getAttribute("aria-expanded") !== "true";
setOpen(next);
});
if (mq.addEventListener) {
mq.addEventListener("change", initAccordion);
} else if (mq.addListener) {
mq.addListener(initAccordion);
}
const itemEls = Array.from(toc.querySelectorAll("[data-toc-item]"));
if (!itemEls.length) return;
if (!itemEls.length) {
initAccordion();
return;
}
const ordered = itemEls
.map((li) => {
const a = li.querySelector("a[data-toc-link]");
const id = li.getAttribute("data-id") || a?.dataset.slug || "";
const depth = Number(li.getAttribute("data-depth") || "0");
const el = id ? document.getElementById(id) : null; // span.details-anchor OU h3[id]
const el = id ? document.getElementById(id) : null;
return (a && id && el) ? { id, depth, li, a, el } : null;
})
.filter(Boolean);
if (!ordered.length) return;
if (!ordered.length) {
initAccordion();
return;
}
const clear = () => {
for (const t of ordered) {
@@ -55,14 +128,29 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
};
const openDetailsIfNeeded = (el) => {
const d = el?.closest?.("details");
if (d && !d.open) d.open = true;
try {
if (!el) return;
let d = el.closest?.("details") || null;
if (!d && el.classList?.contains("details-anchor")) {
const n = el.nextElementSibling;
if (n && n.tagName === "DETAILS") d = n;
}
if (!d) {
const s = el.closest?.("summary");
if (s && s.parentElement && s.parentElement.tagName === "DETAILS") d = s.parentElement;
}
if (d && d.tagName === "DETAILS" && !d.open) d.open = true;
} catch {}
};
let current = "";
const setCurrent = (id) => {
if (!id || id === current) return;
const setCurrent = (id, { autoOpen = true } = {}) => {
if (!id) return;
const t = ordered.find((x) => x.id === id);
if (!t) return;
@@ -74,17 +162,21 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
t.a.setAttribute("aria-current", "true");
t.li.classList.add("is-current");
// ✅ IMPORTANT: plus de scrollIntoView ici
// sinon ça scroll l'aside pendant le scroll du reading => TOC global “disparaît”.
if (mq.matches && autoOpen && toc.classList.contains("is-collapsed")) {
setOpen(true);
}
window.dispatchEvent(
new CustomEvent("archicratie:tocLocalActive", { detail: { id } })
);
};
const computeActive = () => {
const visible = ordered.filter((t) => {
const d = t.el.closest?.("details");
if (d && !d.open) {
// Si l'élément est dans <summary>, il reste visible même details fermé
const inSummary = !!t.el.closest?.("summary");
if (!inSummary) return false;
if (!inSummary && !t.el.classList?.contains("details-anchor")) return false;
}
return true;
});
@@ -102,7 +194,7 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
}
if (!best) best = visible[0];
setCurrent(best.id);
if (best && best.id !== current) setCurrent(best.id, { autoOpen: true });
};
let ticking = false;
@@ -117,11 +209,14 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
const syncFromHash = () => {
const id = (location.hash || "").slice(1);
if (!id) { computeActive(); return; }
if (!id) {
computeActive();
return;
}
const el = document.getElementById(id);
if (el) openDetailsIfNeeded(el);
setCurrent(id);
setCurrent(id, { autoOpen: true });
};
toc.addEventListener("click", (ev) => {
@@ -133,13 +228,14 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
const el = document.getElementById(id);
if (el) openDetailsIfNeeded(el);
setCurrent(id);
setCurrent(id, { autoOpen: true });
});
window.addEventListener("scroll", onScroll, { passive: true });
window.addEventListener("resize", onScroll);
window.addEventListener("hashchange", syncFromHash);
initAccordion();
syncFromHash();
onScroll();
}
@@ -153,30 +249,183 @@ const items = (headings || []).filter((h) => h.depth >= 2 && h.depth <= 3);
</script>
<style>
.toc-local{margin-top:12px;border:1px solid rgba(127,127,127,.25);border-radius:16px;padding:12px}
.toc-local__title{font-size:13px;opacity:.85;margin-bottom:8px}
.toc-local__list{list-style:none;margin:0;padding:0}
.toc-local__item::marker{content:""}
.toc-local__item{margin:6px 0}
.toc-local__item.d3{margin-left:12px;opacity:.9}
.toc-local__item.is-current > a{
font-weight: 750;
text-decoration: underline;
.toc-local{
margin-top: 12px;
border: 1px solid rgba(127,127,127,.25);
border-radius: 16px;
padding: 12px;
background: rgba(127,127,127,0.03);
}
.toc-local a{
display:inline-block;
max-width:100%;
text-decoration:none;
.toc-local__toggle{
width: 100%;
appearance: none;
border: 0;
background: transparent;
color: inherit;
text-align: left;
padding: 0;
cursor: pointer;
}
.toc-local a:hover{ text-decoration: underline; }
.toc-local__head{
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-bottom: 8px;
}
.toc-local__title{
font-size: 13px;
opacity: .85;
}
.toc-local__chevron{
font-size: 12px;
opacity: .72;
transition: transform 180ms ease;
}
.toc-local__body-clip{
display: grid;
grid-template-rows: 1fr;
transition:
grid-template-rows 220ms ease,
opacity 160ms ease,
margin-top 220ms ease;
}
.toc-local__body{
min-height: 0;
overflow: hidden;
}
.toc-local__list{
list-style: none;
margin: 0;
padding: 0;
max-height: 44vh;
overflow: auto;
padding-right: 8px;
scrollbar-gutter: stable;
}
</style>
.toc-local__item::marker{ content:""; }
.toc-local__item{ margin: 6px 0; }
.toc-local__item.d3{
margin-left: 14px;
opacity: .94;
}
.toc-local a{
display: grid;
grid-template-columns: auto 1fr;
gap: 8px;
align-items: start;
max-width: 100%;
text-decoration: none;
}
.toc-local a:hover{
text-decoration: none;
}
.toc-local__mark{
width: 10px;
height: 10px;
margin-top: .36em;
border-radius: 999px;
border: 1px solid rgba(127,127,127,.34);
background: transparent;
opacity: .68;
}
.toc-local__text{
line-height: 1.28;
}
.toc-local__item.is-current > a{
font-weight: 760;
}
.toc-local__item.is-current > a .toc-local__mark{
background: currentColor;
border-color: currentColor;
box-shadow: 0 0 0 3px rgba(127,127,127,.10);
opacity: 1;
}
@media (max-width: 980px){
.toc-local{
padding: 10px 12px;
border-radius: 14px;
}
.toc-local__head{
margin-bottom: 0;
min-height: 28px;
}
.toc-local__body-clip{
margin-top: 10px;
}
.toc-local.is-collapsed .toc-local__body-clip{
grid-template-rows: 0fr;
opacity: 0;
margin-top: 0;
}
.toc-local__body{
min-height: 0;
overflow: hidden;
transition: opacity 180ms ease;
}
.toc-local.is-collapsed .toc-local__body{
opacity: 0;
}
.toc-local.is-collapsed .toc-local__chevron{
transform: rotate(-90deg);
}
.toc-local__title{
font-size: 13px;
}
.toc-local__list{
max-height: min(42vh, 360px);
padding-right: 4px;
}
.toc-local__item{
margin: 5px 0;
}
.toc-local__item.d2 > a .toc-local__text{
font-size: 12.9px;
line-height: 1.24;
font-weight: 680;
}
.toc-local__item.d3{
margin-left: 12px;
}
.toc-local__item.d3 > a .toc-local__text{
font-size: 12.1px;
line-height: 1.22;
opacity: .95;
}
.toc-local__item.d3 > a .toc-local__mark{
width: 8px;
height: 8px;
margin-top: .42em;
opacity: .55;
}
}
</style>

View File

@@ -382,7 +382,7 @@
return;
}
if (Array.isArray(data.authors) && data.authors.length) {
if (Array.isArray(data.mobilizedAuthors) && data.mobilizedAuthors.length) {
const h = document.createElement("h3");
h.className = "panel-subtitle";
h.textContent = "Auteurs";
@@ -390,7 +390,7 @@
const ul = document.createElement("ul");
ul.className = "panel-list";
for (const a of data.authors) {
for (const a of data.mobilizedAuthors) {
const li = document.createElement("li");
li.textContent = esc(a);
ul.appendChild(li);

View File

@@ -54,6 +54,11 @@ const glossaire = defineCollection({
title: z.string().min(1),
term: z.string().min(1),
aliases: z.array(z.string().min(1)).default([]),
urlAliases: z
.array(z.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/))
.default([]),
mobilizedAuthors: z.array(z.string().min(1)).default([]),
comparisonTraditions: z.array(z.string().min(1)).default([]),
edition: z.literal("glossaire"),
status: z.literal("referentiel"),
version: z.string().min(1),
@@ -61,7 +66,36 @@ const glossaire = defineCollection({
concepts: z.array(z.string().min(1)).default([]),
links: z.array(linkSchema).default([]),
kind: z.enum(["concept", "topologie", "diagnostic", "verbe", "paradigme", "doctrine"]),
kind: z.enum([
"concept",
"topologie",
"diagnostic",
"verbe",
"paradigme",
"doctrine",
"dispositif",
"figure",
"qualification",
"epistemologie",
]),
family: z.enum([
"concept-fondamental",
"scene",
"dynamique",
"pathologie",
"topologie",
"meta-regime",
"paradigme",
"doctrine",
"verbe",
"dispositif-ia",
"tension-irreductible",
"figure",
"qualification",
"epistemologie",
]
)
.optional(),
domain: z.enum(["transversal", "theorie", "cas-ia"]),
level: z.enum(["fondamental", "intermediaire", "avance"]),
related: z.array(z.string().min(1)).default([]),

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,251 +1,417 @@
---
title: "Conclusion — ArchiCraT-IA"
edition: "archicratie"
status: "modele_sociopolitique"
title: Conclusion — ArchiCraT-IA
edition: archicrat-ia
status: essai_these
level: 1
version: "0.1.0"
version: 0.1.0
concepts: []
links: []
order: 70
summary: ""
summary: ''
source:
kind: docx
path: "sources/docx/archicrat-ia/Conclusion-Archicrat-IA-version_officielle.docx"
path: sources/docx/archicrat-ia/Conclusion-Archicrat-IA-version_officielle.docx
---
Nous nassistons ni à un retour primordial du désordre ni à une raréfaction du pouvoir. Nous assistons à autre chose, plus discret et plus décisif : la montée en régime dune régulation sans scène, où la plupart des décisions qui engagent nos vies sont prises et appliquées sans lieu institué dénonciation, sans temps de différé, sans exposition reconnaissable de leurs auteurs. La conflictualité ne disparaît pas, elle est déportée : reconfigurée en flux, en scores, en interfaces, en procédures qui se présentent comme de simples enchaînements techniques, alors même quelles opèrent des choix normatifs massifs.
Ce manque nest pas un vide. Il ne signifie ni labsence de normes, ni leffondrement du pouvoir, mais ce que nous avons appelé, dans cet essai-thèse, une *oblitération archicratique* : le recouvrement progressif de la scène par la seule *cratialité*, cest-à-dire par des dispositifs dexécution qui se substituent à la mise en débat des fondements et des effets. Ce nest pas le pouvoir qui manque, cest la possibilité de le voir, de le nommer, de ladresser. La régulation se donne alors comme évidence fonctionnelle, là où elle devrait apparaître comme ce quelle est toujours : un ordre situé, contestable et révisable en respect des promesses démocratiques.
La thèse défendue ici nest pas que toute scène aurait disparu, ni que lhistoire se réduirait à un glissement univoque vers lautomatisation intégrale. Elle est plus précise et plus falsifiable : dans les principaux dispositifs contemporains sociaux, écologiques, numériques , les conditions dexistence dune scène archicrative sont systématiquement affaiblies, fragmentées, reléguées à la marge. Là où lon pouvait autrefois identifier un lieu, un temps, des personnes et des procédures pour organiser et mettre à lépreuve les décisions, nous rencontrons désormais, de manière récurrente, des agencements où lénonciation sefface derrière la mesure, la simulation, la plateformisation et lautomatisation.
Cest pourquoi nous avons forgé la notion d*oblitération archicratique* : non pas labsence de tout recours, mais la tendance structurelle à produire de la norme hors scène, à démultiplier les dispositifs auto-référés architectures, algorithmes, barèmes, chaînes logistiques les supports dune régulation qui se déclare purement opératoire, *autarchicratique*. Cette hypothèse est réfutable : elle serait démentie si lon observait, de façon durable, que les grandes décisions collectives demeurent adossées à des scènes dépreuve robustes, effectives, où les fondements et les effets peuvent être mis en discussion. Elle gagnerait, inversement, en pertinence si des enquêtes empiriques mettent en évidence linaccessibilité des recours, lineffectivité des délibérations politiques, la surdétermination des décisions par des scripts non publics protégés par le droit des affaires.
Dans cette perspective, l*archicratie* nest ni un idéal abstrait, ni un type de régime supplémentaire quil sagirait dajouter à la liste déjà longue des formes politiques. Elle désigne la *condition minimale pour que la régulation soit habitable* : la possibilité, pour une société, dinstituer et de maintenir un seuil où l*arcalité* (ce qui fonde et justifie), la *cratialité* (ce qui opère et exécute) et l*archicration* (ce qui met en épreuve, suspend, requalifie) demeurent distinctes, articulées et exposées. Un ordre est archicratique en ce sens précis : non parce quil serait juste ou égalitaire par essence, mais parce quil se laisse amener en scène, devant des instances où ses prétentions peuvent être critiquées, ses instruments retravaillés, ses effets révisés.
Lenjeu de cette conclusion est de formuler une hypothèse régulatrice : la *co-viabilité* des collectifs humains et non-humains dépend de la capacité à maintenir, à rouvrir, à inventer des scènes dépreuve où lon puisse adresser le pouvoir qui nous affecte. En nommant l*archicratie*, nous ne sacralisons pas un modèle ; nous désignons un seuil au-dessous duquel la régulation se dégrade en pure opération, et au-dessus duquel elle devient au moins discutable, opposable, révisable, modifiable, différant.
Cest là seulement que prend sens le projet dune “cinquième révolution régulatrice”. Non pas un nouvel âge dor, ni une résolution miraculeuse des contradictions, mais un changement de régime dans la manière même de fabriquer la régulation : un tournant où la scène longtemps tenue pour « simple décor du pouvoir », ou pour « luxe démocratique » redeviendrait son opérateur central. Lambition de ce texte nest pas de prédire cette révolution, et moins encore de la prescrire. Il sagit de montrer en quel sens elle est pensable, souhaitable, et sous quelles conditions elle pourrait être mise à lépreuve et mise en pratique.
Ce que nous observons nest ni une défaillance accidentelle du cadre démocratique, ni une déviation autoritaire des gouvernances contemporaines, mais une mutation profonde des formes de régulation effective qui tendent à se configurer hors-scène démocratique instituée. Dans ce modèle, le pouvoir tend à se déporter hors scène instituée : privatisé, déterritorialisé, encapsulé, automatisé, rendu algorithme, crypté, incompréhensible et incritiquable du fait de sa propre efficacité. Il ne sexplique plus, il fonctionne. Il ne sadresse plus, il déclenche. Il ne fonde plus, il applique. Et la régulation tend à se déporter hors scène instituée, tandis que persistent des scènes partielles, alternatives ou multilatérales quil faut reconnaître et saluer. Que ce soit la méta-fédération des soulèvements de la Terre, ou linitiative internationale PauseIA, pour ne nommer que ces deux, leurs discours et leurs expertises apportent informations et discernements sur les enjeux écologiques et les développements dintelligences artificielles.
Le processus est dautant plus difficile à saisir quil est continu, fonctionnel, présenté comme neutre. Les interfaces remplacent les guichets, les tableaux de bord supplantent les délibérations, les retours algorithmiques prennent la place de la justification publique. Le conflit est désamorcé au nom de la fluidité. Le délai est perçu comme dysfonction. Lexposition est dégradée en transparence visuelle sans énoncé.
Le terme doblitération archicratique, proposé et conceptualisé dans les chapitres précédents, désigne exactement cette dynamique : une substitution douce, mais décisive, de la scène par lexécution, du différé par lautomaticité, de lénonciation par la trace, de lépreuve par la donnée. Cette oblitération ne se donne pas comme rupture, mais comme évidence : elle agit dans la logique même des dispositifs, dans leur conception, leur design, leur temporalité.
Il faut ici refuser toute simplification. Si la scène instituée se raréfie, des scènes latérales, résiduelles ou émergentes persistent (communautés locales, contre-institutions, pratiques rituelles), il est grand temps de les reconnaître et de les légitimer au lieu de les folkloriser. Ce monde sans scène nest ni totalement anarchique, ni totalement chaotique, ni même nécessairement injuste dans ses effets immédiats. Il est, en revanche, injustifiable. Il est insoutenable dans le temps, car il est aveugle à sa propre normativité. Il ne dispose daucun espace dans lequel ses propres décisions peuvent être rejouées, exposées, interrogées, rediscutées ou reformulées.
Cette régulation sans scène est une régulation sans mémoire, sans récit, sans réversibilité. Elle fonctionne, et souvent très efficacement. Mais elle ne critique rien, ne se confronte à rien, ne se relance jamais à partir de ses propres limites. Elle produit de la norme sans fondement énoncé, du pilotage sans institution, de la gouvernance sans fondation, un pouvoir simulé à tout moment proche du simulacre.
Les conséquences sont majeures. On croit pouvoir protester, mais linterlocuteur est absent. On tente un recours, mais le délai est dépassé avant même davoir commencé. On cherche le fondement dune décision, mais on ne trouve quun critère, un score, une règle dapplication sans justification. Derrière la façade defficacité, ce qui sinstalle, cest un monde post-scénique, dans lequel les gouvernés nont plus despace institué pour adresser la régulation qui les constitue.
Ce diagnostic nest pas une vérité révélée, mais une hypothèse régulatrice : il postule que, dans les principaux dispositifs contemporains (sociaux, écologiques, numériques), linstance scénique a été reléguée au profit dune *cratialité autarcique*. Il pourrait être réfuté par des recherches qui montreraient linverse, par exemple des domaines où des scènes archicratives fortes subsistent et structurent réellement les décisions. Il serait confirmé, au contraire, par des enquêtes qui objectiveraient linaccessibilité des scènes, lineffectivité des recours, la pure performativité des algorithmes.
Et cest précisément là que souvre une nécessité, celle de refonder la scène comme condition première de toute co-viabilité. Une scène véritable : espace différé, public, opposable, fondé — nullement décorative ni consultative. Une scène où la décision peut être relancée. Où le fondement peut être demandé. Où le délai est un droit. Où lépreuve est reconnue comme condition de la légitimité.
Cette scène, cest ce que nous avons nommé, construit, modélisé et mis à lépreuve : l*archicration*. Et cest depuis son absence — criante et tout à la fois quasi imperceptible — que la cinquième révolution régulatrice devient pensable et indispensable.
Au seuil dune ère où la capacité à ordonner, à segmenter, à attribuer ou à refuser se maintient sans que jamais ces gestes soient exposés à une scène dépreuve instituée, la nécessité dun concept opératoire, capable de désigner la forme régulatrice minimale dun monde habitable, simpose. Ce concept, l*archicratie*, nous lavons forgé, au-delà de la nécessité dinvention lexicale, comme condensation critique dun constat systémique.
L*archicratie* ne renvoie ni à un type de régime spécifique, ni à une forme de gouvernement, ni même à une institution particulière. Elle ne se laisse classer dans aucune catégorie traditionnelle de la philosophie politique, car elle opère en amont des structures représentatives, et en-deça et au-delà des appareils juridiques. Elle est le mode de consistance scénique dune régulation soutenable, cest-à-dire dun ordre qui accepte dêtre mis en épreuve, dêtre différé dans son exécution, dêtre reconfiguré à partir de sa propre exposition sous critères de viabilité. Il sagit donc du régime dapparition du pouvoir fondé, là où une décision peut être tenue, dans le temps et dans lespace, devant ceux quelle affecte, au sein dune scène constituée pour quelle puisse être questionnée, retardée, amendée, voire annulée.
Dans cette perspective, l*archicratie* nest ni utopie ni abstraction : elle fixe la condition de viabilité de tout dispositif qui prétend réguler — affecter des conduites, orienter des possibles, ouvrir/fermer des accès — sans se refermer sur une logique exclusivement opératoire. Il ne sagit pas ici de défendre une figure morale du pouvoir, mais de poser une exigence structurelle : aucune régulation nest légitime si elle ne peut être exposée à son propre fondement. Et aucune scène dexposition nest opérante si elle ne permet pas la convocation des énonciateurs, la traçabilité des instruments, la suspension des effets, la confrontation des justifications et la reconfiguration des décisions.
L*archicratie* devient ainsi le seuil entre une régulation purement fonctionnelle, capable dexécuter des procédures, de reproduire des normes, de gérer des flux automatisés et une régulation fondée, visible, opposable, justifiable, révisable — cest-à-dire co-viable décidée par des humains.
Comme annoncé dans le Prologue, cette conclusion opère la remontée critique à partir des cinq épreuves de notre essai-thèse : (1) lépreuve de détectabilité des régimes (chapitre 1), (2) larchéogenèse des formes scéniques de régulation (chapitre 2), (3) la morphologie des régimes de pouvoir (chapitre 3), (4) la généalogie des révolutions régulatrices (chapitre 4), et (5) les tensions de co-viabilité au sein des dispositifs contemporains (chapitre 5).
Pour penser ce seuil, notre essai-thèse a posé les conditions de détection dune régulation minimale, structurée autour de trois prises fondamentales, dont la coprésence différenciée et articulée constitue la grammaire de toute régulation habitée. Ces trois prises — *arcalité, cratialité, archicration* — ne sont pas des dimensions logiques. Elles sont des formes dexistence différenciées de lordre régulateur.
Comme nous lavons vu, l*arcalité* désigne la condition dénonciation du pouvoir. Elle ne se réduit pas à une source légale ou à une tradition instituée. Elle renvoie à la capacité dun dispositif à exposer son propre fondement comme fondement, à dire : "voici sur quoi nous agissons, pourquoi, selon quelle vision du monde, selon quelle fiction ou axiome opératoire". Dans une régulation archicratique, l*arcalité* est convoquée, nommée, rendue visible, tenue.
La *cratialité*, quant à elle, nest pas simplement lopérativité technique. Elle est lensemble des vecteurs concrets dapplication du pouvoir, quil sagisse de normes, dalgorithmes, de barèmes, de codes juridiques, de métriques ou dinterfaces. Cest le pouvoir dans sa matérialité dexécution. Loin de nêtre quun détail de mise en œuvre, la *cratialité* constitue une scène en elle-même : celle où les affects se traduisent en effets, celle où le monde se divise, sorganise, se hiérarchise. Toute *cratialité* rendue opaque tend à devenir *hypertopique*.
Enfin, l*archicration* désigne la scène elle-même : lespace-temps de lépreuve régulatrice. Il ne se réduit pas à un dispositif de concertation ou à un droit de recours formel, mais bien plus à une scène effective, où le délai est institué, où les énoncés sont exposés, où les décisions sont suspendues, et où les parties affectées peuvent agir sur les termes mêmes de la régulation. Une *archicration* est une scène fondée, différée, ouverte, documentée, capable de transformer ce quelle expose. Elle se doit donc dêtre publique et aucunement privée.
Ces trois prises ne sont jamais données demblée. Elles sont inégalement distribuées, plus ou moins visibles, plus ou moins consolidées. Ce que permet l*archicratie*, cest den faire un modèle danalyse différentielle, capable dévaluer non ce que les institutions disent delles-mêmes, mais ce quelles rendent effectivement détectable, contestable, modifiable.
Cest à ce titre que nous avons élaboré une axiomatique de la détectabilité régulatrice, qui ne repose pas sur la conformité juridique, mais sur des critères structurels : la coprésence des prises ; leur différenciation fonctionnelle ; la publicité du fondement ; lopposabilité des normes ; la révision périodique ; le droit au différé contradictoire.
Ce modèle ne soppose pas aux régimes existants. Il les requalifie selon une grammaire de viabilité. Il ne dit pas ce qui est souhaitable. Il indique ce qui est soutenable.
Au terme de ce parcours, notre essai-thèse propose dabord une *grammaire minimale de la régulation habitable*, en distinguant rigoureusement *arcalité, cratialité* et *archicration* comme trois prises irréductibles mais articulables du pouvoir. Il offre ensuite une archéogenèse comparée des méta-régimes régulateurs, qui permet de lire des configurations très hétérogènes proto-symboliques, scripturaires, marchandes, guerrières, techno-logistiques sans les rabattre sur le seul État, le seul marché ou la seule souveraineté. Il recompose en outre les “révolutions industrielles” comme des *révolutions régulatrices*, cest-à-dire comme des histoires différentielles de la scène et de son oblitération, jusquau diagnostic contemporain d*autarchicratie* et de *régulation hors scène*. Enfin, il élabore une politique des épreuves viables, en substituant à la fiction de la durabilité le paradigme de la *co-viabilité archicratique*, et en proposant quelques gestes concrets par lesquels cette exigence pourrait être mise à lépreuve dans les institutions, les territoires et les dispositifs numériques.
Là réside le geste décisif : faire de l*archicratie* une condition de lisibilité du pouvoir, dans un monde où les décisions sont de plus en plus produites sans fondement explicité, en accès et décision privés, appliquées sans seuil dentrée et exécutées sans scène dexposition explicite (algorithmes de recommandations, IA générative, etc.).
En nommant l*archicratie*, ce que nous faisons, ce nest pas inventer une utopie : cest dégager, à partir des marges critiques de la modernité régulatrice, un principe de consistance qui permet de discerner ce qui peut encore être appelé régulation — et ce qui ne relève plus que de lautomatisation du monde, son *autarchicratie*.
Comme lécrivait Claude Lefort, “le lieu du pouvoir est vide, et le pouvoir est un lieu duquel personne ne peut sarroger la propriété” : cest ce vide fondateur qui, sans scène, devient mutisme algorithmique. Larchicration ne cherche pas à combler ce vide, mais à en réinstituer ladresse. Car l*archicratie* nest pas lalternative à un système. Elle est ce qui rend possible le fait même quun système puisse tenir, mais aussi être interrompu, contesté et refondé. Elle est la condition minimale de tout ordre qui ne veut pas être sa propre clôture et sa pure et propre reproduction sociale.
Ce que nous avons appelé scène nest ni une métaphore théâtrale, ni un artifice rhétorique, ni un dispositif de communication. Elle nest pas le lieu décoratif du pouvoir. Elle nest pas ce que lon ajoute, une fois la régulation pensée, pour en valider symboliquement lacceptabilité. Elle est, à linverse, la matrice originaire doù émerge toute forme de régulation vivable, bien avant lÉtat, bien avant le droit, et en dehors des grammaires modernes du gouvernement.
Lhistoire politique des sociétés humaines ne commence pas avec linstitution étatique. Elle commence par lapparition de lieux différés dans lesquels le pouvoir se donne à voir, se laisse convoquer, se met en épreuve. Partout où lon observe la mise en forme de relations collectives durables, on trouve, en amont de la codification, des scènes dajournement et de dispute — des espaces de rituel, de conseil, de circulation de paroles, de suspension du geste immédiat.
Les premières figures de la régulation ne sont pas des lois, mais des cercles. Ce sont des feux autour desquels on raconte ce qui a été fait, ce qui pourrait être fait autrement, ce qui doit être décidé ensemble. Ce sont des seuils marqués, des temps de deuil ou de conflit ajourné, des prises de parole dans lépure, où lévénement est reconvoqué dans un espace plus grand que lui. Cest ici que sinstitue, sans formalisation juridique, la première *archicration* : une scène anthropologique de différé, de dispute et de co-présence du conflit.
Larchéogenèse de la scène, telle que nous lavons retracé, ne vise pas à plaquer une origine sur le concept d*archicratie*. Elle permet de montrer que lexposition du pouvoir au regard des autres nest pas un luxe moderne, mais une fonction vitale de toute organisation collective. On ne fonde pas une cité parce que lon a établi une loi ; on fonde une cité parce que lon a produit un lieu dans lequel des lois pouvaient être explicitées, différées, adressées et même révisées.
Les régimes que nous considérons comme proto-politiques ne reposent pas sur des appareils coercitifs permanents, mais sur des dispositifs de régulation publique des différends. Ce que lon appelait jadis “conseil des anciens”, “assemblée des vivants”, “place de palabres”, “moment du jugement”, sont autant de scènes dans lesquelles une communauté suspend lexécution brute des normes pour produire, en commun, un réexamen des conditions du vivre-ensemble.
Il y a ici un renversement majeur : ce nest pas la violence qui précède lordre, mais la scène qui ajourne la violence par son existence et son efficience. Loin dêtre un ornement cérémoniel, la scène permet de transformer une décision en acte politique, en la soumettant à un espace dapparition partagé. On ne gouverne pas parce quon détient un pouvoir, on gouverne parce que lon accepte dexposer le pouvoir dans un lieu où il peut être contes.
Et ce geste ne disparaît pas avec la modernité : il se déplace, se reconfigure, parfois se cache. Les formes scéniques de lépoque moderne — parlements, tribunaux, conseils, consultations — ne sont pas des innovations *ex nihilo*, mais des transpositions institutionnelles dune exigence anthropologique fondamentale : rendre le pouvoir visible dans un espace différé, public, contradictoire pour le légitimer dans son autorité.
Ce que nous appelons aujourdhui *archicratie*, à travers le triptyque *arcalité-cratialité-archicration*, ne naît donc pas avec la gouvernance algorithmique, ni avec la crise contemporaine des institutions : cest le nom que nous donnons à une exigence anthropologique longue — rendre le pouvoir visible dans un espace différé, public, contradictoire — que les mutations modernes ont partiellement codifiée, mais jamais totalement effacée. Même les régimes autoritaires, même les appareils technocratiques les plus opaques, tentent de simuler la scène, den mimer les apparences, comme si toute régulation devait, dune manière ou dune autre, sappuyer sur une forme scénique minimale, fût-elle falsifiée, spectaculaire, dé-saisissante ou accablante.
Leffondrement actuel, tel que nous le décrivons, ne réside pas dans une rupture historique absolue, mais dans une disjonction cumulative, où la régulation devient performative, prédictive, auto-exécutive, tout en prétendant conserver lapparence de la scène. Ce que les plateformes administratives, les interfaces de recours, les simulateurs dopinion, les visualisations de données simulent, ce nest pas la norme — cest le différé. Ce nest pas la décision — cest la contestation.
En ce sens, réinstituer la scène aujourdhui revient à réactiver une fonction anthropologique enfouie, plutôt quà restaurer une forme passée enfouie sous les couches technocratiques, une fonction sans laquelle aucun ordre collectif ne peut être su, ajusté, ni corrigé, ni habité. Nous ne parlons pas ici de restauration, plutôt dun geste de fondation renouvelé : retrouver la capacité de construire des espaces différés dapparition du pouvoir, où la norme peut être visible, où la décision peut être suspendue, où leffet peut être discuté, et où le fondement peut être relancé.
Lhistoire de la scène est celle de lajournement du pouvoir brut au nom dune *co-présence* instituée du conflit. Et cest à cette hauteur anthropologique que l*archicratie* trouve son origine : non dans une forme constitutionnelle, mais dans la structure même du fait politique, dès lors quil accepte de sexposer à autre chose que sa propre exécution.
Ce que nous appelons *co-viabilité* nest pensable que dans cette tension : entre un pouvoir qui affecte, et un espace où cette affectation peut être exposée. La scène est le seul lieu où cette tension devient habitable, cest-à-dire vivable, réformable, traversable. Sans scène, ce sont alors des processus, des opérations, des machines qui dominent.
Cest pourquoi, dans notre essai-thèse, l*archicration* nest jamais une solution institutionnelle, ni une forme de gouvernement. Elle est la condition minimale dun monde capable de sinterrompre pour se refonder. Elle est ce qui permet, encore et toujours, de revenir sur ce qui est en train de simposer. Elle est le lieu de surgissement de la viabilité.
Et cest à partir de cette scène — non comme décor, mais comme forme originaire de la dispute différée — que peut se penser la cinquième révolution régulatrice, non comme innovation technologique, mais comme retour conscient à une exigence anthropologique que lhistoire na jamais pu dissoudre.
Il nest désormais plus possible danalyser la question de la régulation sans la confronter à ses deux périls contemporains les plus massifs, les plus urgents, les plus irréversibles : la désintégration sociale et linhabitation écologique. Ces deux lignes de fracture ne constituent pas des petits “sujets” parmi dautres, ni même des crises externes au champ de la régulation. Elles sont les lieux mêmes où se joue la soutenabilité du monde commun, et à partir desquels se manifeste avec la plus grande intensité la nécessité dune scène archicratique instituée.
Dun côté, les sociétés contemporaines sont travaillées par une fragmentation socio-économique accélérée, où les droits, les protections, les accès aux ressources, à la santé, à lhabitat, au travail, à la dignité même, sont de plus en plus conditionnés par des régimes de critères invisibles, des barèmes automatisés, des normes silencieuses dont la contestation na ni lieu ni délai. Ce que produit cette fragmentation, ce nest pas simplement de linjustice cest une dés-institution du social, un abandon de la possibilité de fonder lordre sur une scène où les règles peuvent être exposées, comprises, opposées, amendées.
De lautre côté, lenvironnement planétaire est soumis à un processus de désintégration physique, chimique, biologique, systémique, dont les causes sont connues, mesurées, modélisées — mais dont la régulation demeure hors scène. Les grands instruments du pilotage écologique (quotas carbone, marché de droits démission, régulations incitatives, taxonomies vertes, solutions technologiques à haute intensité énergétique) ne répondent pas à une scène fondée de délibération environnementale. Ils opèrent à partir dindicateurs pré-déterminés, de modèles économétriques rendus irréfutables, dinstitutions fermées dont les critères ne sont ni exposés, ni opposables.
Dans les deux cas, ce que lon appelle régulation nest souvent rien dautre quun régime dadministration automatique de la catastrophe, une façon de moduler les seuils dacceptabilité de linacceptable, de stabiliser temporairement des déséquilibres massifs sans jamais exposer les choix, les arbitrages, les priorités, à une scène dépreuve collective.
Le mot “durabilité”, en ce sens, est devenu lun des opérateurs les plus puissants de cette fiction régulatrice. Il donne à croire quun monde peut être maintenu dans son état actuel par lajustement de ses paramètres sans refondation, sans débat, sans conflit institué. On parle de transition, mais sans définir qui en décide, selon quels délais, avec quelles conséquences, sur quels critères effectifs et crédibles. On évoque lempreinte carbone, sans jamais dire ce que cela signifie politiquement, historiquement, anthropologiquement. Le terme de “durabilité” produit ainsi un effet de clôture : il neutralise la conflictualité fondatrice de toute scène régulatrice, en la remplaçant par un récit doptimisation continue, une fable pseudo-scientifique.
Ce que notre essai-thèse oppose à cette fiction, ce nest pas une autre gestion du risque, ni une autre version du développement : cest une refondation de la question régulatrice à partir du paradigme de la co-viabilité. Et cette refondation ne peut sopérer que dans une configuration archicratique, cest-à-dire dans une scène fondée où la viabilité ne se décrète pas, mais séprouve, se dispute, se rejoue, se transforme.
Celle-ci ne peut être réduite à la compatibilité des intérêts humains et non-humains, ni à une coexistence pacifiée entre agents différenciés. Elle nest pas un horizon harmonique. Elle est un régime dépreuves instituées, dans lequel les formes du vivant, des milieux, des infrastructures, des symboles, peuvent être convoquées dans des scènes de régulation explicite, différée, révisable.
Ce que cela signifie, très concrètement, cest que les arbitrages sur leau, lénergie, la mobilité, le territoire, la réparation, le soin, ne peuvent plus être externalisés dans des modèles dimpact ou des courbes defficacité. Ils doivent être rapportés à une scène, où lon peut interroger non seulement les effets des décisions, mais leurs fondements, leurs seuils, leurs instruments, leurs alternatives.
L*archicration* écologique prend corps dans des scènes territoriales où les habitants font apparaître les conditions dhabitabilité, contestent les infrastructures et proposent des configurations de subsistance — bien au-delà des conférences quinquennales et des tableaux de bord numériques dobjectifs carbone ; elle suppose une arcalisation du vivant (reconnaissance des entités existantes), une cratialisation des milieux (identification des champs de forces et dagissements), une archicration du conflit, autrement dit une politisation complète de ce qui, trop longtemps, a été traité comme données environnementales inertes.
Sur le plan social, la logique est la même. Là où les critères dattribution des droits deviennent des scripts inaccessibles, là où les plateformes daccès remplacent les guichets, là où les aides sociales sont suspendues sans énoncé, là où les publics fragiles sont évalués par des algorithmes de “comportement à risque”, le droit sautomatise, la scène disparaît, la dignité sefface.
Ce nest pas une question dinefficacité, ni même dinjustice procédurale : cest une désactivation du régime de reconnaissance. Car un droit qui ne peut plus être justifié publiquement, réclamé dans une scène, opposé dans un délai, contesté par une présence, nest plus un droit. Cest une variable. Une allocation. Un flux à tout moment suspensif.
Réinstituer l*archicration* sociale, cest donc reconstruire la scène de laccès au droit — non pas à travers des démarches participatives formelles, mais à travers des dispositifs dexposition des critères, des formes de visibilité des seuils, des délais contradictoires obligatoires, des lieux de confrontation réels, soutenus, équipés, où lon peut dire : “Ce nest pas acceptable. Voici pourquoi. Voici ce que je propose.” Cest là, dans ces scènes de linterpellation, que la co-viabilité sociale devient pensable.
Il ne sagit donc pas de “réconcilier” social et écologie, mais de comprendre quils sont deux effets dune même oblitération scénique, et que leur relance ne peut passer que par la reconstruction des conditions archicratiques du désaccord institué.
Cest ici que lhypothèse archicratique devient non plus un outil critique, mais une proposition civilisationnelle. Car un monde durablement privé de scènes archicratives tend à devenir aveugle à sa propre destinée. Un monde incapable de suspendre ce quil fait. Incapable den répondre. Incapable de sajuster depuis elles et ceux quil affecte.
À cette cécité organisée, la *co-viabilité* oppose la lumière rugueuse de lexposition et du différé, la présence irréductible des vivants, la scène ouverte des conflits fondateurs canalisés par les récits de vie. Et cest à partir de cette tension — vitale et irréductible — que peut encore sinventer un devenir commun concerté fondé sur nos vulnérabilités, nos résiliences et nos robustesses conscientisées et politisées.
La régulation contemporaine, dans sa formulation dominante, se présente sous les atours rassurants dun horizon consensuel : celui de la durabilité. Ce terme, devenu mantra technico-politique, irrigue désormais lintégralité des champs du discours institutionnel — des traités internationaux aux chartes locales, des stratégies dentreprise aux programmes éducatifs, des plans daction gouvernementaux aux critères dinvestissement privé. Il semble à la fois évident et indiscutable, fédérateur et apaisant. À son contact, les conflits seffacent, les alternatives se suspendent, la temporalité se normalise, et la gouvernance acquiert une forme de légitimité indolore, anesthésiante, presque tautologique. Au point que ce qui est durable est ce qui mérite de durer.
Sous sa surface consensuelle, la “durabilité” se ferme à lépreuve : elle transforme le dissensus en anomalie et recode la régulation en pilotage continu dindicateurs non révisables. Le problème nest pas lobjectif écologique en lui-même, mais la structure régulatrice qui limpose hors scène, et surtout, dans bien des cas, hors-sol, et bien plus, par cœur ou par calcul. Contre cette clôture, la politique des épreuves viables et soutenables substitue à loptimisation des variables la publicité des critères recevables, au pilotage continu automatisé le jeu et le différé contradictoire, à la gestion dimpacts et de risques lénonciation de leurs fondements pour éveiller les raisons — conditions pour que les décisions redeviennent adressables et opposables sous critères de discernement.
Car jusquà présent, les stratégies dites “durables” fonctionnent selon un régime algorithmique dautorité, où les seuils dacceptabilité sont déterminés en amont, les priorités dictées par les logiques defficience, les variables manipulées sans scène dexposition. On y parle de neutralité carbone, de trajectoires optimales, de plans de transition, mais jamais de fondement public de ces trajectoires, ni de scène dans laquelle elles pourraient être tenues devant ceux quelles affectent. Cest dans cette évacuation de la scène — plus encore que dans le contenu des politiques — que réside le cœur du problème. Ce nest pas lobjectif de durabilité qui est en cause, cest la structure régulatrice silencieuse qui le porte, le légitime et limpose.
Pour rendre ce mécanisme visible, rappelons-nous que toute régulation suppose deux opérations irréductibles : dune part, une *normativité explicite* (ce qui doit être régulé, pourquoi, selon quels principes) ; dautre part, une *opérativité outillée* (comment cette norme sapplique, à travers quels instruments, sur quels objets). Mais entre les deux, il faut une troisième instance, que la durabilité contemporaine tend précisément à effacer : la *scène dépreuve*. Cest cette scène — différée, fondée, contradictoire — qui permet aux décisions de ne pas sexécuter à labri du regard, aux critères dêtre rendus publics, aux seuils dêtre contestés, aux affects dêtre entendus, aux représentations de monde dêtre opposables contre tout arbitraire.
En ce sens, la durabilité nest pas quune fiction apolitique : elle est le récit qui permet lexécution sans scène, la régulation sans fondement, la gouvernance sans convocation. Elle naturalise les instruments, en les présentant comme neutres. Elle réduit les choix à des données. Elle transforme la dispute en friction technique. Et ce faisant, elle désarme les communautés, les privant du droit dajourner, de relancer, de reformuler ce qui les affecte.
La politique des épreuves viables, telle que nous la proposons ici, ne consiste pas à rejeter les impératifs écologiques et sociaux. Elle ne nie pas la nécessité de limites, ni lurgence de transformations structurelles. Elle refuse simplement que ces transformations soient imposées hors scène, dans le silence dune régulation désaffectée. Elle postule que toute décision ayant un impact majeur sur les conditions de vie, de subsistance, dhabitation, doit passer par une épreuve fondée, différée, partagée. Elle postule que ce qui nest pas disputé ne peut être dit durable.
Une politique des épreuves viables suppose donc une ré-institution intégrale des conditions archicratiques de la décision. Plutôt quune réforme des indicateurs, une amélioration des consultations ou une simple transparence des données, il faut une scénarisation complète de la régulation selon une grammaire fondée sur quatre principes irréductibles, que nous avons articulés dans le cadre de notre modèle archicratique.
Quatre exigences, déjà inscrites dans notre axiomatique, organisent la politique des épreuves viables : le *différé contradictoire*, qui rend lexécution ajournable ; la *publicité des critères*, qui reconduit tout seuil à son fondement ; l*opposabilité réelle*, qui ouvre la décision à lintervention des affectés avant, pendant et après son application ; la *révision périodique*, qui interdit la clôture. Ces exigences ne sont pas des ajouts déontologiques : elles matérialisent laxiome de détectabilité, confirment la disjonction fonctionnelle des prises arcales, cratiales et archicratiques et prolongent lépreuve critique comme norme de vitalité du régime.
Mais ces principes ne peuvent exister quà une condition : quil y ait une scène. Une scène qui ne se contente ni de spectacle, ni de consultation décorative, ni de simple mise en visibilité : mais bien une scène où le pouvoir se fonde en apparaissant, où lépreuve est instituée, où la transformation sengage réellement depuis ceux quelle affecte.
Lexemple des politiques climatiques lillustre avec une clarté glaçante. Les objectifs de réduction démissions sont fixés par des trajectoires macroéconomiques, sans fondement ontologique débattu. Les instruments de marché (droits démission, taxes, incitations) sont conçus dans des enceintes dexpertise, sans contre-scène démocratique. Les seuils sont négociés entre États et industries, sans présence des vivants affectés. Résultat : une régulation performante sur le papier, mais fondamentalement désarchicratique. Elle sexécute sans différé, sans dispute, sans publicité explicite des choix de monde. Là encore, la matrice daudit du chapitre 1 sapplique : hypotopies (prises faibles sous-déterminantes), hypertopies (prises surdéterminantes), atopies (pseudo-scènes indéterminées), permettant de situer les déficits scéniques des dispositifs climatiques.
Ce que nous appelons épreuve viable, cest ce qui manque ici : la possibilité dexposer les décisions à une scène où le fondement devient enjeu, où les milieux parlent, où les vivants contestent, où les représentations saffrontent, dans un cadre institué, soutenu, non clôturé.
Dans les politiques sociales, le mécanisme est identique. Les aides sont attribuées selon des barèmes automatisés, les exclusions sont déclenchées sans justification explicite, les critères de mérite, de comportement, de mobilité sont intégrés dans des scripts sans adresse. On parle dinsertion, dautonomie, de parcours. *Mais où est la scène ?* Où est lespace où une personne peut dire : « ce critère est inacceptable » ; « cette décision ne me reconnaît pas » ; « je demande une autre forme de régulation » ?
Dans bien des dispositifs sociaux, la scène formelle daccès au droit sest amincie ou sest déportée dans des circuits techniques ; elle persiste toutefois sous des formes intermittentes, fragiles ou latérales — commissions locales, permanences associatives, médiations juridictionnelles *ad hoc*. Le problème nest donc pas labsence pure et simple, mais la dégradation topologique de la scène : hypotopies (prises faibles ou non reliées), hypertopies (cratialité sur-déterminante) et atopies (simulacres participatifs). Comme nous lavons établi au chapitre 1, cette typologie ne renvoie pas à un argument dautorité mais à une matrice daudit : elle sert à objectiver les prises, à situer les déficits et à rouvrir la possibilité dune scène tenue, opposable et révisable.
Face à cela, une politique des épreuves viables implique une redéfinition complète de lacte régulateur : non plus lajustement dun système fermé, mais linstitution dune scène ouverte. Elle transforme le pouvoir de gouverner en obligation de se laisser apparaître. Elle transforme le savoir dexpert en condition de fondation publique. Elle transforme la gestion en exposition contradictoire.
Nous nommons *autarchicratie* la concrétisation achevée de la désarchicration : le méta-régime dans lequel la *cratialité se met en autarcie*. Il ne sagit pas dun gouvernement de la société par elle-même, mais dun *gouvernement de la régulation par elle-même* : indicateurs, modèles de risque, scripts algorithmiques et procédures de contrôle deviennent leurs propres critères de validité, sans plus devoir passer par des scènes dépreuve archicratives praticables. La *cratialité* sy auto-référence et sy auto-certifie, dans des boucles où tout fonctionne — calculs, audits, *reporting* — mais où plus rien ne se laisse vraiment contester ni même énoncer. Cette mise en autarcie de la régulation prolonge, jusquà son point de bascule, les tendances déjà repérées dans la gouvernementalité néolibérale, la rationalisation managériale et la numérisation intégrale des prises.
L*autarchicratie* nest donc pas une fiction dystopique : cest une destination possible, et déjà en partie à lœuvre, de nos régimes contemporains. Nous en avons suivi les lignes de force dans lhistoire des révolutions industrielles (chapitre 4), lorsque la scène archicrative se trouve progressivement oblitérée au profit de modèles prédictifs et de dispositifs dautomatisation normative. Nous en avons observé les manifestations concrètes dans les politiques climatiques, sociales et numériques (chapitre 5), sous la forme de *pseudo-archicrations fantômes* et de pilotages algorithmiques où les circuits de décision se suffisent à eux-mêmes. Dans tous ces cas, la régulation subsiste juridiquement et techniquement, mais elle se maintient hors seuil dopposabilité : scènes inaccessibles, délais inopérants, motifs indisponibles, paramètres non auditables. Tout fonctionne ; mais plus rien ne sexpose ni ne sexplique.
Dès lors, le péril nest pas l*archicratie* elle-même — qui institue la scène et rend contestables les effets —, mais sa disparition performative dans l*autarchicratie*. Ainsi, refaire monter la scène nest pas un supplément procédural : cest revenir au seuil où la décision cesse dêtre instrument et redevient fondation ; cest rétablir, contre lautarcie régulatrice, la possibilité dun différé, dune justification opposable, dune réversibilité des effets — conditions sans lesquelles il ny a plus de politique, mais seulement à terme des processus automatiques ou des pratiques machinales.
Or cest bien cela que permet encore le concept d*archicratie* — refonder la régulation comme scène, comme institution de linterruption, de la dispute, du différé, de la relance — puisquelle permet de nommer ce qui auparavant était pour bonne part occulté bien que présent. Les épreuves viables posent ainsi la question de ce qui fait tenir un monde — et à quelles conditions il mérite encore de tenir.
Si la scène constitue, comme nous lavons montré, la matrice fondamentale de toute régulation archicratique, alors son absence appelle autre chose quun tragique constat critique ou une nostalgie institutionnelle. Elle appelle un geste pleinement instituant, une projection agissante, un surgissement conceptuel doublé dun projet matériel. Il ne suffit pas de rappeler que les normes sappliquent aujourdhui sans exposition, que les seuils gouvernent sans adresse, que les décisions sexécutent sans différé. Il faut désormais concevoir les formes par lesquelles cette dérive peut être arrêtée, inversée, transformée depuis son propre cœur. Cela ne relève ni du réformisme, ni de lutopie, mais dun geste proprement archicratique : instituer une scène là où il ny a plus que des tentations de scripts ou de prompts.
Car labsence de scène ne signifie pas une absence de régulation. Celle-ci se manifeste au contraire par un trop-plein de formes technico-administratives, de logiques procédurales, de chaînes opératoires sans seuil de réflexivité. Elle ne manque pas darènes, de plateformes, de forums, de simulateurs. Par contre, elle manque de lieux où lon peut exprimer que ce pouvoir nest pas encore justifié ; que cette norme ne peut pas encore sappliquer ; que cette décision doit être suspendue tant quelle na pas été tenue devant celles et ceux quelle transforme. La scène nest donc pas une instance supplémentaire : elle est ce sans quoi toute instance devient violence déguisée et insidieuse. Elle ne sajoute pas au dispositif ; elle en est la condition de légitimité. Et pour cette raison, elle doit être conçue, pensée, projetée et instituée.
Toutefois, réinstituer les scènes ne consiste pas nécessairement à restaurer les formes dassemblée du passé. Il ne sagit pas non plus de réanimer les dispositifs dévitalisés de la représentation, ni de raviver des formes symboliques inertes. Il sagit de penser des espaces dans lesquels une décision devient apparente avant dêtre exécutoire, dans lesquels le temps retrouve sa densité, dans lesquels le pouvoir accepte dêtre différé, exposé, débattu, amendé, contredit. Cela implique une refondation des infrastructures de la régulation, dans leur matérialité comme dans leur temporalité.
Il faudra donc des lieux, des calendriers, des organisations, des compétences, des statuts, des rôles, des budgets, des procédures, mais aussi des rituels, des langues, des gestes, des seuils symboliques. Car la scène est un dispositif complexe : elle némerge pas delle-même, elle ne se décrète pas, elle sinstitue par un ensemble cohérent de formes, despaces, daffects et de récits. Et cest ce tissu quil faut aujourdhui remailler.
Là où les politiques publiques sélaborent aujourdhui dans les anti-chambres des ministères ou la clôture des cabinets daudit, il faudra ouvrir des délais formels et irréductibles à la consultation. Là où les plateformes déploient leurs standards dusage sur des populations entières sans épreuve fondatrice, il faudra bâtir des scènes où le code peut être ajourné, explicité, confronté. Là où les territoires sont remodelés par des logiques doptimisation, il faudra des lieux où lhabitabilité puisse être requalifiée, où les milieux puissent apparaître, où les formes de vie puissent être représentées dans leur altérité. Là où les seuils dattribution, de sanction, daccès ou daide sappliquent par automatisme, il faudra instituer des régimes où la décision elle-même devienne visible, révisable, reconductible à partir dune épreuve contradictoire menée par des humains. Et cela ne se fera pas par décret. Cela exigera de nouveaux dispositifs, de nouvelles instances, de nouvelles formes, à inventer depuis le cœur même de la crise scénique contemporaine, probablement au plus près des acteurs de léconomie sociale et solidaire et des professions intermédiaires.
Quon admette alors ceci : bien comprendre la scène dans lordonnancement archicratique nest pas une option procédurale. Elle est lun des opérateurs décisifs par lesquels une décision cesse dêtre purement instrumentale pour devenir fondatrice. Cest dans la scène que le pouvoir se redéploie en se laissant affecter. Cest dans la scène que la temporalité sépaissit, que les conséquences deviennent lisibles, que les fondements peuvent être relancés. Cest là que peut émerger une *co-viabilité régulatrice*. Il ne sagit donc pas dajouter de la transparence, de la participation ou de la communication. Il sagit de concevoir des scènes dans lesquelles lordre peut être temporairement suspendu, afin dêtre à nouveau institué depuis ceux quil affecte.
Ce travail dinstitution scénique ne peut être séparé de la question de léchelle. Il devra se jouer à tous les niveaux : au sein des écoles, des collectivités, des juridictions, des plateformes, des infrastructures, des régulations techniques, des politiques sociales, des gouvernances écologiques... Chaque strate et lieu de l*archicratie* doit trouver sa scène dapparition, adaptée à sa texture propre, mais reliée par une même exigence : qu*aucune décision structurante et agissante ne puisse advenir sans être tenue devant celles et ceux quelle engage.* Cela implique un effort considérable de conception, de financement, de formation, mais surtout un déplacement ontologique de ce quon appelle “gouverner”. Gouverner ne consistera plus à appliquer avec justesse des normes bien conçues, mais à rendre ces normes ajournables, discutables, contestables, et davantage réformables sous conditions de *co-viabilité* sociale et écologique.
Il faudra, pour cela, concevoir de nouveaux lieux : des espaces où lon entre sans savoir ce qui va en sortir, mais où chacun peut venir avec ses preuves, ses objections, ses propositions, ses arguments. Des scènes sans clôture prédéterminée, mais avec un cadre fort. Des scènes traversées par les conflits, mais équipées pour les soutenir. Des scènes lentes, où lon prend le temps de tout reprendre. Des scènes modestes, parfois, mais constantes. Des scènes qui ne soient pas des moments exceptionnels, mais des rythmes dinstitution continue. Des scènes enfin que lon peut convoquer, non pour donner son avis, mais pour rouvrir le monde.
Et plus encore que des lieux, il faudra forger une culture. Une culture du différé, une culture de la justification, une culture de lapparition fondée. Il faudra former à la convocation des énonciateurs, à la reconstruction des axiomes, à la mise en tension des critères. Il faudra réapprendre à interrompre sans détruire, à disputer sans humilier, à exposer sans désincarner. Il faudra bâtir des formes dans lesquelles le pouvoir naura plus peur dêtre vu, entendu, relancé. Mais cela, aucun règlement ne pourra le prescrire. Ce sera lœuvre dune génération entière, qui ne se contentera pas de revendiquer des droits, mais qui acceptera de se constituer comme puissance politique — non dans léclat du spectaculaire, mais dans la densité fondatrice dun monde à relancer avant effondrement déjà annoncée.
À ce niveau, réinstituer la scène nest plus un programme. Cest un appel. Un appel à cesser de gérer les régulations comme si elles pouvaient sauto-référencer indéfiniment. Un appel à rouvrir lespace du pouvoir comme espace dépreuve, non de domination. Un appel à instituer un régime dans lequel les décisions cessent dêtre des faits pour redevenir des actes. Cest ainsi que l*archicratie* prendra sens comme projet. Non comme forme de gouvernement, mais comme respiration de toute société qui veut encore se gouverner elle-même dans son évolution pour assurer son avenir.
Toute régulation sinscrit dans une histoire. Non seulement dans lhistoire des régimes politiques ou des institutions juridiques, mais dans une histoire plus profonde encore : celle des formes darticulation entre pouvoir, savoir, énergie et monde, autrement dit, celle des configurations systémiques au sein desquelles lhumain, le vivant, le milieu, la technique et le symbolique se tiennent dans un certain rapport. Ce que nous appelons ici “révolution régulatrice” ne renvoie donc pas à un événement politique localisé, ni à une invention technologique isolée, mais à une transformation systémique de la manière dont un monde se produit, se reproduit, se règle et se légitime.
Les quatre grandes révolutions qui scandent la modernité industrielle mécanisation disciplinaire, organisation taylorienne-fordiste, cybernétisation néolibérale, numérisation généralisée ne sont pas seulement des séquences techniques. Chacune a reconfiguré, à sa manière, le rapport entre *arcalité*, *cratialité* et *archicration* : nouvelles promesses de légitimation, nouveaux dispositifs dexécution, nouvelles formes ou nouvelles défausses de scène. La quatrième, celle de la numérisation intégrale des systèmes de décision, pousse à lextrême un mouvement amorcé de longue date : la possibilité de faire fonctionner la régulation sans passer par des lieux reconnaissables dépreuve.
Cest précisément contre cette clôture systémique que se dessine ce que nous proposons dappeler, par convention, une cinquième révolution régulatrice. Elle ne consisterait pas en un supplément dautomatisation ni en une sophistication accrue des instruments. Elle tiendrait dans un déplacement plus radical : le fait de considérer que linstance décisive nest plus loutil, ni le flux, ni la procédure, mais la scène où ces éléments deviennent adressables, critiquables, reconfigurables. Là où les révolutions précédentes ont privilégié lextension des capacités de calcul, de production ou de circulation, celle-ci privilégierait la capacité à exposer ces capacités, à en faire lobjet dune épreuve publique.
Dire quil sagit dune “cinquième révolution” ne signifie pas que lhistoire suivrait un cours nécessaire et linéaire. Le terme na ici quune valeur heuristique : il sert à concentrer, sous un même nom, des processus multiples, hétérochrones et dispersés luttes pour la transparence effective des algorithmes, revendications de recours opposables, demandes de traçabilité des décisions, inventions de nouvelles assemblées scéniques. Il serait erroné de croire que cette révolution viendra sajouter, comme une étape finale, à une série déjà écrite. Elle pourrait tout aussi bien rester avortée, partielle, récupérée par les dispositifs quelle prétend contraindre.
Cest pourquoi lidée de cinquième révolution doit être explicitement soumise à épreuve. Elle serait infirmée si lon constatait que les scènes existantes continuent de se vider de toute capacité effective, que les espaces de recours se réduisent à des simulacres sans impact sur les décisions, que les tentatives de réinstitutions scéniques se réduisent à des mises en récit sans prise sur les cratialités. Elle gagnerait en consistance, au contraire, si des pratiques, même locales, montraient que la création de nouvelles scènes dans les hôpitaux, les écoles, les plateformes, les politiques écologiques modifie réellement la manière dont les décisions sont justifiées, prises et requalifiées pour assurer la co-viabilité.
Nous parlons donc de “cinquième révolution” moins comme dun avenir promis que comme dun horizon de travail : une invitation à relire les conflits présents à partir de la question scénique. Chaque fois quun collectif lutte pour un délai, pour un droit au différé, pour la présence dénonciateurs identifiables, pour un droit de regard sur les paramètres qui le gouvernent, quelque chose de cette révolution est mis en jeu. Chaque fois quil sen remet au contraire à la seule fluidité des ajustements automatiques, il sen éloigne. Le paradigme archicratique propose de tenir ensemble ces expériences, de les comparer, de les instruire, sans décider à lavance de leur issue.
Cette cinquième révolution nest pas un futur abstrait : elle advient chaque fois quun seuil est suspendu, quun fondement est reconvoqué, quun recours devient opérant, quune voix exclue trouve scène, délai et adresse ; chaque fois que la transparence cesse dêtre visualisation pour redevenir publicité des critères, que la participation quitte la consultation pour rejoindre lépreuve, que la gouvernance sefface devant la fondation.
Nous parlons de “cinquième révolution” par convention, en pleine conscience que lhistoire effective procède par recompositions régulatrices hétérochrones, stratifiées, feuilletées, sérialisées, désynchronisées selon les régimes symboliques et techniques ; de sorte que l“événement” est devenu une prise de pouvoir de la scène dans larchitecture des dispositifs industriels.
Dans un monde où les infrastructures et les superstructures établissent les nouvelles normes, où les plateformes sont devenues de nouveaux territoires de nos êtres, où les systèmes dintelligence artificielle sinventent comme nouveaux gouvernants, seule une révolution scénique permettrait au politique de ne pas seffacer. Mais celle-ci ne se décrète pas : elle se sculpte par des décisions, des dispositifs, des pratiques et des langages ; elle requiert des artisans, des architectes, des dramaturges du politique ; elle accepte de perdre en fluidité ce quelle gagne en légitimité. Et cest cela, précisément, que nomme l*archicration* : une révolution régulatrice en acte, bien plus que le modèle institutionnel quelle instaurerait en conscience — l*archicratie*.
Il faut aujourdhui prononcer un appel ancré dans le vivant, là où les institutions ne font plus apparaître les polémiques, là où les discordes tendent à se faire taire. Un appel qui ne soit ni un cri, ni un mot dordre, ni un acte de foi, mais une *archicration vivante* : cest-à-dire lapparition dénoncés fondés, publics, discutables, adressables, révisables — une parole instituante, dans ce sens précis et exigeant que nous redonnons au mot “politique”. Le droit de vivre ! De tous vivre ! De chacun selon ses capacités, et à chacun selon ses besoins…
Car ce que notre monde ne sait plus faire advenir, ce ne sont pas les règles ou les normes en elles-mêmes, mais la capacité populaire à les exposer, à les critiquer, à les instituer grâce à des formes collectives constituées par celles et ceux qui les subissent en premier lieu. Cette incapacité nest ni technique, ni conjoncturelle. Elle est le symptôme dun effondrement structurel qui au-delà de produire de linjustice, nous conduit à une crise de viabilité civilisationnelle.
Nous vivons dans un monde où lhumain et le non-humain sont liés par une même absence de considération. Le vivant, dans son immense diversité de formes, dagencements, de langages, de résistances, est soustrait à la parole, au temps et à la forme. Et ce que notre thèse a permis de penser, cest que ce processus dinvisibilisation nest pas un effet secondaire des logiques économiques, mais une conséquence directe de la disparition de la scène de confrontation. Là où il ny a plus de scène, il ne peut y avoir ni représentant, ni interpellation, ni suspension, ni réparation. Le vivant devient bruit, excès, variable et externalité à occulter.
Il faut donc le dire avec toute la solennité nécessaire. Un monde sans *archicration* rend le vivant politiquement illisible, donc indéfendable : le conflit perd sa scène et le temps son droit de retour ; or le vivant a besoin dun lieu dapparition où les règles qui le concernent sont convoquées, tenues et différées. Parce quil a besoin dune scène comme condition de reconnaissance mutuelle inscrite dans le temps. Parce quil ne peut être gouverné sans être dabord entendu, représenté, institué dans la durée de conflits assumés, dans la densité dun désaccord soutenu qui permette tout de même la *co-viabilité*.
Ce nest pas tant un supplément de conscience écologique que requiert notre temps, quune réinscription du vivant dans le cœur même de la procédure régulatrice. Il faut que le vivant retrouve la capacité de faire épreuve comme acteur instituant. Cela implique de convoquer de nouveaux formats dapparition, de nouvelles figures de représentation, de nouvelles juridictions du milieu, de nouveaux porte-paroles, mais aussi de nouvelles scènes, de nouveaux délais et de nouveaux seuils. Et cest là que l*archicration*, en tant que forme dinstitution de la régulation, redevient notre outil premier, notre geste inaugural, notre obligation radicale.
Mais ce ne sont pas uniquement les vivants non-humains qui exigent ce retour à la scène. Ce sont les humains eux-mêmes, dans leur diversité traversée de douleurs, de silences, de disparitions, de récits corrompus ou interrompus. Ce sont les corps précarisés, expulsés, captés, mécanisés, racisés, discriminés. Ce sont les voix sans adresse, les luttes étouffées, les demandes restées lettres mortes, les souffrances converties en statistiques, les communautés disqualifiées ou reléguées. Là encore, ce nest pas un “plus de participation” quil faut : cest un *acte fondateur de refondation*. Ce nest pas une réforme du droit daccès à la parole : cest linstitution dun droit dépreuve et de reconnaissance. Encore une fois d*archicrations* !
Et ce droit nest pas métaphysique. Il est scénique. Il sinscrit dans des formes précises, différées, structurées. Il suppose des lieux, des interlocuteurs, des procédures, des archives, des délais, des énonciateurs. Il suppose des scènes que lon peut habiter, relancer, réinterroger. Il suppose que la parole soit tenue, mais aussi reçue, exposée, contredite, reformulée. Il suppose, enfin, que cette parole soit retenue dans larchitecture même de la régulation. Quil ne soit pas juste documenté, mais quil puisse reconfigurer le pouvoir sous condition de recevabilité.
Nous appelons donc, à ce stade ultime de notre œuvre, à un réarmement du commun par la scène. Rien dun théâtre idéologique bien plutôt une architecture du vivre-ensemble, régulatrice, opposable, fondée. Car il ne peut y avoir de monde commun sans scène, pas de scène sans différé, et pas de différé sans pouvoir qui accepte de suspendre son exécution pour se reformuler devant celles et ceux quil engage. Ce geste — si simple en apparence, si révolutionnaire en pratique — est le cœur de toute *archicration*. Et cest à ce titre probablement à tout le moins lune des rares voies régulatrices encore tenables et viables à nos yeux.
À ce point de saturation du monde — saturation des flux, des normes, des récits, des simulacres de participation — une respiration possible reste celle du moratoire et du différé. La seule densité politique entendable est celle de lépreuve et des preuves. La seule fondation encore pensable est celle qui accepte de se laisser instituer à nouveau, à se laisser revisiter, en pleine conscience. Cest cela, notre appel : reconvoquer le vivant dans la scène, refaire de lapparition, de linformation, de lopinion un droit, refonder la régulation politique en processus d*archicrations*. Il ne sagit pas dajouter un modèle de plus, mais de rendre à lhistoire ce dont elle a été amputée, faute doccultation et faute dimpensé : ses scènes fondatrices, émancipatrices et régulatrices qui font tenir les mondes.
Ce que notre époque appelle, est bien plus quun ajustement marginal des politiques existantes, bien plus quune moralisation incrémentale des comportements individuels. Cest une réinvention des conditions mêmes dapparition et de mobilisation du pouvoir : des lieux, des temps, des procédures, des mémoires où les décisions qui nous engagent puissent être amenées en scène, instruites, contestées, requalifiées. Les dix gestes qui suivent nont pas valeur de programme clos ni de plan de réforme. Ils constituent des hypothèses archicratiques : des propositions de formes scéniques minimales, destinées à être discutées, expérimentées, corrigées. Ils nont de sens que sils deviennent eux-mêmes objets dépreuve.
Premier geste : *instaurer un droit universel au différé contradictoire*. Un tel droit ne viserait pas à ralentir indistinctement toute décision, mais à garantir que toute mesure qui affecte substantiellement une existence allocation, sanction, fermeture, expulsion, tri automatique puisse être suspendue dans un temps institué, devant une instance capable den reconsidérer les motifs et les effets. Ce droit ne se confond pas avec un simple droit au recours individuel : il institue le temps scénique comme composante non négociable de la régulation.
Deuxième geste : *fonder, pour chaque grand dispositif de régulation, un journal de justification*. Il ne sagirait pas dajouter un rapport de plus aux archives administratives, mais dexiger que toute décision structurante (création dun algorithme, dun barème, dun standard) soit accompagnée dun récit argumenté de ses raisons, des alternatives écartées, des effets anticipés. Ce journal ne sanctifie pas la décision ; il la rend adressable. Il crée une mémoire publique du fondement, à partir de laquelle critiques, révisions et contre-propositions peuvent être formulées.
Troisième geste : *instituer un visa daffectation pour les principaux instruments de calcul et de qualification*. Chaque indicateur, chaque score, chaque seuil ne serait plus un simple paramètre technique, mais devrait porter trace de ses finalités déclarées et des collectifs qui en ont débattu. Ce visa nautorise pas seulement lutilisation dun outil ; il inscrit loutil dans une adresse éthique et politique : qui décide que telle métrique est légitime pour mesurer telle réalité, avec quelles garanties, pour combien de temps ?
Quatrième geste : *instaurer un coupe-circuit citoyen*. Il sagirait de prévoir, dans les dispositifs institutionnels, des mécanismes par lesquels des collectifs citoyens, usagers, travailleurs, habitants puissent suspendre temporairement lapplication dune décision lorsque des contradictions graves, des effets non prévus ou des injustices manifestes apparaissent. Ce geste nest pas un droit dobstruction généralisée ; il est la traduction procédurale du principe selon lequel aucune *cratialité* ne doit se déployer sans possibilité dinterruption scénique.
Cinquième geste : *instituer un tribunal de lalgorithme*. Non pas un organe chargé de valider ou dinterdire abstraitement la technique, mais une scène dépreuve où les architectures computationnelles qui organisent laccès aux droits, à linformation, aux ressources, soient rendues comparables, critiquables, reformulables. Un tel tribunal devrait être doté de compétences mixtes juridiques, techniques, sociales et travailler à partir de cas concrets. Il ne sagit pas dajouter une couche de contrôle symbolique ; il sagit de ramener lalgorithme en scène.
Sixième geste : *rétablir des assemblées daffectation là où les décisions sont aujourdhui dispersées dans des chaînes opaques*. Dans les hôpitaux, les écoles, les agences sociales, les plateformes, ces assemblées seraient chargées dinstruire publiquement la manière dont les ressources, les priorités, les charges et les risques sont distribués. Elles ne se substituent pas aux institutions existantes ; elles en constituent le moment scénique, là où les critères implicites peuvent être explicités, contestés, ajustés.
Septième geste : *rendre révocables les mandats au sein des institutions qui conçoivent, paramètrent et pilotent les dispositifs de régulation*, quil sagisse dinstances publiques, de régulateurs indépendants ou de structures privées investies de missions dintérêt général. La révocabilité ne signifie pas linstabilité permanente, mais la possibilité, pour les collectifs concernés, de mettre fin à un mandat lorsquil apparaît que l*archicration* est durablement contournée, que les fondements ne sont plus adressés, que la *cratialité* sest autonomisée.
Huitième geste : *instaurer, dans chaque budget institutionnel dimportance, un budget scénique*. Il ne sagirait pas dun poste décoratif, mais dune ligne dédiée au financement des dispositifs dépreuve : temps de délibération, traduction, médiation, expertise contradictoire, dispositifs de restitution. Un budget sans scène est un budget sans adresse. Reconnaître un budget scénique, cest faire de la scène non plus un coût superflu, mais une condition de validité de la dépense.
Neuvième geste : *inscrire dans le droit un principe général de révision archicrative*. Ce principe reconnaîtrait que toute architecture régulatrice loi, norme, algorithme, accord institutionnel doit pouvoir être réexaminée à intervalles déterminés, à partir dinstances où les personnes affectées, les savoirs concernés, les effets constatés sont convoqués. Il ne sagit pas dinstaurer une instabilité chronique, mais de consacrer le fait que la *co-viabilité* ne se maintient quau prix dune disponibilité organisée à la révision.
Dixième geste : *construire des cartographies des scènes manquantes.* Au lieu de se contenter danalyses sectorielles, il sagirait de repérer, sur un territoire ou dans une chaîne de valeur, les lieux où des décisions structurantes sont prises sans scène identifiable, où les personnes affectées nont ni adresse, ni délai, ni recours. De telles cartographies ne sont pas un exercice académique de plus : elles constituent un instrument politique central pour orienter linvention des scènes à venir, pour ne pas laisser invisible ce que la seule *cratialité* préfère absorber.
Ces dix gestes népuisent pas la gamme des formes possibles d*archicration*. Ils ne valent pas comme une doctrine à appliquer, mais comme une invitation à la mise à lépreuve : ils devront être discutés, critiqués, complétés, remplacés, parfois abandonnés. Leur seule prétention est de montrer que l*archicratie*, loin dêtre un mot abstrait, peut se traduire en dispositifs concrets, situés, qui redonnent aux collectifs la capacité dadresser le pouvoir qui les traverse. Et cest à ce niveau que nous posons notre ouvrage, moins une doctrine quune mise à lépreuve publique, moins un programme quune fondation différée : linvitation à restaurer la capacité institutionnelle de refonder le “pouvoir de” et le “pouvoir sur” nos vies, à hauteur de la *téra-machine* en constitution*.*
Nous n'assistons ni à un retour primordial du désordre ni à une
raréfaction du pouvoir. Ce qui se transforme, plus discrètement mais de
manière décisive, ce sont les conditions mêmes sous lesquelles la
régulation peut apparaître. Ce qui se reconfigure sous nos yeux n'est
pas d'abord la quantité de pouvoir à l'œuvre dans nos sociétés, mais la
manière dont ce pouvoir se rend — ou ne se rend plus — visible,
adressable, contestable. La conflictualité ne disparaît pas ; elle
change de régime d'existence. Là où elle trouvait autrefois à se
formuler dans des lieux identifiables, à se différer dans des
temporalités instituées, à se confronter dans des espaces d'énonciation
reconnus, elle se trouve de plus en plus distribuée dans des chaînes
opératoires qui se présentent comme de simples enchaînements techniques.
Flux, scores, interfaces, barèmes, protocoles : autant de formes qui
n'abolissent pas les décisions, mais en modifient profondément les
conditions d'apparition. Ce qui relevait d'une épreuve devient
traitement. Ce qui relevait d'une adresse devient calcul. Ce qui
relevait d'une justification devient paramétrage.
Ce déplacement est d'autant plus difficile à saisir qu'il ne se donne
pas comme rupture. Il s'installe dans la continuité apparente des
dispositifs, dans l'amélioration de leur efficacité, dans la promesse
d'une gestion plus rapide, plus fluide, plus objective des situations.
Le conflit y est désamorcé au nom de la performance. Le différé y est
perçu comme ralentissement. L'exposition y est remplacée par une
visibilité sans interlocution, où tout semble disponible sans que rien
ne soit véritablement tenu. Il ne s'agit pas d'un vide. Il ne s'agit pas
d'un monde sans normes ni d'un effondrement du pouvoir. Il s'agit d'un
recouvrement. Ce que cet essai-thèse a nommé oblitération archicratique
désigne cette dynamique précise : la substitution progressive de la
scène par l'exécution, du différé par l'automaticité, de l'énonciation
par la trace, de l'épreuve par la donnée.
Le pouvoir ne cesse pas d'opérer ; il cesse de comparaître. Les
décisions continuent d'être prises ; elles cessent d'être tenues. Elles
ne disparaissent pas ; elles se soustraient aux formes où elles
pourraient être rapportées à leurs fondements, confrontées à leurs
effets, reprises à partir de ce qu'elles affectent.
Ce qui caractérise ainsi notre situation n'est pas une crise de la
conflictualité, mais une crise de sa tenue. Non l'absence de dissensus,
mais l'altération des formes capables de le porter. Non la disparition
du politique, mais sa désarticulation progressive hors des scènes où il
pouvait encore apparaître comme tel. À ce niveau, ce que nous appelons
crise ne relève plus d'un dysfonctionnement partiel, ni d'une dérive
simplement sectorielle. Elle engage les conditions même dans lesquelles
un monde peut encore faire apparaître, soutenir et transformer ce qui le
traverse.
Ce déplacement du regard a commandé tout le parcours accompli. Il a
d'abord fallu apprendre à voir. Distinguer ce qui fonde de ce qui opère,
ce qui opère de ce qui met à l'épreuve. Rompre avec les confusions qui
font passer l'exécution pour la justification, la visibilité pour
l'opposabilité, la procédure pour la scène. Sans cette discipline de
détectabilité, le présent demeure illisible et la critique se dissout
dans des généralités. L'une des ambitions premières de ce travail aura
donc été de donner des prises : non pas inventer un vocabulaire pour le
plaisir de l'invention, mais rendre discernable ce que les descriptions
ordinaires du pouvoir, de la gouvernance et de l'administration laissent
trop souvent se confondre.
Encore fallait-il que ce vocabulaire n'usurpe pas sa propre nécessité.
L'archicratie ne vaut pas parce qu'elle pourrait tout redire dans sa
langue ; elle vaut seulement là où elle permet de discerner quelque
chose qui, sans elle, resterait confondu, euphémisé ou inaperçu. Elle ne
constitue donc ni une théorie totale du politique, ni une clef
universelle des mondes historiques, mais un instrument critique situé,
tenu à une obligation de retenue : se taire là où il n'apporte aucun
gain de lisibilité, et répondre de ses distinctions là où il prétend en
produire. C'est à cette condition seulement qu'un paradigme cesse d'être
un idiome de surplomb pour devenir une épreuve réelle de connaissance.
Il a fallu ensuite remonter plus loin. Reconnaître que les formes
d'épreuve ne sont ni des raffinements tardifs des modernis
représentatives, ni des suppléments ajoutés à des ordres déjà
constitués, mais des conditions plus profondes de la tenue des mondes
humains. Avant les États, avant les bureaucraties, avant les
codifications juridiques stabilisées, des collectifs ont dû inventer des
manières de différer, de ritualiser, d'exposer ce qui les traversait.
L'histoire du politique ne commence pas avec la souveraineté constituée
; elle commence avec la nécessité, pour un monde traversé de forces
hétérogènes, de ne pas s'abandonner à leur pure immédiateté. Elle
commence là où quelque chose comme une reprise devient possible, là où
ce qui affecte peut être reconduit à une forme d'exposition, si
rudimentaire, violente ou dissymétrique soit-elle. La scène n'est donc
pas un luxe moderne. Elle appartient à la structure même des mondes qui
tiennent.
Il a fallu également traverser les grandes pensées du pouvoir, non pour
les annuler, ni pour les annexer de force à un nouveau système, mais
pour en mesurer les prises et les limites. Certaines ont privilégié le
fondement, d'autres l'opération, d'autres encore la conflictualité, la
dispersion des dispositifs, l'individuation, la justification ou le
dissensus. Toutes ont saisi quelque chose de réel ; aucune n'a tenu
entièrement ensemble les conditions d'une régulation habitable. Ce que
cette traversée a rendu possible, ce n'est pas une synthèse des
doctrines, mais une méta-grammaire du politique, capable de les relire à
partir de ce qu'elles permettent — ou non — de penser : comment un
ordre se fonde, comment il opère, comment il accepte d'être mis à
l'épreuve.
Il a fallu enfin éprouver cette grammaire dans l'histoire effective des
transformations modernes, là où les capacités de régulation ont atteint
une intensité inédite. Ce qui apparaît alors n'est pas seulement une
succession d'innovations techniques, mais une série de reconfigurations
du rapport entre fondement, opération et épreuve. Chaque révolution
industrielle a redessiné ce triangle ; chacune a accru certaines
puissances tout en décalant, fragmentant ou fragilisant les formes
capables de les soutenir. L'histoire moderne n'apparaît plus comme celle
d'un progrès simplement technique ; elle devient lisible comme celle des
déplacements successifs du lieu où le pouvoir se rend — ou cesse de se
rendre comparable, contestable, révisable.
C'est au point le plus brûlant du présent que cette exigence se révèle
avec la plus grande netteté. Les tensions contemporaines ne se laissent
pas comprendre comme des crises séparées, ni comme des anomalies
sectorielles. Elles manifestent, chacune à leur manière, la difficulté
croissante à instituer des formes dans lesquelles ce qui est affecté par
les décisions peut être reconduit à une épreuve. Ce qui manque n'est pas
la capacité à produire des normes, des infrastructures, des critères,
des instruments. Ce qui manque, de plus en plus, c'est l'habileté à les
porter. De là la nécessité d'un déplacement conceptuel décisif :
substituer au lexique lisse de la durabilité la notion de co-viabilité.
Non pas un équilibre supposé entre intérêts déjà constitués, ni la
correction technocratique d'externalités, mais l'institution toujours
fragile, toujours révisable, toujours conflictuelle, des conditions sous
lesquelles des formes de vie hétérogènes peuvent encore tenir ensemble
sans destruction irréversible.
Ce qui se dégage ainsi de l'ensemble n'est pas une doctrine
supplémentaire, encore moins un système clos. C'est une condition — qui ne garantit ni harmonie ni salut, mais sans laquelle aucune
régulation ne peut être tenue comme monde. Cette condition peut
désormais être formulée simplement : une régulation ne devient habitable
qu'à la mesure où ce qui la fonde, ce qui l'opère et ce qui la met à
l'épreuve demeurent distinguables, articulés et exposables. Toute la
difficulté tient alors à ceci : maintenir cette distinction sans les
dissocier, et cette articulation sans les confondre. Là où ces
dimensions se confondent, se disjoignent ou se dérobent à l'exposition,
la régulation peut continuer à fonctionner ; elle cesse de se tenir.
C'est cette condition minimale que nous avons nommée archicratie. Ni
régime parmi d'autres, ni forme institutionnelle déterminée, ni idéal
moral à incarner : un seuil. Le seuil au-dessous duquel la régulation se
réduit à sa propre opérativité, et au-dessus duquel elle devient, au
moins en droit, habitable, parce qu'elle laisse ouverte la possibilité
de sa reprise. L'archicratie ne désigne ni la justice, ni la bonté, ni
la douceur des décisions ; elle désigne la condition sans laquelle ces
questions elles-mêmes cessent de pouvoir être posées politiquement.
Ce qui fonde une régulation ne se confond ni avec une autorité
abstraite, ni avec un texte, ni avec une tradition invoquée une fois
pour toutes ; cela renvoie à la capacité d'un ordre à exposer ses
raisons comme telles. Ce qui opère désigne les instruments, procédures
et dispositifs par lesquels le monde est effectivement découpé,
distribué, transformé. Ce qui met à l'épreuve, enfin, ne relève ni d'une
consultation formelle ni d'un recours marginal, mais de formes
instituées où fondements, opérations et effets peuvent être suspendus,
confrontés, repris.
Ces prises ne sont jamais données à l'état pur. Elles se recouvrent, se
déplacent, se distribuent inégalement selon les configurations. Mais
leur coprésence différenciée constitue la condition minimale d'une
régulation vivable. Là où l'opération se déploie sans être reconduite à
ses raisons, là où les décisions s'appliquent sans passer par des
épreuves effectives, la régulation bascule vers une forme de fermeture
qui ne relève ni du chaos ni du retrait du pouvoir, mais de son
auto-suffisance. Dans une telle configuration, le pouvoir ne se retire
pas ; il s'accomplit sans comparution. Il produit des effets, parfois
avec une grande précision, mais sans se laisser reprendre dans des
formes où ces effets pourraient être rapportés à des raisons
discutables. Il opère, mais ne s'expose plus. Il décide, mais ne se
laisse plus adresser. Tout fonctionne ; mais plus rien ne s'expose ni ne
s'explique.
La différence décisive se situe là. Entre une régulation capable
d'exécuter des procédures, de reproduire des normes, de gérer des flux,
et une régulation capable de se rapporter à elle-même à partir de ce
qu'elle affecte, la différence ne tient pas à l'intensité du pouvoir,
mais à la possibilité de sa mise à l'épreuve. Ce qui rend un monde
habitable n'est ni l'absence de tensions, ni la stabilité de ses
équilibres, ni la pure efficacité de ses dispositifs. C'est la forme
dans laquelle ce qui le traverse peut être porté sans être nié, différé
sans être dissous, exposé sans être annihilé.
À partir de là, la question n'est plus d'abord celle d'un bon régime,
mais celle d'un monde qui tient. Non d'un monde pacifié, homogène ou
réconcilié, mais d'un monde capable de porter ce qui le traverse sans
s'abolir dans sa propre exécution. Un monde qui ne tient ni par inertie,
ni par répétition, ni par l'évidence supposée de ses fondements. Il
tient parce qu'il est capable de porter ce qui le traverse sans le nier,
de différer ce qui l'affecte sans le dissoudre, d'exposer ce qui le
gouverne sans s'effondrer sous sa propre mise en question. Habiter un
monde ne signifie pas simplement y vivre. Cela signifie pouvoir y
comparaître. Pouvoir y demander d'où parle ce qui décide. Pouvoir y
identifier ce qui opère. Pouvoir y rouvrir le temps lorsque l'exécution
tend à se refermer sur elle-même. Pouvoir y faire apparaître ce qui,
sans cela, demeurerait converti en variable, en score, en flux.
La scène prend ici son sens le plus fort. Elle n'est ni un supplément
institutionnel, ni un décor ajouté au pouvoir pour en améliorer
l'acceptabilité, ni une métaphore commode pour désigner des espaces de
parole. Elle est l'une des formes à travers lesquelles un ordre cesse
d'être purement opératoire pour devenir politiquement tenable. Là où il
y a scène au sens fort — c'est-à-dire espace différé, documenté,
institué, capable de suspendre et de requalifier — la régulation ne se
contente pas d'agir : elle accepte de comparaître. C'est dans cette
comparution que se joue la possibilité, pour un monde, de ne pas se
réduire à ce qu'il exécute.
Il faut ici maintenir une distinction que tout ce travail a jugée
décisive. Dire que la scène est condition de viabilité ne signifie
nullement que toute scène serait en elle-même juste, démocratique ou
émancipatrice. L'histoire des formes politiques, juridiques,
religieuses, administratives, guerrières, marchandes ou sacrificielles
montre au contraire que des scènes peuvent être violentes,
dissymétriques, inquisitoriales, spectaculaires, capturées. La scène
n'est pas bonne parce qu'elle apparaît ; elle devient politiquement
décisive lorsqu'elle institue réellement l'épreuve de ce qu'elle expose.
Ce qui compte n'est pas l'existence abstraite d'un lieu d'apparition,
mais la possibilité effective qu'il ouvre : peut-on y demander les
fondements ? Les instruments peuvent-ils y être rendus visibles ? Les
effets peuvent-ils y être rapportés à ceux qu'ils affectent ? Le différé
est-il réel ou purement fictif ? La suspension a-t-elle une force
transformatrice ou n'est-elle qu'un rite sans prise ?
Il n'en demeure pas moins que, sans scène, la régulation se dégrade
qualitativement. Elle peut continuer à fonctionner ; elle peut même
gagner en efficacité apparente. Mais elle perd sa mémoire, sa
réversibilité, sa capacité à se rapporter à elle-même autrement que par
recalibrage interne. Elle applique, classe, répartit, déclenche, module
; mais elle ne se reprend plus. Elle produit des normes sans en exposer
les raisons, des décisions sans en instituer l'épreuve, des effets sans
en organiser le retour. Elle tient encore ; mais elle ne sait plus
répondre de la manière dont elle tient. C'est en ce point qu'un monde
sans scène devient injustifiable. Non pas nécessairement injuste dans
chacun de ses effets immédiats ; non pas chaotique ; non pas dépourvu de
cohérence locale. Il peut très bien fonctionner, produire des résultats,
stabiliser provisoirement des situations, maintenir des chaînes
d'obéissance ou d'adaptation. Mais il devient injustifiable parce qu'il
ne dispose plus des formes dans lesquelles ses propres décisions peuvent
être rejouées, exposées, interrogées, reformulées.
On comprend alors ce que la co-viabilité signifie exactement. Elle ne
désigne ni la simple coexistence de formes de vie différentes, ni leur
compatibilité gestionnaire, ni un optimum de répartition des ressources
ou des charges. Elle désigne la capacité, toujours fragile, toujours
située, toujours révisable, d'un monde à instituer des formes dans
lesquelles les hétérogènes qui le traversent peuvent être mis en tension
sans être soit mutuellement détruits, soit administrativement
neutralisés. Elle est moins un état qu'un régime d'épreuves. Elle ne se
mesure pas seulement à l'efficacité des ajustements ; elle se mesure à
la possibilité qu'un ordre laisse ouvert sa propre reprise à partir de
ce qu'il affecte.
C'est à ce niveau que le diagnostic du présent trouve sa formulation la
plus nette. Non dans l'idée d'un monde privé de régulation, mais dans
celle d'un monde où la régulation tend à se déployer hors des formes qui
permettaient de la tenir. Qu'il s'agisse des droits sociaux, de
l'habitabilité écologique des milieux ou des architectures numériques de
décision, la même logique se renforce : les dispositifs deviennent plus
puissants au moment même où les formes capables d'en soutenir l'épreuve
deviennent plus fragiles, plus tardives, plus périphériques. Ce ne sont
pas les décisions qui disparaissent ; ce sont les manières dont elles
pourraient être tenues.
Les droits, dans de nombreuses configurations sociales, se trouvent
intermédiés par des procédures dont la logique demeure difficilement
accessible à ceux qu'elles affectent ; les décisions qui concernent
l'habitabilité écologique des milieux se trouvent portées par des
instruments puissants, mais rarement rapportées à des espaces où leurs
fondements pourraient être disputés ; les architectures numériques et
algorithmiques rendent possible une distribution fine des traitements,
des classements, des accès, sans rendre aisément localisable le lieu de
leur mise à l'épreuve. Ces dimensions ne doivent pas être comprises
comme des sphères séparées. Elles constituent les expressions
différenciées d'un même processus : celui par lequel la régulation tend
à se déployer hors des formes d'épreuve qui permettaient de la tenir
comme monde.
C'est en ce sens que l'autarchicratie peut être nommée comme la
contre-figure terminale de l'archicratie. Non un régime au sens
classique, ni une idéologie, ni un type d'État, mais une configuration
dans laquelle la régulation tend à se refermer sur sa propre
opérativité, à produire ses propres critères de validité, à
s'auto-justifier sans passer par des épreuves effectives. Dans une telle
configuration, les instruments, les modèles, les indicateurs, les
procédures deviennent à la fois ce qui opère et ce qui justifie. Les
boucles se ferment. Les ajustements se font à partir de leurs propres
résultats. Les audits vérifient la conformité à des critères produits
par les systèmes eux-mêmes. La régulation devient auto-référentielle.
Cette bascule ne doit pas être dramatisée comme si elle était totale,
homogène, déjà accomplie. Des scènes subsistent, parfois robustes,
parfois fragiles. Des espaces de contestation, de délibération, de
reprise continuent d'exister. Mais ils apparaissent souvent comme
disjoints des lieux où les décisions se prennent effectivement. La
tension se joue moins entre présence et absence de scène qu'entre leur
centralité et leur marginalisation. Le problème décisif n'est pas de
savoir si toute scène a disparu ; il est de comprendre que la dynamique
dominante tend à rendre optionnelle l'épreuve dont dépend pourtant la
viabilité de la régulation.
C'est ici que la distinction entre durabilité et co-viabilité prend
toute sa force. La durabilité, telle qu'elle s'est imposée dans les
discours contemporains, ne doit pas être critiquée d'abord pour ses
intentions, mais pour sa forme. Elle tend à fonctionner comme un
opérateur de neutralisation de la conflictualité : en posant comme
objectif la préservation ou l'ajustement de certains équilibres, elle
déplace l'attention vers la gestion des variables, l'optimisation des
paramètres, la correction des trajectoires. Ce déplacement n'est pas
illégitime en soi ; il le devient lorsqu'il s'accompagne d'une
évacuation des formes dans lesquelles les choix qui structurent ces
trajectoires pourraient être discutés. La durabilité peut alors
s'accommoder d'une régulation sans scène. La co-viabilité, elle, en fait
une impossibilité.
La différence est décisive. La première tend à organiser la continuité
des systèmes ; la seconde à instituer les conditions de leur reprise. La
première privilégie l'ajustement des variables ; la seconde la mise à
l'épreuve des fondements. La première peut se satisfaire d'une
gouvernance qui corrige des déséquilibres ; la seconde exige des formes
dans lesquelles les conditions mêmes de ces corrections peuvent être
adressées, contestées, transformées. Ainsi comprise, la co-viabilité ne
constitue pas un idéal abstrait. Elle désigne le régime minimal dans
lequel un monde peut continuer à se transformer sans se soustraire à sa
propre interrogation. Elle n'abolit pas les tensions ; elle en organise
la tenue. Elle n'élimine pas les conflits ; elle en rend l'épreuve
possible. Elle ne garantit pas la justice ; elle rend au moins pensable
sa recherche.
Il reste alors à comprendre ce qui, en dernière instance, est affecté
par cette transformation. Non pas seulement des institutions, des
règles, des procédures, mais des formes d'existence. Des vies. Des
milieux. Des devenirs. Si l'archicratie prend finalement une telle
importance, ce n'est pas parce qu'elle offrirait une théorie plus
satisfaisante du pouvoir ; c'est parce qu'elle reconduit l'analyse à ce
qui, sans scène, devient politiquement illisible. Là où la régulation se
déploie sous forme de flux, de calculs, de traitements, le vivant tend à
être reconduit à des variables. Les milieux deviennent des stocks ou des
contraintes. Les corps deviennent des profils, des trajectoires, des
cas. Les expériences deviennent des données d'ajustement. Ce processus
n'est pas nécessairement intentionnel. Il résulte de la logique même des
dispositifs qui, pour fonctionner, doivent simplifier, catégoriser,
standardiser. Mais cette simplification a un effet décisif : elle
désinscrit le vivant de la scène. Elle le rend opérable sans qu'il ait à
apparaître.
Le vivant ne disparaît pas ; il devient politiquement illisible. Il est
là, partout affecté, mobilisé, transformé — mais de moins en moins
capable de faire retour sur ce qui l'affecte. Un monde sans archicration
est un monde dans lequel le vivant est présent sans être représentable,
affecté sans être adressable, engagé sans être entendu. Il est pris dans
des opérations, mais il ne peut plus apparaître comme ce à partir de
quoi celles-ci devraient être interrogées.
C'est en ce sens que l'oblitération archicratique produit une crise de
reconnaissance. Non pas au sens restreint d'une reconnaissance morale ou
symbolique, mais au sens plus fondamental d'une reconnaissance comme
condition d'apparition dans un espace où l'on peut être pris en compte.
Reconnaître ne signifie pas simplement identifier ou décrire. Cela
signifie instituer des formes dans lesquelles ce qui est affecté peut
être reconduit à une scène, où il peut être exposé, où il peut entrer en
relation avec ce qui décide. Sans cette reconnaissance, le vivant peut
être protégé, géré, optimisé ; il ne peut pas être politiquement tenu.
Il faut alors comprendre que la question de la scène n'est pas
extérieure à celle de la liberté. Elle en constitue l'une des conditions
minimales. Non la liberté comme autonomie absolue, mais comme
possibilité d'intervenir sur les conditions qui nous affectent. Une
société qui ne dispose plus de formes dans lesquelles ses propres
régulations puissent être interrogées tend à se percevoir comme soumise
à des nécessités. Elle perd la capacité de distinguer ce qui relève de
contraintes inévitables et ce qui relève de choix. À l'inverse, une
société qui institue des épreuves se dote de la possibilité de se
rapporter à elle-même comme à un ensemble de décisions révisables. Elle
ne supprime pas les contraintes, mais elle les inscrit dans des formes
où elles peuvent être discutées.
À ce point, aucune réponse définitive ne peut être apportée. Aucun
modèle achevé ne peut être proposé. Mais une exigence demeure, désormais
visible et irréductible. Un monde ne devient inhabitable ni parce qu'il
est traversé de tensions, ni parce qu'il doit décider dans
l'incertitude, ni parce qu'il affronte des contraintes puissantes. Il le
devient lorsqu'il ne dispose plus des formes capables de porter ce qui
le traverse autrement que par la pure exécution. Ce qui est en jeu n'est
ni la suppression du conflit, ni l'optimisation des dispositifs, ni la
stabilisation d'un équilibre. Ce qui est en jeu, c'est la possibilité de
maintenir ouvertes les formes dans lesquelles un monde peut se rapporter
à lui-même à partir de ce qu'il affecte. La possibilité, toujours
fragile, toujours menacée, de ne pas confondre ce qui fonctionne avec ce
qui se tient.
Rendre à la régulation les formes dans lesquelles elle peut encore être
tenue comme monde : telle est l'exigence à laquelle reconduit l'ensemble
de ce parcours. Non comme un programme, ni comme une promesse, mais
comme ce sans quoi aucune transformation ne peut être habitée. Car ce
n'est jamais l'ordre seul qui fait tenir un monde. C'est la possibilité,
pour cet ordre, d'être interrompu, exposé, repris. Là où cette
possibilité se ferme, le monde peut continuer à marcher ; il cesse peu à
peu d'être habitable. Là où elle demeure ouverte, fût-ce dans le
conflit, sous contrainte, précairement, quelque chose du politique
subsiste encore : non la paix, ni l'innocence, ni l'harmonie, mais la
capacité d'un monde à ne pas se confondre avec sa propre exécution.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,68 @@
---
title: "Agencement machinique"
term: "Agencement machinique"
aliases: ["Agencement", "Théorie des agencements"]
urlAliases: ["agencement-machinique"]
mobilizedAuthors: ["Gilles Deleuze", "Félix Guattari"]
comparisonTraditions: ["post-structuralisme", "schizoanalyse", "ontologie des agencements"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Paradigme de régulation fondé sur des agencements hétérogènes de flux, de machines, de signes, de corps et de dispositifs, sans centre souverain unique ni forme close préalable."
concepts: ["agencement-machinique", "agencement", "machine", "flux", "dispositif", "tension", "heterogeneite"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "cratialite", "archicration", "tension", "co-viabilite", "theorie-de-lacteur-reseau", "transduction-et-individuation", "configuration-et-interdependance"]
opposedTo: ["decisionnisme-souverain", "domination-legale-rationnelle"]
seeAlso: ["pharmacologie-technique", "preemption-algorithmique", "technodiversite-et-cosmotechnie"]
---
Lagencement machinique désigne un paradigme de régulation fondé sur des agencements hétérogènes de flux, de machines, de signes, de corps et de dispositifs, sans centre souverain unique ni forme close préalable.
Lordre y est pensé comme composition, branchement, propagation, découplage et recomposition, plutôt que comme simple exécution dune norme centrale.
## Distinction
Lagencement machinique ne se confond ni avec lidée vague de réseau ni avec une pure horizontalité.
Il désigne une logique de composition dans laquelle des éléments hétérogènes se connectent de manière productive et transforment les conditions mêmes de la régulation. La machine ny est pas seulement technique ; elle est aussi sociale, sémiotique, institutionnelle et désirante.
## Fonction dans le paysage théorique
Ce paradigme permet de penser :
- des compositions régulatrices décentrées ;
- les articulations entre technique, langage, institutions et affects ;
- les stabilisations locales sans fondation unitaire ;
- les lignes de fuite, reconfigurations et reprises de lordre.
## Rapport à larchicratie
Larchicratie y trouve une ressource majeure pour penser des régulations non réductibles à lÉtat, au droit ou à ladministration classique.
Elle sen distingue néanmoins par son exigence de lisibilité et de comparution. Là où lagencement machinique peut rester infra-institué, diffus ou difficilement adressable, larchicratie demande encore comment ces prises se rendent visibles, disputables et révisables.
## Limite archicratique
Le gain deleuzo-guattarien est sa puissance descriptive des compositions hétérogènes.
Mais son angle mort est que lagencement peut rester trop fluide, trop dispersé ou trop infra-scénique pour fournir à lui seul une théorie suffisante de la scène dépreuve.
Larchicratie y voit donc une ressource décisive pour penser la cratialité distribuée, mais non encore une formalisation suffisante de larchicration.
## Renvois
- [Théorie de lacteur-réseau](/glossaire/theorie-de-lacteur-reseau/)
- [Transduction et individuation](/glossaire/transduction-et-individuation/)
- [Configuration et interdépendance](/glossaire/configuration-et-interdependance/)
- [Pharmacologie technique](/glossaire/pharmacologie-technique/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Technodiversité et cosmotechnie](/glossaire/technodiversite-et-cosmotechnie/)
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Cratialité](/glossaire/cratialite/)
- [Tension](/glossaire/tension/)
- [Co-viabilité](/glossaire/co-viabilite/)

View File

@@ -9,11 +9,12 @@ definitionShort: "Vecteur fondationnel et structurant de la régulation : ensemb
concepts: ["arcalite", "archicratie", "cratialite", "archicration", "co-viabilite"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "cratialite", "archicration", "co-viabilite", "tension"]
related: ["archicratie", "cratialite", "archicration", "co-viabilite", "tension", "domination-legale-rationnelle", "fait-social-total"]
opposedTo: ["autarchicratie"]
seeAlso: ["obliteration-archicratique"]
seeAlso: ["obliteration-archicratique", "hyperarcalite", "archicrations-scripturo-normatives"]
---
Larcalité désigne le vecteur fondationnel et structurant de toute régulation.

View File

@@ -0,0 +1,83 @@
---
title: "Archéogenèse"
term: "Archéogenèse"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Analyse de la genèse longue des régimes de co-viabilité : processus par lequel émergent, se sédimentent, se transforment et se recomposent des prises fondationnelles, opératoires et régulatrices."
concepts: ["archeogenese", "emergence", "genese", "sedimentation", "seuil", "transfert", "arcalite", "cratialite", "archicration"]
links: []
kind: "concept"
family: "dynamique"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "meta-regime-archicratique", "regime-de-co-viabilite", "co-viabilisation", "meta-regime", "archicrations-proto-symboliques", "archicrations-differentielles-et-formes-hybrides"]
opposedTo: []
seeAlso: ["transduction-et-individuation"]
---
Larchéogenèse désigne lanalyse de la genèse longue des régimes de co-viabilité : le processus par lequel émergent, se sédimentent, se transforment et se recomposent des prises fondationnelles, opératoires et régulatrices.
Elle ne renvoie ni à un commencement absolu ni à une origine mythique. Elle désigne le moment analytique où lon reconstruit les seuils, les tensions, les transferts et les stratifications par lesquels des formes encore dispersées de coordination, de légitimation, de contrainte, de transmission et de comparution commencent à sarticuler en un régime relativement tenable.
## Distinction
Larchéogenèse ne doit pas être confondue avec l[Archicratie](/glossaire/archicratie/).
Larchicratie désigne le cadre théorique général de la régulation co-viabilisante.
Larchéogenèse désigne le processus démergence, de transformation et de stratification de cette régulation dans la durée.
Elle ne doit pas non plus être réduite à une simple chronologie.
Une chronologie ordonne des événements dans le temps.
Larchéogenèse reconstruit des couches, des seuils, des recompositions et des transmissions partielles entre régimes.
Autrement dit :
- la chronologie décrit une succession ;
- larchéogenèse reconstruit une genèse structurale.
## Fonction dans le paradigme
Cette notion permet de penser comment un ordre collectif se constitue avant même de disposer dinstitutions pleinement stabilisées ou dun régime réflexif élaboré.
Larchéogenèse permet dobserver :
- lapparition de premières arcalités ;
- la distribution de premières chaînes de cratialité ;
- lesquisse de scènes où les tensions peuvent être prises en charge ;
- la manière dont des couches anciennes persistent, se déplacent ou se réactivent dans des régimes plus récents.
Elle rend ainsi pensable la formation historique des régimes de co-viabilité.
## Portée analytique
Lintérêt de cette notion est déviter deux erreurs :
- croire quun ordre social apparaît tout armé ;
- réduire son émergence à une simple accumulation de pouvoirs bruts ou à une téléologie linéaire.
Larchéogenèse oblige à analyser la co-formation des fondements, des dispositifs, des scènes et des tensions.
Elle montre aussi quun méta-régime nouveau nefface pas nécessairement les précédents : il peut les recoder, les inhiber, les subordonner ou les recombiner.
## Enjeu historique
Larchéogenèse permet de lire les régimes de régulation comme des formations historiques épaisses, faites de reprises, de ruptures, de sédimentations et de bifurcations.
Elle ouvre ainsi le passage entre la typologie des méta-régimes et leur historiographie comparée.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Méta-régime](/glossaire/meta-regime/)
- [Méta-régime archicratique](/glossaire/meta-regime-archicratique/)
- [Régime de co-viabilité](/glossaire/regime-de-co-viabilite/)
- [Co-viabilisation](/glossaire/co-viabilisation/)
- [Archicrations proto-symboliques](/glossaire/archicrations-proto-symboliques/)
- [Archicrations différentielles et formes hybrides](/glossaire/archicrations-differentielles-et-formes-hybrides/)
- [Transduction et individuation](/glossaire/transduction-et-individuation/)

View File

@@ -0,0 +1,77 @@
---
title: "Archicrate"
term: "Archicrate"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Figure individuelle, institutionnelle ou techno-organisationnelle qui concentre une cratialité décisive sur la base dune arcalité stabilisée, en neutralisant, filtrant ou capturant les scènes où cette puissance pourrait comparaître."
concepts: ["archicrate", "cratialite", "arcalite", "capture", "indisputabilite", "scene", "concentration"]
links: []
kind: "figure"
family: "figure"
domain: "transversal"
level: "avance"
related: ["figures-archicratiques", "archicratie", "arcalite", "cratialite", "scene-darchicration", "autarchicratie", "hypercratialite", "hyperarcalite", "institution-invisible", "autarchicration"]
opposedTo: []
seeAlso: ["obliteration-archicratique", "scene-empechee"]
---
Larchicrate désigne la figure — individuelle, institutionnelle ou techno-organisationnelle — qui concentre une cratialité décisive sur la base dune arcalité stabilisée, tout en neutralisant, filtrant ou capturant les scènes où cette puissance pourrait comparaître.
Larchicrate nest donc pas seulement « celui qui commande ».
Il est celui — ou ce qui — parvient à rendre difficilement disputable une prise régulatrice déterminante.
## Distinction
Larchicrate ne se réduit ni au souverain classique, ni au chef visible, ni à lautorité formelle.
Une banque centrale, une grande plateforme numérique, une direction administrative, une agence de notation, une autorité religieuse, un dispositif algorithmique structurant ou un opérateur logistique peuvent jouer un rôle archicratique dès lors quils configurent durablement la régulation et rendent leur propre prise difficile à mettre en épreuve.
La notion désigne donc une **fonction de concentration régulatrice** plus quun statut juridique.
## Fonction dans le paradigme
Le concept darchicrate permet de personnaliser ou de focaliser lanalyse sans retomber dans un imaginaire naïf du « grand décideur ».
Il sert à repérer les lieux où :
- une arcalité forte vient légitimer une prise ;
- une cratialité concentrée permet dagir en profondeur ;
- les scènes de contestation sont réduites, déplacées, capturées ou neutralisées.
Larchicrate apparaît là où le pouvoir devient structurellement difficile à faire comparaître.
## Formes possibles
Selon les contextes, larchicrate peut prendre des formes très différentes :
- autorité monétaire ;
- plateforme numérique structurante ;
- organe dexpertise ;
- direction technico-administrative ;
- institution sanitaire ou éducative ;
- appareil normatif ou religieux ;
- opérateur logistique ou algorithmique.
Le concept nimpose donc aucune forme unique de domination. Il désigne la **concentration régulatrice** là où elle devient politiquement décisive.
## Enjeu politique
Penser larchicrate, cest identifier les figures à partir desquelles larchitecture de régulation se concentre, se protège et tend à se soustraire à lépreuve.
La question nest pas seulement : qui décide ?
Mais : qui configure la possibilité même de la décision, de sa recevabilité et de sa contestation ?
## Renvois
- [Figures archicratiques](/glossaire/figures-archicratiques/)
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Hypercratialité](/glossaire/hypercratialite/)
- [Hyperarcalité](/glossaire/hyperarcalite/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Autarchicration](/glossaire/autarchicration/)

View File

@@ -9,11 +9,12 @@ definitionShort: "Méta-régime de régulation par lequel les sociétés humaine
concepts: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "tension"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["arcalite", "cratialite", "archicration", "co-viabilite", "tension"]
opposedTo: ["autarchicratie"]
seeAlso: ["scene-depreuve", "obliteration-archicratique"]
seeAlso: ["scene-depreuve", "obliteration-archicratique", "coexistence-ontologique-et-necessite-regulatrice", "formes-de-vie-et-cadres-dhabitabilite", "egalisation-normative-et-differenciation-singuliere"]
---
Larchicratie désigne le méta-régime de régulation par lequel les sociétés humaines organisent la co-viabilité de leurs dynamiques internes.

View File

@@ -0,0 +1,76 @@
---
title: "Archicration oblitérée"
term: "Archicration oblitérée"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Situation dans laquelle larchicration continue dopérer, mais sous une forme devenue partiellement invisible, introuvable, indisputable ou soustraite aux scènes où elle pourrait être effectivement reprise."
concepts: ["archicration-obliteree", "archicration", "oblitération", "opacite", "hors-scene", "regulation"]
links: []
kind: "diagnostic"
family: "pathologie"
domain: "transversal"
level: "avance"
related: ["archicration", "obliteration-archicratique", "autarchicration", "autarchicratie", "scene-empechee", "scene-manquante", "hypotopie", "atopie", "desarchicration", "institution-invisible"]
opposedTo: ["scene-darchicration", "monde-instituable"]
seeAlso: ["hypercratialite", "hyperarcalite", "desarchicratisation"]
---
Larchicration oblitérée désigne la situation dans laquelle larchicration continue dexister et de produire des effets, mais sous une forme devenue partiellement invisible, introuvable ou difficilement disputable.
La régulation ny a donc pas disparu. Elle agit encore, parfois avec une grande efficacité, mais sans accéder pleinement au statut dobjet visible de comparution.
## Distinction
Larchicration oblitérée ne se confond ni avec labsence totale de scène, ni avec lautarchicratie pleinement consolidée.
Elle désigne un état intermédiaire et souvent décisif :
- des formes dépreuve subsistent ;
- certaines scènes existent encore ;
- mais les prises décisives se déplacent, se compactent ou se dissimulent ;
- la révision devient plus difficile que la simple apparence de procédure ne le laisse croire.
Elle se situe ainsi entre larchicration encore praticable et la fermeture plus avancée de l[Autarchicratie](/glossaire/autarchicratie/).
## Fonction dans le paradigme
Cette notion permet de décrire des mondes où la régulation reste forte mais où la scène devient déficiente.
Il y a archicration oblitérée lorsque :
- la chaîne opératoire est trop compacte pour comparaître ;
- les critères décisifs demeurent hors de portée ;
- la scène est juridiquement ouverte mais matériellement pauvre ;
- la procédure existe mais ne permet plus datteindre les fondements et les seuils de décision ;
- lépreuve est reléguée dans des espaces techniques, managériaux ou experts peu accessibles.
## Rapport à loblitération archicratique
L[Oblitération archicratique](/glossaire/obliteration-archicratique/) désigne le processus général par lequel les architectures de régulation cessent dapparaître comme des constructions discutables.
Larchicration oblitérée en désigne une forme plus localisée ou plus processuelle : le moment où lépreuve nest pas encore totalement abolie, mais déjà gravement compromise.
## Portée analytique
Le concept est utile parce quil évite deux erreurs :
- croire quil ny a plus aucune scène dès quune scène devient faible ;
- croire quune scène visible suffit à garantir une archicration réelle.
Il permet de nommer les zones grises, les scènes appauvries, les procédures dont la fonction régulatrice subsiste sans pleine comparution.
## Renvois
- [Archicration](/glossaire/archicration/)
- [Oblitération archicratique](/glossaire/obliteration-archicratique/)
- [Autarchicration](/glossaire/autarchicration/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Scène empêchée](/glossaire/scene-empechee/)
- [Scène manquante](/glossaire/scene-manquante/)
- [Hypotopie](/glossaire/hypotopie/)
- [Atopie](/glossaire/atopie/)
- [Désarchicration](/glossaire/desarchicration/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Monde instituable](/glossaire/monde-instituable/)

View File

@@ -4,52 +4,80 @@ term: "Archicration"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Vecteur régulateur par lequel les tensions entre arcalités et cratialités sont organisées, exposées, redistribuées et rendues révisables."
concepts: ["archicration", "archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]
version: "0.2.0"
definitionShort: "Vecteur régulateur par lequel les tensions entre arcalités et cratialités sont mises en forme, exposées, redistribuées et rendues plus ou moins révisables dans des scènes, dispositifs et médiations déterminés."
concepts: ["archicration", "archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve", "scene-darchicration"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]
related: ["archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve", "scene-darchicration"]
opposedTo: ["autarchicratie", "obliteration-archicratique"]
seeAlso: ["scene-depreuve"]
seeAlso: ["archicration-obliteree", "autarchicration", "desarchicration", "scene-manquante", "scene-empechee", "regulation-technique-et-legitimation-democratique", "souverainetes-territoriales-et-interdependances-globales", "memoire-symbolique-et-instantaneite-computationnelle"]
---
Larchicration désigne le vecteur régulateur par lequel les tensions entre arcalités et cratialités sont organisées, exposées, redistribuées et rendues révisables.
Larchicration désigne le vecteur régulateur par lequel les tensions entre arcalités et cratialités sont mises en forme, exposées, redistribuées et rendues plus ou moins révisables.
Elle correspond à lensemble des mécanismes, scènes, dispositifs et opérations par lesquels une société traite effectivement les tensions entre ses prises de fondation et ses chaînes deffectuation.
Larchicration ne supprime pas les tensions ; elle les organise, les redistribue, les canalise et les transforme afin de maintenir une compatibilité globale du système social.
Elle peut prendre des formes multiples : juridiques, rituelles, discursives, institutionnelles, statistiques, symboliques, administratives, techniques, voire hybrides.
Elle correspond à lensemble des scènes, dispositifs, procédures, médiations, rythmes et objets à travers lesquels une société traite les écarts produits par ses propres fondements et ses propres chaînes deffectuation. Elle ne supprime pas les tensions ; elle les travaille, les met en rapport, les qualifie et les oriente.
## Distinction
Larchicration nest ni l[Arcalité](/glossaire/arcalite/) elle-même, ni la [Cratialité](/glossaire/cratialite/) seule.
Larchicration ne doit pas être confondue avec l[Arcalité](/glossaire/arcalite/) ni avec la [Cratialité](/glossaire/cratialite/).
Elle désigne le plan régulateur où les structures de fondation et les dynamiques opératoires entrent en rapport de traitement, de comparution, darbitrage et de révision.
- larcalité fonde, stabilise, cadre ;
- la cratialité opère, déploie, transforme ;
- larchicration règle leur rapport, en organisant les scènes où ce rapport devient praticable, disputable ou révisable.
Elle ne doit pas être pensée comme une forme unique dexposition critique. Il existe au contraire une pluralité darchicrations : certaines sont discursives, dautres techniques, dautres rituelles, normatives, esthétiques, bureaucratiques ou hybrides.
Elle ne doit pas non plus être comprise comme nécessairement juste, démocratique ou émancipatrice. Il existe des archicrations hiérarchiques, rituelles, inquisitoriales, bureaucratiques, guerrières, sacrificielles, marchandes ou algorithmiques. Ce qui les définit nest pas leur valeur morale, mais le fait quelles donnent une forme régulatrice au traitement des tensions.
## Fonction dans le paradigme
Larchicration constitue la dimension régulatrice de la dynamique archicratique.
Dans la théorie de l[Archicratie](/glossaire/archicratie/), larchicration constitue la dimension proprement régulatrice du triangle archicratique.
Elle articule :
Elle rend possible :
- les arcalités qui fondent et stabilisent ;
- les cratialités qui opèrent et transforment ;
- la comparution de certaines prises de pouvoir ;
- la mise en rapport entre fondements et opérations ;
- la redistribution des écarts devenus problématiques ;
- le maintien, même précaire, dune [Co-viabilité](/glossaire/co-viabilite/).
afin de maintenir la [Co-viabilité](/glossaire/co-viabilite/) du système social.
Sans archicration, les tensions ne disparaissent pas : elles saccumulent, se déplacent hors-scène ou sont traitées par simple opérativité nue.
Sans archicration, les tensions produites par la pluralité des fondements et des chaînes deffectuation finissent par dépasser les capacités de régulation du système.
## Scènes et médiations
## Scène dépreuve
Larchicration ne se réduit pas à une seule forme institutionnelle.
Larchicration suppose aussi la possibilité dune [Scène dépreuve](/glossaire/scene-depreuve/), cest-à-dire dun espace où les architectures régulatrices peuvent être rendues visibles, discutées, exposées à la critique et transformées.
Elle peut prendre la forme :
Lorsque cette dimension sefface, larchicration tend à se dégrader et peut dériver vers des formes d[Autarchicratie](/glossaire/autarchicratie/) ou d[Oblitération archicratique](/glossaire/obliteration-archicratique/).
- dune juridiction ;
- dune procédure contradictoire ;
- dun rituel de réparation ;
- dune scène délibérative ;
- dun protocole dinstruction ;
- dun dispositif documentaire ;
- dun format de saisine ou de recours ;
- dun espace hybride associant expertise, publicité et décision.
Ce qui compte, ce nest pas seulement quune scène existe, mais quelle permette réellement dexposer les prises dun ordre, den discuter les critères et den modifier au moins partiellement les effets.
## Pathologies
Larchicration se dégrade lorsquelle :
- devient purement décorative ;
- subsiste sans révisabilité réelle ;
- est déplacée dans des hypertopies fermées ;
- se fragmente au point de devenir introuvable ;
- ou laisse lopérativité se soustraire à la scène.
Cest alors quapparaissent des figures comme l[Archicration oblitérée](/glossaire/archicration-obliteree/), l[Autarchicration](/glossaire/autarchicration/) ou la [Désarchicration](/glossaire/desarchicration/).
## Enjeu politique
Lenjeu archicratique nest pas seulement de savoir sil existe du pouvoir, mais sil existe encore des formes où ce pouvoir puisse comparaître, être qualifié, contredit et reconfiguré.
Larchicration est le nom de cette exigence de mise en forme de lépreuve.
## Renvois
@@ -59,5 +87,9 @@ Lorsque cette dimension sefface, larchicration tend à se dégrader et peu
- [Co-viabilité](/glossaire/co-viabilite/)
- [Tension](/glossaire/tension/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)
- [Autarchicration](/glossaire/autarchicration/)
- [Désarchicration](/glossaire/desarchicration/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Oblitération archicratique](/glossaire/obliteration-archicratique/)

View File

@@ -0,0 +1,114 @@
---
title: "Archicrations différentielles et formes hybrides"
term: "Archicrations différentielles et formes hybrides"
aliases: ["Archicrations différentielles", "Formes hybrides de larchicration"]
urlAliases: []
mobilizedAuthors: ["Norbert Elias", "David Graeber", "Pierre Clastres", "Arnold Van Gennep", "Gilbert Rouget", "Charles Tilly", "Émile Durkheim", "Paulo Freire", "John Dewey"]
comparisonTraditions: ["anthropologie politique comparative", "sociologie processuelle", "pragmatisme démocratique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Configurations dans lesquelles les méta-régimes archicratiques se modulent, sinhibent, se fragmentent ou se combinent sans se stabiliser sous une forme unique."
concepts: ["archicrations-differentielles-et-formes-hybrides", "archicration", "hybridation", "modulation", "plasticite", "composition", "co-viabilite"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve", "meta-regime-archicratique", "archeogenese", "regime-de-co-viabilite", "archicrations-normativo-politiques", "archicrations-marchandes", "archicrations-guerrieres"]
opposedTo: []
seeAlso: ["archicrations-epistemiques", "archicrations-esthetico-symboliques", "archicrations-techno-logistiques"]
---
Les archicrations différentielles et formes hybrides désignent lensemble des configurations dans lesquelles les méta-régimes archicratiques ne se déploient ni dans la pureté formelle ni dans lisolement dune cohérence close.
Cette topologie terminale ne constitue pas un simple appendice secondaire. Elle désigne au contraire la zone méthodologiquement indispensable où la typologie est mise à lépreuve du réel : là où un régime se module, sinhibe, se fragmente, alterne ou se combine à dautres sans produire une synthèse stable.
## Principe régulateur
Aucune société historique ne déploie ses régimes dordre sous forme chimiquement pure.
Les formes effectives de co-viabilité sont le plus souvent :
- différentielles, lorsquun régime est activé de manière discontinue, inhibée, saisonnière, localisée ou partielle ;
- hybrides, lorsque plusieurs régimes sont co-présents, enchevêtrés ou articulés de manière pragmatique et souvent instable dans une même configuration.
Ces formes ne sont ni des résidus, ni des anomalies, ni des exceptions secondaires. Elles sont des formes structurantes de la régulation, parce quelles révèlent la plasticité concrète de larchicration.
## Archicrations différentielles
Les formes différentielles correspondent à des modulations internes de régimes déjà identifiés.
Elles peuvent prendre la forme :
- dune intériorisation psychique de la régulation ;
- dune alternance saisonnière, cyclique ou contextuelle ;
- dune inhibition volontaire du pouvoir ;
- dune transmission générationnelle ou initiatique ;
- dune activation locale, provisoire ou stratifiée dun régime dominant.
Dans tous ces cas, il ne sagit pas de nouveaux régimes autonomes, mais de variations internes qui rendent visible la souplesse morphologique de larchicratie.
## Formes hybrides
Les formes hybrides apparaissent lorsque plusieurs méta-régimes sont articulés dans une même configuration historique sans se fondre en une unité supérieure.
On peut ainsi rencontrer des agencements :
- coercitivo-capitalistes ;
- pédagogiques ;
- cérémoniels ;
- domestiques ;
- salarials ;
- éco-symboliques ;
- technico-juridiques ;
- transitoires ou instables.
Lhybridité ne dissout pas la typologie : elle en éprouve les seuils, les lisières, les recouvrements et les entrecroisements.
## Arcalité, cratialité, archicration
Cette topologie montre que larchicratie nest jamais une essence simple, mais une relation dynamique entre ses trois vecteurs constitutifs : arcalité, cratialité, archicration.
Dans les formes différentielles et hybrides :
- larcalité peut être diffuse, flottante, fragmentée ou composite ;
- la cratialité peut être empêchée, intermittente, distribuée, parasitaire ou renforcée par couplage ;
- larchicration peut se déplacer hors de la scène manifeste, sintérioriser, salterner, se superposer ou se reconfigurer selon les situations.
La régulation ny prend pas toujours la forme dun triangle équilibré. Elle peut devenir figure disjointe, polyèdre instable, agencement rhizomatique ou montage partiel.
## Portée archicratique
Cette fiche est décisive, parce quelle évite deux écueils :
- le réductionnisme, qui ramènerait toute régulation à la loi, à lÉtat ou à un régime unique ;
- le purisme typologique, qui refuserait de penser la régulation dès lors quelle ne sinscrit pas dans un méta-régime chimiquement stable.
Larchicration doit au contraire être pensée comme un opérateur de cohérence différenciée, capable de maintenir des compositions hétérogènes de régulation.
## Enjeu méthodologique
Cette topologie joue un rôle de charnière entre typologie et histoire.
Elle rappelle que les méta-régimes sont des formes-types nécessaires à lanalyse, mais que les régimes effectifs sont presque toujours stratifiés, composites, désajustés ou en transition.
Cest en ce sens quelle clôt et déborde la typologie : non comme un treizième régime plaqué artificiellement, mais comme lespace où la typologie accepte de se mesurer à la morphologie réelle des régimes de co-viabilité.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Méta-régime archicratique](/glossaire/meta-regime-archicratique/)
- [Régime de co-viabilité](/glossaire/regime-de-co-viabilite/)
- [Archéogenèse](/glossaire/archeogenese/)
- [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/)
- [Archicrations marchandes](/glossaire/archicrations-marchandes/)
- [Archicrations guerrières](/glossaire/archicrations-guerrieres/)
- [Archicrations épistémiques](/glossaire/archicrations-epistemiques/)
- [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/)
- [Archicrations techno-logistiques](/glossaire/archicrations-techno-logistiques/)

View File

@@ -0,0 +1,108 @@
---
title: "Archicrations épistémiques"
term: "Archicrations épistémiques"
aliases: []
urlAliases: ["archicrations-epistemiques"]
mobilizedAuthors: ["Michel Foucault", "Thomas Kuhn", "Ludwik Fleck"]
comparisonTraditions: ["épistémologie historique", "histoire des sciences", "sociologie de la connaissance"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la régulation collective repose sur la production, la validation, la hiérarchisation et linstitutionnalisation de régimes de vérité."
concepts: ["archicrations-epistemiques", "archicration", "savoir", "episteme", "paradigme", "verite", "expertise", "validation"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "gouvernementalite", "archicrations-historiographiques", "archicrations-esthetico-symboliques"]
opposedTo: []
seeAlso: ["cybernetique", "theorie-de-la-justification", "gouvernementalite-algorithmique", "regulation-technique-et-legitimation-democratique"]
---
Les archicrations épistémiques désignent un méta-régime de co-viabilité dans lequel la régulation collective sappuie sur la production, la validation, la hiérarchisation et la diffusion institutionnelle du savoir.
Dans ces régimes, la stabilité du collectif dépend en grande partie de la capacité à produire des énoncés tenus pour recevables, à distinguer le vrai du faux, le valide de linvalide, lexpertise de lopinion, et à organiser autour de ces distinctions des formes de décision, dorientation ou dautorité.
## Principe régulateur
La co-viabilité du collectif repose ici sur des dispositifs capables de produire, vérifier, corriger, classer et transmettre des régimes de vérité.
Les institutions savantes, les disciplines, les communautés expertes, les procédures de validation, les formats de preuve, les normes méthodologiques et les hiérarchies de compétence jouent alors un rôle structurant dans la tenue du commun.
Le savoir ny est pas seulement ressource cognitive.
Il devient infrastructure régulatrice.
## Distinction
Les archicrations épistémiques ne se confondent ni avec les [Archicrations historiographiques](/glossaire/archicrations-historiographiques/) ni avec les [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/).
- dans les archicrations épistémiques, le cœur de la régulation réside dans la validité du savoir et dans les procédures qui lautorisent ;
- dans les archicrations historiographiques, la régulation passe prioritairement par la maîtrise légitime du récit du passé ;
- dans les archicrations esthético-symboliques, elle passe par la forme sensible, la représentation et la circulation dimaginaires partagés.
Ces régimes peuvent évidemment se croiser, mais ils ne fondent pas la co-viabilité sur le même type de scène.
## Arcalité, cratialité, archicration
Larcalité se manifeste dans les cadres conceptuels qui organisent le savoir : paradigmes, disciplines, taxonomies, méthodes, critères de recevabilité, protocoles de preuve.
La cratialité sexerce dans la capacité de certaines institutions, communautés ou appareils dexpertise à déterminer ce qui comptera comme connaissance valide, ce qui sera marginalisé comme erreur, ignorance, pseudo-savoir ou bruit.
Larchicration se joue dans les scènes de validation et de révision : expérience, publication, controverse savante, évaluation par les pairs, institution académique, expertise publique, comité de preuve, protocole de test, mesure standardisée.
## Portée archicratique
Ces régimes montrent que le savoir peut devenir une infrastructure de régulation collective.
La production du vrai ny est pas simplement spéculative. Elle oriente les politiques publiques, légitime les décisions, redistribue la crédibilité, hiérarchise les voix recevables et configure la manière dont un collectif se représente ses propres contraintes.
Larchicratie y trouve donc un champ danalyse décisif : celui où la régulation opère à travers des autorités cognitives plutôt quà travers la seule loi, la seule souveraineté ou la seule contrainte matérielle.
## Formes contemporaines
Dans les configurations contemporaines, les archicrations épistémiques se recomposent souvent avec des formes de calcul, de modélisation, dexpertise distribuée et dautomatisation.
Les systèmes dindicateurs, les tableaux de bord, les métriques, les modèles prédictifs ou les chaînes de scoring peuvent prolonger ce régime en donnant au savoir validé une puissance opératoire accrue.
Mais cette montée en opérativité peut aussi déplacer la scène de validation vers des zones plus opaques, plus techniques ou moins contestables.
## Pathologies possibles
Les archicrations épistémiques deviennent pathologiques lorsque la production du vrai se ferme contre sa propre révision ou lorsquelle se transforme en pouvoir indisputable dexpertise.
Leurs dérives typiques incluent notamment :
- la technocratisation de la décision ;
- la clôture des communautés de validation ;
- la confusion entre expertise et autorité ultime ;
- la dépolitisation des arbitrages sous couvert de nécessité cognitive ;
- lillusion selon laquelle une preuve suffirait à résoudre des tensions qui demeurent normatives ou politiques.
Langle mort dun tel régime est de faire comme si la validité du savoir suffisait à elle seule à produire la légitimité de la régulation.
## Enjeu politique
Le problème nest donc pas de discréditer le savoir, mais dinterroger les scènes où il devient puissance régulatrice.
Une archicration épistémique soutenable suppose non seulement des procédures robustes de validation, mais aussi des formes de comparution où puissent être discutés :
- les critères de preuve ;
- les cadrages implicites ;
- les usages politiques du savoir ;
- et les médiations qui transforment une vérité recevable en décision structurante.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Gouvernementalité](/glossaire/gouvernementalite/)
- [Archicrations historiographiques](/glossaire/archicrations-historiographiques/)
- [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/)
- [Cybernétique](/glossaire/cybernetique/)
- [Théorie de la justification](/glossaire/theorie-de-la-justification/)
- [Gouvernementalité algorithmique](/glossaire/gouvernementalite-algorithmique/)
- [Régulation technique / légitimation démocratique](/glossaire/regulation-technique-et-legitimation-democratique/)

View File

@@ -0,0 +1,108 @@
---
title: "Archicrations esthético-symboliques"
term: "Archicrations esthético-symboliques"
aliases: []
urlAliases: ["archicrations-esthetico-symboliques"]
mobilizedAuthors: ["Ernst Cassirer", "Clifford Geertz", "Cornelius Castoriadis"]
comparisonTraditions: ["anthropologie interprétative", "philosophie des formes symboliques", "théorie de limaginaire instituant"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la régulation collective passe par la production, la circulation et la reconnaissance de formes symboliques et esthétiques partageables."
concepts: ["archicrations-esthetico-symboliques", "archicration", "forme-symbolique", "imaginaire", "representation", "esthetique", "sensible", "mise-en-scene"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "dissensus-politique", "visibilite-mediatique-et-reconnaissance-symbolique", "archicrations-historiographiques", "archicrations-epistemiques"]
opposedTo: []
seeAlso: ["theorie-de-la-resonance", "fait-social-total", "lieu-vide-du-pouvoir"
]
---
Les archicrations esthético-symboliques désignent un méta-régime de co-viabilité dans lequel la régulation collective sappuie sur la production, la circulation et la reconnaissance de formes symboliques partageables.
Dans ces régimes, la cohésion du collectif ne tient pas dabord à la seule loi, au seul calcul, ni même au seul récit historique, mais à la capacité de rendre sensible, visible, audible et partageable une certaine configuration du commun.
## Principe régulateur
La stabilité sociale dépend ici de la capacité à produire des formes sensibles capables dorienter lattention, de configurer limaginaire, de distribuer le visible et linvisible, le dicible et lindicible, le recevable et lirrecevable.
Les arts, les symboles, les figures, les rituels esthétiques, les mises en scène collectives, les emblèmes, les images, les styles de représentation ou les dispositifs médiatiques deviennent alors des opérateurs de régulation.
Le collectif tient en partie par ce quil parvient à se rendre sensible à lui-même.
## Distinction
Les archicrations esthético-symboliques ne se confondent ni avec les [Archicrations historiographiques](/glossaire/archicrations-historiographiques/) ni avec les [Archicrations épistémiques](/glossaire/archicrations-epistemiques/).
- dans les archicrations esthético-symboliques, la régulation passe prioritairement par la forme sensible, la représentation et limaginaire partagé ;
- dans les archicrations historiographiques, elle passe par lautorité du récit du passé ;
- dans les archicrations épistémiques, elle passe par la validité institutionnelle du savoir.
Une forme symbolique peut transmettre de lhistoire ou du savoir, mais son efficacité propre réside dans la mise en scène du monde commun.
## Arcalité, cratialité, archicration
Larcalité réside dans les imaginaires collectifs qui configurent les figures du monde, les schèmes de représentation, les signes légitimes et les formes de sensibilité partagée.
La cratialité se manifeste dans la capacité de certaines institutions culturelles, traditions symboliques, industries de visibilité, figures créatrices ou appareils médiatiques à produire, imposer ou rendre dominantes certaines représentations du commun.
Larchicration se joue dans les scènes de création, de circulation et de réception : cérémonies, performances, œuvres, rites publics, productions culturelles, espaces médiatiques, formes dexposition et dappropriation collective.
## Portée archicratique
Ce régime montre que la co-viabilité peut être stabilisée par des dispositifs sensibles et symboliques.
Mais ces formes ne se contentent pas de refléter un ordre déjà là.
Elles participent activement à sa tenue, à sa légitimation, à sa contestation ou à sa reconfiguration.
Larchicratie y trouve donc un terrain majeur : celui où les architectures de régulation passent par la forme même du perceptible.
## Ambivalence régulatrice
Les archicrations esthético-symboliques peuvent soutenir :
- la reconnaissance dun commun ;
- la densification dun monde partageable ;
- la transmission sensible dune appartenance ;
- louverture de scènes de dissensus, de déplacement ou de réinvention.
Mais elles peuvent aussi servir :
- à saturer la visibilité ;
- à naturaliser certains partages symboliques ;
- à capter lattention au profit dimages closes ;
- à substituer lexposition médiatique à la reconnaissance réelle.
Elles relèvent donc dun régime profondément ambivalent.
## Formes contemporaines
Dans les sociétés contemporaines, ces archicrations passent souvent par des circuits intensifs de médiatisation, de design symbolique, desthétisation politique et de mise en scène institutionnelle.
Le problème nest alors pas seulement celui de la création ou de lœuvre, mais celui de la manière dont les formes de visibilité organisent laccès à la parole, à la reconnaissance et à la conflictualité légitime.
Une société peut être saturée dimages tout en étant pauvre en scènes de comparution réelle.
## Enjeu politique
Lenjeu nest pas simplement de “produire plus de symboles”, mais de comprendre quelles formes sensibles soutiennent une co-viabilité plus riche, plus contestable et plus réinstituable.
Une archicration esthético-symbolique soutenable suppose des scènes où la forme ne sert pas seulement à recouvrir le conflit, mais aussi à le rendre perceptible, partageable et transformable.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Dissensus politique](/glossaire/dissensus-politique/)
- [Visibilité médiatique / reconnaissance symbolique](/glossaire/visibilite-mediatique-et-reconnaissance-symbolique/)
- [Archicrations historiographiques](/glossaire/archicrations-historiographiques/)
- [Archicrations épistémiques](/glossaire/archicrations-epistemiques/)
- [Théorie de la résonance](/glossaire/theorie-de-la-resonance/)
- [Fait social total](/glossaire/fait-social-total/)
- [Lieu vide du pouvoir](/glossaire/lieu-vide-du-pouvoir/)

View File

@@ -0,0 +1,115 @@
---
title: "Archicrations guerrières"
term: "Archicrations guerrières"
aliases: []
urlAliases: ["archicrations-guerrieres"]
mobilizedAuthors: ["Carl von Clausewitz", "Thomas Hobbes", "Charles Tilly"]
comparisonTraditions: ["théorie de la guerre", "sociologie historique de la guerre", "philosophie politique du conflit"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la stabilité collective repose sur lorganisation stratégique de la puissance, la maîtrise institutionnelle de la violence et la protection du collectif face à des menaces internes ou externes."
concepts: ["archicrations-guerrieres", "archicration", "puissance", "violence", "strategie", "dissuasion", "protection", "defense"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "exception-souveraine", "souverainetes-territoriales-et-interdependances-globales", "archicrations-normativo-politiques"]
opposedTo: []
seeAlso: ["decisionnisme-souverain", "liberte-daction-et-regimes-de-securite-algorithmique", "preemption-algorithmique"]
---
Les archicrations guerrières désignent un méta-régime de co-viabilité dans lequel la stabilité collective repose sur lorganisation stratégique de la puissance, sur la maîtrise institutionnelle de la violence et sur la capacité à protéger le collectif face à des menaces internes ou externes.
Dans ces régimes, la régulation du commun dépend en profondeur de la capacité à contenir, affronter, repousser ou dissuader dautres forces susceptibles de mettre en péril la continuité du groupe.
## Principe régulateur
La co-viabilité repose ici sur la structuration stratégique de la force.
Les dispositifs militaires, les doctrines de défense, les alliances, les chaînes de commandement, les infrastructures logistiques de sécurité, les appareils de mobilisation et les stratégies de dissuasion deviennent des éléments centraux de lorganisation sociale.
La capacité à protéger le collectif, à maintenir un rapport de force viable ou à se préparer à laffrontement structure alors lordre politique.
## Distinction
Les archicrations guerrières ne se confondent ni avec les [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/) ni avec le [Décisionnisme souverain](/glossaire/decisionnisme-souverain/).
- dans les archicrations guerrières, la tenue du commun dépend prioritairement de la capacité stratégique à organiser la puissance et la défense ;
- dans les archicrations normativo-politiques, elle dépend dabord de la validité dun cadre juridique formalisé ;
- dans le décisionnisme souverain, elle se reconcentre dans la capacité ultime à trancher lexception.
Le guerrier peut évidemment sarticuler au juridique et au souverain, mais il désigne une logique spécifique : faire tenir le collectif par la puissance organisée.
## Arcalité, cratialité, archicration
Larcalité réside dans linfrastructure stratégique : organisation militaire, doctrine de défense, géographie politique, hiérarchies de commandement, dispositifs de protection, récit de menace ou de sécurité.
La cratialité se manifeste dans la capacité à mobiliser, concentrer, projeter et orienter la puissance : commandement, logistique de guerre, armement, discipline, entraînement, capacité de dissuasion, de riposte ou de neutralisation.
Larchicration se joue dans les scènes de confrontation, de protection ou de préparation : planification stratégique, mobilisation, état dalerte, contrôle des frontières, diplomatie de force, théâtre dopérations, mais aussi scènes de justification de la défense et de hiérarchisation des menaces.
## Portée archicratique
Les archicrations guerrières révèlent que la régulation collective peut reposer sur lorganisation stratégique de la puissance.
La continuité du collectif dépend alors de sa capacité à maîtriser la violence, à contenir les menaces, à organiser la défense et à maintenir un équilibre des forces avec dautres collectifs.
Du point de vue archicratique, cela signifie quune société peut faire de la sécurité, de la préparation et de la puissance défensive le cœur même de sa tenue.
## Formes historiques et contemporaines
Historiquement, ces régimes prennent des formes très diverses : cité en guerre, empire de conquête, appareil militaro-administratif, État de défense, société de frontière, régime de dissuasion.
Dans les contextes contemporains, les archicrations guerrières se recomposent souvent avec :
- la guerre informationnelle ;
- les dispositifs de surveillance ;
- la cybersécurité ;
- la gestion anticipatrice des menaces ;
- la préemption stratégique ;
- et lextension de la logique sécuritaire à des domaines non strictement militaires.
Le guerrier tend alors parfois à se diffuser dans des architectures techniques et administratives plus larges.
## Pathologies possibles
Les archicrations guerrières deviennent pathologiques lorsque la protection se transforme en principe total dorganisation du commun.
Leurs dérives incluent notamment :
- la normalisation durable de lurgence ;
- la militarisation du regard politique ;
- la prééminence de la menace sur la délibération ;
- lextension du paradigme défensif à des domaines civils ;
- la légitimation de la fermeture au nom de la sécurité ;
- la difficulté croissante à distinguer défense, contrôle et préemption.
Langle mort du régime guerrier est de faire comme si la protection suffisait à elle seule à définir la qualité du commun.
## Enjeu politique
Une archicration guerrière soutenable suppose non seulement des capacités de défense, mais aussi des scènes où puissent être discutés :
- les seuils de menace ;
- la légitimité des dispositifs de protection ;
- la proportion entre sécurité et liberté daction ;
- les formes de contrôle que la préparation stratégique introduit dans la vie collective.
Le problème nest donc pas dignorer la nécessité de la puissance, mais dempêcher quelle devienne indisputable au nom de sa propre urgence.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Souverainetés territoriales / interdépendances globales](/glossaire/souverainetes-territoriales-et-interdependances-globales/)
- [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/)
- [Archicrations marchandes](/glossaire/archicrations-marchandes/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Liberté daction / régimes de sécurité algorithmique](/glossaire/liberte-daction-et-regimes-de-securite-algorithmique/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)

View File

@@ -0,0 +1,110 @@
---
title: "Archicrations historiographiques"
term: "Archicrations historiographiques"
aliases: []
urlAliases: ["archicrations-historiographiques"]
mobilizedAuthors: ["Paul Ricoeur", "Reinhart Koselleck", "Michel de Certeau"]
comparisonTraditions: ["théorie de lhistoire", "historiographie", "herméneutique historique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la régulation collective sappuie sur la production autorisée du récit du passé, de la mémoire légitime et de lhorizon temporel commun."
concepts: ["archicrations-historiographiques", "archicration", "memoire", "recit", "temporalite", "historiographie", "archive", "commemoration"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-epistemiques", "memoire-symbolique-et-instantaneite-computationnelle", "archicrations-esthetico-symboliques"]
opposedTo: []
seeAlso: ["fait-social-total", "theorie-de-la-resonance", "visibilite-mediatique-et-reconnaissance-symbolique"]
---
Les archicrations historiographiques désignent un méta-régime de co-viabilité dans lequel la régulation collective sappuie sur la production autorisée du récit du passé.
Dans ces régimes, la stabilité du commun ne repose pas principalement sur la norme écrite, la seule expertise présente ou la seule forme sensible partagée, mais sur la capacité à organiser une mémoire légitime, à sélectionner des continuités, à interpréter les héritages et à transmettre un horizon temporel recevable.
## Principe régulateur
Ici, lhistoire nest pas seulement description du passé.
Elle devient un opérateur actif de structuration du présent et dorientation du futur.
La sélection des événements, leur mise en intrigue, leur hiérarchisation, leur commémoration et leur transmission produisent un horizon commun de signification qui module les conduites collectives.
Le collectif tient alors aussi par la manière dont il se raconte à lui-même ce quil a été, ce quil doit retenir, ce quil doit oublier, et ce à partir de quoi il se juge encore lié.
## Distinction
Les archicrations historiographiques ne se confondent ni avec les [Archicrations épistémiques](/glossaire/archicrations-epistemiques/) ni avec les [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/).
- dans les archicrations épistémiques, la validité du savoir constitue le cœur régulateur ;
- dans les archicrations historiographiques, cest lautorité du récit temporel, de la mémoire organisée et de linterprétation du passé ;
- dans les archicrations esthético-symboliques, cest la puissance des formes sensibles et des représentations partagées.
Lhistoriographie peut emprunter à la science ou à lesthétique, mais elle ne sy réduit pas : elle ordonne dabord le temps social.
## Arcalité, cratialité, archicration
Larcalité prend ici la forme dune mémoire organisée : archives, chroniques, traditions historiographiques instituées, programmes de transmission, récits fondateurs, calendriers commémoratifs, généalogies collectives.
La cratialité sexerce dans la capacité à définir quelles narrations du passé sont légitimes, quelles interprétations doivent être retenues, quelles continuités doivent être valorisées, et quelles mémoires peuvent être marginalisées, tues ou reléguées.
Larchicration se joue dans les scènes dinterprétation : écriture de lhistoire, enseignement, commémoration, archivage, muséographie, transmission publique, controverse mémorielle, dispute sur les héritages et sur les seuils du racontable.
## Portée archicratique
Ce régime révèle que la régulation collective peut passer par la maîtrise du temps social.
Le pouvoir ny agit pas seulement à travers linstitution présente ou la norme actuelle, mais à travers la capacité à configurer la mémoire, à distribuer les continuités légitimes et à organiser lhorizon historique dans lequel les décisions deviennent recevables.
Larchicratie y trouve un terrain essentiel : une société ne tient pas seulement par ce quelle fait ou décide, mais aussi par la manière dont elle institue le rapport à son propre passé.
## Formes historiques et contemporaines
Les archicrations historiographiques peuvent prendre des formes savantes, scolaires, nationales, communautaires, patrimoniales, médiatiques ou mémorielles.
Dans les contextes contemporains, elles se reconfigurent souvent sous leffet :
- de laccélération médiatique ;
- de la concurrence des mémoires ;
- des relectures critiques du passé ;
- et des supports techniques de conservation, de diffusion ou de fragmentation de larchive.
La question devient alors : comment un collectif maintient-il une continuité symbolique sans figer son récit en orthodoxie close ni le dissoudre dans un présent perpétuel ?
## Pathologies possibles
Les archicrations historiographiques deviennent pathologiques lorsque la mémoire collective se rigidifie ou se capture.
Leurs dérives incluent notamment :
- la monopolisation du récit légitime ;
- la fermeture commémorative ;
- loubli institutionnalisé de certaines violences ou altérités ;
- la transformation du passé en simple instrument de légitimation ;
- la perte de profondeur temporelle au profit dune actualisation permanente et sans transmission.
La pathologie peut donc prendre deux formes opposées :
trop de clôture mémorielle, ou trop peu de continuité partageable.
## Enjeu politique
Une archicration historiographique soutenable ne consiste ni à sacraliser un récit, ni à relativiser indéfiniment toute mémoire.
Elle suppose des scènes où le passé puisse être travaillé, transmis, discuté et reconfiguré sans que le collectif perde pour autant les médiations symboliques qui soutiennent sa continuité.
Lenjeu nest pas seulement davoir “la bonne histoire”, mais de disposer de formats où le rapport au temps commun demeure politiquement réinstituable.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Archicrations épistémiques](/glossaire/archicrations-epistemiques/)
- [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/)
- [Mémoire symbolique / instantanéité computationnelle](/glossaire/memoire-symbolique-et-instantaneite-computationnelle/)
- [Théorie de la résonance](/glossaire/theorie-de-la-resonance/)
- [Visibilité médiatique / reconnaissance symbolique](/glossaire/visibilite-mediatique-et-reconnaissance-symbolique/)
- [Fait social total](/glossaire/fait-social-total/)

View File

@@ -0,0 +1,113 @@
---
title: "Archicrations marchandes"
term: "Archicrations marchandes"
aliases: []
urlAliases: ["archicrations-marchandes"]
mobilizedAuthors: ["Adam Smith", "Karl Polanyi", "Fernand Braudel"]
comparisonTraditions: ["économie politique", "histoire économique", "anthropologie historique des échanges"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la coordination collective repose sur des mécanismes déchange, de calcul et de formation des prix qui orientent les activités et distribuent les ressources."
concepts: ["archicrations-marchandes", "archicration", "marche", "echange", "prix", "coordination", "calcul", "circulation"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "gouvernementalite", "travail-vivant-et-abstraction-de-la-valeur", "subsistance-vivante-et-captation-capitalistique", "archicrations-normativo-politiques"]
opposedTo: []
seeAlso: ["archicrations-guerrieres", "gouvernance-des-communs", "gouvernementalite-algorithmique", "theorie-de-la-justification"]
---
Les archicrations marchandes désignent un méta-régime de co-viabilité dans lequel la coordination collective repose principalement sur les mécanismes déchange, de circulation et de formation des prix.
Dans ces régimes, la régulation du commun nest pas dabord assurée par un centre politique souverain, par une cosmologie sacrée ou par un ordre juridique intégralement englobant, mais par la capacité des acteurs à ajuster leurs conduites à travers des transactions, des signaux de rareté, des anticipations et des médiations monétaires.
## Principe régulateur
La stabilité du collectif repose ici sur la possibilité dune coordination décentralisée par léchange.
Les prix deviennent des signaux collectifs : ils orientent les décisions individuelles, redistribuent les activités, modulent les investissements, hiérarchisent les priorités productives et permettent des ajustements continus entre offre, demande, accès et circulation.
Le marché fonctionne alors comme un dispositif dinformation et de coordination, capable de faire tenir un ordre sans recourir constamment à un commandement explicite.
## Distinction
Les archicrations marchandes ne se confondent ni avec les [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/) ni avec les [Archicrations guerrières](/glossaire/archicrations-guerrieres/).
- dans les archicrations marchandes, la coordination passe prioritairement par léchange, le calcul et la circulation ;
- dans les archicrations normativo-politiques, elle passe par la validité dun ordre juridique formalisé ;
- dans les archicrations guerrières, elle repose sur lorganisation stratégique de la force et de la protection.
Le marché peut évidemment coexister avec le droit et avec la puissance militaire, mais il ne régule pas selon la même logique : il ajuste plus quil ne tranche, il distribue plus quil ne commande, il incite plus quil nordonne.
## Arcalité, cratialité, archicration
Larcalité se manifeste dans linfrastructure économique : réseaux déchange, systèmes monétaires, conventions de valeur, dispositifs comptables, institutions financières, normes de circulation et cadres de propriété.
La cratialité réside dans la capacité à influer sur les circuits déchange : accès privilégié aux ressources, maîtrise des flux, positions dominantes dans la circulation des biens, contrôle des intermédiaires, capacité de fixation ou de déplacement des prix.
Larchicration se déploie dans les scènes déchange elles-mêmes : transactions, négociations, marchés, places commerciales, plateformes dintermédiation, bourses, chaînes logistiques, arbitrages concurrentiels et dispositifs de calcul distribué.
## Portée archicratique
Les archicrations marchandes montrent que la co-viabilité collective peut être stabilisée par des mécanismes dajustement distribués qui ne reposent pas immédiatement sur une autorité centrale visible.
Le marché devient alors une infrastructure de coordination sociale : il oriente les activités, redistribue les ressources, hiérarchise les raretés et rend compatibles, au moins partiellement, des intérêts hétérogènes.
Du point de vue archicratique, cela signifie que lordre collectif peut tenir par des formes de régulation qui agissent à travers la circulation, la valorisation et léquivalence plutôt quà travers le commandement explicite.
## Formes contemporaines
Dans les sociétés contemporaines, les archicrations marchandes se recomposent avec :
- la financiarisation ;
- la plateforme ;
- la notation ;
- la logistique globale ;
- lautomatisation des arbitrages ;
- les métriques de performance et de rentabilité.
Le calcul marchand ne se limite plus à la place de marché classique. Il traverse désormais des infrastructures numériques, des dispositifs dévaluation, des chaînes dapprovisionnement et des systèmes de tarification dynamique qui étendent la logique déchange à des domaines toujours plus vastes.
## Pathologies possibles
Les archicrations marchandes deviennent pathologiques lorsque la coordination par léchange se transforme en principe quasi exclusif dorganisation du monde commun.
Leurs dérives incluent notamment :
- la captation oligopolistique des flux ;
- la spéculation dissociée des conditions réelles de subsistance ;
- la subordination croissante des formes de vie à la rentabilité ;
- linvisibilisation des coûts écologiques, sociaux ou symboliques ;
- la transformation du prix en critère général de recevabilité.
Langle mort du régime marchand est de faire comme si toute valeur importante pouvait devenir calculable, échangeable ou arbitrable par équivalence.
## Enjeu politique
Le problème nest donc pas simplement de dénoncer le marché, mais de comprendre dans quelles scènes il régule effectivement, à quel prix il stabilise le commun, et où ses critères cessent de pouvoir exprimer ce qui fait monde.
Une archicration marchande soutenable suppose que la coordination par léchange reste articulée à des scènes capables de faire comparaître :
- les asymétries de pouvoir ;
- les conditions du travail vivant ;
- les seuils de destruction du vivant ;
- et les limites de la mise en équivalence.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Gouvernementalité](/glossaire/gouvernementalite/)
- [Travail vivant / abstraction de la valeur](/glossaire/travail-vivant-et-abstraction-de-la-valeur/)
- [Subsistance vivante / captation capitalistique](/glossaire/subsistance-vivante-et-captation-capitalistique/)
- [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/)
- [Archicrations guerrières](/glossaire/archicrations-guerrieres/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Gouvernementalité algorithmique](/glossaire/gouvernementalite-algorithmique/)
- [Théorie de la justification](/glossaire/theorie-de-la-justification/)

View File

@@ -0,0 +1,121 @@
---
title: "Archicrations normativo-politiques"
term: "Archicrations normativo-politiques"
aliases: []
urlAliases: ["archicrations-normativo-politiques"]
mobilizedAuthors: ["Thomas Hobbes", "Max Weber", "Hans Kelsen"]
comparisonTraditions: ["théorie de lÉtat", "sociologie politique", "théorie juridique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité dans lequel la régulation collective repose sur linstitution dun ordre juridique formalisé dont la validité fonde la légitimité politique."
concepts: ["archicrations-normativo-politiques", "archicration", "norme", "droit", "legalite", "souverainete", "procedure", "institution"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle", "democratie-deliberative", "archicrations-scripturo-normatives", "archicrations-marchandes"]
opposedTo: []
seeAlso: ["archicrations-guerrieres", "decisionnisme-souverain", "exception-souveraine", "regulation-technique-et-legitimation-democratique"]
---
Les archicrations normativo-politiques désignent un méta-régime de co-viabilité dans lequel la stabilité collective repose sur linstitution de normes juridiques obligatoires et sur la reconnaissance dun ordre politique formalisé comme cadre légitime de la décision.
Dans ces régimes, la régulation du commun ne dépend pas principalement de la tradition, de la révélation, de léchange ou de la seule puissance stratégique, mais de la capacité à produire, organiser, interpréter et faire respecter un ordre normatif tenu pour valide.
## Principe régulateur
La co-viabilité du collectif repose ici sur un système de règles formalisées qui organisent les droits, les obligations, les compétences, les procédures de décision et les voies de recours.
La loi ne se contente plus dénoncer des prescriptions ponctuelles. Elle devient le principe structurant de lorganisation du pouvoir, de la distribution des compétences et de la coordination du corps politique.
Le commun tient alors par la validité dun cadre normatif qui prétend simposer à tous selon des formes reconnues.
## Distinction
Les archicrations normativo-politiques ne se confondent ni avec les [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/) ni avec le [Décisionnisme souverain](/glossaire/decisionnisme-souverain/).
- les archicrations scripturo-normatives désignent un seuil plus ancien où linscription de la norme rend lobligation traçable et opposable ;
- les archicrations normativo-politiques désignent une configuration plus pleinement politique et institutionnelle, où lordre juridique devient le principe de structuration du pouvoir collectif ;
- le décisionnisme souverain, lui, reconcentre la fondation dans la capacité de trancher et de suspendre.
Le normativo-politique vise donc à faire tenir lordre par la validité de la norme et par la procédure, là où le décisionnisme rappelle la possibilité toujours ouverte dun tranchant qui excède la norme.
## Arcalité, cratialité, archicration
Larcalité se manifeste dans larchitecture normative qui structure le corps politique : constitution, corpus juridiques, hiérarchies de normes, systèmes de droits, principes de légalité, répartition des compétences.
La cratialité se concentre dans la capacité à produire, interpréter et faire appliquer les normes : législateur, gouvernement, juridictions, administrations, autorités de contrôle, appareils de coercition légitime.
Larchicration se joue dans les scènes dapplication, dinterprétation et de contestation du droit : délibération politique, jugement, procédure institutionnelle, recours, arbitrage, contrôle de constitutionnalité, débat public sur la validité des normes.
## Portée archicratique
Les archicrations normativo-politiques montrent que la régulation collective peut être stabilisée par la formalisation juridique et par linstitution dun ordre politique fondé sur la validité des normes.
Le commun ne tient alors plus principalement par la coutume, la cosmologie ou la circulation marchande, mais par la reconnaissance partagée dun cadre juridique qui organise :
- les droits ;
- les obligations ;
- les procédures ;
- les autorités compétentes ;
- et les modalités légitimes de la décision.
Larchicratie y trouve lun de ses terrains majeurs, car ce régime est celui où la comparution du pouvoir devient, au moins en principe, juridiquement structurée.
## Formes contemporaines
Dans les configurations contemporaines, les archicrations normativo-politiques se déploient à travers :
- lÉtat de droit ;
- ladministration procédurale ;
- les juridictions spécialisées ;
- les systèmes de contrôle ;
- les régulations supra-étatiques ou transnationales ;
- les dispositifs de conformité ;
- et les formes de gouvernement par standardisation normative.
Le problème devient alors moins labsence de norme que la capacité des scènes normatives à rester compréhensibles, accessibles et effectivement révisables.
## Pathologies possibles
Les archicrations normativo-politiques deviennent pathologiques lorsque la normativité se ferme sur elle-même ou lorsque la procédure se substitue à la scène vivante de la révision.
Leurs dérives incluent notamment :
- le juridisme abstrait ;
- linflation procédurale ;
- la déconnexion entre validité formelle et recevabilité vécue ;
- la capture technico-administrative du droit ;
- la normalisation durable de lexception ;
- et la difficulté croissante à faire comparaître les cadres mêmes qui organisent la décision.
Langle mort du régime normativo-politique est de croire que la validité juridique suffit toujours à garantir la qualité archicratique de la régulation.
## Enjeu politique
Une archicration normativo-politique soutenable suppose non seulement des normes valides, mais aussi des scènes où puissent être discutés :
- les critères de cette validité ;
- les asymétries daccès à la procédure ;
- les conditions matérielles de la contradiction ;
- et les zones où la régulation technique ou administrative tend à sortir de la comparution réelle.
Le droit nest pas archicratique par essence ; il le devient lorsquil reste relié à une scène effective de mise à lépreuve.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Démocratie délibérative](/glossaire/democratie-deliberative/)
- [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/)
- [Archicrations marchandes](/glossaire/archicrations-marchandes/)
- [Archicrations guerrières](/glossaire/archicrations-guerrieres/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Régulation technique / légitimation démocratique](/glossaire/regulation-technique-et-legitimation-democratique/)

View File

@@ -0,0 +1,88 @@
---
title: "Archicrations proto-symboliques — gestuelles et linguistiques"
term: "Archicrations proto-symboliques"
aliases: ["Archicrations proto-symboliques — gestuelles et linguistiques"]
urlAliases: ["archicrations-proto-symboliques"]
mobilizedAuthors: ["Marcel Mauss", "Arnold van Gennep", "Claude Lévi-Strauss", "Victor Turner"]
comparisonTraditions: ["anthropologie du rite", "anthropologie symbolique", "anthropologie de la parenté"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où la régulation passe prioritairement par des formes sensibles codifiées — gestes, rythmes, récits, rites, tabous, alliances — sans texte, sans État et sans appareil centralisé."
concepts: ["archicrations-proto-symboliques", "archicration", "proto-symbolique", "rite", "tabou", "alliance", "co-viabilite", "transmission"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve", "archicrations-sacrales-non-etatiques", "fait-social-total", "pluralite-natalite-action", "archeogenese", "meta-regime-archicratique"]
opposedTo: []
seeAlso: ["archicrations-techno-logistiques", "archicrations-esthetico-symboliques", "cosmopolitique"]
---
Les archicrations proto-symboliques désignent un méta-régime de co-viabilité dans lequel la régulation du lien collectif passe prioritairement par des formes sensibles codifiées — gestes, rythmes, récits, rites, tabous, alliances — sans texte, sans État et sans appareil centralisé.
Ce régime nest ni un dehors du politique, ni une phase confuse antérieure à la régulation proprement dite. Il constitue au contraire une forme archicratique à part entière, fondée sur la densité symbolique, lencodage corporel, la scénarisation rituelle et la transmission de formes mémorisées.
## Principe régulateur
Dans ces régimes, le collectif ne tient pas par la loi écrite, par la centralisation institutionnelle ou par un commandement explicite.
Il tient par la répétition codée de formes qui orientent les conduites, traitent les tensions, organisent la mémoire et distribuent les appartenances.
Le rite funéraire, le tabou, lalliance matrimoniale, le récit dorigine, la gestuelle daccueil ou de séparation ne sont pas des éléments périphériques. Ils sont déjà des opérateurs de régulation, au sens où ils rendent viable la co-présence dans des environnements marqués par lincertitude, la mobilité et la conflictualité possible.
## Distinction
Les archicrations proto-symboliques ne se confondent ni avec les [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/) ni avec les [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/).
- dans les archicrations proto-symboliques, la régulation repose dabord sur des formes codifiées incorporées, répétées et transmises ;
- dans les archicrations sacrales non étatiques, cette trame devient plus dense cosmologiquement, plus fortement médiée par des puissances sacrales et des interdits structurants ;
- dans les archicrations esthético-symboliques, la régulation passe davantage par la production de formes sensibles partageables dans des mondes déjà plus différenciés.
Le proto-symbolique désigne donc un seuil où la symbolisation régule déjà fortement, mais sans doctrine explicite, sans textualité stabilisée et sans appareil central.
## Arcalité, cratialité, archicration
Larcalité proto-symbolique réside dans des structures implicites de sens : récits, rythmes, interdits, séquences rituelles, codages affectifs, objets signifiants, schèmes de parenté.
La cratialité ne prend pas ici la forme dune domination centralisée. Elle circule à travers les affects, les corps, les places, les rythmes, les obligations et les médiations symboliques.
Larchicration se manifeste dans les scènes où la tension collective est traitée, déplacée, ritualisée ou recomposée : deuil, cérémonie, passage, alliance, crise, tabou transgressé, conflit réinscrit dans une forme symboliquement recevable.
## Portée archicratique
Ces formes témoignent de la possibilité dune archicratie sans État, sans droit formel et sans centralisation visible.
Elles montrent que la co-viabilité peut être produite par lorchestration rituelle des formes, des forces et des normes, à travers un savoir régulateur immanent, incorporé et transmissible.
Du point de vue archicratique, elles rappellent que la régulation na pas besoin dattendre lécriture, la bureaucratie ou le code pour exister comme traitement des tensions.
## Robustesse et limite
La force de ce régime est sa capacité dincorporation : la régulation y est peu séparée de la vie collective elle-même.
Mais cette même force peut devenir limite. Lorsque les prises symboliques sont trop peu explicitées, la scène dépreuve risque de rester fortement immanente aux formes héritées, et donc plus difficile à rouvrir comme scène réflexive distincte.
Le proto-symbolique soutient puissamment la tenue ; il nexplicite pas toujours ses propres conditions de révision.
## Enjeu comparatif
Cette fiche est importante dans la série des archicrations, car elle rappelle quil existe des régulations intensives sans État, sans loi écrite et sans appareil doctrinal totalisant.
Elle évite ainsi de projeter rétrospectivement sur toute société une image trop tardive de la régulation, centrée sur la norme, le texte ou la souveraineté.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Fait social total](/glossaire/fait-social-total/)
- [Pluralité, natalité, action](/glossaire/pluralite-natalite-action/)
- [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/)
- [Archicrations techno-logistiques](/glossaire/archicrations-techno-logistiques/)
- [Archicrations esthético-symboliques](/glossaire/archicrations-esthetico-symboliques/)
- [Cosmopolitique](/glossaire/cosmopolitique/)

View File

@@ -0,0 +1,89 @@
---
title: "Archicrations sacrales non étatiques"
term: "Archicrations sacrales non étatiques"
aliases: []
urlAliases: ["archicrations-sacrales-non-etatiques"]
mobilizedAuthors: []
comparisonTraditions: ["anthropologie religieuse", "anthropologie du rituel", "anthropologie du chamanisme"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où des puissances sacrales, des cosmologies, des interdits et des médiations rituelles structurent le lien collectif sans passer par un État central ni par une souveraineté unifiée."
concepts: ["archicrations-sacrales-non-etatiques", "archicration", "sacral", "rituel", "totemisme", "oracle", "co-viabilite", "cosmologie"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-proto-symboliques", "fait-social-total", "cosmopolitique", "archicrations-scripturo-cosmologiques"]
opposedTo: ["decisionnisme-souverain", "exception-souveraine"]
seeAlso: ["archicrations-techno-logistiques", "archicrations-theologiques"]
---
Les archicrations sacrales non étatiques désignent un méta-régime de co-viabilité dans lequel des puissances sacrales, des cosmologies, des interdits et des médiations rituelles structurent le lien collectif sans passer par un État central ni par une souveraineté unifiée.
Il ne sagit ni dun stade pré-politique ni dune approximation imparfaite de la centralisation étatique. Cest un régime à part entière, avec ses propres formes de fondement, de puissance et de traitement des tensions.
## Principe régulateur
Dans ces régimes, la force du lien social ne vient ni dune décision souveraine, ni dun commandement explicite, ni dun centre unique.
Elle vient dune architecture symbolique et cosmologique diffuse, stratifiée, souvent invisible, qui distribue les places, module les appartenances, code les différences et rend certaines transgressions immédiatement lourdes de conséquences collectives.
Le masque, le silence institué, le tabou, le récit fondateur, les dispositifs totémiques, loracle, les médiations chamaniques ou la dissociation des fonctions ne sont pas de simples expressions culturelles : ils constituent les vecteurs actifs dune grammaire régulatrice spécifique.
## Distinction
Les archicrations sacrales non étatiques ne se confondent ni avec les [Archicrations proto-symboliques](/glossaire/archicrations-proto-symboliques/) ni avec les [Archicrations théologiques](/glossaire/archicrations-theologiques/).
- dans les archicrations proto-symboliques, la régulation passe dabord par des formes sensibles codifiées et incorporées ;
- dans les archicrations sacrales non étatiques, cette trame est épaissie par une architecture cosmologique et sacrale plus dense ;
- dans les archicrations théologiques, lobligation procède dun verbe révélé rapporté à une source transcendante.
Le sacral non étatique désigne donc une intensification du symbolique sans bascule dans la théologie scripturaire ni dans la souveraineté centralisée.
## Arcalité, cratialité, archicration
Larcalité repose ici sur des cosmologies, des classifications symboliques, des récits fondateurs, des interdits structurants et des rythmes implicites. Cest une arcalité puissante, mais sans fondation visible ni texte juridique central.
La cratialité sexerce comme force ritualisée et distribuée. Elle circule dans les corps, les objets, les danses, les récits, les figures médiatrices, les états modifiés et les séquences sacrales. Elle canalise lénergie collective sans se transformer nécessairement en emprise centralisée.
Larchicration se donne dans la scène rituelle elle-même : cycle sacrificiel, fête cosmique, récit totémique, oracle énigmatique, traitement symbolique des différences et des crises, réinstitution périodique du commun par médiation du sacré.
## Portée archicratique
Les archicrations sacrales non étatiques montrent quune société peut élaborer des formes de régulation extraordinairement résilientes sans État central.
Leur puissance tient à la pluralité des médiations mobilisées : temps cyclique, mémoire codée, invisible structurant, médiation impersonnelle, retrait de la source de pouvoir, distribution rituelle des fonctions.
Du point de vue archicratique, elles rappellent quun ordre peut tenir très fortement sans jamais se condenser dans un centre souverain unifié.
## Robustesse et fermeture
La robustesse de ce régime vient de sa capacité à traiter les tensions en les réinscrivant dans un ordre cosmique partagé.
Mais cette force peut aussi produire une fermeture : la puissance du cadre symbolique et sacral peut rendre difficile la séparation entre lépreuve dune situation et lépreuve du cadre lui-même.
Autrement dit, le régime est souvent très résilient comme forme de tenue, mais plus ambivalent comme forme de révision explicite.
## Enjeu comparatif
Cette fiche est décisive dans la série des archicrations, car elle interdit de réduire le religieux à une simple croyance privée ou à une préfiguration incomplète de lÉtat.
Elle montre quil existe des architectures sacrales capables de structurer durablement le commun sans centralisation politique unifiée.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Archicrations proto-symboliques](/glossaire/archicrations-proto-symboliques/)
- [Fait social total](/glossaire/fait-social-total/)
- [Cosmopolitique](/glossaire/cosmopolitique/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Archicrations techno-logistiques](/glossaire/archicrations-techno-logistiques/)
- [Archicrations théologiques](/glossaire/archicrations-theologiques/)
- [Archicrations scripturo-cosmologiques](/glossaire/archicrations-scripturo-cosmologiques/)

View File

@@ -0,0 +1,85 @@
---
title: "Archicrations scripturo-cosmologiques"
term: "Archicrations scripturo-cosmologiques"
aliases: []
urlAliases: ["archicrations-scripturo-cosmologiques"]
mobilizedAuthors: ["Hermann Hunger", "David Pingree", "Jan Assmann", "Jean Bottéro"]
comparisonTraditions: ["histoire des savoirs savants", "assyriologie", "histoire des cosmologies lettrées"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où lécriture ne prescrit pas la règle mais figure un ordre cosmique préalable auquel les conduites doivent se conformer."
concepts: ["archicrations-scripturo-cosmologiques", "archicration", "cosmos", "cosmographie", "ecriture", "alignement", "correspondance", "calendrier"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-scripturo-normatives", "archicrations-theologiques", "technodiversite-et-cosmotechnie", "archicrations-sacrales-non-etatiques", "archicrations-techno-logistiques"]
opposedTo: []
seeAlso: ["archicrations-historiographiques", "cosmopolitique"]
---
Les archicrations scripturo-cosmologiques désignent un méta-régime de co-viabilité dans lequel lécriture nédicte pas la règle mais figure un ordre cosmique préalable, déjà là, structuré et lisible.
Dans ce régime, le texte ne commande pas. Il rend visible une architecture du monde à laquelle les conduites doivent sajuster. Lobligation ne vient ni dun énoncé souverain, ni dun code exécutoire, ni dune révélation transcendante, mais de la coïncidence exigée entre geste, texte, lieu, cycle et cosmos.
## Principe régulateur
La contrainte naît ici de lécart à la structure du monde telle quelle est transcrite, répétée et relayée par la textualité.
Le texte nimpose rien par lui-même : il rend opposable une disposition du réel, tenue pour fondatrice.
La régulation nest donc ni législative ni théologique. Elle est cosmographique. Elle tient à la fidélité à un ordre perçu comme intelligible, hiérarchisé, stable et silencieusement obligatoire.
## Distinction
Les archicrations scripturo-cosmologiques ne se confondent ni avec les [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/) ni avec les [Archicrations théologiques](/glossaire/archicrations-theologiques/).
- dans les archicrations scripturo-cosmologiques, lécriture figure un ordre du monde ;
- dans les archicrations scripturo-normatives, elle inscrit une obligation opposable ;
- dans les archicrations théologiques, elle vaut comme parole révélée rapportée à une source transcendante.
La différence nest donc pas seulement textuelle. Elle tient au statut même de lécrit : description structurante du cosmos, norme, ou verbe révélé.
## Arcalité, cratialité, archicration
Larcalité procède dune structure cosmique impersonnelle, externe à lhumain mais immanente au monde. Lécriture en donne forme visible, stable et transmissible.
La cratialité ne réside ni dans une institution centralisée ni dans une volonté souveraine. Elle opère dans la tenue collective de lalignement : maintien des cycles, exactitude des reprises, cadence partagée, capacité à rejouer correctement une configuration du monde.
Larchicration se donne dans les scènes dactivation : lecture rituelle, calendrier, orientation sacrificielle, parcours symbolique, reprise dune séquence cosmographique, synchronisation des actes humains à une logique céleste ou cosmique.
## Portée archicratique
Ce méta-régime montre quune société peut tenir non par commandement ni par décret, mais par exposition scripturale dun ordre du monde, réactivé rituellement et relancé dans des dispositifs dajustement collectif.
Du point de vue archicratique, il révèle une forme de régulation où la lisibilité du cosmos fait elle-même fonction de scène indirecte de normativité.
## Survie et résurgence
Lintérêt de cette fiche est aussi de rappeler que ce régime ne disparaît pas purement et simplement une fois dépassé.
Il peut subsister sous des formes minorées ou réagencées : calendriers, cosmographies, correspondances symboliques, diagrammes savants, pratiques rituelles de relance ou ordres symboliques articulés à des lectures du monde tenues pour structurantes.
## Limite et pathologie
La force de ce régime est sa capacité à inscrire laction dans une totalité intelligible.
Mais cette force peut devenir fermeture lorsque lalignement au cosmos se soustrait à toute scène de réinterprétation effective, ou lorsque la fidélité au monde lu remplace toute reprise des tensions situées.
Sa pathologie typique serait une rigidification de lajustement cosmique en cadre silencieusement indisputable.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/)
- [Archicrations théologiques](/glossaire/archicrations-theologiques/)
- [Technodiversité et cosmotechnie](/glossaire/technodiversite-et-cosmotechnie/)
- [Archicrations historiographiques](/glossaire/archicrations-historiographiques/)
- [Archicrations techno-logistiques](/glossaire/archicrations-techno-logistiques/)
- [Cosmopolitique](/glossaire/cosmopolitique/)

View File

@@ -0,0 +1,94 @@
---
title: "Archicrations scripturo-normatives"
term: "Archicrations scripturo-normatives"
aliases: []
urlAliases: ["archicrations-scripturo-normatives"]
mobilizedAuthors: ["Jack Goody", "Jean Bottéro"]
comparisonTraditions: ["histoire de lécriture", "anthropologie de lécrit", "histoire du droit ancien"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où lobligation découle dénoncés inscrits, traçables et opposables ; la norme ne reflète plus ce qui est, elle inscrit ce qui doit être."
concepts: ["archicrations-scripturo-normatives", "archicration", "scripturalite", "norme", "ecriture", "code", "obligation", "archive"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle", "archicrations-scripturo-cosmologiques", "archicrations-normativo-politiques", "meta-regime-archicratique", "archicrations-theologiques"]
opposedTo: []
seeAlso: ["archicrations-techno-logistiques", "theorie-de-la-justification", "decisionnisme-souverain"]
---
Les archicrations scripturo-normatives désignent un méta-régime de co-viabilité dans lequel lobligation découle dun énoncé inscrit, traçable, reproductible et opposable. On nécrit plus principalement ce qui est : on inscrit ce qui doit être.
Ce régime ne correspond pas à un simple perfectionnement mnésique. Il marque une mutation de la validité sociale elle-même : la norme acquiert une autonomie relative, duplicable, activable en contexte différé, indépendamment de la présence immédiate de son énonciateur.
## Principe régulateur
Dans ce régime, lécriture ne sert pas seulement à enregistrer.
Elle fixe des statuts, délimite des appartenances, stabilise des catégories, produit des obligations et rend possible linvocation différée dune règle.
Lautorité ne tient plus principalement au rite partagé, à la présence corporelle ou à linfrastructure monumentale. Elle tient à la permanence du signe, à la stabilité de la formulation, à la possibilité dopposer un texte à une situation.
## Distinction
Les archicrations scripturo-normatives ne se confondent ni avec les [Archicrations scripturo-cosmologiques](/glossaire/archicrations-scripturo-cosmologiques/) ni avec les [Archicrations théologiques](/glossaire/archicrations-theologiques/).
- dans les archicrations scripturo-cosmologiques, lécriture figure un ordre du monde ;
- dans les archicrations scripturo-normatives, elle inscrit une obligation opposable ;
- dans les archicrations théologiques, la validité renvoie à la source transcendante de la parole révélée.
Elles ne se confondent pas non plus avec les [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/) : celles-ci désignent un régime plus pleinement institutionnel et juridico-politique, là où le scripturo-normatif désigne le seuil où la norme inscrite devient elle-même support principal de lobligation.
## Arcalité, cratialité, archicration
Larcalité repose ici sur un agencement scriptural : listes, registres, généalogies formalisées, catégories inscrites, archives, décrets, codes.
Lécriture devient une architecture invisible de la validité.
La cratialité sexerce dans la capacité des contenus inscrits à produire des comportements légitimes, à encadrer les actions, à inhiber ou activer des conduites, à différencier ceux qui maîtrisent le code de ceux qui en subissent leffet.
Larchicration prend alors la forme dun travail dinterprétation, de réactivation et dajustement entre larcalité documentaire et les situations rencontrées : tribunal, procédure, lecture autorisée, rappel du texte, reconnaissance dune preuve ou dune inscription deviennent autant de scènes dépreuve.
## Portée archicratique
Ce régime révèle une montée en abstraction du pouvoir : le commandement ne sénonce plus dabord comme présence, il sinscrit.
La norme ne simpose plus prioritairement par le rite, mais par la permanence du texte, par larchive et par la capacité à opposer une formulation stable à une situation concrète.
Du point de vue archicratique, cette mutation est décisive : elle rend possible une continuité régulatrice beaucoup plus indépendante de la coprésence immédiate.
## Prolongements historiques
Les archicrations scripturo-normatives préparent de nombreuses formes ultérieures de régulation.
Elles ouvrent vers des mondes où la validité, la preuve, larchive, la procédure et la lecture autorisée deviennent structurantes. Elles constituent ainsi un seuil historique majeur dans la genèse des régulations juridiques, administratives et documentaires plus tardives.
## Pathologies possibles
La force de ce régime est sa stabilité documentaire.
Mais cette force peut devenir fermeture lorsque lécrit est traité comme autorité autosuffisante, que linterprétation devient monopole, ou que la scène dépreuve se réduit à une pure réactivation formelle du code.
Ses dérives typiques incluent :
- le textualisme rigide ;
- la monopolisation interprétative ;
- lasymétrie croissante entre lettrés et non-lettrés ;
- la confusion entre inscription et légitimité suffisante.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Archicrations scripturo-cosmologiques](/glossaire/archicrations-scripturo-cosmologiques/)
- [Archicrations normativo-politiques](/glossaire/archicrations-normativo-politiques/)
- [Archicrations théologiques](/glossaire/archicrations-theologiques/)
- [Théorie de la justification](/glossaire/theorie-de-la-justification/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)

View File

@@ -0,0 +1,107 @@
---
title: "Archicrations techno-logistiques"
term: "Archicrations techno-logistiques"
aliases: []
urlAliases: ["archicrations-techno-logistiques"]
mobilizedAuthors: ["Lewis Mumford"]
comparisonTraditions: ["histoire des techniques", "théorie des infrastructures", "morphologie technique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où la régulation sincarne dans des dispositifs intégrés, durables et opérationnels articulant formes monumentales, flux logistiques et fonctions codifiées."
concepts: ["archicrations-techno-logistiques", "archicration", "techno-logistique", "megamachine", "infrastructure", "flux", "coordination", "synchronisation"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "cybernetique", "synchrotopie", "theorie-de-lacteur-reseau", "archicrations-scripturo-normatives", "archicrations-scripturo-cosmologiques"]
opposedTo: []
seeAlso: ["archicrations-proto-symboliques", "archicrations-sacrales-non-etatiques", "domination-legale-rationnelle", "gouvernementalite-algorithmique", "preemption-algorithmique"]
---
Les archicrations techno-logistiques désignent un méta-régime de co-viabilité dans lequel la régulation cesse dêtre assurée principalement par le différé symbolique ou rituel, et sincarne dans des dispositifs intégrés, durables et opérationnels articulant formes monumentales, flux logistiques et fonctions codifiées.
Ce régime correspond à un seuil de complexité organisationnelle où lordre collectif se stabilise par lagencement matériel et fonctionnel des activités, des circulations, des positions et des séquences dexécution.
## Principe régulateur
Ici, on ne régule plus prioritairement en invoquant, en masquant ou en récitant.
On régule en organisant, en distribuant, en synchronisant et en encadrant.
La forme monumentale, le flux logistique et la fonction codifiée composent une matrice régulatrice dans laquelle les individus sont insérés dans un appareillage socio-technique plus vaste queux.
## Distinction
Les archicrations techno-logistiques ne se confondent ni avec les [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/) ni avec la [Cybernétique](/glossaire/cybernetique/).
- dans les archicrations sacrales non étatiques, la régulation passe prioritairement par des médiations cosmologiques et rituelles ;
- dans les archicrations techno-logistiques, elle sincarne dans lorganisation matérielle et fonctionnelle des tâches, des flux et des infrastructures ;
- la cybernétique, elle, propose une pensée plus tardive du pilotage par rétroaction, souvent plus abstraite et plus informationnelle.
Le techno-logistique désigne donc un régime où la tenue du collectif dépend dabord de ce qui fonctionne, circule, coordonne et encadre à grande échelle.
## Mégamachine
En écho à Lewis Mumford, ce régime peut être décrit comme une mégamachine : non une machine au sens mécanique strict, mais une organisation complexe dêtres humains, de tâches, dinfrastructures, de rythmes et de contraintes, coordonnée vers des objectifs de production ordonnée, de domination stabilisée ou dexpansion planifiée.
La mégamachine nest pas une simple métaphore. Elle désigne une infrastructure socio-symbolique et matérielle capable de synchroniser des populations élargies à partir dune convergence entre arcalité spatialisée, cratialité active et archicration coordonnée.
## Arcalité, cratialité, archicration
Larcalité prend ici une forme visible et spatialisée : trames urbaines, infrastructures, hiérarchies de fonctions, normes de circulation, standardisation des tâches, dispositifs monumentaux.
La cratialité se manifeste dans la mise sous tension des flux, dans la mobilisation coordonnée des corps, dans la contrainte organisationnelle, dans la distribution des rôles et dans la synchronisation des séquences dactivité.
Larchicration se joue dans les structures mêmes de lorganisation : réseau de tâches, trajets, rythmes, procédures, encadrements, chaînes dexécution et ajustements continus qui rendent le collectif opératoire.
## Portée archicratique
Les archicrations techno-logistiques marquent une mutation décisive : la régulation nest plus principalement portée par la scène rituelle ou la médiation sacrale, mais par le fonctionnement intégré dun dispositif.
Ce basculement ne supprime pas le symbolique, mais il le subordonne à une logique dagencement, de circulation, de synchronisation et de coordination.
Le pouvoir tient alors moins à ce quil énonce quà ce quil fait fonctionner.
## Formes contemporaines
Dans les mondes contemporains, ce régime se prolonge dans :
- les grandes infrastructures ;
- les chaînes logistiques globales ;
- les réseaux de distribution ;
- les systèmes techniques intégrés ;
- les environnements de calcul opératoire ;
- les architectures de plateforme ;
- les dispositifs de suivi en temps réel.
La question nest donc plus seulement historique. Elle concerne aussi les formes actuelles où la régulation sexerce par continuité de flux, par optimisation des séquences et par synchronisation multi-niveaux.
## Pathologies possibles
Les archicrations techno-logistiques deviennent pathologiques lorsque la fonctionnalité intégrée se découple de la scène où elle pourrait comparaître.
Leurs dérives incluent notamment :
- lhypercratialité organisationnelle ;
- la naturalisation de linfrastructure ;
- la dépendance silencieuse à des chaînes invisibles ;
- leffacement de la décision dans la seule continuité opérationnelle ;
- la difficulté croissante à reconnecter la surface visible aux strates techniques décisives.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Cybernétique](/glossaire/cybernetique/)
- [Synchrotopie](/glossaire/synchrotopie/)
- [Théorie de lacteur-réseau](/glossaire/theorie-de-lacteur-reseau/)
- [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/)
- [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Gouvernementalité algorithmique](/glossaire/gouvernementalite-algorithmique/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)

View File

@@ -0,0 +1,99 @@
---
title: "Archicrations théologiques"
term: "Archicrations théologiques"
aliases: []
urlAliases: ["archicrations-theologiques"]
mobilizedAuthors: ["Michael Fishbane", "Seyyed Hossein Nasr", "Jon D. Levenson"]
comparisonTraditions: ["théologie comparée", "histoire de lexégèse", "philosophie religieuse"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méta-régime de co-viabilité où lobligation procède dun verbe révélé tenu pour émaner dune source divine transcendante, irréductible au monde et inassignable à un sujet humain."
concepts: ["archicrations-theologiques", "archicration", "revelation", "verbe", "transcendance", "doctrine", "orthodoxie", "exegese", "fidelite"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "decisionnisme-souverain", "archicrations-scripturo-cosmologiques", "archicrations-scripturo-normatives", "archicrations-sacrales-non-etatiques"]
opposedTo: []
seeAlso: ["lieu-vide-du-pouvoir", "volonte-generale"]
---
Les archicrations théologiques désignent un méta-régime de co-viabilité dans lequel lobligation ne procède ni dun cosmos lisible, ni dun code autonome, ni dune logistique matérielle, mais dun verbe révélé tenu pour émaner dune source divine transcendante et irréductible à lordre du monde.
Dans ce régime, le texte ne vaut pas parce quil reflète un ordre naturel. Il vaut parce quil est tenu pour parole de Dieu.
## Principe régulateur
Larcalité nest pas cosmique mais énonciative.
Lordre ne préexiste pas à la parole : cest la parole révélée qui institue la normativité par lacte même de sa diction.
La scène fondatrice nest pas une scène dajustement à une structure visible ; cest une scène de parole : révélation, descente du verbe, commandement direct, adresse supra-humaine.
## Distinction
Les archicrations théologiques ne se confondent ni avec les [Archicrations scripturo-cosmologiques](/glossaire/archicrations-scripturo-cosmologiques/) ni avec les [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/).
- dans les archicrations scripturo-cosmologiques, lécriture reflète un ordre du monde ;
- dans les archicrations scripturo-normatives, elle institue une norme opposable ;
- dans les archicrations théologiques, la validité procède dune parole révélée dont la source est tenue pour transcendante.
Elles ne se confondent pas non plus avec les [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/) : celles-ci mobilisent puissances, cosmologies et médiations rituelles sans nécessairement se condenser dans lautorité dun verbe révélé.
## Arcalité, cratialité, archicration
Larcalité réside dans la source absolue de lénonciation divine. Elle ne se démontre pas ; elle se reconnaît comme transcendante.
La cratialité ne sexerce ni principalement par coercition brute ni par simple consensus, mais par la régulation de la fidélité à cette source : alignement herméneutique, liturgique, doctrinal, exégétique, communautaire.
Larchicration se joue dans les dispositifs dactivation de la parole révélée : récitation canonique, liturgie, exégèse autorisée, chaînes de transmission, écoles doctrinales, proclamation publique, jugement dorthodoxie, exclusion de la parole dissidente.
## Portée archicratique
Ce méta-régime fait apparaître une communauté tenue par lécoute, la fidélité, la récitation et lactivation continue du Verbe, plus que par le territoire ou la loi positive.
Il révèle aussi des mécanismes propres : conservation doctrinale, exégèse qualifiée, refus de linnovation, jugement dorthodoxie, délégation interprétative. La société se maintient alors par fidélité commune à lénoncé-source.
Du point de vue archicratique, cela montre quun ordre peut se structurer durablement autour dune source de validité qui ne se laisse pas ramener à limmanence du monde social.
## Formes de médiation
La puissance du régime théologique ne réside pas seulement dans le texte canonique lui-même, mais dans lensemble des médiations qui lactivent :
- traditions dinterprétation ;
- institutions de transmission ;
- pratiques liturgiques ;
- hiérarchies dautorité ;
- et dispositifs de qualification de la fidélité ou de lhérésie.
Le régime ne tient donc pas par la seule révélation originaire, mais par la scène continue de son réengagement.
## Pathologies possibles
Les archicrations théologiques deviennent pathologiques lorsque la fidélité à la source se ferme contre toute reprise de ses médiations.
Leurs dérives incluent notamment :
- la rigidification dogmatique ;
- la confiscation interprétative ;
- la clôture orthodoxe ;
- lexclusion hérésiologique devenue principe total ;
- la difficulté à distinguer fidélité au verbe et immunisation institutionnelle de ses gardiens.
Le risque nest pas la présence de la transcendance en elle-même, mais sa captation par des formes humaines devenues indisputables.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Archicrations scripturo-cosmologiques](/glossaire/archicrations-scripturo-cosmologiques/)
- [Archicrations scripturo-normatives](/glossaire/archicrations-scripturo-normatives/)
- [Archicrations sacrales non étatiques](/glossaire/archicrations-sacrales-non-etatiques/)
- [Lieu vide du pouvoir](/glossaire/lieu-vide-du-pouvoir/)
- [Volonté générale](/glossaire/volonte-generale/)

View File

@@ -0,0 +1,100 @@
---
title: "Archicratique"
term: "Archicratique"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Qualifie ce qui relève dune logique de régulation orientée vers la mise en forme, lexposition, la révision et la tenue co-viable des tensions collectives."
concepts: ["archicratique", "qualification", "regulation", "co-viabilite", "archicration", "tension", "scene"]
links: []
kind: "qualification"
family: "qualification"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "archicration", "co-viabilite", "tension", "scene-depreuve", "archicratistique", "archidiagnostic"]
opposedTo: ["desarchicratique"]
seeAlso: ["scene-darchicration", "archicratisation", "monde-instituable"]
---
Archicratique qualifie ce qui relève dune logique de régulation orientée vers la mise en forme, lexposition, la révision et la tenue co-viable des tensions collectives.
Le terme peut sappliquer à une analyse, une scène, une institution, un dispositif, une méthode, un geste politique ou une configuration, dès lors que ceux-ci contribuent à rendre les prises régulatrices plus intelligibles, plus traversables et plus révisables.
## Distinction
Archicratique ne signifie pas simplement :
- politique,
- institutionnel,
- administratif,
- ni même régulateur.
Le qualificatif suppose plus précisément :
- une prise sur les tensions ;
- une articulation entre fondements, opérations et scènes ;
- une possibilité de comparution ou de révision ;
- une orientation vers la [Co-viabilité](/glossaire/co-viabilite/).
Tout ce qui régule nest donc pas automatiquement archicratique.
Une régulation peut être efficace, puissante, stable, voire légale, sans être archicratique si elle se ferme à la scène, se soustrait à la disputabilité ou reconduit ses prises dans lopacité.
## Fonction dans le paradigme
Le terme permet de caractériser :
- une lecture archicratique dune situation ;
- un agencement archicratique de dispositifs ;
- une scène archicratique de comparution ;
- une réforme archicratique dune institution ;
- un diagnostic archicratique des dérives de régulation.
Il sert ainsi de qualificatif transversal à lensemble du paradigme, en évitant de réserver larchicratie aux seules formes globales ou théoriques.
## Critères minimaux
Qualifier quelque chose darchicratique na de sens que si lon peut repérer au moins partiellement :
- ce qui, dans la situation, fait fondement ou cadrage ;
- ce qui opère effectivement ;
- ce qui permet ou empêche la comparution de cette opération ;
- et ce qui rend la régulation plus ou moins réinstituable.
Le terme ne vaut donc pas comme étiquette honorifique.
Il désigne une qualité régulatrice précise.
## Rapport à larchicratie
L[Archicratie](/glossaire/archicratie/) est le paradigme général ; archicratique est le qualificatif permettant den repérer les manifestations, les exigences ou les gestes dans des cas situés.
Autrement dit :
- larchicratie désigne le champ théorique ;
- archicratique désigne ce qui, dans une situation donnée, travaille dans le sens de la comparution, de la révision et de la co-viabilisation.
## Rapport à larchicratistique
Le terme entretient une proximité forte avec l[Archicratistique](/glossaire/archicratistique/), mais il ne sy réduit pas.
Larchicratistique désigne la démarche analytique et comparative.
Archicratique qualifie plus largement ce qui, dans un dispositif, une scène, un geste ou une lecture, participe effectivement dune logique dexposition régulatrice.
## Enjeu
Employer le terme archicratique revient à déplacer lattention depuis les seuls acteurs visibles vers les architectures par lesquelles une société tient, se dispute et se transforme.
Il oblige à demander non seulement :
“Qui agit ?”
mais aussi :
“Dans quel régime dexposition, de révision et de tenue cette action sinscrit-elle ?”
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Tension](/glossaire/tension/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Archicratistique](/glossaire/archicratistique/)
- [Archidiagnostic](/glossaire/archidiagnostic/)
- [Archicratisation](/glossaire/archicratisation/)
- [Monde instituable](/glossaire/monde-instituable/)
- [Désarchicratique](/glossaire/desarchicratique/)

View File

@@ -0,0 +1,79 @@
---
title: "Archicratisation"
term: "Archicratisation"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Processus par lequel un champ, une institution ou une infrastructure devient davantage structuré par des logiques explicites darchicration, de comparution et de co-viabilisation."
concepts: ["archicratisation", "archicratie", "archicration", "institution", "reconfiguration", "co-viabilisation"]
links: []
kind: "concept"
family: "dynamique"
domain: "transversal"
level: "avance"
related: ["archicratie", "archicration", "co-viabilisation", "scene-darchicration", "monde-instituable", "archidiagnostic", "scene-depreuve", "audit-archicratique"]
opposedTo: ["desarchicratisation", "autarchicratie"]
seeAlso: ["desarchicration", "archicration-obliteree", "regime-de-co-viabilite"]
---
Larchicratisation désigne le processus par lequel un champ social, une institution, une infrastructure ou un monde commun devient davantage structuré par des logiques explicites darchicration, de comparution et de co-viabilisation.
Elle correspond à un mouvement de mise en forme, dexplicitation et dinstitution de la régulation.
## Distinction
Larchicratisation ne se confond ni avec l[Archicratie](/glossaire/archicratie/) comme horizon général, ni avec une simple croissance du contrôle.
Une configuration peut devenir plus régulée sans devenir plus archicratique, si cette régulation se ferme à la scène, se naturalise ou se protège de sa propre révision.
Larchicratisation suppose au contraire :
- une explicitation des prises de régulation ;
- une amélioration des scènes de comparution ;
- une augmentation de la révisabilité ;
- une orientation plus nette vers la [Co-viabilisation](/glossaire/co-viabilisation/).
## Fonction dans le paradigme
Cette notion permet de penser les processus de maturation régulatrice.
Il y a archicratisation lorsquun ordre devient plus capable :
- dexposer ses fondements ;
- de documenter ses chaînes opératoires ;
- de rendre visible ce qui le gouverne ;
- de soutenir des scènes où ses tensions peuvent être reprises.
## Portée politique
Une politique archicratique ne vise pas seulement à mieux administrer.
Elle vise à transformer des régulations déjà existantes en régulations plus visibles, plus disputables et plus instituables.
Cest en ce sens que larchicratisation peut concerner :
- des institutions publiques ;
- des chaînes techniques ;
- des procédures expertes ;
- des systèmes numériques ;
- des mondes professionnels ou territoriaux.
## Enjeu critique
Le mot est important parce quil évite de confondre ouverture archicratique et simple intensification de lencadrement.
Archicratiser, ce nest pas saturer un domaine de contrôle ; cest lui donner des prises de comparution.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Co-viabilisation](/glossaire/co-viabilisation/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Monde instituable](/glossaire/monde-instituable/)
- [Archidiagnostic](/glossaire/archidiagnostic/)
- [Désarchicration](/glossaire/desarchicration/)
- [Désarchicratisation](/glossaire/desarchicratisation/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Audit archicratique](/glossaire/audit-archicratique/)

View File

@@ -0,0 +1,113 @@
---
title: "Archicratistique"
term: "Archicratistique"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Champ danalyse consacré à la description, à la comparaison et au diagnostic des architectures de régulation, de leurs scènes, de leurs figures et de leurs formes de co-viabilité."
concepts: ["archicratistique", "analyse", "comparaison", "diagnostic", "architecture", "regulation", "co-viabilite", "scene"]
links: []
kind: "epistemologie"
family: "epistemologie"
domain: "theorie"
level: "avance"
related: ["archicratie", "archidiagnostic", "archicratique", "meta-regime-archicratique", "figures-archicratiques", "tension", "institution-invisible", "pensee-complexe"]
opposedTo: []
seeAlso: ["archeogenese", "co-viabilite", "scene-depreuve"]
---
Larchicratistique désigne le champ danalyse consacré à la description, à la comparaison et au diagnostic des architectures de régulation et de leurs formes de co-viabilité.
Elle constitue, au sein du paradigme, leffort méthodique visant à rendre les formes archicratiques lisibles, comparables, discutables et diagnostiquables.
## Distinction
Larchicratistique ne doit pas être confondue avec l[Archicratie](/glossaire/archicratie/).
Larchicratie désigne lobjet théorique général : le méta-régime de régulation par lequel des sociétés traitent leurs tensions et soutiennent leur co-viabilité.
Larchicratistique désigne la démarche analytique qui étudie les formes, les variantes, les seuils, les scènes, les figures et les dérives de cet objet.
Autrement dit :
- larchicratie est le champ dintelligibilité ;
- larchicratistique est le travail denquête sur ce champ.
## Fonction dans le paradigme
Larchicratistique permet notamment :
- de distinguer les méta-régimes et leurs compositions ;
- danalyser les scènes de comparution et leurs défaillances ;
- didentifier les figures archicratiques ;
- de diagnostiquer les dérives de fermeture, dopacification ou dautonomisation ;
- de comparer des régimes de co-viabilité hétérogènes sans les rabattre sur une seule matrice.
Elle constitue donc linstrument conceptuel et méthodologique du paradigme.
## Objet denquête
Larchicratistique ne sintéresse pas seulement aux institutions visibles.
Elle porte aussi sur :
- les infrastructures ;
- les médiations techniques ;
- les chaînes de décision ;
- les formes de légitimation ;
- les figures de concentration régulatrice ;
- les scènes dépreuve, leurs absences ou leurs simulations ;
- les tensions que les régulations absorbent, déplacent, intensifient ou laissent saccumuler.
Son objet nest donc pas simplement “le pouvoir”, mais larchitecture effective de sa tenue et de sa comparution.
## Niveaux danalyse
Larchicratistique travaille sur plusieurs niveaux à la fois :
- le niveau des concepts fondamentaux : [Arcalité](/glossaire/arcalite/), [Cratialité](/glossaire/cratialite/), [Archicration](/glossaire/archicration/), [Co-viabilité](/glossaire/co-viabilite/), [Tension](/glossaire/tension/) ;
- le niveau des formes historiques ou topologiques : [Méta-régime archicratique](/glossaire/meta-regime-archicratique/), [Régime de co-viabilité](/glossaire/regime-de-co-viabilite/) ;
- le niveau des scènes, des figures et des dispositifs ;
- le niveau des dérives pathologiques : [Autarchicratie](/glossaire/autarchicratie/), [Oblitération archicratique](/glossaire/obliteration-archicratique/), [Désarchicratisation](/glossaire/desarchicratisation/).
Elle ne réduit donc pas lanalyse à une seule échelle.
## Rapport à larchidiagnostic
L[Archidiagnostic](/glossaire/archidiagnostic/) constitue lun des usages les plus opératoires de larchicratistique.
On peut dire que larchicratistique fournit le cadre général de description, de comparaison et de lecture, tandis que larchidiagnostic correspond à un geste denquête plus ciblé, orienté vers lidentification des structures régulatrices dune crise, dun conflit ou dune fermeture.
## Portée épistémologique
Larchicratistique rappelle que larchicratie nest pas seulement une thèse substantielle sur le politique.
Cest aussi une méthode denquête sur les formes de régulation, attentive :
- aux scènes ;
- aux prises documentaires ;
- aux médiations techniques et symboliques ;
- aux topologies de la comparution ;
- aux processus de fermeture ou de réouverture ;
- et aux conditions de co-viabilisation.
Elle constitue ainsi une épistémologie de la régulation située, différentielle et comparée.
## Enjeu
Lenjeu de larchicratistique nest pas seulement de mieux nommer les formes dordre.
Il est de rendre perceptibles les architectures qui gouvernent effectivement les mondes sociaux, afin dévaluer leur qualité de scène, leur degré de révisabilité et leur capacité à soutenir une co-viabilité non purement fictive.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Archidiagnostic](/glossaire/archidiagnostic/)
- [Archicratique](/glossaire/archicratique/)
- [Méta-régime archicratique](/glossaire/meta-regime-archicratique/)
- [Figures archicratiques](/glossaire/figures-archicratiques/)
- [Tension](/glossaire/tension/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Archéogenèse](/glossaire/archeogenese/)
- [Pensée complexe](/glossaire/pensee-complexe/)

View File

@@ -0,0 +1,124 @@
---
title: "Archidiagnostic"
term: "Archidiagnostic"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Diagnostic portant non sur les seuls symptômes visibles dune crise, mais sur les architectures de régulation, les scènes et les figures qui la produisent, lencadrent, la déplacent ou laggravent."
concepts: ["archidiagnostic", "diagnostic", "architecture", "regulation", "symptome", "crise", "scene", "figure"]
links: []
kind: "epistemologie"
family: "epistemologie"
domain: "theorie"
level: "intermediaire"
related: ["archicratistique", "archicratie", "institution-invisible", "figures-archicratiques", "tension", "scene-darchicration", "scene-manquante", "scene-empechee", "cartographie-des-scenes-manquantes", "audit-archicratique"]
opposedTo: []
seeAlso: ["autarchicratie", "obliteration-archicratique", "desarchicratisation", "hypotopie"]
---
Larchidiagnostic désigne un diagnostic portant non sur les seuls symptômes visibles dune crise, mais sur les architectures de régulation, les scènes et les figures qui la produisent, lencadrent, la déplacent ou laggravent.
Il ne se contente donc pas de constater des dysfonctionnements.
Il cherche à remonter vers les structures qui rendent ces dysfonctionnements possibles, durables ou difficilement traitables.
## Distinction
Larchidiagnostic se distingue dun diagnostic sectoriel classique.
Un diagnostic sectoriel isole un problème dans un domaine donné : mauvaise procédure, défaut technique, décision contestable, conflit local, crise institutionnelle.
Larchidiagnostic, lui, interroge la configuration régulatrice plus profonde qui relie :
- les symptômes visibles ;
- les scènes existantes ou absentes ;
- les figures de structuration ;
- les médiations documentaires ou techniques ;
- les formes de fermeture qui empêchent la reprise.
Il déplace ainsi lanalyse :
- du problème visible vers son architecture ;
- du symptôme vers les conditions de sa reproduction ;
- de lévénement vers la structure de sa prise en charge ;
- de la décision isolée vers le régime de comparution dont elle dépend.
## Fonction dans le paradigme
Larchidiagnostic est lun des instruments centraux de l[Archicratistique](/glossaire/archicratistique/).
Il permet :
- didentifier les [Scènes manquantes](/glossaire/scene-manquante/) ou empêchées ;
- de repérer les [Institutions invisibles](/glossaire/institution-invisible/) ;
- danalyser les dérives d[Autarchicratie](/glossaire/autarchicratie/) ;
- de comprendre comment certaines tensions deviennent structurellement difficiles à traiter ;
- de reconstituer les prises décisives là où le pouvoir se présente comme diffus, technique ou impersonnel.
## Questions directrices
Un archidiagnostic bien conduit pose typiquement des questions comme :
- où se joue réellement la régulation décisive ?
- quelles scènes existent, et avec quelle portée effective ?
- quelles prises documentaires rendent la décision retraçable ou opaque ?
- quelles figures structurent la continuité du dispositif ?
- quelles tensions sont traitées, neutralisées, déplacées ou accumulées ?
- quels éléments rendent la reconfiguration possible, difficile ou quasi impossible ?
Ces questions déplacent lenquête du simple “quoi” vers le “comment cela tient”.
## Rapport aux scènes
Larchidiagnostic est particulièrement attentif à la qualité des scènes.
Il ne suffit pas de savoir quune procédure existe.
Il faut encore déterminer :
- si elle permet réellement une comparution ;
- si les personnes affectées peuvent y prendre part ;
- si les pièces nécessaires y sont accessibles ;
- si la scène peut produire autre chose quune validation routinière du dispositif.
Larchidiagnostic révèle ainsi très souvent des écarts entre scène affichée et scène effective.
## Rapport aux figures
Le diagnostic ne porte pas seulement sur les structures impersonnelles.
Il doit aussi identifier les [Figures archicratiques](/glossaire/figures-archicratiques/) qui concentrent, relaient, filtrent ou verrouillent la régulation : organes techniques, plateformes, autorités, chaînes administratives, experts, procédures dexception, centres logistiques ou instruments de calcul.
Lobjectif nest pas de personnaliser naïvement le pouvoir, mais de cartographier ses points de structuration.
## Enjeu politique
Un archidiagnostic bien conduit ne sert pas seulement à mieux nommer une crise.
Il sert à rouvrir les prises par lesquelles cette crise pourrait être politiquement réinstituée.
Il prépare ainsi le passage :
- du constat à la reconfiguration ;
- de limpuissance diffuse à lidentification des lieux dépreuve ;
- de la dénonciation abstraite à la transformation orientée.
## Limite
Larchidiagnostic peut lui-même rester insuffisant sil ne débouche que sur une cartographie contemplative.
Nommer les structures de fermeture ne suffit pas.
Encore faut-il relier le diagnostic à des scènes, à des médiations et à des dispositifs capables de reprendre effectivement ce quil a mis au jour.
## Renvois
- [Archicratistique](/glossaire/archicratistique/)
- [Archicratie](/glossaire/archicratie/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Figures archicratiques](/glossaire/figures-archicratiques/)
- [Tension](/glossaire/tension/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Scène manquante](/glossaire/scene-manquante/)
- [Scène empêchée](/glossaire/scene-empechee/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Oblitération archicratique](/glossaire/obliteration-archicratique/)
- [Désarchicratisation](/glossaire/desarchicratisation/)

View File

@@ -0,0 +1,72 @@
---
title: "Atopie"
term: "Atopie"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Absence dun lieu assignable de comparution, de décision ou de contestation pour une régulation pourtant active et structurante."
concepts: ["atopie", "sans-lieu", "topologie", "hors-site", "comparution", "regulation"]
links: []
kind: "topologie"
family: "topologie"
domain: "transversal"
level: "avance"
related: ["scene-manquante", "institution-invisible", "hypotopie", "hypertopie", "synchrotopie", "archicration-obliteree", "archicration", "scene-darchicration"]
opposedTo: ["monde-instituable"]
seeAlso: ["scene-empechee", "cartographie-des-scenes-manquantes", "archidiagnostic"]
---
Latopie désigne labsence dun lieu assignable de comparution, de décision ou de contestation pour une régulation pourtant active et structurante.
Elle correspond à une situation dans laquelle le pouvoir agit, mais sans site identifiable où il puisse être effectivement mis en épreuve.
## Distinction
Latopie ne doit pas être réduite à une simple dispersion géographique.
Elle désigne plus précisément labsence de **topos politique** : on ne sait plus où faire comparaître la régulation, ni où adresser lépreuve, ni à quel seuil la contestation pourrait devenir recevable.
Elle peut résulter :
- dune distribution extrême des prises ;
- dune chaîne décisionnelle éclatée ;
- dune architecture composite sans centre assignable ;
- dune hypertopie et dune hypotopie non raccordées à une scène commune.
## Fonction dans le paradigme
Cette notion permet de comprendre pourquoi certaines formes de régulation semblent partout efficaces et nulle part saisissables.
Latopie constitue ainsi un opérateur majeur d[Oblitération archicratique](/glossaire/obliteration-archicratique/) : la régulation existe, mais son lieu devient indéterminable.
## Rapport aux autres topologies
Latopie se distingue :
- de l[Hypotopie](/glossaire/hypotopie/), où les prises décisives sont localisables mais enfouies sous la scène visible ;
- de la [Hypertopie](/glossaire/hypertopie/), où une décision localisée déborde massivement son site initial ;
- de la [Synchrotopie](/glossaire/synchrotopie/), où plusieurs scènes existent mais doivent être articulées.
Dans latopie, le problème tient dabord à linassignabilité du lieu même de lépreuve.
## Enjeu politique
Sortir de latopie ne signifie pas toujours recentraliser.
Il sagit plutôt dinstituer des prises, des scènes et des médiations permettant de rendre à nouveau localisable ce qui gouverne.
Lenjeu est donc moins de trouver un “centre caché” que de fabriquer des formats où la régulation puisse enfin devenir adressable.
## Renvois
- [Scène manquante](/glossaire/scene-manquante/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Hypotopie](/glossaire/hypotopie/)
- [Hypertopie](/glossaire/hypertopie/)
- [Synchrotopie](/glossaire/synchrotopie/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Monde instituable](/glossaire/monde-instituable/)
- [Cartographie des scènes manquantes](/glossaire/cartographie-des-scenes-manquantes/)
- [Archidiagnostic](/glossaire/archidiagnostic/)

View File

@@ -0,0 +1,83 @@
---
title: "Audit archicratique"
term: "Audit archicratique"
aliases: []
urlAliases: ["audit-archicratique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Méthode dévaluation dun système dIA ou dun modèle de fondation qui ne se contente pas de vérifier performances et conformité, mais reconstruit les arcalités, les cratialités, les scènes et les angles morts de la régulation en jeu."
concepts: ["audit-archicratique", "archicratie", "arcalite", "cratialite", "archicration", "scene-depreuve", "intelligibilite-regulatrice"]
links: []
kind: "dispositif"
family: "dispositif-ia"
domain: "cas-ia"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "scene-depreuve", "journal-de-justification", "cartographie-des-scenes-manquantes", "tribunal-de-lalgorithme", "archidiagnostic", "institution-invisible"]
opposedTo: ["autarchicratie"]
seeAlso: ["gouvernementalite-algorithmique", "preemption-algorithmique", "budget-scenique", "visa-daffectation"]
---
Laudit archicratique désigne une méthode dévaluation dun système dIA qui ne se limite ni à la seule mesure de performance, ni à la seule vérification de conformité réglementaire.
Il consiste à reconstruire la structure régulatrice effective du dispositif examiné. Autrement dit, il cherche à identifier :
- quelles [Arcalités](/glossaire/arcalite/) sont engagées, cest-à-dire quels fondements, quels objectifs, quels axiomes ou quelles justifications orientent le système ;
- quelles [Cratialités](/glossaire/cratialite/) sont mobilisées, cest-à-dire quelles chaînes daction, quels modèles, quelles données, quelles infrastructures et quels opérateurs rendent la régulation effective ;
- quelles scènes d[Archicration](/glossaire/archicration/) existent, manquent, sont capturées ou sont trop faibles autour du système.
Laudit archicratique déplace ainsi la question classique : il ne demande pas seulement « est-ce que cela marche ? » ou « est-ce que cela respecte la règle ? », mais aussi « dans quelle architecture de régulation cela sinscrit-il ? » et « comment cette architecture peut-elle comparaître ? ».
## Distinction
Laudit archicratique ne se confond pas avec un audit technique classique.
Un audit technique vérifie surtout la robustesse, la précision, la stabilité, la sécurité ou la conformité procédurale dun système.
Laudit archicratique, lui, prend le système comme nœud dune architecture de pouvoir, de justification, daffectation et de décision. Il cherche à comprendre comment se combinent fondements, chaînes opératoires et scènes de révision.
Il ne remplace donc pas les autres formes daudit ; il les réinscrit dans une lecture plus profonde de la régulation.
## Fonction dans le cas IA
Dans le cas des systèmes dIA, ce dispositif permet de rendre visibles plusieurs dimensions souvent séparées :
- les finalités officielles et les finalités implicites du système ;
- les médiations concrètes par lesquelles une décision est produite ;
- les asymétries daccès à linformation, au dossier et à la contestation ;
- les lieux où la régulation est effectivement jouée, ou au contraire soustraite à la discussion ;
- les points où la maintenance technique se substitue à une révision politique.
Il permet ainsi de passer dune logique de simple contrôle à une logique dintelligibilité archicratique.
## Portée archicratique
Dans une perspective archicratique, un système dIA nest jamais seulement un outil.
Il est toujours pris dans une architecture plus large de fondation, deffectuation et de régulation. Laudit archicratique a précisément pour fonction de rendre cette architecture lisible, en évitant quelle ne demeure enfouie dans les coulisses techniques, juridiques ou managériales.
Il constitue donc une première opération de réouverture de la scène.
## Limites et enjeux
Un audit archicratique peut rester superficiel :
- sil na accès quaux éléments déjà sélectionnés par les opérateurs du système ;
- sil reste confiné à des rapports internes ;
- sil nouvre sur aucune scène de contradiction ;
- sil ne se raccorde ni au [Journal de justification](/glossaire/journal-de-justification/), ni à la [Cartographie des scènes manquantes](/glossaire/cartographie-des-scenes-manquantes/), ni à une instance de reprise.
Sans cela, laudit risque de demeurer un simple rite dexpertise.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)
- [Archicration](/glossaire/archicration/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Journal de justification](/glossaire/journal-de-justification/)
- [Cartographie des scènes manquantes](/glossaire/cartographie-des-scenes-manquantes/)
- [Tribunal de lalgorithme](/glossaire/tribunal-de-lalgorithme/)
- [Archidiagnostic](/glossaire/archidiagnostic/)
- [Autarchicratie](/glossaire/autarchicratie/)

View File

@@ -9,14 +9,15 @@ definitionShort: "Dérive dun régime archicratique dans laquelle les archite
concepts: ["autarchicratie", "archicratie", "archicration", "obliteration-archicratique", "scene-depreuve"]
links: []
kind: "diagnostic"
family: "pathologie"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "archicration", "obliteration-archicratique", "scene-depreuve", "co-viabilite"]
related: ["archicratie", "archicration", "obliteration-archicratique", "scene-depreuve", "co-viabilite", "autarchicration", "archicration-obliteree", "desarchicratisation", "institution-invisible"]
opposedTo: ["archicratie"]
seeAlso: ["tension"]
seeAlso: ["tension", "hyperarcalite", "hypercratialite", "figures-archicratiques"]
---
Lautarchicratie désigne une dérive dun régime archicratique dans laquelle les architectures régulatrices continuent dopérer tout en devenant de plus en plus autonomes, opaques et soustraites à la scène dépreuve.
Lautarchicratie désigne une dérive dun méta-régime archicratique dans laquelle les architectures régulatrices continuent dopérer tout en devenant de plus en plus autonomes, opaques et soustraites à la scène dépreuve.
Dans une configuration autarchicratique, les dispositifs techniques, administratifs, normatifs ou organisationnels qui assurent la régulation des dynamiques collectives restent actifs et parfois efficaces, mais leur fonctionnement devient de moins en moins intelligible, discutable et transformable pour la société quils structurent.

View File

@@ -0,0 +1,70 @@
---
title: "Autarchicration"
term: "Autarchicration"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Mode dégradé darchicration dans lequel lépreuve régulatrice continue de fonctionner principalement pour la reproduction du dispositif lui-même plutôt que pour sa mise en question et sa révision effectives."
concepts: ["autarchicration", "archicration", "fermeture", "autoreproduction", "opacite", "scene"]
links: []
kind: "diagnostic"
family: "pathologie"
domain: "transversal"
level: "avance"
related: ["archicration", "autarchicratie", "archicration-obliteree", "scene-depreuve", "scene-darchicration", "obliteration-archicratique", "desarchicration", "hyperarcalite", "hypercratialite"]
opposedTo: ["monde-instituable", "scene-depreuve"]
seeAlso: ["institution-invisible"]
---
Lautarchicration désigne un mode dégradé darchicration dans lequel lépreuve régulatrice continue de fonctionner, mais principalement pour reproduire et protéger le dispositif plutôt que pour le rendre effectivement révisable.
La scène ny disparaît pas nécessairement. Elle peut subsister, parfois sous une forme impressionnante, mais elle est capturée, fermée ou orientée vers lauto-légitimation du système.
## Distinction
Lautarchicration se distingue de l[Autarchicratie](/glossaire/autarchicratie/).
- lautarchicration désigne une pathologie du processus dépreuve lui-même ;
- lautarchicratie désigne la forme plus générale dun régime devenu opaque, autoréférent et soustrait à la comparution.
Lautarchicration est ainsi lun des mécanismes locaux par lesquels une autarchicratie se consolide.
## Fonction dans le paradigme
Il y a autarchicration lorsque :
- des procédures existent encore ;
- des audits, débats, consultations ou évaluations ont lieu ;
- mais leur fonction principale nest plus douvrir la régulation ;
- elle consiste surtout à reconduire les critères existants, absorber la critique ou neutraliser la contestation.
Autrement dit, la scène ne manque pas totalement ; elle est retournée contre sa propre finalité.
## Formes typiques
Lautarchicration peut prendre plusieurs formes :
- procédure contradictoire sans accès réel aux pièces ;
- consultation sans pouvoir de transformation ;
- audit purement rituel ;
- scène de débat où les catégories recevables sont déjà verrouillées ;
- instance de contrôle dépendante des opérateurs mêmes quelle prétend surveiller.
## Enjeu politique
Le danger de lautarchicration tient à ceci : elle mime louverture tout en empêchant lépreuve.
Elle est donc souvent plus difficile à diagnostiquer quune pure absence de scène, car elle donne lapparence dune régulation exposable.
## Renvois
- [Archicration](/glossaire/archicration/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Scène darchicration](/glossaire/scene-darchicration/)
- [Oblitération archicratique](/glossaire/obliteration-archicratique/)
- [Désarchicration](/glossaire/desarchicration/)
- [Institution invisible](/glossaire/institution-invisible/)
- [Monde instituable](/glossaire/monde-instituable/)

View File

@@ -2,36 +2,68 @@
title: "Biopolitique"
term: "Biopolitique"
aliases: []
urlAliases: ["biopolitique"]
mobilizedAuthors: ["Michel Foucault", "Giorgio Agamben"]
comparisonTraditions: ["biopolitique", "théories du pouvoir sur la vie", "philosophie politique contemporaine"]
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Paradigme danalyse du pouvoir centré sur la prise en charge, la gestion et loptimisation des processus de la vie des populations."
concepts: ["biopolitique", "population", "vie", "gouvernementalite"]
version: "0.2.0"
definitionShort: "Paradigme danalyse du pouvoir centré sur la prise en charge, la gestion, la protection, la normalisation et loptimisation des processus de la vie des populations."
concepts: ["biopolitique", "population", "vie", "gouvernementalite", "normalisation", "securite"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "intermediaire"
related: ["gouvernementalite", "archicratie", "co-viabilite"]
related: ["gouvernementalite", "archicratie", "co-viabilite", "tension", "gouvernementalite-algorithmique", "regulation-technique-et-legitimation-democratique"]
opposedTo: []
seeAlso: ["gouvernementalite-algorithmique", "cybernetique", "tension"]
seeAlso: ["cybernetique", "preemption-algorithmique", "formes-de-vie-et-cadres-dhabitabilite", "subsistance-vivante-et-captation-capitalistique"]
---
La biopolitique désigne le paradigme dans lequel le pouvoir sexerce sur les conditions de la vie collective : santé, natalité, mortalité, risque, sécurité, protection, optimisation des corps et des populations.
La biopolitique désigne le paradigme dans lequel le pouvoir sexerce sur les conditions de la vie collective : santé, natalité, mortalité, risque, sécurité, protection, prévention, optimisation des corps et des populations.
Elle désigne le moment où la vie devient un objet central de calcul, de gestion et dintervention politique.
## Distinction
Elle ne concerne pas seulement le soin ou la médecine. Elle désigne plus largement le moment où la vie devient un objet central de calcul, de gestion et dintervention politique.
La biopolitique ne concerne pas seulement le soin ou la médecine.
Elle désigne plus largement une transformation du pouvoir moderne : la régulation ne se contente plus dinterdire ou de punir, elle administre, classe, protège, surveille et optimise les vivants.
Elle se distingue ainsi dun pouvoir purement juridique ou purement souverain : ce qui compte nest plus seulement la loi, mais la gestion continue des conditions dexistence.
## Fonction dans le paysage théorique
La biopolitique permet de comprendre comment les sociétés modernes organisent la régulation des vivants à travers des dispositifs statistiques, sanitaires, assurantiels et sécuritaires.
La biopolitique permet de comprendre :
- la gestion moderne des populations ;
- les politiques sanitaires, assurantielles et sécuritaires ;
- les corrélations entre savoir, statistique et gouvernement ;
- les formes de pouvoir qui se présentent comme protectrices tout en produisant de nouvelles normativités.
## Rapport à larchicratie
Larchicratie prolonge ce diagnostic en se demandant à quelles architectures concrètes de régulation cette gestion de la vie est arrimée, et surtout dans quelles scènes elle peut encore être exposée, contestée ou révisée.
Autrement dit, la biopolitique décrit puissamment **ce sur quoi** porte une régulation moderne ; larchicratie demande en plus **par quelles prises**, **dans quelles chaînes opératoires** et **avec quelles scènes dépreuve** cette régulation devient co-viable ou, au contraire, opaque.
## Limite archicratique
Le gain biopolitique est sa lucidité sur la centralité politique du vivant.
Mais son angle mort est quelle ne formalise pas toujours suffisamment les architectures de révision capables de faire comparaître les dispositifs qui administrent la vie.
Larchicratie y voit donc un diagnostic majeur, mais non encore une théorie suffisante de la comparution régulatrice.
## Renvois
- [Gouvernementalité](/glossaire/gouvernementalite/)
- [Gouvernementalité algorithmique](/glossaire/gouvernementalite-algorithmique/)
- [Cybernétique](/glossaire/cybernetique/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Archicratie](/glossaire/archicratie/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Tension](/glossaire/tension/)
- [Régulation technique / légitimation démocratique](/glossaire/regulation-technique-et-legitimation-democratique/)
- [Formes de vie / cadres dhabitabilité](/glossaire/formes-de-vie-et-cadres-dhabitabilite/)
- [Subsistance vivante / captation capitalistique](/glossaire/subsistance-vivante-et-captation-capitalistique/)

View File

@@ -0,0 +1,94 @@
---
title: "Budget scénique"
term: "Budget scénique"
aliases: []
urlAliases: ["budget-scenique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Principe selon lequel une gouvernance archicratique doit réserver explicitement des ressources pour faire exister des scènes darchicration ; sans budget scénique, la scène reste un décor, une faveur ou une promesse."
concepts: ["budget-scenique", "scene-depreuve", "archicration", "ressources", "institution", "prise", "financement"]
links: []
kind: "dispositif"
family: "dispositif-ia"
domain: "cas-ia"
level: "avance"
related: ["scene-depreuve", "archicration", "tribunal-de-lalgorithme", "cartographie-des-scenes-manquantes", "co-viabilite", "visa-daffectation", "audit-archicratique"]
opposedTo: ["archicration-obliteree"]
seeAlso: ["democratie-deliberative", "gouvernance-des-communs", "coupe-circuit-citoyen"]
---
Le budget scénique désigne le principe selon lequel une gouvernance archicratique doit réserver explicitement des ressources pour faire exister des scènes darchicration.
Ces ressources peuvent être :
- du temps ;
- de largent ;
- des compétences ;
- des infrastructures ;
- des capacités documentaires ;
- des médiations institutionnelles ;
- des moyens permettant à des publics non dotés de réellement siéger, parler et contester.
Sans elles, la scène reste souvent à létat de principe abstrait, de promesse procédurale ou de décor discursif.
## Distinction
Le budget scénique ne désigne pas seulement un budget comptable au sens strict.
Il désigne plus largement lallocation effective de moyens nécessaires pour quune épreuve puisse avoir lieu dans de bonnes conditions.
Autrement dit, il ne suffit pas daffirmer quune scène existe. Il faut encore quelle soit rendue praticable, soutenue et durable.
## Fonction dans le cas IA
Dans les systèmes dIA, labsence de budget scénique se manifeste fréquemment par des situations où :
- les personnes affectées nont pas accès aux pièces ;
- les agents nont pas le temps dinstruire les contestations ;
- les instances de recours existent sur le papier mais sont sous-dotées ;
- les scènes sont saturées ou réduites à des formalités ;
- les décisions dusage restent prises dans des cénacles techniques ou managériaux faute de scène amont financée.
Le budget scénique répond à cela en affirmant quune scène robuste est une infrastructure à financer, pas un supplément optionnel.
## Portée archicratique
Dans une perspective archicratique, la scène nest pas un simple moment symbolique. Elle est une composante matérielle de la régulation.
Le budget scénique rappelle donc une vérité institutionnelle fondamentale : sans moyens scéniques, il ny a pas de comparution effective du pouvoir.
Il existe alors des architectures qui continuent dopérer, mais sans jamais devoir répondre de leurs prises.
## Enjeu politique
Lenjeu est de sortir dune hypocrisie fréquente des régimes contemporains : proclamer la participation, la transparence ou la contestabilité tout en refusant les conditions matérielles qui les rendraient réelles.
Le budget scénique est précisément le nom de cette exigence matérielle.
Il transforme la scène en objet de décision institutionnelle explicite.
## Limites
Ce dispositif peut être neutralisé :
- si les ressources sont trop faibles pour avoir un effet réel ;
- si elles sont concentrées dans des hypertopies fermées ;
- si elles sont orientées vers des scènes purement simulées ;
- si elles ne servent quà absorber la contestation sans permettre de reconfiguration.
Le problème nest donc pas seulement dallouer des moyens, mais de les allouer à de vraies scènes.
## Renvois
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Archicration](/glossaire/archicration/)
- [Tribunal de lalgorithme](/glossaire/tribunal-de-lalgorithme/)
- [Cartographie des scènes manquantes](/glossaire/cartographie-des-scenes-manquantes/)
- [Audit archicratique](/glossaire/audit-archicratique/)
- [Visa daffectation](/glossaire/visa-daffectation/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)
- [Démocratie délibérative](/glossaire/democratie-deliberative/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Coupe-circuit citoyen](/glossaire/coupe-circuit-citoyen/)

View File

@@ -1,37 +0,0 @@
---
title: "Bureaucratie"
term: "Bureaucratie"
aliases: ["Paradigme bureaucratique"]
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Paradigme de régulation fondé sur la formalisation des règles, la hiérarchie des fonctions, lécriture administrative et la procédure."
concepts: ["bureaucratie", "regle", "procedure", "arcalite"]
links: []
kind: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "scene-depreuve"]
opposedTo: []
seeAlso: ["gouvernementalite", "cybernetique", "liberalisme-proprietaire"]
---
La bureaucratie désigne le paradigme de régulation dans lequel la tenue de lordre repose sur des procédures explicites, des chaînes de compétence, des écritures, des classifications et des règles de traitement relativement stables.
## Distinction
Ce paradigme ne se réduit pas à une simple lourdeur administrative. Il constitue une forme historique majeure de mise en ordre des sociétés complexes par formalisation, archive, traçabilité et hiérarchisation.
## Fonction dans le paysage théorique
Il permet de penser comment des ordres durables se stabilisent à travers des dispositifs impersonnels, des routines de traitement et des chaînes dexécution normalisées.
## Rapport à larchicratie
Larchicratie ne remplace pas lanalyse bureaucratique, mais lenglobe et la déplace. Elle montre que la bureaucratie nest pas seulement une organisation, mais une certaine articulation darcalité, de cratialité et, parfois, darchicration. Elle permet aussi de diagnostiquer quand la bureaucratie cesse dêtre exposable et glisse vers lautarchicratie.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Arcalité](/glossaire/arcalite/)
- [Cratialité](/glossaire/cratialite/)

View File

@@ -0,0 +1,102 @@
---
title: "Cartographie des scènes manquantes"
term: "Cartographie des scènes manquantes"
aliases: []
urlAliases: ["cartographie-des-scenes-manquantes"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Travail systématique qui consiste à repérer, dans un système dIA ou une architecture décisionnelle, où se prennent les décisions effectives, où la parole circule sans prise, et où de nouvelles scènes doivent être instituées."
concepts: ["cartographie-des-scenes-manquantes", "scene-manquante", "hypertopie", "hypotopie", "atopie", "archicration", "programmation-scénique"]
links: []
kind: "dispositif"
family: "dispositif-ia"
domain: "cas-ia"
level: "avance"
related: ["scene-depreuve", "scene-manquante", "scene-empechee", "hypertopie", "hypotopie", "atopie", "budget-scenique", "audit-archicratique", "tribunal-de-lalgorithme", "archidiagnostic"]
opposedTo: ["obliteration-archicratique"]
seeAlso: ["synchrotopie", "archicration-obliteree", "journal-de-justification"]
---
La cartographie des scènes manquantes désigne le travail systématique qui consiste à repérer, dans un système dIA ou dans une architecture décisionnelle, les lieux où se prennent réellement les décisions, les lieux où la parole existe sans prise réelle, et les lieux où de nouvelles scènes devraient être instituées.
Elle vise ainsi à identifier les lacunes scéniques du système et les endroits où de nouvelles archicrations doivent être construites, articulées ou renforcées.
## Distinction
Cette cartographie nest pas une simple description organisationnelle.
Elle ne consiste pas seulement à dresser lorganigramme dun dispositif. Elle cherche à comprendre la géographie effective de la régulation :
- où se décide réellement lessentiel ;
- où des acteurs peuvent parler mais presque sans infléchir ;
- où des scènes ne sont que fantomatiques ;
- où il nexiste tout simplement aucun format dépreuve ;
- quel type de scène devrait venir combler chaque trou.
Elle relève donc dune topologie scénique, pas dun relevé administratif ordinaire.
## Fonction dans le cas IA
Dans les systèmes dIA, les chaînes de décision sont souvent éclatées entre plusieurs lieux :
- équipes de conception ;
- directions métiers ;
- prestataires ;
- autorités de contrôle ;
- interfaces usagers ;
- services dexécution ;
- arènes de plainte, quand elles existent.
La cartographie des scènes manquantes permet de repérer, parmi ces lieux :
- les **hypertopies**, où se concentrent des prises décisives aux effets étendus ;
- les **hypotopies**, où la régulation opère sous la scène visible ;
- les **atopies**, où le lieu de comparution devient introuvable ;
- les véritables **scènes manquantes**, là où aucun format recevable dépreuve nexiste encore.
## Portée archicratique
Dans une perspective archicratique, ce dispositif est décisif car il rend visible la structure spatiale et institutionnelle de lépreuve.
Il permet de comprendre que labsence de scène nest pas toujours une absence pure et simple. Elle peut aussi prendre la forme dun déplacement, dune pauvreté de prises, dune scène empêchée ou dune simulation.
La cartographie révèle ainsi où la régulation doit être rouvrable, et où elle demeure verrouillée.
## Enjeu politique
Lenjeu est de passer dune critique diffuse des systèmes dIA à une politique des lieux dépreuve.
Autrement dit, il ne suffit pas de dire quun système manque de transparence ou de contestabilité. Il faut encore localiser précisément les points où la scène est absente, affaiblie, capturée ou introuvable, puis déterminer quel type de scène devrait venir y répondre.
Cette localisation conditionne ensuite la construction de dispositifs nouveaux.
## Limites
La cartographie peut rester abstraite si elle ne débouche pas sur des transformations institutionnelles effectives.
Elle peut aussi être neutralisée si les topologies identifiées ne sont pas reliées :
- à des ressources scéniques ;
- à des prises documentaires ;
- à des procédures de révision ;
- à des scènes réellement dotées deffet.
Elle est donc un instrument de diagnostic et de programmation, non un remède suffisant par elle-même.
## Renvois
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Scène manquante](/glossaire/scene-manquante/)
- [Scène empêchée](/glossaire/scene-empechee/)
- [Audit archicratique](/glossaire/audit-archicratique/)
- [Budget scénique](/glossaire/budget-scenique/)
- [Tribunal de lalgorithme](/glossaire/tribunal-de-lalgorithme/)
- [Hypertopie](/glossaire/hypertopie/)
- [Hypotopie](/glossaire/hypotopie/)
- [Atopie](/glossaire/atopie/)
- [Synchrotopie](/glossaire/synchrotopie/)
- [Oblitération archicratique](/glossaire/obliteration-archicratique/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)
- [Archidiagnostic](/glossaire/archidiagnostic/)
- [Journal de justification](/glossaire/journal-de-justification/)

View File

@@ -0,0 +1,67 @@
---
title: "Co-viabilisation"
term: "Co-viabilisation"
aliases: []
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Processus par lequel des tensions, des formes de vie et des intérêts hétérogènes deviennent mutuellement tenables dans un cadre régulatoire donné."
concepts: ["co-viabilisation", "co-viabilite", "regulation", "composition", "tension", "ajustement"]
links: []
kind: "concept"
family: "dynamique"
domain: "transversal"
level: "intermediaire"
related: ["co-viabilite", "tension", "archicration", "archicratie", "scene-depreuve", "archicratisation", "monde-instituable", "regime-de-co-viabilite", "regulation-morphogenetique-des-interdependances"]
opposedTo: ["desarchicratisation"]
seeAlso: ["archicration-obliteree", "autarchicratie"]
---
La co-viabilisation désigne le processus par lequel des tensions, des formes de vie, des temporalités et des intérêts hétérogènes deviennent mutuellement tenables dans un cadre régulatoire donné.
Elle ne désigne pas un état dharmonie, mais une opération continue dajustement, de mise en compatibilité relative et de tenue des écarts.
## Distinction
La co-viabilisation ne doit pas être confondue avec la [Co-viabilité](/glossaire/co-viabilite/).
La co-viabilité désigne le résultat toujours provisoire dune tenue.
La co-viabilisation désigne le travail même par lequel cette tenue est produite, défendue, corrigée ou réinstituée.
Autrement dit :
- la co-viabilité est un régime de tenue ;
- la co-viabilisation est le procès qui le rend possible.
## Fonction dans le paradigme
La notion de co-viabilisation permet de penser la régulation comme processus et non comme simple structure figée.
Elle oblige à analyser :
- comment des tensions deviennent traitables ;
- comment des incompatibilités sont redistribuées ;
- comment des scènes dépreuve permettent la correction ;
- comment des dispositifs soutiennent ou fragilisent la tenue du collectif.
Elle est donc au cœur de lintelligence dynamique de larchicratie.
## Portée analytique
Parler de co-viabilisation revient à refuser deux illusions :
- celle dun ordre auto-stable ;
- celle dune suppression complète des tensions.
Une société tient parce quelle co-viabilise, non parce quelle élimine toute conflictualité.
## Renvois
- [Co-viabilité](/glossaire/co-viabilite/)
- [Tension](/glossaire/tension/)
- [Archicration](/glossaire/archicration/)
- [Archicratie](/glossaire/archicratie/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Régime de co-viabilité](/glossaire/regime-de-co-viabilite/)
- [Archicratisation](/glossaire/archicratisation/)
- [Désarchicratisation](/glossaire/desarchicratisation/)

View File

@@ -9,11 +9,12 @@ definitionShort: "Capacité dun système social à maintenir la continuité d
concepts: ["co-viabilite", "archicratie", "arcalite", "cratialite", "archicration", "tension"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "archicration", "tension"]
opposedTo: ["autarchicratie"]
seeAlso: ["scene-depreuve", "obliteration-archicratique"]
seeAlso: ["scene-depreuve", "obliteration-archicratique", "coexistence-ontologique-et-necessite-regulatrice", "formes-de-vie-et-cadres-dhabitabilite", "subsistance-vivante-et-captation-capitalistique"]
---
La co-viabilité désigne la capacité dun système social à maintenir la continuité de son organisation collective en rendant compatibles, sans les abolir, une pluralité de tensions, darcalités et de cratialités.
@@ -52,7 +53,7 @@ La co-viabilité peut être compromise par :
- laccumulation non régulée des tensions ;
- la rupture des architectures de régulation ;
- lincompatibilisation durable de dynamiques sociales majeures ;
- lincompatibili durable de dynamiques sociales majeures ;
- la dérive autarchicratique ;
- les formes de domination qui bloquent la révision des structures.

View File

@@ -0,0 +1,64 @@
---
title: "Tension entre co-existence ontologique et nécessité régulatrice"
term: "Co-existence ontologique / nécessité régulatrice"
aliases: ["Tension entre co-existence ontologique et nécessité régulatrice"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Tension irréductible entre lhétérogénéité radicale des êtres, des mondes et des modes dexistence, et la nécessité dinstituer malgré tout une scène commune de régulation."
concepts: ["coexistence-ontologique", "necessite-regulatrice", "alterite", "pluralite", "scene-commune", "regulation"]
links: []
kind: "concept"
family: "tension-irreductible"
domain: "transversal"
level: "avance"
related: ["tension", "archicration", "archicratie", "co-viabilite", "scene-depreuve", "cosmopolitique", "technodiversite-et-cosmotechnie", "transduction-et-individuation", "formes-de-vie-et-cadres-dhabitabilite", "souverainetes-territoriales-et-interdependances-globales"]
opposedTo: []
seeAlso: ["egalisation-normative-et-differenciation-singuliere"]
---
La tension entre co-existence ontologique et nécessité régulatrice désigne le conflit structurel entre, dun côté, lhétérogénéité radicale des êtres, des formes de vie, des cultures, des régimes cognitifs ou des entités impliquées dans un monde commun, et, de lautre, la nécessité dinstituer malgré tout une scène de régulation partageable.
Elle est dite irréductible parce quelle touche au point où la régulation ne peut plus présupposer une essence commune préalable.
## Distinction
Cette tension ne se réduit ni au pluralisme culturel, ni à la tolérance, ni à la simple coexistence pacifique.
Elle pose une question plus radicale : comment instituer une scène lorsque les entités concernées ne partagent pas nécessairement les mêmes ontologies, les mêmes critères de validité, les mêmes formats de preuve ni les mêmes rapports au monde ?
Le problème nest donc pas seulement de gérer des différences ; il est de produire des médiations là où le commun nest pas déjà donné.
## Portée archicratique
Dans une perspective archicratique, cette tension est centrale parce quelle définit la condition limite de toute [Archicration](/glossaire/archicration/).
Larchicration ne peut pas attendre lidentité préalable des sujets à réguler.
Elle doit précisément fabriquer des prises, des traductions et des scènes là où le commun manque, demeure fragmentaire ou reste ontologiquement disputé.
Autrement dit, l[Archicratie](/glossaire/archicratie/) ne commence pas quand lunité est acquise ; elle commence quand il faut rendre co-viable une pluralité irréductible.
## Enjeu régulateur
Cette tension devient explosive lorsque :
- la régulation suppose abusivement un socle unique de communauté ;
- une cosmologie particulière simpose comme norme universelle ;
- lhétérogénéité devient si forte quaucune scène commune ne paraît instituable ;
- les formats de preuve et de comparution ne sont plus partageables.
Le défi archicratique consiste ici à instituer sans substantialiser, à réguler sans homogénéiser, à faire comparaître sans réduire.
## Renvois
- [Tension](/glossaire/tension/)
- [Archicration](/glossaire/archicration/)
- [Archicratie](/glossaire/archicratie/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Cosmopolitique](/glossaire/cosmopolitique/)
- [Technodiversité et cosmotechnie](/glossaire/technodiversite-et-cosmotechnie/)
- [Transduction et individuation](/glossaire/transduction-et-individuation/)
- [Égalisation normative / différenciation singulière](/glossaire/egalisation-normative-et-differenciation-singuliere/)
- [Formes de vie / cadres dhabitabilité](/glossaire/formes-de-vie-et-cadres-dhabitabilite/)
- [Souverainetés territoriales / interdépendances globales](/glossaire/souverainetes-territoriales-et-interdependances-globales/)

View File

@@ -0,0 +1,57 @@
---
title: "Conatus et multitude"
term: "Conatus et multitude"
aliases: ["Conatus", "Multitude", "Affects et multitude"]
urlAliases: ["conatus-et-multitude"]
mobilizedAuthors: ["Baruch Spinoza", "Antonio Negri"]
comparisonTraditions: ["Spinozisme politique"]
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Paradigme immanent de régulation dans lequel la tenue du collectif dépend des affects, des puissances dagir et des compositions mouvantes dune multitude de singularités interdépendantes."
concepts: ["conatus-et-multitude", "conatus", "multitude", "affect", "puissance"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "tension", "co-viabilite", "theorie-de-la-resonance"]
opposedTo: ["decisionnisme-souverain", "exception-souveraine"]
seeAlso: ["configuration-et-interdependance", "transduction-et-individuation", "agencement-machinique"]
---
Le conatus et la multitude désignent un paradigme immanent de régulation dans lequel la tenue du collectif dépend des affects, des puissances dagir et des compositions mouvantes dune multitude de singularités interdépendantes.
Lordre ny est pas conçu comme simple application dune norme transcendante, mais comme résultante toujours instable de puissances, daffections et de compositions plus ou moins viables.
## Distinction
Ce paradigme ne renvoie ni à une foule indistincte ni à une spontanéité sans forme.
Le **conatus** désigne leffort par lequel chaque être persévère dans son être, tandis que la **multitude** désigne une pluralité de puissances qui ne se laisse pas réduire à une unité souveraine simple. La régulation y est immanente, affective, relationnelle.
Il se distingue ainsi du [Décisionnisme souverain](/glossaire/decisionnisme-souverain/), qui recentre lordre dans lacte de trancher, et de l[Exception souveraine](/glossaire/exception-souveraine/), qui fait de la suspension un point culminant de tenue.
## Fonction dans le paysage théorique
Ce paradigme permet de penser :
- les dynamiques affectives du collectif ;
- la puissance des compositions immanentes ;
- la conflictualité interne des rapports de force ;
- lémergence dordres non fondés sur une transcendance politique centrale.
## Rapport à larchicratie
L[Archicratie](/glossaire/archicratie/) peut y trouver un point dappui pour penser la régulation comme organisation de tensions réelles entre puissances relationnelles.
Mais elle sen distingue en demandant comment ces compositions deviennent objectivables, transmissibles et comparables. Là où le paradigme du conatus et de la multitude insiste sur limmanence, larchicratie insiste aussi sur les architectures qui rendent cette immanence politiquement et institutionnellement soutenable.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Tension](/glossaire/tension/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Transduction et individuation](/glossaire/transduction-et-individuation/)
- [Configuration et interdépendance](/glossaire/configuration-et-interdependance/)
- [Agencement machinique](/glossaire/agencement-machinique/)
- [Exception souveraine](/glossaire/exception-souveraine/)

View File

@@ -0,0 +1,65 @@
---
title: "Configuration et interdépendance"
term: "Configuration et interdépendance"
aliases: ["Configuration", "Interdépendance", "Autocontrainte"]
urlAliases: ["configuration-et-interdependance"]
mobilizedAuthors: ["Norbert Elias"]
comparisonTraditions: ["sociologie processuelle", "sociologie configurationnelle", "histoire sociale des interdépendances"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Paradigme de régulation dans lequel les formes sociales émergent de chaînes dinterdépendance, de contraintes réciproques et de configurations évolutives qui transforment les acteurs autant quelles les lient."
concepts: ["configuration-et-interdependance", "configuration", "interdependance", "autocontrainte", "processus", "morphogenese"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "co-viabilite", "tension", "conatus-et-multitude", "transduction-et-individuation", "gouvernance-des-communs", "pensee-complexe", "fait-social-total"]
opposedTo: ["decisionnisme-souverain"]
seeAlso: ["domination-legale-rationnelle", "theorie-de-la-justification"]
---
La configuration et linterdépendance désignent un paradigme de régulation dans lequel les formes sociales émergent de chaînes dinterdépendance, de contraintes réciproques et de configurations évolutives qui transforment les acteurs autant quelles les lient.
La société ny est pas pensée comme somme dunités séparées ni comme produit dun pur décret fondateur, mais comme un tissu de dépendances mutuelles en transformation.
## Distinction
Ce paradigme ne se réduit ni à linteraction immédiate ni à une simple théorie des réseaux.
La **configuration** désigne une forme relationnelle évolutive, l**interdépendance** désigne la liaison réciproque des trajectoires, et l**autocontrainte** désigne la manière dont les acteurs intériorisent des contraintes produites par ces configurations elles-mêmes.
## Fonction dans le paysage théorique
Ce paradigme permet de penser :
- la genèse processuelle des formes sociales ;
- la montée en complexité des interdépendances ;
- les contraintes émergentes qui pèsent sur les acteurs ;
- la manière dont les sociétés se configurent historiquement.
## Rapport à larchicratie
Larchicratie rejoint ici lidée quun ordre tient par lorganisation de dépendances, de tensions et de formes de coordination de plus en plus complexes.
Elle sen distingue en cherchant à expliciter comment ces configurations deviennent non seulement effectives, mais aussi lisibles, comparables et politiquement réouvrables. La configuration éclaire le processus ; larchicratie ajoute la question de la comparution et de la co-viabilité.
## Limite archicratique
Le gain eliasien est sa puissance morphogénétique.
Mais son angle mort est quil formalise peu les lieux où la régulation peut être rendue publiquement disputable. Linterdépendance explique la formation de lordre ; elle nexplicite pas encore suffisamment les scènes où cet ordre peut être repris.
## Renvois
- [Conatus et multitude](/glossaire/conatus-et-multitude/)
- [Transduction et individuation](/glossaire/transduction-et-individuation/)
- [Pensée complexe](/glossaire/pensee-complexe/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Fait social total](/glossaire/fait-social-total/)
- [Théorie de la justification](/glossaire/theorie-de-la-justification/)
- [Archicratie](/glossaire/archicratie/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Tension](/glossaire/tension/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)

View File

@@ -2,36 +2,80 @@
title: "Contractualisme hobbesien"
term: "Contractualisme hobbesien"
aliases: ["Hobbes", "Contractualisme de Hobbes"]
urlAliases: ["contractualisme-hobbesien"]
mobilizedAuthors: ["Thomas Hobbes"]
comparisonTraditions: ["contractualisme classique", "philosophie politique moderne", "théorie de la souveraineté"]
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Paradigme politique fondant lordre sur la sortie de la guerre de tous contre tous par linstitution dun souverain garant de la sécurité."
concepts: ["contractualisme-hobbesien", "souverainete", "ordre", "tension"]
version: "0.2.0"
definitionShort: "Doctrine fondatrice faisant de la sortie de la guerre de tous contre tous et de linstitution dun souverain garant de la sécurité le principe premier de lordre politique."
concepts: ["contractualisme-hobbesien", "souverainete", "ordre", "securite", "contrat", "tension"]
links: []
kind: "doctrine"
family: "doctrine"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "tension", "co-viabilite"]
opposedTo: ["volonte-generale"]
seeAlso: ["liberalisme-proprietaire", "bureaucratie", "gouvernementalite"]
related: ["decisionnisme-souverain", "exception-souveraine", "archicratie", "archicration", "tension", "co-viabilite", "domination-legale-rationnelle", "droit-naturel-et-propriete"]
opposedTo: ["volonte-generale", "democratie-deliberative", "gouvernance-des-communs"]
seeAlso: ["gouvernementalite", "volonte-generale"]
---
Le contractualisme hobbesien désigne le paradigme selon lequel lordre politique tire sa légitimité première de sa capacité à conjurer la conflictualité destructrice et à garantir la sécurité commune.
Le contractualisme hobbesien désigne la doctrine selon laquelle lordre politique tire sa légitimité première de sa capacité à conjurer la conflictualité destructrice et à garantir la sécurité commune.
Dans cette perspective, le problème premier nest ni la participation, ni la délibération, ni la pluralité des scènes de justification. Le problème premier est la désagrégation possible du collectif. Lordre vaut donc dabord comme puissance de pacification.
## Distinction
Ce paradigme ne pense pas dabord la politique à partir de la délibération publique, de la participation civique ou de la pluralité des scènes de justification. Il la pense à partir du problème de la désagrégation et de la nécessité dun principe de centralisation.
Cette doctrine ne pense pas la politique depuis la pluralité du commun, mais depuis le risque de son effondrement.
Le contrat ny est pas principalement une procédure dialogique. Il est lopération fondatrice par laquelle les individus transfèrent leur puissance à une autorité commune capable dimposer un cadre stable.
Elle se distingue donc :
- de la [Volonté générale](/glossaire/volonte-generale/), qui pense la légitimité depuis lauto-législation du peuple ;
- de la [Démocratie délibérative](/glossaire/democratie-deliberative/), qui insiste sur la justification publique ;
- de la [Gouvernance des communs](/glossaire/gouvernance-des-communs/), qui privilégie des régulations distribuées.
## Fonction dans le paysage théorique
Il constitue une matrice majeure de pensée de lordre : la régulation y apparaît comme réponse à la menace de dissolution. Le pouvoir vaut dabord par sa fonction de tenue et de pacification.
Le contractualisme hobbesien constitue une matrice majeure de pensée de lordre moderne.
Il permet de penser :
- la centralité de la sécurité ;
- la nécessité dun principe dunification ;
- la relation entre peur, désordre et fondation de lautorité ;
- la tendance à reconduire la régulation à une fonction de pacification verticale.
## Rapport à larchicratie
Larchicratie se distingue du contractualisme hobbesien en ce quelle ne réduit pas la tenue dun ordre à lunité souveraine ni à la seule sortie du chaos. Elle déplace lanalyse vers les architectures de régulation, les scènes dépreuve et les conditions concrètes de co-viabilité.
Larchicratie se distingue du contractualisme hobbesien en ce quelle ne réduit pas la tenue dun ordre à lunité souveraine ni à la seule sortie du chaos.
Elle déplace lanalyse :
- du contrat fondateur vers les architectures de régulation ;
- de la centralisation de la souveraineté vers la composition darcalités, de cratialités et de scènes ;
- de la simple pacification vers la [Co-viabilité](/glossaire/co-viabilite/) des tensions.
Du point de vue archicratique, Hobbes voit puissamment le besoin de tenue, mais il ne distingue pas encore nettement régulation et domination. Sa cratialité est coercitive, son arcalité totalisante, et son archicration demeure quasi absente. Cette limite est explicitement soulignée dans le chapitre 3.
## Limite archicratique
Le gain hobbesien est clair : il rend pensable la nécessité dun ordre fort lorsque la désagrégation menace.
Mais son angle mort est tout aussi clair : la sécurité risque dabsorber la scène, et la fondation de se substituer à toute révision ultérieure.
Le contractualisme hobbesien demeure ainsi une doctrine fondatrice décisive, mais insuffisante pour penser une régulation tensionnelle, modulante et révisable.
## Renvois
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Volonté générale](/glossaire/volonte-generale/)
- [Droit naturel et propriété](/glossaire/droit-naturel-et-propriete/)
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Tension](/glossaire/tension/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Gouvernementalité](/glossaire/gouvernementalite/)

View File

@@ -0,0 +1,93 @@
---
title: "Cosmopolitique"
term: "Cosmopolitique"
aliases: []
urlAliases: ["cosmopolitique"]
mobilizedAuthors: ["Isabelle Stengers"]
comparisonTraditions: ["philosophie des sciences", "anthropologie politique", "écologie politique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Paradigme politique selon lequel les collectifs humains doivent composer leurs institutions et leurs décisions en tenant compte de la pluralité des êtres, des milieux et des mondes engagés dans une même situation."
concepts: ["cosmopolitique", "pluralite-des-mondes", "composition", "milieu", "situation", "coexistence"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "co-viabilite", "coexistence-ontologique-et-necessite-regulatrice", "formes-de-vie-et-cadres-dhabitabilite", "souverainetes-territoriales-et-interdependances-globales"]
opposedTo: ["decisionnisme-souverain"]
seeAlso: ["technodiversite-et-cosmotechnie", "theorie-de-lacteur-reseau", "gouvernance-des-communs", "configuration-et-interdependance"]
---
La cosmopolitique désigne un paradigme politique selon lequel les collectifs humains ne peuvent pas instituer un ordre commun en faisant comme si seuls comptaient les acteurs humains déjà reconnus dans les formats politiques ordinaires.
Elle propose au contraire de penser les situations comme des compositions plus vastes, impliquant des milieux, des êtres, des techniques, des attachements, des formes de vie et parfois des mondes hétérogènes qui ne se laissent pas aisément rabattre sur une scène politique préformée.
## Distinction
La cosmopolitique ne se réduit ni à un universalisme généreux, ni à une simple écologie morale, ni à une extension rhétorique du politique.
Elle ne dit pas que “tout” devrait simplement être inclus dans une grande délibération harmonieuse.
Elle affirme plutôt quaucune scène commune légitime ne peut être construite sérieusement sans prendre acte du fait que les situations engagent des pluralités dêtres, de contraintes, dattachements et de mondes qui ne parlent pas davance le même langage.
Elle se distingue ainsi :
- du [Décisionnisme souverain](/glossaire/decisionnisme-souverain/), qui reconcentre la tenue du commun dans lacte de trancher ;
- dune gouvernementalité technocratique, qui traite les situations comme de simples problèmes à administrer ;
- dun pluralisme faible, qui juxtapose des points de vue sans retravailler les conditions de leur composition.
## Une politique de composition
La cosmopolitique ne cherche pas dabord à produire un consensus total.
Elle cherche à organiser des processus de composition dans lesquels des existences hétérogènes puissent être prises au sérieux sans être immédiatement réduites à des variables commensurables. Cela vaut pour les vivants, les milieux, les formes techniques, les attachements collectifs, mais aussi pour les régimes de savoir ou les cadres dhabitabilité.
La difficulté nest donc pas seulement de “faire participer davantage”.
Elle est dinstituer une scène où ce qui compte nest pas déjà entièrement défini.
## Fonction dans le paysage théorique
Ce paradigme permet de penser :
- les conflits écologiques et technoscientifiques ;
- la pluralité des mondes engagés dans une même situation ;
- les difficultés de composition entre ontologies, intérêts et milieux hétérogènes ;
- la nécessité de scènes plus attentives aux conséquences de laction sur les vivants et sur les cadres dhabitabilité.
Il éclaire particulièrement les situations où la décision classique apparaît trop courte au regard de ce quelle affecte réellement.
## Rapport à larchicratie
L[Archicratie](/glossaire/archicratie/) trouve dans la cosmopolitique une ressource décisive pour penser que la régulation ne porte jamais seulement sur des sujets abstraits déjà constitués, mais sur des coexistences concrètes, fragiles, hétérogènes et souvent multi-scalaires.
Elle sen distingue toutefois par son exigence propre : décrire comment cette composition devient institutionnellement soutenable, scéniquement adressable et politiquement révisable.
Autrement dit, la cosmopolitique rappelle quaucune scène nest légitime si elle oublie les mondes quelle engage ; larchicratie demande en plus par quelles prises, quels dispositifs et quelles scènes de comparution cette pluralité peut devenir traitable sans être détruite.
## Extension contemporaine
Dans les configurations techniques contemporaines, la cosmopolitique prend une portée particulière.
Lorsquun système numérique, logistique ou algorithmique redessine les lignes de visibilité, daudibilité et dhabitabilité entre humains, institutions et milieux, la question nest plus seulement de savoir sil est efficace, mais quels mondes il configure, quelles existences il rend recevables, et quelles autres il marginalise.
Une cosmopolitique des systèmes techniques ne commence donc pas après la technique ; elle commence dans la description même des partages quelle recompose.
## Limite archicratique
Le gain cosmopolitique est majeur : elle interdit de présupposer un commun déjà constitué.
Mais son angle mort possible est de ne pas toujours expliciter suffisamment les formes institutionnelles, documentaires et scéniques par lesquelles cette composition des mondes devient réellement opposable, arbitrable et révisable.
Larchicratie prolonge alors cette intuition en demandant comment instituer des scènes capables de faire comparaître des mondes hétérogènes sans les écraser sous une métrique unique ni les abandonner à une coexistence purement descriptive.
## Renvois
- [Archicratie](/glossaire/archicratie/)
- [Co-viabilité](/glossaire/co-viabilite/)
- [Co-existence ontologique / nécessité régulatrice](/glossaire/coexistence-ontologique-et-necessite-regulatrice/)
- [Formes de vie / cadres dhabitabilité](/glossaire/formes-de-vie-et-cadres-dhabitabilite/)
- [Souverainetés territoriales / interdépendances globales](/glossaire/souverainetes-territoriales-et-interdependances-globales/)
- [Technodiversité et cosmotechnie](/glossaire/technodiversite-et-cosmotechnie/)
- [Théorie de lacteur-réseau](/glossaire/theorie-de-lacteur-reseau/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Configuration et interdépendance](/glossaire/configuration-et-interdependance/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)

View File

@@ -0,0 +1,102 @@
---
title: "Coupe-circuit citoyen"
term: "Coupe-circuit citoyen"
aliases: []
urlAliases: ["coupe-circuit-citoyen"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Dispositif permettant dinterrompre, suspendre ou débrancher provisoirement leffet dun système dIA lorsque les personnes affectées, ou une instance habilitée, estiment que la scène darchicration est devenue insuffisante, oblitérée ou défaillante."
concepts: ["coupe-circuit-citoyen", "suspension", "interruption", "archicration", "scene-depreuve", "garantie-civique", "urgence"]
links: []
kind: "dispositif"
family: "dispositif-ia"
domain: "cas-ia"
level: "avance"
related: ["archicration", "scene-depreuve", "droit-au-differe-contradictoire", "tribunal-de-lalgorithme", "budget-scenique", "cartographie-des-scenes-manquantes", "visa-daffectation"]
opposedTo: ["autarchicratie", "preemption-algorithmique"]
seeAlso: ["archicration-obliteree", "journal-de-justification", "audit-archicratique"]
---
Le coupe-circuit citoyen désigne le dispositif par lequel leffet dun système dIA peut être interrompu, suspendu ou débranché provisoirement lorsquil apparaît que la scène darchicration est insuffisante, oblitérée ou défaillante.
Il ne sagit pas dun rejet général de la technique. Il sagit dun mécanisme de sauvegarde politique permettant dempêcher quun dispositif continue de produire des effets alors même que ses prises de contestation, de justification ou de révision sont devenues trop faibles.
Le coupe-circuit citoyen est donc un droit darrêt institué.
## Distinction
Ce dispositif ne se confond ni avec une simple possibilité de recours après coup, ni avec un veto arbitraire.
Le recours conteste un effet déjà produit.
Le coupe-circuit, lui, suspend lenchaînement des effets tant que les conditions minimales dune archicration recevable ne sont pas réunies.
Il doit donc être défini par des critères, des seuils, des procédures dactivation et des effets juridiques ou institutionnels clairs.
## Fonction régulatrice
Dans le cas IA, le coupe-circuit citoyen remplit une fonction de sûreté institutionnelle.
Il sert lorsque :
- le système produit des effets massifs sans scène de reprise suffisante ;
- les sorties sont appliquées malgré de fortes incertitudes ;
- les personnes concernées ne peuvent plus faire valoir un différé contradictoire réel ;
- la chaîne documentaire ou justificative est lacunaire ;
- la scène existante est devenue purement décorative.
Dans ces cas, le coupe-circuit réintroduit une capacité collective darrêt.
## Problème traité
Le problème traité est celui de la continuation automatique dun pouvoir devenu indisputable dans les faits.
Beaucoup de systèmes contemporains sont conçus pour continuer à fonctionner tant quaucun incident technique majeur napparaît. Le coupe-circuit citoyen affirme au contraire quun déficit scénique ou civique peut être, lui aussi, un motif légitime de suspension.
Il déplace donc lidée même de sûreté : la sûreté nest pas seulement technique, elle est aussi archicratique.
## Scène concernée
Ce dispositif concerne les scènes limites où la contestation narrive plus à infléchir la machine régulatrice.
Il suppose lexistence :
- dune procédure dactivation ;
- dune instance compétente ou dun seuil citoyen recevable ;
- dun cadre de réexamen pendant la suspension ;
- dun chemin clair de reprise, de transformation ou dabandon du dispositif.
## Portée critique
Le coupe-circuit citoyen a une portée critique majeure : il rend pensable quun système puisse être politiquement stoppé avant même dêtre techniquement défaillant.
Il rappelle que la légitimité dun dispositif ne dépend pas seulement de son efficacité, mais aussi de la qualité des scènes où il peut être mis à lépreuve.
Il agit ainsi comme contrepoids à lautarchicration.
## Limites
Un coupe-circuit mal conçu peut être soit inopérant, soit purement symbolique.
Pour éviter cela, il faut :
- des conditions dactivation réalistes ;
- des effets juridiques ou institutionnels clairs ;
- un délai dinstruction défini ;
- une articulation avec des scènes capables de reprendre la question de fond.
Sans cela, le dispositif noffre quune promesse sans prise.
## Renvois
- [Archicration](/glossaire/archicration/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Droit au différé contradictoire](/glossaire/droit-au-differe-contradictoire/)
- [Tribunal de lalgorithme](/glossaire/tribunal-de-lalgorithme/)
- [Budget scénique](/glossaire/budget-scenique/)
- [Cartographie des scènes manquantes](/glossaire/cartographie-des-scenes-manquantes/)
- [Journal de justification](/glossaire/journal-de-justification/)
- [Visa daffectation](/glossaire/visa-daffectation/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Autarchicratie](/glossaire/autarchicratie/)
- [Archicration oblitérée](/glossaire/archicration-obliteree/)

View File

@@ -9,11 +9,12 @@ definitionShort: "Vecteur opératoire et transformateur de la régulation : ense
concepts: ["cratialite", "archicratie", "arcalite", "archicration", "tension", "co-viabilite"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "archicration", "tension", "co-viabilite"]
related: ["archicratie", "arcalite", "archicration", "tension", "co-viabilite", "agencement-machinique", "cybernetique", "gouvernementalite-algorithmique"]
opposedTo: ["autarchicratie"]
seeAlso: ["obliteration-archicratique"]
seeAlso: ["obliteration-archicratique", "hypercratialite"]
---
La cratialité désigne le vecteur opératoire et transformateur de toute régulation.

View File

@@ -2,36 +2,71 @@
title: "Cybernétique"
term: "Cybernétique"
aliases: []
urlAliases: ["cybernetique"]
mobilizedAuthors: ["Norbert Wiener"]
comparisonTraditions: ["cybernétique", "théories du contrôle", "pensée des systèmes"]
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Paradigme de régulation centré sur les boucles de rétroaction, le pilotage, linformation, le contrôle et ladaptation des systèmes."
concepts: ["cybernetique", "retroaction", "pilotage", "tension"]
version: "0.2.0"
definitionShort: "Paradigme de régulation centré sur les boucles de rétroaction, le pilotage, linformation, le contrôle, la correction et ladaptation des systèmes."
concepts: ["cybernetique", "retroaction", "pilotage", "information", "controle", "adaptation", "tension"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "tension", "cratialite", "gouvernementalite-algorithmique"]
related: ["archicratie", "tension", "cratialite", "gouvernementalite", "gouvernementalite-algorithmique", "preemption-algorithmique", "regulation-technique-et-legitimation-democratique", "pharmacologie-technique"]
opposedTo: []
seeAlso: ["gouvernementalite", "biopolitique", "autarchicratie"]
seeAlso: ["biopolitique", "technodiversite-et-cosmotechnie", "pensee-complexe"]
---
La cybernétique désigne le paradigme selon lequel un système peut être compris et gouverné à partir de ses flux dinformation, de ses boucles de rétroaction, de ses écarts et de ses mécanismes de correction.
Elle constitue une matrice générale de pensée du pilotage, du contrôle et de ladaptation.
## Distinction
Elle ne se réduit pas à linformatique. Elle constitue une matrice générale de pensée du pilotage, du contrôle et de ladaptation applicable aux machines, aux organisations et aux ensembles sociaux.
La cybernétique ne se réduit pas à linformatique.
Elle fournit une forme générale dintelligibilité dans laquelle la régulation est pensée comme ajustement dynamique dun système à partir dinformations sur ses propres écarts.
Elle se distingue dune souveraineté fondatrice comme dune simple légalité procédurale : elle pense le pouvoir depuis lajustement, le monitoring et la correction.
## Fonction dans le paysage théorique
La cybernétique joue un rôle décisif dans la formation des imaginaires contemporains de régulation : monitorer, corriger, optimiser, stabiliser, ajuster en temps réel.
La cybernétique joue un rôle décisif dans la formation des imaginaires contemporains de régulation :
- monitorer ;
- corriger ;
- optimiser ;
- stabiliser ;
- ajuster en temps réel.
Elle éclaire tout particulièrement les dispositifs techniques, logistiques, informatiques et organisationnels.
## Rapport à larchicratie
Larchicratie dialogue étroitement avec la cybernétique mais sen distingue par son insistance sur la scène, la justification et la comparution. Là où la cybernétique privilégie lefficacité des boucles de pilotage, larchicratie interroge la visibilité des prises, la révisabilité des architectures et la co-viabilité des régulations.
Larchicratie dialogue étroitement avec la cybernétique, car elle aussi prend au sérieux la tension, la régulation et lajustement.
Mais elle sen distingue par son insistance sur la scène, la justification et la comparution. Là où la cybernétique privilégie lefficacité des boucles de pilotage, larchicratie interroge la visibilité des prises, la révisabilité des architectures et la co-viabilité des régulations.
## Limite archicratique
Le gain cybernétique est sa capacité à penser la correction continue.
Mais son angle mort est majeur : la boucle peut fonctionner parfaitement tout en soustrayant ses critères, ses objectifs et ses arbitrages à toute scène dépreuve.
Larchicratie ne refuse donc pas la cybernétique ; elle refuse quelle devienne lunique grammaire de la régulation.
## Renvois
- [Gouvernementalité](/glossaire/gouvernementalite/)
- [Gouvernementalité algorithmique](/glossaire/gouvernementalite-algorithmique/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Pharmacologie technique](/glossaire/pharmacologie-technique/)
- [Technodiversité et cosmotechnie](/glossaire/technodiversite-et-cosmotechnie/)
- [Pensée complexe](/glossaire/pensee-complexe/)
- [Archicratie](/glossaire/archicratie/)
- [Tension](/glossaire/tension/)
- [Cratialité](/glossaire/cratialite/)
- [Tension](/glossaire/tension/)
- [Régulation technique / légitimation démocratique](/glossaire/regulation-technique-et-legitimation-democratique/)

View File

@@ -0,0 +1,78 @@
---
title: "Décisionnisme souverain"
term: "Décisionnisme souverain"
aliases: ["Décisionnisme", "Doctrine décisionniste", "Exception souveraine"]
urlAliases: ["decisionnisme-souverain"]
mobilizedAuthors: ["Carl Schmitt"]
comparisonTraditions: ["décisionnisme", "théorie de la souveraineté", "théologie politique"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Doctrine fondatrice selon laquelle lordre politique se constitue ultimement dans la capacité souveraine à décider de lexception, à suspendre la norme et à imposer un cadre sans médiation dialogique."
concepts: ["decisionnisme-souverain", "decision", "exception", "souverainete", "theologie-politique"]
links: []
kind: "doctrine"
family: "doctrine"
domain: "theorie"
level: "fondamental"
related: ["exception-souveraine", "contractualisme-hobbesien", "archicratie", "archicration", "tension", "preemption-algorithmique"]
opposedTo: ["democratie-deliberative", "dissensus-politique", "gouvernance-des-communs", "lieu-vide-du-pouvoir"]
seeAlso: ["domination-legale-rationnelle", "volonte-generale", "autarchicratie"]
---
Le décisionnisme souverain désigne la doctrine fondatrice selon laquelle lordre politique se constitue ultimement dans la capacité souveraine à décider de lexception, à suspendre la norme et à imposer un cadre sans médiation dialogique.
Il ne pense pas le pouvoir depuis la règle, mais depuis lexception ; non depuis la loi, mais depuis la capacité à la suspendre.
## Distinction
Il ne sagit pas ici dun paradigme régulatoire large, mais dune doctrine de souveraineté.
Le décisionnisme souverain ne décrit pas une composition co-viabilisante de la régulation. Il affirme un geste inaugural de fondation sans justification procédurale, dans lequel lautorité qui fonde na pas besoin dêtre fondée.
Il se distingue donc :
- de la [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/), qui privilégie la règle ;
- de la [Démocratie délibérative](/glossaire/democratie-deliberative/), qui privilégie la publicité de la justification ;
- de la [Gouvernance des communs](/glossaire/gouvernance-des-communs/), qui privilégie des régulations distribuées.
## Fonction dans le paysage théorique
Cette doctrine est décisive pour penser :
- lexception ;
- les régimes durgence ;
- la suspension de la norme ;
- la concentration extrême du pouvoir ;
- les formes unilatérales de régulation imposée.
## Rapport à larchicratie
Larchicratie rencontre ici lun de ses contrepoints doctrinaux les plus radicaux.
Là où le décisionnisme souverain reconcentre la fondation dans un acte dexception, larchicratie cherche à penser des architectures de régulation modulantes, transductives, traversables et contestables.
Elle ne cherche pas seulement qui décide, mais comment une régulation tient, sajuste et se transforme sans se dissoudre ni sabsolutiser.
## Limite archicratique
Le gain décisionniste est sa lucidité sur le fait quaucun ordre ne tient sans pouvoir trancher.
Mais son angle mort est majeur : la scène est rapidement absorbée par le tranchant lui-même, et la décision risque de devenir autojustifiante.
Le chapitre 3 le place ainsi dans une topologie où le principe de fondation se sépare du travail régulateur : lacte de trancher peut reconstruire un ordre, mais sans produire une véritable archicration tensionnelle.
## Renvois
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Contractualisme hobbesien](/glossaire/contractualisme-hobbesien/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Démocratie délibérative](/glossaire/democratie-deliberative/)
- [Dissensus politique](/glossaire/dissensus-politique/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Lieu vide du pouvoir](/glossaire/lieu-vide-du-pouvoir/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Archicratie](/glossaire/archicratie/)
- [Archicration](/glossaire/archicration/)
- [Tension](/glossaire/tension/)
- [Autarchicratie](/glossaire/autarchicratie/)

View File

@@ -0,0 +1,80 @@
---
title: "Démocratie délibérative"
term: "Démocratie délibérative"
aliases: ["Paradigme délibératif"]
urlAliases: ["democratie-deliberative"]
mobilizedAuthors: ["Jürgen Habermas", "John Rawls"]
comparisonTraditions: ["démocratie délibérative", "théorie de lespace public", "philosophie politique procédurale"]
edition: "glossaire"
status: "referentiel"
version: "0.2.0"
definitionShort: "Paradigme politique fondant la légitimité de lordre collectif sur la discussion publique, léchange argumenté et la formation procédurale dun accord révisable."
concepts: ["democratie-deliberative", "deliberation", "discussion", "legitimite", "espace-public", "revision"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["volonte-generale", "archicration", "scene-depreuve", "archicratie", "gouvernance-des-communs", "theorie-de-la-justification", "dissensus-politique", "lieu-vide-du-pouvoir"]
opposedTo: ["decisionnisme-souverain", "exception-souveraine", "preemption-algorithmique"]
seeAlso: ["domination-legale-rationnelle", "gouvernementalite"]
---
La démocratie délibérative désigne le paradigme politique selon lequel la légitimité dun ordre collectif doit se fonder sur la discussion publique, léchange argumenté et la formation procédurale dun accord révisable.
Dans cette perspective, la décision nest pas première. Ce qui importe dabord est la qualité des conditions dans lesquelles les normes, orientations ou choix collectifs peuvent être discutés, justifiés, contestés et reformulés.
## Distinction
La démocratie délibérative ne se réduit ni au vote majoritaire ni à lexistence abstraite dune opinion publique.
Elle suppose des dispositifs concrets de publicité, dargumentation, de révision et de participation dans lesquels les acteurs peuvent faire valoir des raisons, contester des positions et contribuer à la formation du commun.
Elle se distingue ainsi :
- du [Décisionnisme souverain](/glossaire/decisionnisme-souverain/), qui privilégie le moment du tranchant ;
- de l[Exception souveraine](/glossaire/exception-souveraine/), qui justifie la suspension des médiations ;
- de la [Préemption algorithmique](/glossaire/preemption-algorithmique/), qui neutralise lépreuve avant sa comparution.
## Fonction dans le paysage théorique
Ce paradigme fournit une ressource majeure pour penser :
- lespace public ;
- la justification collective des normes ;
- la légitimité procédurale ;
- la révisabilité des décisions ;
- la publicité des conflits.
Il constitue une référence essentielle pour toute pensée qui refuse de réduire lordre à la seule souveraineté, à la seule administration ou à la seule optimisation technique.
## Rapport à larchicratie
Larchicratie rejoint la démocratie délibérative en ce quelle accorde une importance décisive à la possibilité de rendre les régulations visibles, discutables et révisables.
Mais elle sen distingue en ce quelle ne centre pas exclusivement lanalyse sur les procédures discursives. Elle cherche à décrire plus largement les architectures matérielles, techniques, administratives et symboliques qui rendent ou non possibles de telles scènes.
Le chapitre 3 situe dailleurs Habermas comme contre-prise nécessaire à Weber : la délibération réintroduit la possibilité dun retour sur décision là où la règle risquerait de sauto-perpétuer.
## Limite archicratique
Le gain délibératif est évident : il rend pensable la réversibilité publique de la norme.
Mais son angle mort tient aux conditions réelles de la symétrie discursive : la scène peut exister formellement sans être habitable, la discussion peut être saturée par les inégalités de ressources, et la publicité peut rester sans prise sur les infrastructures effectives.
Du point de vue archicratique, la délibération est donc une scène majeure, mais non suffisante. Elle doit être arrimée à des prises documentaires, à des dispositifs exécutoires et à des médiations institutionnelles robustes.
## Renvois
- [Volonté générale](/glossaire/volonte-generale/)
- [Décisionnisme souverain](/glossaire/decisionnisme-souverain/)
- [Exception souveraine](/glossaire/exception-souveraine/)
- [Gouvernance des communs](/glossaire/gouvernance-des-communs/)
- [Dissensus politique](/glossaire/dissensus-politique/)
- [Lieu vide du pouvoir](/glossaire/lieu-vide-du-pouvoir/)
- [Théorie de la justification](/glossaire/theorie-de-la-justification/)
- [Domination légale-rationnelle](/glossaire/domination-legale-rationnelle/)
- [Préemption algorithmique](/glossaire/preemption-algorithmique/)
- [Archicration](/glossaire/archicration/)
- [Scène dépreuve](/glossaire/scene-depreuve/)
- [Archicratie](/glossaire/archicratie/)

Some files were not shown because too many files have changed in this diff Show More