Compare commits

...

14 Commits

Author SHA1 Message Date
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
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
63 changed files with 2730 additions and 1198 deletions

View File

@@ -297,6 +297,19 @@ jobs:
docker image tag archicratie-web:blue "archicratie-web:blue.BAK.${TS}" || true docker image tag archicratie-web:blue "archicratie-web:blue.BAK.${TS}" || true
docker image tag archicratie-web:green "archicratie-web:green.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 compose -p "$PROJ" -f docker-compose.yml build web_blue
docker rm -f archicratie-web-blue || true docker rm -f archicratie-web-blue || true
docker compose -p "$PROJ" -f docker-compose.yml up -d --force-recreate --remove-orphans web_blue 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/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/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)" 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 "canonical(blue)=$CANON"
echo "$CANON" | grep -q 'https://staging\.archicratie\.trans-hands\.synology\.me/' || { 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 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 # build/restart green
if ! docker compose -p "$PROJ" -f docker-compose.yml build web_green; then if ! docker compose -p "$PROJ" -f docker-compose.yml build web_green; then
echo "❌ build green failed"; rollback; exit 4 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/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/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)" 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 "canonical(green)=$CANON"
echo "$CANON" | grep -q 'https://archicratie\.trans-hands\.synology\.me/' || { echo "$CANON" | grep -q 'https://archicratie\.trans-hands\.synology\.me/' || {

3
.gitignore vendored
View File

@@ -30,4 +30,5 @@ public/favicon_io.zip
.DS_Store .DS_Store
# local temp workspace # local temp workspace
.tmp/ .tmp/
public/__ops/health.json

File diff suppressed because it is too large Load Diff

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

@@ -2,6 +2,8 @@
"/archicrat-ia/prologue/": { "/archicrat-ia/prologue/": {
"p-0-d7974f88": "p-0-e729df02", "p-0-d7974f88": "p-0-e729df02",
"p-17-b8c5bf21": "p-17-3deef56b", "p-17-b8c5bf21": "p-17-3deef56b",
"p-22-a416d473": "p-22-5bfa283b",
"p-23-d91a7b78": "p-23-0e7b37e9",
"p-4-8ed4f807": "p-4-90b2a1cc", "p-4-8ed4f807": "p-4-90b2a1cc",
"p-5-85126fa5": "p-5-d788c546", "p-5-85126fa5": "p-5-d788c546",
"p-7-64a0ca9c": "p-7-4efdb1d4" "p-7-64a0ca9c": "p-7-4efdb1d4"

View File

@@ -26,7 +26,7 @@ const fondamentaux = fondamentauxWanted
function resolveList(slugs = []) { function resolveList(slugs = []) {
return slugs return slugs
.map((slug) => bySlug.get(slug)) .map((slug) => bySlug.get(String(slug || "").trim()))
.filter(Boolean); .filter(Boolean);
} }
@@ -42,43 +42,138 @@ function uniqueBySlug(entries) {
return out; return out;
} }
const relatedEntries = uniqueBySlug(resolveList(currentEntry.data.related ?? [])) function sortByTerm(entries = []) {
.sort((a, b) => collator.compare(a.data.term, b.data.term)); return [...entries].sort((a, b) => collator.compare(a.data.term, b.data.term));
}
const opposedEntries = uniqueBySlug(resolveList(currentEntry.data.opposedTo ?? [])) function familyOf(entry) {
.sort((a, b) => collator.compare(a.data.term, b.data.term)); return entry?.data?.family ?? "";
}
const seeAlsoEntries = uniqueBySlug(resolveList(currentEntry.data.seeAlso ?? [])) function kindOf(entry) {
.sort((a, b) => collator.compare(a.data.term, b.data.term)); return entry?.data?.kind ?? "";
}
const paradigmes = [...allEntries] const relatedEntries = sortByTerm(
.filter((e) => e.data.kind === "paradigme" && slugOf(e) !== currentSlug) uniqueBySlug(resolveList(currentEntry.data.related ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term)); );
function contextualParadigmsFor(entry) { const opposedEntries = sortByTerm(
const relatedParadigms = (entry.data.related ?? []) uniqueBySlug(resolveList(currentEntry.data.opposedTo ?? []))
.map((slug) => bySlug.get(slug)) );
.filter((e) => e && e.data.kind === "paradigme");
const seeAlsoParadigms = (entry.data.seeAlso ?? []) const seeAlsoEntries = sortByTerm(
.map((slug) => bySlug.get(slug)) uniqueBySlug(resolveList(currentEntry.data.seeAlso ?? []))
.filter((e) => e && e.data.kind === "paradigme"); );
const opposedParadigms = (entry.data.opposedTo ?? []) const familyLabels = {
.map((slug) => bySlug.get(slug)) "concept-fondamental": "Concept fondamental",
.filter((e) => e && e.data.kind === "paradigme"); scene: "Scène",
dynamique: "Dynamique",
pathologie: "Pathologie",
topologie: "Topologie",
"meta-regime": "Méta-régime",
paradigme: "Paradigme",
doctrine: "Doctrine",
verbe: "Verbe",
"dispositif-ia": "Dispositif IA",
"tension-irreductible": "Tension irréductible",
};
const merged = uniqueBySlug([ const kindLabels = {
...relatedParadigms, concept: "Concept",
...seeAlsoParadigms, diagnostic: "Diagnostic",
...opposedParadigms, topologie: "Topologie",
]); verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
if (merged.length > 0) { const domainLabels = {
return merged.slice(0, 5); transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const currentFamily = familyOf(currentEntry);
const displayFamily =
familyLabels[currentFamily] ??
kindLabels[currentEntry.data.kind] ??
"Fiche";
const displayDomain =
domainLabels[currentEntry.data.domain] ??
currentEntry.data.domain;
const displayLevel =
levelLabels[currentEntry.data.level] ??
currentEntry.data.level;
function entriesOfSameFamily(entry) {
const family = familyOf(entry);
if (!family) return [];
if (family === "concept-fondamental") {
return fondamentaux;
} }
if (entry.data.kind === "paradigme") { return sortByTerm(
allEntries.filter((item) => familyOf(item) === family)
);
}
const sameFamilyEntries = entriesOfSameFamily(currentEntry);
const familySectionTitles = {
"concept-fondamental": "Noyau archicratique",
scene: "Scènes archicratiques",
dynamique: "Dynamiques archicratiques",
pathologie: "Pathologies archicratiques",
topologie: "Topologies voisines",
"meta-regime": "Méta-régimes archicratiques",
paradigme: "Paradigmes voisins",
doctrine: "Doctrines fondatrices",
verbe: "Verbes de la scène",
"dispositif-ia": "Dispositifs IA",
"tension-irreductible": "Tensions irréductibles",
};
const sameFamilyTitle =
familySectionTitles[currentFamily] ?? "Même famille";
function isTheoryEntry(entry) {
const family = familyOf(entry);
const kind = kindOf(entry);
return (
family === "paradigme" ||
family === "doctrine" ||
kind === "paradigme" ||
kind === "doctrine"
);
}
function contextualTheoryFor(entry) {
const fromRelations = uniqueBySlug([
...resolveList(entry.data.related ?? []),
...resolveList(entry.data.seeAlso ?? []),
...resolveList(entry.data.opposedTo ?? []),
])
.filter((item) => slugOf(item) !== currentSlug)
.filter((item) => isTheoryEntry(item));
if (fromRelations.length > 0) {
return sortByTerm(fromRelations).slice(0, 6);
}
if (familyOf(entry) === "paradigme") {
const preferred = [ const preferred = [
"gouvernementalite", "gouvernementalite",
"gouvernementalite-algorithmique", "gouvernementalite-algorithmique",
@@ -100,6 +195,22 @@ function contextualParadigmsFor(entry) {
"grammatisation-et-proletarisation-cognitive", "grammatisation-et-proletarisation-cognitive",
]; ];
return uniqueBySlug(
preferred
.filter((slug) => slug !== currentSlug)
.map((slug) => bySlug.get(slug))
.filter(Boolean)
).slice(0, 8);
}
if (familyOf(entry) === "doctrine") {
const preferred = [
"contractualisme-hobbesien",
"droit-naturel-et-propriete",
"volonte-generale",
"decisionnisme-souverain",
];
return uniqueBySlug( return uniqueBySlug(
preferred preferred
.filter((slug) => slug !== currentSlug) .filter((slug) => slug !== currentSlug)
@@ -108,55 +219,56 @@ function contextualParadigmsFor(entry) {
).slice(0, 6); ).slice(0, 6);
} }
return paradigmes.slice(0, 5); return [];
} }
const contextualParadigms = contextualParadigmsFor(currentEntry); const contextualTheory = contextualTheoryFor(currentEntry);
const kindLabels = { const showNoyau = currentFamily !== "concept-fondamental" && fondamentaux.length > 0;
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
const domainLabels = { const showSameFamily =
transversal: "Transversal", sameFamilyEntries.length > 0 && currentFamily !== "concept-fondamental";
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = { const relationSections = [
fondamental: "Fondamental", {
intermediaire: "Intermédiaire", title: "Concepts liés",
avance: "Avancé", items: relatedEntries,
}; },
{
const metaLabel = [ title: "En tension avec",
kindLabels[currentEntry.data.kind] ?? currentEntry.data.kind, items: opposedEntries,
domainLabels[currentEntry.data.domain] ?? currentEntry.data.domain, },
levelLabels[currentEntry.data.level] ?? currentEntry.data.level, {
].join(" · "); title: "Voir aussi",
items: seeAlsoEntries,
},
].filter((section) => section.items.length > 0);
--- ---
<nav class="glossary-aside" aria-label="Navigation du glossaire"> <nav class="glossary-aside" aria-label="Navigation du glossaire">
<div class="glossary-aside__block glossary-aside__block--intro"> <div class="glossary-aside__block glossary-aside__block--intro">
<a class="glossary-aside__back" href="/glossaire/">← Retour au glossaire</a> <a class="glossary-aside__back" href="/glossaire/">← Retour au glossaire</a>
<div class="glossary-aside__title">Glossaire archicratique</div> <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>
<span class="glossary-aside__pill">{displayDomain}</span>
<span class="glossary-aside__pill">{displayLevel}</span>
</div>
</div> </div>
<section class="glossary-aside__block"> <section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Portails</h2> <h2 class="glossary-aside__heading">Portails</h2>
<ul class="glossary-aside__list"> <ul class="glossary-aside__list">
<li><a href="/glossaire/">Index général</a></li> <li><a href="/glossaire/">Index général</a></li>
<li><a href="/glossaire/paradigmes/">Page paradigmes</a></li> <li><a href="/glossaire/archicrations/">Archicrations</a></li>
<li><a href="/glossaire/paradigmes/">Paradigmes et doctrines</a></li>
</ul> </ul>
</section> </section>
{fondamentaux.length > 0 && ( {showNoyau && (
<section class="glossary-aside__block"> <section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Noyau archicratique</h2> <h2 class="glossary-aside__heading">Noyau archicratique</h2>
<ul class="glossary-aside__list"> <ul class="glossary-aside__list">
@@ -178,52 +290,50 @@ const metaLabel = [
</section> </section>
)} )}
{(relatedEntries.length > 0 || opposedEntries.length > 0 || seeAlsoEntries.length > 0) && ( {showSameFamily && (
<section class="glossary-aside__block"> <section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Autour de cette fiche</h2> <h2 class="glossary-aside__heading">{sameFamilyTitle}</h2>
<ul class="glossary-aside__list">
{relatedEntries.length > 0 && ( {sameFamilyEntries.map((entry) => {
<> const active = slugOf(entry) === currentSlug;
<h3 class="glossary-aside__subheading">Liés</h3> return (
<ul class="glossary-aside__list"> <li>
{relatedEntries.map((entry) => ( <a
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li> href={hrefOf(entry)}
))} aria-current={active ? "page" : undefined}
</ul> class={active ? "is-active" : undefined}
</> >
)} {entry.data.term}
</a>
{opposedEntries.length > 0 && ( </li>
<> );
<h3 class="glossary-aside__subheading">Opposés</h3> })}
<ul class="glossary-aside__list"> </ul>
{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> </section>
)} )}
{contextualParadigms.length > 0 && ( {relationSections.length > 0 && (
<section class="glossary-aside__block"> <section class="glossary-aside__block">
<h2 class="glossary-aside__heading"> <h2 class="glossary-aside__heading">Autour de cette fiche</h2>
{currentEntry.data.kind === "paradigme" ? "Paradigmes voisins" : "Paradigmes mobilisés"}
</h2> {relationSections.map((section) => (
<>
<h3 class="glossary-aside__subheading">{section.title}</h3>
<ul class="glossary-aside__list">
{section.items.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
))}
</section>
)}
{contextualTheory.length > 0 && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Paysage théorique</h2>
<ul class="glossary-aside__list"> <ul class="glossary-aside__list">
{contextualParadigms.map((entry) => ( {contextualTheory.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li> <li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))} ))}
</ul> </ul>
@@ -265,11 +375,28 @@ const metaLabel = [
line-height: 1.25; line-height: 1.25;
} }
.glossary-aside__meta{ .glossary-aside__pills{
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 8px; margin-top: 8px;
}
.glossary-aside__pill{
display: inline-flex;
align-items: center;
padding: 4px 9px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 12px; font-size: 12px;
line-height: 1.35; line-height: 1.3;
opacity: .78; opacity: .9;
}
.glossary-aside__pill--family{
border-color: rgba(127,127,127,0.38);
font-weight: 800;
} }
.glossary-aside__heading{ .glossary-aside__heading{
@@ -309,7 +436,8 @@ const metaLabel = [
} }
@media (prefers-color-scheme: dark){ @media (prefers-color-scheme: dark){
.glossary-aside__block{ .glossary-aside__block,
.glossary-aside__pill{
background: rgba(255,255,255,0.04); background: rgba(255,255,255,0.04);
} }
} }

View File

@@ -67,6 +67,19 @@ const glossaire = defineCollection({
links: z.array(linkSchema).default([]), links: z.array(linkSchema).default([]),
kind: z.enum(["concept", "topologie", "diagnostic", "verbe", "paradigme", "doctrine"]), kind: z.enum(["concept", "topologie", "diagnostic", "verbe", "paradigme", "doctrine"]),
family: z.enum([
"concept-fondamental",
"scene",
"dynamique",
"pathologie",
"topologie",
"meta-regime",
"paradigme",
"doctrine",
"verbe",
"dispositif-ia",
"tension-irreductible",
]).optional(),
domain: z.enum(["transversal", "theorie", "cas-ia"]), domain: z.enum(["transversal", "theorie", "cas-ia"]),
level: z.enum(["fondamental", "intermediaire", "avance"]), level: z.enum(["fondamental", "intermediaire", "avance"]),
related: z.array(z.string().min(1)).default([]), related: z.array(z.string().min(1)).default([]),

View File

@@ -56,9 +56,9 @@ Cela signifie que le politique sest décousu de ses formes historiques. Il co
Autrement dit, nous avons changé dépoque sans encore avoir pu changé de lexique. Nous continuons de penser avec des formes obsolètes ce qui sactive sous nos yeux. Nous employons les mots dhier pour décrire des processus qui les excèdent de toutes parts. Nous parlons de gouvernements, là où il faudrait parler de structures de régulation composite. Nous discutons de lois, là où il faudrait décrire des protocoles, des seuils, des scénographies dajustement, des mécanismes de *feedback* algorithmique, des normes sans normalisateurs. Autrement dit, nous avons changé dépoque sans encore avoir pu changé de lexique. Nous continuons de penser avec des formes obsolètes ce qui sactive sous nos yeux. Nous employons les mots dhier pour décrire des processus qui les excèdent de toutes parts. Nous parlons de gouvernements, là où il faudrait parler de structures de régulation composite. Nous discutons de lois, là où il faudrait décrire des protocoles, des seuils, des scénographies dajustement, des mécanismes de *feedback* algorithmique, des normes sans normalisateurs.
Cette disjonction entre lexpérience vécue de la contrainte et le vocabulaire disponible pour la dire nest pas quun problème théorique. Elle produit une désorientation profonde. Elle empêche de penser le réel, de localiser les responsabilités et rend inopérantes les critiques. Elle altère la capacité collective à formuler des exigences, jusquà dissoudre les repères et les registres daction. Cette disjonction entre lexpérience vécue de la contrainte et le vocabulaire disponible pour l'exprimer nest pas quun problème théorique. Elle produit une désorientation profonde. Elle empêche de penser le réel, de localiser les responsabilités et rend inopérantes les critiques. Elle altère la capacité collective à formuler des exigences, jusquà dissoudre les repères et les registres daction.
Cette impuissance démocratique généralisée à nommer, situer, orienter les formes réelles de la régulation se donne parfois à voir dans des situations dapparente clarté — et cest peut-être le plus troublant. Prenons un exemple rendu brûlant par lactualité française en 2025 : la proposition de ce que lon appelle la *taxe Zucman*. Formulée par léminent économiste Gabriel Zucman, cette mesure vise à instaurer un impôt minimal annuel sur le patrimoine des ultra-riches en France et dans le monde — au-delà dun seuil (autour de 100 millions deuros). Le taux proposé est denviron 2 % sur la valeur totale du patrimoine net, quil soit liquide ou partiellement non liquide (actions non cotées, participations, biens immobiliers), ce qui pose des défis de paiement et dévaluation. Cette impuissance démocratique à nommer, situer et orienter les formes réelles de la régulation — impuissance qui tend à se généraliser — apparaît parfois au grand jour dans des situations dapparente clarté, ce qui est peutêtre le plus troublant. En témoigne un exemple rendu brûlant par lactualité française de 2025 : la proposition de ce quon a appelé la taxe Zucman. Formulée par léconomiste Gabriel Zucman, cette mesure prévoit linstauration dun impôt minimal annuel sur le patrimoine des ultra-riches, en France comme à léchelle mondiale, audelà dun seuil denviron 100 millions deuros. Le taux proposé, de lordre de 2% de la valeur totale du patrimoine net, quil soit liquide ou non (actions non cotées, participations, biens immobiliers), soulève toutefois dimportants problèmes de paiement et dévaluation.
Lidée est de corriger ce que Zucman identifie comme un déséquilibre fiscal majeur : les très grandes fortunes paient aujourdhui, proportionnellement, beaucoup moins que ce que permettrait une imposition équitable et progressive, notamment en raison de lévasion fiscale, de la mise sous structures opaques par *holding*, du transfert du patrimoine privée en patrimoine professionnel ou de la dissociation entre richesse effective et revenu imposable. Lidée est de corriger ce que Zucman identifie comme un déséquilibre fiscal majeur : les très grandes fortunes paient aujourdhui, proportionnellement, beaucoup moins que ce que permettrait une imposition équitable et progressive, notamment en raison de lévasion fiscale, de la mise sous structures opaques par *holding*, du transfert du patrimoine privée en patrimoine professionnel ou de la dissociation entre richesse effective et revenu imposable.

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur des agencements hétérog
concepts: ["agencement-machinique", "agencement", "machine", "flux", "dispositif", "tension"] concepts: ["agencement-machinique", "agencement", "machine", "flux", "dispositif", "tension"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "cratialite", "archicration", "tension", "co-viabilite"] related: ["archicratie", "cratialite", "archicration", "tension", "co-viabilite"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur fondationnel et structurant de la régulation : ensemb
concepts: ["arcalite", "archicratie", "cratialite", "archicration", "co-viabilite"] concepts: ["arcalite", "archicratie", "cratialite", "archicration", "co-viabilite"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "cratialite", "archicration", "co-viabilite", "tension"] related: ["archicratie", "cratialite", "archicration", "co-viabilite", "tension"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Méta-régime de régulation par lequel les sociétés humaine
concepts: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "tension"] concepts: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "tension"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["arcalite", "cratialite", "archicration", "co-viabilite", "tension"] related: ["arcalite", "cratialite", "archicration", "co-viabilite", "tension"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur régulateur par lequel les tensions entre arcalités e
concepts: ["archicration", "archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"] concepts: ["archicration", "archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"] related: ["archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]

View File

@@ -8,10 +8,11 @@ comparisonTraditions: ["anthropologie politique comparative", "sociologie proces
edition: "glossaire" edition: "glossaire"
status: "referentiel" status: "referentiel"
version: "0.1.0" version: "0.1.0"
definitionShort: "Configurations dans lesquelles un régime archicratique se module, se fragmente ou se combine à dautres sans produire une forme unifiée." definitionShort: "Configurations dans lesquelles un méta-régime archicratique se module, se fragmente ou se combine à dautres sans produire une forme unifiée."
concepts: ["archicrations-differentielles-et-formes-hybrides", "archicration", "hybridation", "modulation", "plasticite", "composition", "co-viabilite"] concepts: ["archicrations-differentielles-et-formes-hybrides", "archicration", "hybridation", "modulation", "plasticite", "composition", "co-viabilite"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "topologie"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la régulation coll
concepts: ["archicrations-epistemiques", "archicration", "savoir", "episteme", "paradigme", "verite", "expertise"] concepts: ["archicrations-epistemiques", "archicration", "savoir", "episteme", "paradigme", "verite", "expertise"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "gouvernementalite"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "gouvernementalite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation collective p
concepts: ["archicrations-esthetico-symboliques", "archicration", "forme-symbolique", "imaginaire", "representation", "esthetique"] concepts: ["archicrations-esthetico-symboliques", "archicration", "forme-symbolique", "imaginaire", "representation", "esthetique"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]
@@ -41,7 +42,9 @@ Larchicration se joue dans les scènes de création et de réception des form
Ces régimes montrent que la co-viabilité peut être stabilisée par des dispositifs sensibles et symboliques. Ces régimes montrent que la co-viabilité peut être stabilisée par des dispositifs sensibles et symboliques.
La forme esthétique devient alors une infrastructure du lien social. Mais ces formes peuvent également reconfigurer la perception du commun, déplacer les frontières du visible et du dicible et ouvrir des scènes de dissensus.
La forme esthétique devient ainsi une infrastructure du lien social, capable à la fois de stabiliser et de transformer lordre collectif.
## Renvois ## Renvois

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la stabilité colle
concepts: ["archicrations-guerrieres", "archicration", "puissance", "violence", "strategie", "dissuasion"] concepts: ["archicrations-guerrieres", "archicration", "puissance", "violence", "strategie", "dissuasion"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation collective s
concepts: ["archicrations-historiographiques", "archicration", "memoire", "recit", "temporalite", "historiographie"] concepts: ["archicrations-historiographiques", "archicration", "memoire", "recit", "temporalite", "historiographie"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la coordination col
concepts: ["archicrations-marchandes", "archicration", "marche", "echange", "prix", "coordination"] concepts: ["archicrations-marchandes", "archicration", "marche", "echange", "prix", "coordination"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la régulation coll
concepts: ["archicrations-normativo-politiques", "archicration", "norme", "droit", "legalite", "souverainete"] concepts: ["archicrations-normativo-politiques", "archicration", "norme", "droit", "legalite", "souverainete"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation passe priori
concepts: ["archicrations-proto-symboliques", "archicration", "proto-symbolique", "rite", "tabou", "alliance", "co-viabilite"] concepts: ["archicrations-proto-symboliques", "archicration", "proto-symbolique", "rite", "tabou", "alliance", "co-viabilite"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où des puissances sacrales, de
concepts: ["archicrations-sacrales-non-etatiques", "archicration", "sacral", "rituel", "totemisme", "oracle", "co-viabilite"] concepts: ["archicrations-sacrales-non-etatiques", "archicration", "sacral", "rituel", "totemisme", "oracle", "co-viabilite"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-proto-symboliques"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-proto-symboliques"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lécriture ne prescrit p
concepts: ["archicrations-scripturo-cosmologiques","archicration","cosmos","cosmographie","ecriture","alignement","correspondance"] concepts: ["archicrations-scripturo-cosmologiques","archicration","cosmos","cosmographie","ecriture","alignement","correspondance"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-techno-logistiques"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-techno-logistiques"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lobligation découle d
concepts: ["archicrations-scripturo-normatives", "archicration", "scripturalite", "norme", "ecriture", "code", "obligation"] concepts: ["archicrations-scripturo-normatives", "archicration", "scripturalite", "norme", "ecriture", "code", "obligation"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation sincarne
concepts: ["archicrations-techno-logistiques", "archicration", "techno-logistique", "megamachine", "infrastructure", "flux", "coordination"] concepts: ["archicrations-techno-logistiques", "archicration", "techno-logistique", "megamachine", "infrastructure", "flux", "coordination"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "cybernetique"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "cybernetique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lobligation procède d
concepts: ["archicrations-theologiques", "archicration", "revelation", "verbe", "transcendance", "doctrine", "orthodoxie", "exegese"] concepts: ["archicrations-theologiques", "archicration", "revelation", "verbe", "transcendance", "doctrine", "orthodoxie", "exegese"]
links: [] links: []
kind: "topologie" kind: "topologie"
family: "meta-regime"
domain: "transversal" domain: "transversal"
level: "avance" level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "decisionnisme-souverain"] related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "decisionnisme-souverain"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Dérive dun régime archicratique dans laquelle les archite
concepts: ["autarchicratie", "archicratie", "archicration", "obliteration-archicratique", "scene-depreuve"] concepts: ["autarchicratie", "archicratie", "archicration", "obliteration-archicratique", "scene-depreuve"]
links: [] links: []
kind: "diagnostic" kind: "diagnostic"
family: "pathologie"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "archicration", "obliteration-archicratique", "scene-depreuve", "co-viabilite"] related: ["archicratie", "archicration", "obliteration-archicratique", "scene-depreuve", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme danalyse du pouvoir centré sur la prise en charg
concepts: ["biopolitique", "population", "vie", "gouvernementalite"] concepts: ["biopolitique", "population", "vie", "gouvernementalite"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "intermediaire" level: "intermediaire"
related: ["gouvernementalite", "archicratie", "co-viabilite"] related: ["gouvernementalite", "archicratie", "co-viabilite"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Capacité dun système social à maintenir la continuité d
concepts: ["co-viabilite", "archicratie", "arcalite", "cratialite", "archicration", "tension"] concepts: ["co-viabilite", "archicratie", "arcalite", "cratialite", "archicration", "tension"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "archicration", "tension"] related: ["archicratie", "arcalite", "cratialite", "archicration", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme immanent de régulation dans lequel la tenue du coll
concepts: ["conatus-et-multitude", "conatus", "multitude", "affect", "puissance"] concepts: ["conatus-et-multitude", "conatus", "multitude", "affect", "puissance"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "tension", "co-viabilite", "theorie-de-la-resonance"] related: ["archicratie", "tension", "co-viabilite", "theorie-de-la-resonance"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les formes sociales émer
concepts: ["configuration-et-interdependance", "configuration", "interdependance", "autocontrainte", "processus"] concepts: ["configuration-et-interdependance", "configuration", "interdependance", "autocontrainte", "processus"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "co-viabilite", "tension", "conatus-et-multitude"] related: ["archicratie", "co-viabilite", "tension", "conatus-et-multitude"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la sortie de la guerre de tous
concepts: ["contractualisme-hobbesien", "souverainete", "ordre", "tension"] concepts: ["contractualisme-hobbesien", "souverainete", "ordre", "tension"]
links: [] links: []
kind: "doctrine" kind: "doctrine"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "tension", "co-viabilite"] related: ["archicratie", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique selon lequel les collectifs humains doiven
concepts: ["cosmopolitique", "pluralite-des-mondes", "composition"] concepts: ["cosmopolitique", "pluralite-des-mondes", "composition"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["technodiversite-et-cosmotechnie", "gouvernance-des-communs", "configuration-et-interdependance"] related: ["technodiversite-et-cosmotechnie", "gouvernance-des-communs", "configuration-et-interdependance"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur opératoire et transformateur de la régulation : ense
concepts: ["cratialite", "archicratie", "arcalite", "archicration", "tension", "co-viabilite"] concepts: ["cratialite", "archicratie", "arcalite", "archicration", "tension", "co-viabilite"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "arcalite", "archicration", "tension", "co-viabilite"] related: ["archicratie", "arcalite", "archicration", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation centré sur les boucles de rétroacti
concepts: ["cybernetique", "retroaction", "pilotage", "tension"] concepts: ["cybernetique", "retroaction", "pilotage", "tension"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "tension", "cratialite", "gouvernementalite-algorithmique"] related: ["archicratie", "tension", "cratialite", "gouvernementalite-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice selon laquelle lordre politique se cons
concepts: ["decisionnisme-souverain", "decision", "exception", "souverainete", "theologie-politique"] concepts: ["decisionnisme-souverain", "decision", "exception", "souverainete", "theologie-politique"]
links: [] links: []
kind: "doctrine" kind: "doctrine"
family: "doctrine"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["contractualisme-hobbesien", "archicratie", "archicration", "tension"] related: ["contractualisme-hobbesien", "archicratie", "archicration", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique fondant la légitimité de lordre colle
concepts: ["democratie-deliberative", "deliberation", "discussion", "legitimite", "espace-public"] concepts: ["democratie-deliberative", "deliberation", "discussion", "legitimite", "espace-public"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["volonte-generale", "archicration", "scene-depreuve", "archicratie"] related: ["volonte-generale", "archicration", "scene-depreuve", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique dans lequel le litige, le désaccord et l
concepts: ["dissensus-politique", "dissensus", "litige", "scene", "conflit"] concepts: ["dissensus-politique", "dissensus", "litige", "scene", "conflit"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicration", "scene-depreuve", "tension", "archicratie"] related: ["archicration", "scene-depreuve", "tension", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur la légalité formelle, la
concepts: ["domination-legale-rationnelle", "bureaucratie", "legalite", "administration", "regle", "procedure"] concepts: ["domination-legale-rationnelle", "bureaucratie", "legalite", "administration", "regle", "procedure"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "archicration"] related: ["archicratie", "arcalite", "cratialite", "archicration"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la loi naturelle, de la propri
concepts: ["droit-naturel-et-propriete", "propriete", "droit-naturel", "consentement", "encadrement-liberal"] concepts: ["droit-naturel-et-propriete", "propriete", "droit-naturel", "consentement", "encadrement-liberal"]
links: [] links: []
kind: "doctrine" kind: "doctrine"
family: "doctrine"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["contractualisme-hobbesien", "volonte-generale", "archicratie", "co-viabilite"] related: ["contractualisme-hobbesien", "volonte-generale", "archicratie", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel lordre se maintient pa
concepts: ["exception-souveraine", "exception", "suspension", "souverainete", "urgence"] concepts: ["exception-souveraine", "exception", "suspension", "souverainete", "urgence"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["decisionnisme-souverain", "archicratie", "tension", "autarchicratie"] related: ["decisionnisme-souverain", "archicratie", "tension", "autarchicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les échanges, obligation
concepts: ["fait-social-total", "echange", "obligation", "symbolisation", "cohesion"] concepts: ["fait-social-total", "echange", "obligation", "symbolisation", "cohesion"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "intermediaire" level: "intermediaire"
related: ["archicratie", "arcalite", "co-viabilite", "tension"] related: ["archicratie", "arcalite", "co-viabilite", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur la coordination collective
concepts: ["gouvernance-des-communs", "communs", "coordination", "polycentrisme", "ressources"] concepts: ["gouvernance-des-communs", "communs", "coordination", "polycentrisme", "ressources"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "intermediaire" level: "intermediaire"
related: ["co-viabilite", "archicratie", "democratie-deliberative", "tension"] related: ["co-viabilite", "archicratie", "democratie-deliberative", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur le calcul automatisé, la
concepts: ["gouvernementalite-algorithmique", "algorithme", "scoring", "autarchicratie"] concepts: ["gouvernementalite-algorithmique", "algorithme", "scoring", "autarchicratie"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "cas-ia" domain: "cas-ia"
level: "intermediaire" level: "intermediaire"
related: ["gouvernementalite", "cybernetique", "autarchicratie", "obliteration-archicratique", "cratialite"] related: ["gouvernementalite", "cybernetique", "autarchicratie", "obliteration-archicratique", "cratialite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme danalyse du pouvoir centré sur la conduite des c
concepts: ["gouvernementalite", "pouvoir", "population", "regulation"] concepts: ["gouvernementalite", "pouvoir", "population", "regulation"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "biopolitique", "gouvernementalite-algorithmique", "scene-depreuve"] related: ["archicratie", "biopolitique", "gouvernementalite-algorithmique", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation technique dans lequel la capture, la
concepts: ["grammatisation-et-proletarisation-cognitive", "grammatisation", "proletarisation", "savoir", "automatisation", "technique"] concepts: ["grammatisation-et-proletarisation-cognitive", "grammatisation", "proletarisation", "savoir", "automatisation", "technique"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "pharmacologie-technique", "preemption-algorithmique", "gouvernementalite-algorithmique"] related: ["archicratie", "pharmacologie-technique", "preemption-algorithmique", "gouvernementalite-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel lordre social se repro
concepts: ["habitus-et-violence-symbolique", "habitus", "champ", "violence-symbolique", "reproduction"] concepts: ["habitus-et-violence-symbolique", "habitus", "champ", "violence-symbolique", "reproduction"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "arcalite", "autarchicratie", "obliteration-archicratique"] related: ["archicratie", "arcalite", "autarchicratie", "obliteration-archicratique"]

View File

@@ -20,6 +20,7 @@ concepts:
- "conflit" - "conflit"
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: related:

View File

@@ -9,6 +9,7 @@ definitionShort: "Processus par lequel les architectures régulatrices continuen
concepts: ["obliteration-archicratique", "archicration", "autarchicratie", "scene-depreuve", "archicratie"] concepts: ["obliteration-archicratique", "archicration", "autarchicratie", "scene-depreuve", "archicratie"]
links: [] links: []
kind: "diagnostic" kind: "diagnostic"
family: "dynamique"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicration", "autarchicratie", "scene-depreuve", "archicratie"] related: ["archicration", "autarchicratie", "scene-depreuve", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme épistémologique selon lequel les phénomènes soci
concepts: ["complexite", "dialogique", "recursivite", "systeme"] concepts: ["complexite", "dialogique", "recursivite", "systeme"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["configuration-et-interdependance", "transduction-et-individuation", "co-viabilite"] related: ["configuration-et-interdependance", "transduction-et-individuation", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur lambivalence constituti
concepts: ["pharmacologie-technique", "technique", "soin", "attention", "automatisation"] concepts: ["pharmacologie-technique", "technique", "soin", "attention", "automatisation"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "co-viabilite", "tension", "preemption-algorithmique"] related: ["archicratie", "co-viabilite", "tension", "preemption-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique dans lequel la régulation doit ménager l
concepts: ["pluralite-natalite-action", "pluralite", "natalite", "action", "monde-commun"] concepts: ["pluralite-natalite-action", "pluralite", "natalite", "action", "monde-commun"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicration", "scene-depreuve", "dissensus-politique", "archicratie"] related: ["archicration", "scene-depreuve", "dissensus-politique", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les comportements sont an
concepts: ["preemption-algorithmique", "algorithme", "scoring", "nudging", "anticipation"] concepts: ["preemption-algorithmique", "algorithme", "scoring", "nudging", "anticipation"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "cas-ia" domain: "cas-ia"
level: "avance" level: "avance"
related: ["gouvernementalite-algorithmique", "archicratie", "obliteration-archicratique", "autarchicratie"] related: ["gouvernementalite-algorithmique", "archicratie", "obliteration-archicratique", "autarchicratie"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Espace de comparution, dexposition et de révision dans leq
concepts: ["scene-depreuve", "archicration", "archicratie", "tension", "co-viabilite"] concepts: ["scene-depreuve", "archicration", "archicratie", "tension", "co-viabilite"]
links: [] links: []
kind: "concept" kind: "concept"
family: "scene"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicration", "archicratie", "tension", "co-viabilite", "obliteration-archicratique"] related: ["archicration", "archicratie", "tension", "co-viabilite", "obliteration-archicratique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation technique selon lequel les formes de
concepts: ["technodiversite-et-cosmotechnie", "technodiversite", "cosmotechnie", "technique", "pluralite", "monde"] concepts: ["technodiversite-et-cosmotechnie", "technodiversite", "cosmotechnie", "technique", "pluralite", "monde"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "co-viabilite", "pharmacologie-technique", "agencement-machinique"] related: ["archicratie", "co-viabilite", "pharmacologie-technique", "agencement-machinique"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Phénomène systémique général par lequel des forces, dynam
concepts: ["tension", "archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"] concepts: ["tension", "archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"]
links: [] links: []
kind: "concept" kind: "concept"
family: "concept-fondamental"
domain: "transversal" domain: "transversal"
level: "fondamental" level: "fondamental"
related: ["archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"] related: ["archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel les conflits sociaux so
concepts: ["justification", "grandeur", "cites", "regimes-de-justification"] concepts: ["justification", "grandeur", "cites", "regimes-de-justification"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["dissensus-politique", "scene-depreuve", "democratie-deliberative"] related: ["dissensus-politique", "scene-depreuve", "democratie-deliberative"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme relationnel dans lequel la qualité dun ordre dé
concepts: ["theorie-de-la-resonance", "resonance", "relation", "reponse", "monde"] concepts: ["theorie-de-la-resonance", "resonance", "relation", "reponse", "monde"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "intermediaire" level: "intermediaire"
related: ["archicratie", "co-viabilite", "tension", "scene-depreuve"] related: ["archicratie", "co-viabilite", "tension", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel laction collective rés
concepts: ["acteur-reseau", "traduction", "association", "hybridation"] concepts: ["acteur-reseau", "traduction", "association", "hybridation"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["agencement-machinique", "configuration-et-interdependance", "cybernetique"] related: ["agencement-machinique", "configuration-et-interdependance", "cybernetique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les formes individuelles
concepts: ["transduction-et-individuation", "transduction", "individuation", "milieu", "tension"] concepts: ["transduction-et-individuation", "transduction", "individuation", "milieu", "tension"]
links: [] links: []
kind: "paradigme" kind: "paradigme"
family: "paradigme"
domain: "theorie" domain: "theorie"
level: "avance" level: "avance"
related: ["archicratie", "archicration", "tension", "co-viabilite"] related: ["archicratie", "archicration", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la volonté générale, de l
concepts: ["volonte-generale", "legitimite", "collectif", "politique"] concepts: ["volonte-generale", "legitimite", "collectif", "politique"]
links: [] links: []
kind: "doctrine" kind: "doctrine"
family: "doctrine"
domain: "theorie" domain: "theorie"
level: "fondamental" level: "fondamental"
related: ["archicratie", "archicration", "scene-depreuve", "co-viabilite"] related: ["archicratie", "archicration", "scene-depreuve", "co-viabilite"]

View File

@@ -55,6 +55,107 @@ const { Content } = await render(entry);
const isAliasRoute = requestedSlug !== canonicalSlug; const isAliasRoute = requestedSlug !== canonicalSlug;
const canonicalHref = `/glossaire/${canonicalSlug}/`; const canonicalHref = `/glossaire/${canonicalSlug}/`;
const slugOf = (item) =>
String(item.id || "")
.trim()
.replace(/^\/+|\/+$/g, "")
.replace(/\.(md|mdx)$/i, "");
const hrefOf = (item) => `/glossaire/${slugOf(item)}/`;
const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
const bySlug = new Map(allEntries.map((item) => [slugOf(item), item]));
function resolveEntries(slugs = []) {
const seen = new Set();
return slugs
.map((slug) => bySlug.get(String(slug || "").trim()))
.filter(Boolean)
.filter((item) => {
const slug = slugOf(item);
if (seen.has(slug)) return false;
seen.add(slug);
return true;
})
.sort((a, b) => collator.compare(a.data.term, b.data.term));
}
const relatedEntries = resolveEntries(entry.data.related ?? []);
const opposedEntries = resolveEntries(entry.data.opposedTo ?? []);
const seeAlsoEntries = resolveEntries(entry.data.seeAlso ?? []);
const relationBlocks = [
{
title: "Concepts liés",
items: relatedEntries,
className: "is-related",
},
{
title: "En tension avec",
items: opposedEntries,
className: "is-opposed",
},
{
title: "Voir aussi",
items: seeAlsoEntries,
className: "is-see-also",
},
].filter((block) => block.items.length > 0);
const familyLabels = {
"concept-fondamental": "Concept fondamental",
scene: "Scène",
dynamique: "Dynamique",
pathologie: "Pathologie",
topologie: "Topologie",
"meta-regime": "Méta-régime",
paradigme: "Paradigme",
doctrine: "Doctrine",
verbe: "Verbe",
"dispositif-ia": "Dispositif IA",
"tension-irreductible": "Tension irréductible",
};
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 familyKey = entry.data.family ?? "";
const displayFamily =
familyLabels[familyKey] ??
kindLabels[entry.data.kind] ??
"Fiche";
const displayDomain =
domainLabels[entry.data.domain] ??
entry.data.domain;
const displayLevel =
levelLabels[entry.data.level] ??
entry.data.level;
const hasScholarlyMeta =
(entry.data.mobilizedAuthors?.length ?? 0) > 0 ||
(entry.data.comparisonTraditions?.length ?? 0) > 0;
--- ---
<GlossaryLayout <GlossaryLayout
@@ -72,23 +173,66 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
</p> </p>
)} )}
<h1>{entry.data.term}</h1> <header class="glossary-entry-head">
<p><em>{entry.data.definitionShort}</em></p> <h1>{entry.data.term}</h1>
{(entry.data.mobilizedAuthors?.length > 0 || entry.data.comparisonTraditions) && ( <p class="glossary-entry-dek">
<em>{entry.data.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>
<span class="glossary-pill">
<strong>Domaine :</strong> {displayDomain}
</span>
<span class="glossary-pill">
<strong>Niveau :</strong> {displayLevel}
</span>
</div>
</header>
{hasScholarlyMeta && (
<div class="glossary-entry-meta"> <div class="glossary-entry-meta">
{entry.data.mobilizedAuthors?.length > 0 && ( {(entry.data.mobilizedAuthors?.length ?? 0) > 0 && (
<p> <p>
<strong>Auteurs mobilisés :</strong> {entry.data.mobilizedAuthors.join(" / ")} <strong>Auteurs mobilisés :</strong> {entry.data.mobilizedAuthors.join(" / ")}
</p> </p>
)} )}
{entry.data.comparisonTraditions && (
{(entry.data.comparisonTraditions?.length ?? 0) > 0 && (
<p> <p>
<strong>Traditions de comparaison :</strong> {entry.data.comparisonTraditions.join(" / ")} <strong>Traditions de comparaison :</strong> {entry.data.comparisonTraditions.join(" / ")}
</p> </p>
)} )}
</div> </div>
)} )}
<Content />
<div class="glossary-entry-body">
<Content />
</div>
{relationBlocks.length > 0 && (
<section class="glossary-relations" aria-label="Relations conceptuelles">
<h2>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={hrefOf(item)}>{item.data.term}</a>
<span> — {item.data.definitionShort}</span>
</li>
))}
</ul>
</section>
))}
</div>
</section>
)}
</GlossaryLayout> </GlossaryLayout>
<style> <style>
@@ -99,10 +243,50 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
background: rgba(127,127,127,0.05); background: rgba(127,127,127,0.05);
font-size: 14px; font-size: 14px;
line-height: 1.45; line-height: 1.45;
margin-bottom: 18px;
} }
.glossary-entry-meta{ .glossary-entry-head{
margin: 0 0 16px; margin-bottom: 18px;
}
.glossary-entry-head h1{
margin-bottom: 10px;
}
.glossary-entry-dek{
margin: 0 0 14px;
font-size: 1.02rem;
line-height: 1.6;
opacity: .95;
}
.glossary-entry-signals{
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0 0 6px;
}
.glossary-pill{
display: inline-flex;
align-items: center;
gap: 6px;
padding: 5px 10px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.05);
font-size: 13px;
line-height: 1.35;
}
.glossary-pill--family{
border-color: rgba(127,127,127,0.36);
font-weight: 700;
}
.glossary-entry-meta{
margin: 0 0 18px;
padding: 10px 12px; padding: 10px 12px;
border: 1px solid rgba(127,127,127,0.18); border: 1px solid rgba(127,127,127,0.18);
border-radius: 12px; border-radius: 12px;
@@ -119,14 +303,77 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
margin-top: 6px; margin-top: 6px;
} }
@media (prefers-color-scheme: dark){ .glossary-entry-body{
.glossary-entry-meta{ margin-bottom: 28px;
background: rgba(255,255,255,0.03); }
.glossary-relations{
margin-top: 26px;
padding-top: 18px;
border-top: 1px solid rgba(127,127,127,0.18);
}
.glossary-relations h2{
margin-bottom: 14px;
}
.glossary-relations-grid{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 12px;
}
.glossary-relations-card{
border: 1px solid rgba(127,127,127,0.22);
border-radius: 16px;
padding: 14px 16px;
background: rgba(127,127,127,0.05);
}
.glossary-relations-card h3{
margin-top: 0;
margin-bottom: 10px;
font-size: 15px;
line-height: 1.35;
}
.glossary-relations-card ul{
margin: 0;
padding-left: 18px;
}
.glossary-relations-card li{
margin-bottom: 8px;
font-size: 14px;
line-height: 1.45;
}
.glossary-relations-card li:last-child{
margin-bottom: 0;
}
.glossary-relations-card span{
opacity: .9;
}
@media (max-width: 720px){
.glossary-entry-signals{
gap: 6px;
}
.glossary-pill{
font-size: 12px;
} }
} }
@media (prefers-color-scheme: dark){ @media (prefers-color-scheme: dark){
.glossary-legacy-note{ .glossary-entry-meta{
background: rgba(255,255,255,0.03);
}
.glossary-legacy-note,
.glossary-pill,
.glossary-relations-card{
background: rgba(255,255,255,0.04); background: rgba(255,255,255,0.04);
} }
} }

View File

@@ -0,0 +1,223 @@
---
import SiteLayout from "../../layouts/SiteLayout.astro";
import { getCollection } from "astro:content";
const entries = await getCollection("glossaire");
const slugOf = (entry) => String(entry.id).replace(/\.(md|mdx)$/i, "");
const hrefOf = (entry) => `/glossaire/${slugOf(entry)}/`;
const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
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 sorted = [...entries].sort((a, b) => collator.compare(a.data.term, b.data.term));
function groupByInitial(list) {
const map = new Map();
for (const entry of list) {
const letter = (entry.data.term || "").trim().charAt(0).toUpperCase() || "#";
if (!map.has(letter)) map.set(letter, []);
map.get(letter).push(entry);
}
return [...map.entries()].sort((a, b) => collator.compare(a[0], b[0]));
}
const groupedAlpha = groupByInitial(sorted);
---
<SiteLayout title="Index complet du glossaire">
<section class="glossary-index-page">
<header class="glossary-index-page__hero">
<p class="glossary-index-page__kicker">Référentiel terminologique</p>
<h1>Index complet du glossaire</h1>
<p class="glossary-index-page__intro">
Cette page rassemble lensemble des entrées du glossaire dans un ordre alphabétique intégral.
Elle complète laccueil conceptuel du glossaire par une navigation plus encyclopédique.
</p>
</header>
<div class="glossary-index-page__topbar">
<a class="glossary-index-page__back" href="/glossaire/">← Retour à laccueil du glossaire</a>
<nav class="glossary-index-page__letters" aria-label="Lettres de lindex">
{groupedAlpha.map(([letter]) => (
<a href={`#letter-${letter}`}>{letter}</a>
))}
</nav>
</div>
<div class="glossary-index-page__groups">
{groupedAlpha.map(([letter, items]) => (
<section class="glossary-index-page__group" id={`letter-${letter}`}>
<h2>{letter}</h2>
<ul class="glossary-index-page__list">
{items.map((entry) => (
<li class="glossary-index-page__item">
<a class="glossary-index-page__term" href={hrefOf(entry)}>
{entry.data.term}
</a>
<p class="glossary-index-page__def">{entry.data.definitionShort}</p>
<p class="glossary-index-page__meta">
<span>{kindLabels[entry.data.kind] ?? entry.data.kind}</span>
<span>{domainLabels[entry.data.domain] ?? entry.data.domain}</span>
<span>{levelLabels[entry.data.level] ?? entry.data.level}</span>
</p>
</li>
))}
</ul>
</section>
))}
</div>
</section>
</SiteLayout>
<style>
.glossary-index-page{
padding: 8px 0 32px;
}
.glossary-index-page__hero{
margin-bottom: 22px;
}
.glossary-index-page__kicker{
margin: 0 0 8px;
font-size: 12px;
letter-spacing: .08em;
text-transform: uppercase;
opacity: .72;
}
.glossary-index-page__hero h1{
margin: 0 0 12px;
font-size: clamp(2.2rem, 4vw, 3rem);
line-height: 1.05;
letter-spacing: -.03em;
}
.glossary-index-page__intro{
max-width: 76ch;
margin: 0;
opacity: .92;
}
.glossary-index-page__topbar{
display: flex;
flex-direction: column;
gap: 14px;
margin: 22px 0 28px;
}
.glossary-index-page__back{
display: inline-flex;
width: fit-content;
align-items: center;
border: 1px solid rgba(127,127,127,0.28);
border-radius: 999px;
padding: 7px 14px;
text-decoration: none;
}
.glossary-index-page__letters{
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.glossary-index-page__letters a{
min-width: 34px;
text-align: center;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 10px;
padding: 5px 8px;
text-decoration: none;
}
.glossary-index-page__groups{
display: flex;
flex-direction: column;
gap: 28px;
}
.glossary-index-page__group{
scroll-margin-top: calc(var(--sticky-offset) + 20px);
}
.glossary-index-page__group h2{
margin: 0 0 14px;
font-size: clamp(1.6rem, 2vw, 2rem);
line-height: 1.1;
}
.glossary-index-page__list{
list-style: none;
margin: 0;
padding: 0;
display: grid;
gap: 12px;
}
.glossary-index-page__item{
border: 1px solid rgba(127,127,127,0.20);
border-radius: 16px;
padding: 14px 16px;
background: rgba(127,127,127,0.04);
}
.glossary-index-page__term{
display: inline-block;
font-weight: 800;
font-size: 1.04rem;
text-decoration: none;
margin-bottom: 6px;
}
.glossary-index-page__def{
margin: 0 0 8px;
line-height: 1.5;
opacity: .94;
}
.glossary-index-page__meta{
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0;
font-size: 12px;
opacity: .78;
}
.glossary-index-page__meta span{
border: 1px solid rgba(127,127,127,0.20);
border-radius: 999px;
padding: 2px 8px;
}
@media (prefers-color-scheme: dark){
.glossary-index-page__item{
background: rgba(255,255,255,0.04);
}
}
</style>

File diff suppressed because it is too large Load Diff