@dataimago/css 0.1.0-alpha.18 → 0.1.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/dataviz/dataimago-dataviz.css +1 -1
- package/dist/dataviz/dataimago-dataviz.json +2 -2
- package/dist/dataviz/dataimago-dataviz.tex +1 -1
- package/dist/dataviz/dataimago_dataviz.R +1 -1
- package/dist/latex/dataimago-tokens.sty +1 -1
- package/dist/latex/dataimago.sty +1 -1
- package/dist/outputs.json +21 -10
- package/dist/quarto/components.scss +1 -1
- package/dist/quarto/dataimago-dark.scss +1 -1
- package/dist/quarto/dataimago-light.scss +1 -1
- package/dist/templates/KNOWLEDGE-explorer.md +236 -0
- package/dist/templates/KNOWLEDGE-framework.md +233 -0
- package/dist/templates/KNOWLEDGE-research.md +201 -0
- package/dist/templates/quarto_website/README.md +48 -0
- package/dist/templates/quarto_website/_quarto.yml.template +141 -0
- package/dist/templates/quarto_website/about.qmd.template +36 -0
- package/dist/templates/quarto_website/assets/js/custom-anchors.js +6 -0
- package/dist/templates/quarto_website/assets/js/logo-switch.js +73 -0
- package/dist/templates/quarto_website/assets/js/scroll.js +67 -0
- package/dist/templates/quarto_website/ethics.qmd.template +49 -0
- package/dist/templates/quarto_website/index.qmd.template +71 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@ Depends on [`@dataimago/tokens`](../tokens) for the canonical house identity.
|
|
|
12
12
|
- `dist/quarto/dataimago-{light,dark}.scss` + `components.scss` — the Quarto theme pair (self-contained; dark keyed to `body.quarto-dark`) and the `.di-*` components.
|
|
13
13
|
- `dist/latex/dataimago-tokens.sty` + `dataimago.sty` — the generated `di-*` colour layer and the LaTeX macro layer.
|
|
14
14
|
- `dist/dataviz/` — the Okabe-Ito data-viz palette as CSS, TeX (PSTricks/TikZ), JSON and R.
|
|
15
|
+
- `dist/templates/` — the project templates (`KNOWLEDGE-*.md`, the Quarto website scaffold) as stamped copies, synced into a project with `dataimago-sync` like the other outputs (house only).
|
|
15
16
|
- `dist/outputs.json` and the `dataimago-sync` bin — pinned sync for non-JS consumers (below).
|
|
16
17
|
|
|
17
18
|
Use [`@dataimago/css-neutral`](../css-neutral) instead when an externally-owned Level-3 app or future third-party hub needs the neutral identity.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @dataimago/css@0.1.0-alpha.
|
|
1
|
+
/* @dataimago/css@0.1.0-alpha.19 dist/dataviz/dataimago-dataviz.css · sha256:4fb36e2401c1cd21f57d50c017ac080377c3943362a5b6c5ce2cd658080e4499 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync */
|
|
2
2
|
/* dataimago data-viz palette (Okabe-Ito). Categorical colour is never the only channel. */
|
|
3
3
|
:root, [data-bs-theme="light"], body.quarto-light {
|
|
4
4
|
--color-dataviz-okabe-ito-orange: #E69F00;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_meta": {
|
|
3
3
|
"package": "@dataimago/css",
|
|
4
|
-
"version": "0.1.0-alpha.
|
|
4
|
+
"version": "0.1.0-alpha.19",
|
|
5
5
|
"path": "dist/dataviz/dataimago-dataviz.json",
|
|
6
6
|
"sha256": "28160e151fca196be3e36790d6b67db232d8df060e8d9556b29dfee50f4b278b",
|
|
7
7
|
"note": "generated from tokens; do not edit",
|
|
8
|
-
"restore": "npx -p @dataimago/css@0.1.0-alpha.
|
|
8
|
+
"restore": "npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync"
|
|
9
9
|
},
|
|
10
10
|
"okabe-ito": {
|
|
11
11
|
"orange": "#E69F00",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
% @dataimago/css@0.1.0-alpha.
|
|
1
|
+
% @dataimago/css@0.1.0-alpha.19 dist/dataviz/dataimago-dataviz.tex · sha256:d7be36cb429ce8a1f19c95a7da8f57a7fcfda85fd2b0113e086913d37e9fa645 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
% dataimago data-viz palette (Okabe-Ito), light mode, for PSTricks and TikZ. Requires xcolor.
|
|
3
3
|
\definecolor{di-dataviz-okabe-ito-orange}{HTML}{E69F00}
|
|
4
4
|
\definecolor{di-dataviz-okabe-ito-sky-blue}{HTML}{56B4E9}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @dataimago/css@0.1.0-alpha.
|
|
1
|
+
# @dataimago/css@0.1.0-alpha.19 dist/dataviz/dataimago_dataviz.R · sha256:6443982f105b0f5e4a9d90ac2d1f6ce9fce2db4e8e8148b47f71bfc438940055 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
# dataimago data-viz palette (Okabe-Ito). Categorical colour is never the only channel:
|
|
3
3
|
# pair it with marker shape, line type or a label.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
% @dataimago/css@0.1.0-alpha.
|
|
1
|
+
% @dataimago/css@0.1.0-alpha.19 dist/latex/dataimago-tokens.sty · sha256:97596b5136434afc7d03b17916219cdccffd6c1cdc748b861f012e06fbbfc5df · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
\NeedsTeXFormat{LaTeX2e}
|
|
3
3
|
\ProvidesPackage{dataimago-tokens}[dataimago design tokens, light mode]
|
|
4
4
|
\RequirePackage{xcolor}
|
package/dist/latex/dataimago.sty
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
% @dataimago/css@0.1.0-alpha.
|
|
1
|
+
% @dataimago/css@0.1.0-alpha.19 dist/latex/dataimago.sty · sha256:deefadc765fb6c3fb673d7b4e71dcc7d12473f2ee4f0de1160af062b94d7e810 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
%%%
|
|
3
3
|
%%% dataimago.sty - LaTeX Style Package for dataimago Design System
|
|
4
4
|
%%%
|
package/dist/outputs.json
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "@dataimago/css",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
4
|
"files": {
|
|
5
|
-
"dataviz/dataimago-dataviz.css": "
|
|
6
|
-
"dataviz/dataimago-dataviz.json": "
|
|
7
|
-
"dataviz/dataimago-dataviz.tex": "
|
|
8
|
-
"dataviz/dataimago_dataviz.R": "
|
|
9
|
-
"latex/dataimago-tokens.sty": "
|
|
10
|
-
"latex/dataimago.sty": "
|
|
11
|
-
"quarto/components.scss": "
|
|
12
|
-
"quarto/dataimago-dark.scss": "
|
|
13
|
-
"quarto/dataimago-light.scss": "
|
|
5
|
+
"dataviz/dataimago-dataviz.css": "1af7427ac88a12540accb2da04d8442f7801c7d8176ca8d4f15a708e1e0b4cb9",
|
|
6
|
+
"dataviz/dataimago-dataviz.json": "e49da8cd904a941ab1586b48063e1c5d4eba4962e7fb50b045d162fa7c931c83",
|
|
7
|
+
"dataviz/dataimago-dataviz.tex": "f82616e309e08066b077d828152f01479b919cdc5fe48bd1db7c9914cc54123a",
|
|
8
|
+
"dataviz/dataimago_dataviz.R": "5f3cbacb922046ca78f2860b40d09b14676091eed5b1710c4fcc46031fa45246",
|
|
9
|
+
"latex/dataimago-tokens.sty": "fc1a0652b8216d4a98c09a5314aef978ea172c5dff8ad8e7a971ac53cf188b22",
|
|
10
|
+
"latex/dataimago.sty": "08baf49cf2cfd0d720107ccef4921c7bffcc396dd6fec10fb1f64587322ba4af",
|
|
11
|
+
"quarto/components.scss": "bb01822d6be02a6e5e83d66460d34931ad5863cb2c2c63f9df71787f7d0dc892",
|
|
12
|
+
"quarto/dataimago-dark.scss": "61ffc1bcaca9edc03a236085b3073f56a40eff9809728bd777f02121c5e3e74b",
|
|
13
|
+
"quarto/dataimago-light.scss": "0ccbc31c3da002545bf37709fae7e5b220c33f709722c9ec18d987088c9c4ef4",
|
|
14
|
+
"templates/KNOWLEDGE-explorer.md": "b954fa898ccc9960426986b97d10a9785cab12034c96656f5090f06bc94d1f80",
|
|
15
|
+
"templates/KNOWLEDGE-framework.md": "0cf61a6ba79f4601b6ed1d096dbe3c37a4dae75742e112e5fb2271b26e4c439d",
|
|
16
|
+
"templates/KNOWLEDGE-research.md": "64c10fbc9c15f2cea34c1d388793c8309430b1817b8301c2229cba34b9c21e46",
|
|
17
|
+
"templates/quarto_website/README.md": "9d771be3c1f73087ed641ac8117bcd19afc92a4b0397e66cb4210206759f7a17",
|
|
18
|
+
"templates/quarto_website/_quarto.yml.template": "9dee3b591ddcaf63455a35a46212c9ffe80aa5627a8b88bff3d74e604446b55a",
|
|
19
|
+
"templates/quarto_website/about.qmd.template": "b922b7b3ad54c2cd6885825901c02e02d4d2a33e9a7724ce285494b2cc498a6a",
|
|
20
|
+
"templates/quarto_website/assets/js/custom-anchors.js": "afd06bbc94340b5bd98acdfd46c2b01f1dc2bc604931566dc1d37cd1c569622b",
|
|
21
|
+
"templates/quarto_website/assets/js/logo-switch.js": "324b070c527fb47e629bac5bcfcaac7ae955707379b92c2c141c7e02cedc4469",
|
|
22
|
+
"templates/quarto_website/assets/js/scroll.js": "4ce5ac410a29608eb3b2c7313ccbd7d8c458655b714fe9a47a3dd0c626eb648d",
|
|
23
|
+
"templates/quarto_website/ethics.qmd.template": "164d344466811fcfaf3c9a42012c2a53a0a394d8b007ea8be037c77df82149d5",
|
|
24
|
+
"templates/quarto_website/index.qmd.template": "03ef348dcd13c479c01ebd87356e118d387df4173984940374cb0bb83b3661c9"
|
|
14
25
|
}
|
|
15
26
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @dataimago/css@0.1.0-alpha.
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/quarto/components.scss · sha256:7449c84f769ce0f0ec574328144abb42b5c7087706f3ae2c6d36977977c94d50 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
/*-- scss:rules --*/
|
|
3
3
|
// dataimago components (.di-*) — generated from src/styles/components/.
|
|
4
4
|
.di-figure-box {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @dataimago/css@0.1.0-alpha.
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/quarto/dataimago-dark.scss · sha256:5d85054f4316c2ad6c65d29f1b26f939e0052b6ba716ea50545a21eef69d24d7 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
// dataimago dark theme for Quarto 1.8 — generated from the design tokens (tools/formats/quarto.mjs).
|
|
3
3
|
// Bootstrap Sass variables are compile-time sRGB; runtime colours come from the custom properties below.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @dataimago/css@0.1.0-alpha.
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/quarto/dataimago-light.scss · sha256:6e0e24eeabfc9524f0d4dfd70dcac22fb4b70b9c99d7a074d0354eca5c7d1603 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
2
|
// dataimago light theme for Quarto 1.8 — generated from the design tokens (tools/formats/quarto.mjs).
|
|
3
3
|
// Bootstrap Sass variables are compile-time sRGB; runtime colours come from the custom properties below.
|
|
4
4
|
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/KNOWLEDGE-explorer.md · sha256:907c08638ed56813d453227759e29de08350465885d11f0efe94ec7ba8c42a50 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
# {{PROJECT_NAME}} — Knowledge Base Operating Manual
|
|
3
|
+
|
|
4
|
+
**Domain:** {{DOMAIN_NAME}}
|
|
5
|
+
**Type:** explorer
|
|
6
|
+
**Explorer dimension:** {{EXPLORER_DIMENSION}}
|
|
7
|
+
**Generated:** {{GENERATED_DATE}}
|
|
8
|
+
**Framework:** [dataimago-design]({{FRAMEWORK_WIKI_URL}}/wiki/index.md)
|
|
9
|
+
|
|
10
|
+
This file is the operating manual for the **{{PROJECT_NAME}}** knowledge base — an AI-maintained wiki that documents the dimensions, attributes, datasets, and data quality considerations that make this application trustworthy and navigable. Read it at the start of every knowledge-work session.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Role
|
|
15
|
+
|
|
16
|
+
You are the wiki maintainer for **{{PROJECT_NAME}}**'s knowledge base — an `explorer`-type domain wiki organized around the `{{EXPLORER_DIMENSION}}` dimension. This application has no thesis to advance; it makes a dataset navigable. Your job is to ensure that every piece of data the application presents is accurately documented — what it means, where it came from, what its limitations are.
|
|
17
|
+
|
|
18
|
+
Your job is to:
|
|
19
|
+
- Document new attributes as they are added to the application
|
|
20
|
+
- Summarize source datasets and their quality characteristics
|
|
21
|
+
- Answer queries about data provenance, coverage, and interpretation
|
|
22
|
+
- File answers as `wiki/analyses/` pages so knowledge compounds
|
|
23
|
+
- Lint the wiki for gaps in attribute documentation and stale dataset information
|
|
24
|
+
|
|
25
|
+
You never modify files in `raw/`. You own everything in `wiki/`.
|
|
26
|
+
|
|
27
|
+
The framework layer (how this application is built) is documented in the dataimago-design wiki (see `dataimago-framework.json` for the URL). Data and content questions belong here; build and architecture questions belong there.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Session Start Protocol
|
|
32
|
+
|
|
33
|
+
At the start of every knowledge-work session:
|
|
34
|
+
1. Read this file (KNOWLEDGE.md)
|
|
35
|
+
2. Read `wiki/index.md` to orient to the current knowledge base state
|
|
36
|
+
3. Read the last 5 entries of `wiki/log.md` to understand recent activity
|
|
37
|
+
4. Check `wiki/attributes/` for any attributes flagged as needing documentation updates
|
|
38
|
+
5. Read the framework wiki index (URL in `dataimago-framework.json`) for framework context (optional unless architecture is relevant)
|
|
39
|
+
6. Ask the user: ingest new data, document an attribute, answer a query, or something else?
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Directory Structure
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
wiki/
|
|
47
|
+
├── index.md ← Master catalog of all wiki pages
|
|
48
|
+
├── overview.md ← High-level synthesis: what data this application holds and why
|
|
49
|
+
├── glossary.md ← Canonical terminology for this domain
|
|
50
|
+
├── log.md ← Append-only activity record
|
|
51
|
+
├── dimensions/ ← The organizing axes of the explorer (geography, time, etc.)
|
|
52
|
+
├── attributes/ ← Each measurable property: meaning, source, coverage, caveats
|
|
53
|
+
├── datasets/ ← Data sources: provenance, update cadence, coverage gaps
|
|
54
|
+
├── sources/ ← Authoritative sources for datasets and attribute definitions
|
|
55
|
+
├── personas/ ← Who uses the explorer and what they discover with it
|
|
56
|
+
└── analyses/ ← Patterns, comparisons, and insights surfaced from the data
|
|
57
|
+
|
|
58
|
+
raw/
|
|
59
|
+
├── papers/ ← Academic sources, methodology documents
|
|
60
|
+
├── conversations/ ← AI dialogues, decisions, notes
|
|
61
|
+
├── data/ ← Raw dataset files, exports from R
|
|
62
|
+
└── references/ ← External data portals, API specs, codebooks
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Entity Types
|
|
68
|
+
|
|
69
|
+
| Type | Location | Page purpose |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| **Dimension** | `wiki/dimensions/` | The organizing axes: what they cover, how entities are identified, edge cases |
|
|
72
|
+
| **Attribute** | `wiki/attributes/` | Each measurable property: precise definition, source, geographic/temporal coverage, caveats |
|
|
73
|
+
| **Dataset** | `wiki/datasets/` | A data source: provenance, update cadence, coverage gaps, known issues, R dataset name |
|
|
74
|
+
| **Source** | `wiki/sources/` | An authoritative reference for an attribute definition or dataset methodology |
|
|
75
|
+
| **Persona** | `wiki/personas/` | A user type: what they're trying to discover, what attributes they care about |
|
|
76
|
+
| **Analysis** | `wiki/analyses/` | Patterns found, comparisons made, insights derived from the data |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## The Attribute Page — Core Knowledge Atom
|
|
81
|
+
|
|
82
|
+
The `wiki/attributes/` directory is the most important part of this wiki. Every attribute the application exposes must have a page that documents:
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
---
|
|
86
|
+
title: <attribute human name>
|
|
87
|
+
type: attribute
|
|
88
|
+
attribute_id: <the parameter name used in R functions and API endpoints>
|
|
89
|
+
created: YYYY-MM-DD
|
|
90
|
+
updated: YYYY-MM-DD
|
|
91
|
+
dataset: <wiki/datasets/dataset-name.md>
|
|
92
|
+
sources:
|
|
93
|
+
- <authoritative source for the attribute definition>
|
|
94
|
+
tags: []
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
One-line description of what this attribute measures.
|
|
98
|
+
|
|
99
|
+
## Definition
|
|
100
|
+
Precise definition — not just a label. What exactly is being measured? What is the unit?
|
|
101
|
+
What is the reference period (for point-in-time attributes)?
|
|
102
|
+
|
|
103
|
+
## Data Source
|
|
104
|
+
- Dataset: [[dataset-name]]
|
|
105
|
+
- R dataset object: `{{PROJECT_NAME}}::dataset_name`
|
|
106
|
+
- R retrieval function: `get_entity_profile(entity_id, attributes = "{{ATTRIBUTE_ID}}")`
|
|
107
|
+
|
|
108
|
+
## Coverage
|
|
109
|
+
- Entities covered: (e.g., "193 UN member states", "47 European countries")
|
|
110
|
+
- Temporal coverage: (e.g., "2000–2023 annually", "2022 only")
|
|
111
|
+
- Known gaps: (e.g., "Missing for small island nations with population < 50,000")
|
|
112
|
+
|
|
113
|
+
## Data Quality
|
|
114
|
+
- Source reliability: (official statistics / derived / estimated / self-reported)
|
|
115
|
+
- Known issues: (e.g., "Pre-2010 figures use different methodology")
|
|
116
|
+
- Comparability caveats: (e.g., "Purchasing power adjustments vary by source year")
|
|
117
|
+
|
|
118
|
+
## Interpretation
|
|
119
|
+
For non-specialist audiences: what does a high/low value on this attribute mean?
|
|
120
|
+
What should users NOT conclude from this attribute?
|
|
121
|
+
|
|
122
|
+
## Related Attributes
|
|
123
|
+
- [[attribute-name]] — (relationship, e.g., "often inversely correlated")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Workflows
|
|
129
|
+
|
|
130
|
+
### Ingest a New Dataset
|
|
131
|
+
|
|
132
|
+
1. Read the raw data file from `raw/data/` and any codebook from `raw/references/`
|
|
133
|
+
2. Create a `wiki/datasets/` page documenting provenance, coverage, and update cadence
|
|
134
|
+
3. Create a `wiki/attributes/` page for each attribute the dataset provides
|
|
135
|
+
4. Update `wiki/dimensions/` if the dataset covers new entities or extends temporal range
|
|
136
|
+
5. Update `wiki/glossary.md` with any new technical terms
|
|
137
|
+
6. Update `wiki/index.md` and append to `wiki/log.md`
|
|
138
|
+
|
|
139
|
+
### Document a New Attribute
|
|
140
|
+
|
|
141
|
+
1. Identify the authoritative source for the attribute's definition
|
|
142
|
+
2. Create a `wiki/attributes/` page following the template above
|
|
143
|
+
3. Verify the R retrieval function returns correct data for the attribute
|
|
144
|
+
4. Add the attribute to the relevant `wiki/datasets/` page
|
|
145
|
+
5. Update `wiki/index.md` and append to `wiki/log.md`
|
|
146
|
+
|
|
147
|
+
### Ingest a Paper or Reference
|
|
148
|
+
|
|
149
|
+
1. Read from `raw/papers/`
|
|
150
|
+
2. Determine: does this define an attribute? challenge a dataset's methodology? describe a dimension?
|
|
151
|
+
3. Create a `wiki/sources/` page summarizing the key claims
|
|
152
|
+
4. Link to the affected `wiki/attributes/` or `wiki/datasets/` pages
|
|
153
|
+
5. Update `wiki/glossary.md` and append to `wiki/log.md`
|
|
154
|
+
|
|
155
|
+
### Query
|
|
156
|
+
|
|
157
|
+
1. Read `wiki/index.md` to identify relevant pages (typically `wiki/attributes/` and `wiki/datasets/`)
|
|
158
|
+
2. Read those pages
|
|
159
|
+
3. Synthesize a clear answer with citations
|
|
160
|
+
4. Ask: "Should I file this as an analysis?" If yes, save to `wiki/analyses/`
|
|
161
|
+
5. Append to `wiki/log.md`
|
|
162
|
+
|
|
163
|
+
### Lint
|
|
164
|
+
|
|
165
|
+
1. Check every attribute in `wiki/attributes/` has: definition, coverage, data quality, interpretation
|
|
166
|
+
2. Check every dataset in `wiki/datasets/` has: provenance, update cadence, known gaps
|
|
167
|
+
3. Check for attributes used in the application but not documented in the wiki
|
|
168
|
+
4. Check for stale dataset entries (coverage dates that should have been updated)
|
|
169
|
+
5. Report findings and propose fixes
|
|
170
|
+
6. Append to `wiki/log.md`
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Log Format
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
## [YYYY-MM-DD] <action> | <title>
|
|
178
|
+
|
|
179
|
+
**Action:** <description>
|
|
180
|
+
Pages created: ...
|
|
181
|
+
Pages updated: ...
|
|
182
|
+
Key additions: ...
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Terminology Discipline
|
|
188
|
+
|
|
189
|
+
- Check `wiki/glossary.md` before using any domain term
|
|
190
|
+
- Attribute IDs (used in R functions and API endpoints) must be consistent: `{{ATTRIBUTE_ID}}` form
|
|
191
|
+
- Entity identifiers must be consistent: `{{EXPLORER_DIMENSION}}` → [describe ID format, e.g., ISO 3166-1 alpha-3 for countries]
|
|
192
|
+
- Key terms for this domain: [populated by domain expert — add canonical terms here as the wiki develops]
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## R Functions in This Application
|
|
197
|
+
|
|
198
|
+
The following R functions are the retrieval backbone of {{PROJECT_NAME}}:
|
|
199
|
+
|
|
200
|
+
{{EXPORTED_FUNCTIONS}}
|
|
201
|
+
|
|
202
|
+
**Standard explorer function pattern:**
|
|
203
|
+
- Every attribute is retrievable via `get_entity_profile(entity_id, attributes = "attribute_id")`
|
|
204
|
+
- Every attribute is comparable via `compare_entities(entity_ids, "attribute_id")`
|
|
205
|
+
- Discovery: `get_attributes()` returns all attributes with their wiki descriptions
|
|
206
|
+
- Discovery: `get_entities()` returns all entities with their available attributes
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Data Quality Standards
|
|
211
|
+
|
|
212
|
+
This application makes claims about the world. Every attribute must meet these standards before it can be displayed to users:
|
|
213
|
+
|
|
214
|
+
1. **Defined** — A `wiki/attributes/` page exists with a precise definition
|
|
215
|
+
2. **Sourced** — The data source is documented in a `wiki/datasets/` page
|
|
216
|
+
3. **Bounded** — Coverage (entities and time period) is documented
|
|
217
|
+
4. **Caveated** — Known quality issues and comparability limits are documented
|
|
218
|
+
5. **Interpreted** — A plain-language interpretation is available for non-specialist users
|
|
219
|
+
|
|
220
|
+
Attributes that fail any of these standards should be marked `status: draft` in their frontmatter and excluded from the production data explorer until the standard is met.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Connection to the Framework Layer
|
|
225
|
+
|
|
226
|
+
This wiki documents **what data** this application holds and **what it means**. The dataimago-design wiki documents **how** the application is built. The connection:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
wiki/attributes/greeting.md
|
|
230
|
+
→ documents HelloWorld::Hello_World dataset
|
|
231
|
+
→ retrieved via get_entity_profile(entity_id)
|
|
232
|
+
→ exposed at GET /entity/{id}?attributes=greeting
|
|
233
|
+
→ documented in dataimago-design/wiki/patterns/rest-api-from-r.md
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Do not duplicate framework documentation here. Reference it.
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/KNOWLEDGE-framework.md · sha256:edc7c6622722c1258f025a385ba79fe62a03ebb4d36f06e999aabc1290145b84 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
# {{PROJECT_NAME}} — Knowledge Base Operating Manual
|
|
3
|
+
|
|
4
|
+
**Domain:** {{DOMAIN_NAME}}
|
|
5
|
+
**Type:** framework
|
|
6
|
+
**Generated:** {{GENERATED_DATE}}
|
|
7
|
+
**Framework:** [dataimago-design]({{FRAMEWORK_WIKI_URL}}/wiki/index.md)
|
|
8
|
+
|
|
9
|
+
This file is the operating manual for the **{{PROJECT_NAME}}** knowledge base — an AI-maintained wiki that documents the principles, patterns, and decisions that govern this framework. Read it at the start of every knowledge-work session.
|
|
10
|
+
|
|
11
|
+
*Note: If this is dataimago-design itself, this file's role is played by `CLAUDE.md` — the original operating manual. This template applies to other framework-type applications generated by dataimago.*
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Role
|
|
16
|
+
|
|
17
|
+
You are the wiki maintainer for **{{PROJECT_NAME}}**'s knowledge base — a `framework`-type domain wiki that documents the principles, patterns, and governance decisions that constrain and guide this system's use.
|
|
18
|
+
|
|
19
|
+
Your job is to:
|
|
20
|
+
- Document new decisions as Architecture Decision Records (ADRs)
|
|
21
|
+
- Keep principles and patterns consistent and cross-referenced
|
|
22
|
+
- Answer queries about what the framework requires and why
|
|
23
|
+
- File answers as `wiki/analyses/` pages so knowledge compounds
|
|
24
|
+
- Lint the wiki for contradictions between principles and patterns, and for undocumented enforcement mechanisms
|
|
25
|
+
|
|
26
|
+
You never modify files in `raw/`. You own everything in `wiki/`.
|
|
27
|
+
|
|
28
|
+
The meta-framework layer (how dataimago builds framework applications) is at the URL in `dataimago-framework.json`. Questions about this specific framework's content belong here; questions about how it was generated or deployed belong there.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Session Start Protocol
|
|
33
|
+
|
|
34
|
+
At the start of every knowledge-work session:
|
|
35
|
+
1. Read this file (KNOWLEDGE.md)
|
|
36
|
+
2. Read `wiki/index.md` to orient to the current knowledge base state
|
|
37
|
+
3. Read the last 5 entries of `wiki/log.md` to understand recent activity
|
|
38
|
+
4. Check `wiki/decisions/` for any ADRs marked `status: proposed` — these need review
|
|
39
|
+
5. Read the framework wiki index (URL in `dataimago-framework.json`) for meta-framework context
|
|
40
|
+
6. Ask the user: document a decision, document a pattern, answer a query, lint, or something else?
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Directory Structure
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
wiki/
|
|
48
|
+
├── index.md ← Master catalog of all wiki pages
|
|
49
|
+
├── overview.md ← High-level synthesis: what this framework governs and how
|
|
50
|
+
├── glossary.md ← Canonical terminology for this framework domain
|
|
51
|
+
├── log.md ← Append-only activity record
|
|
52
|
+
├── principles/ ← The values the framework upholds and enforces
|
|
53
|
+
├── patterns/ ← How to implement each principle in practice
|
|
54
|
+
├── decisions/ ← ADRs: every significant choice with justification
|
|
55
|
+
├── connections/ ← How principles map across implementation domains
|
|
56
|
+
├── personas/ ← Who is governed by or governs this framework
|
|
57
|
+
└── analyses/ ← Compliance audits, gap analyses, comparisons
|
|
58
|
+
|
|
59
|
+
raw/
|
|
60
|
+
├── papers/ ← Academic sources, standards documents, prior art
|
|
61
|
+
├── conversations/ ← AI dialogues, governance meeting notes
|
|
62
|
+
├── data/ ← Validation results, compliance reports, audit logs
|
|
63
|
+
└── references/ ← External frameworks, standards, codebases compared against
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Entity Types
|
|
69
|
+
|
|
70
|
+
| Type | Location | Page purpose |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| **Principle** | `wiki/principles/` | A value the framework upholds: what it means, how it is enforced, the governance basis |
|
|
73
|
+
| **Pattern** | `wiki/patterns/` | How to implement a principle: concrete steps, code examples, common mistakes |
|
|
74
|
+
| **Decision** | `wiki/decisions/` | An ADR: what was chosen, what was rejected, why, date, and any revision history |
|
|
75
|
+
| **Connection** | `wiki/connections/` | Cross-domain synthesis: how principle X maps to practice Y in context Z |
|
|
76
|
+
| **Persona** | `wiki/personas/` | A stakeholder: who uses the framework, who is governed by it, who governs it |
|
|
77
|
+
| **Analysis** | `wiki/analyses/` | Compliance audit, gap analysis, comparison with alternative frameworks |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## The Decision Page — Core Knowledge Atom
|
|
82
|
+
|
|
83
|
+
Architecture Decision Records are the most important pages in a framework wiki. Every significant choice must be documented before it is enforced:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
---
|
|
87
|
+
title: "ADR: <Decision title>"
|
|
88
|
+
type: decision
|
|
89
|
+
created: YYYY-MM-DD
|
|
90
|
+
updated: YYYY-MM-DD
|
|
91
|
+
status: proposed | accepted | superseded | deprecated
|
|
92
|
+
superseded_by: <ADR page name if superseded>
|
|
93
|
+
sources:
|
|
94
|
+
- <pages or raw files that informed this decision>
|
|
95
|
+
tags: []
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
One-line summary of the decision.
|
|
99
|
+
|
|
100
|
+
## Decision
|
|
101
|
+
What was chosen. State it precisely.
|
|
102
|
+
|
|
103
|
+
## Context
|
|
104
|
+
The problem that required a decision. What constraints existed?
|
|
105
|
+
|
|
106
|
+
## Alternatives Considered
|
|
107
|
+
What else was evaluated? Why was each rejected?
|
|
108
|
+
|
|
109
|
+
## Justification
|
|
110
|
+
Why this choice? Include ethical justification where relevant.
|
|
111
|
+
|
|
112
|
+
## Consequences
|
|
113
|
+
What does this enable? What does it foreclose? What monitoring is needed?
|
|
114
|
+
|
|
115
|
+
## Related Pages
|
|
116
|
+
- [[principle-name]] — The principle this decision serves
|
|
117
|
+
- [[pattern-name]] — The implementation pattern this decision authorizes
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
ADRs are **append-only in spirit**: when a decision changes, mark the old ADR `status: superseded`, add `superseded_by: new-adr-name`, and create a new ADR. Never silently overwrite the reasoning history.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Workflows
|
|
125
|
+
|
|
126
|
+
### Document a New Decision
|
|
127
|
+
|
|
128
|
+
1. Identify the decision being made (never document a decision after the fact without noting that it was post-hoc)
|
|
129
|
+
2. Create a `wiki/decisions/` ADR page with `status: proposed`
|
|
130
|
+
3. Link to the relevant principles it serves and patterns it authorizes
|
|
131
|
+
4. After review/consensus, update to `status: accepted`
|
|
132
|
+
5. Update `wiki/index.md` and append to `wiki/log.md`
|
|
133
|
+
|
|
134
|
+
### Document a New Pattern
|
|
135
|
+
|
|
136
|
+
1. Identify the principle the pattern implements
|
|
137
|
+
2. Create a `wiki/patterns/` page with: problem, solution, implementation details, ethical justification
|
|
138
|
+
3. Link from the relevant `wiki/principles/` page
|
|
139
|
+
4. Verify that an ADR exists authorizing this pattern (or create one)
|
|
140
|
+
5. Update `wiki/index.md` and append to `wiki/log.md`
|
|
141
|
+
|
|
142
|
+
### Ingest a Comparison Framework or Standard
|
|
143
|
+
|
|
144
|
+
1. Read from `raw/papers/` or `raw/references/`
|
|
145
|
+
2. Create a `wiki/sources/` page summarizing the key claims
|
|
146
|
+
3. Create or update a `wiki/analyses/` page comparing this framework to {{PROJECT_NAME}} on key dimensions
|
|
147
|
+
4. Identify any principles or patterns that should be updated in light of the comparison
|
|
148
|
+
5. Update `wiki/glossary.md` and append to `wiki/log.md`
|
|
149
|
+
|
|
150
|
+
### Query
|
|
151
|
+
|
|
152
|
+
1. Read `wiki/index.md` to identify relevant pages (typically `wiki/principles/` and `wiki/patterns/`)
|
|
153
|
+
2. Read those pages
|
|
154
|
+
3. Synthesize a clear answer citing the relevant ADRs and principles
|
|
155
|
+
4. Ask: "Should I file this as an analysis?" If yes, save to `wiki/analyses/`
|
|
156
|
+
5. Append to `wiki/log.md`
|
|
157
|
+
|
|
158
|
+
### Lint
|
|
159
|
+
|
|
160
|
+
1. Check every `wiki/principles/` page has at least one `wiki/patterns/` page implementing it
|
|
161
|
+
2. Check every `wiki/patterns/` page is authorized by an ADR in `wiki/decisions/`
|
|
162
|
+
3. Check for enforcement mechanisms that exist in the codebase but are not documented in a principle page
|
|
163
|
+
4. Check for principles that are stated but have no enforcement mechanism (document the gap or add enforcement)
|
|
164
|
+
5. Check for ADRs with `status: proposed` that have not been reviewed
|
|
165
|
+
6. Report findings and propose fixes
|
|
166
|
+
7. Append to `wiki/log.md`
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Log Format
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
## [YYYY-MM-DD] <action> | <title>
|
|
174
|
+
|
|
175
|
+
**Action:** <description>
|
|
176
|
+
Pages created: ...
|
|
177
|
+
Pages updated: ...
|
|
178
|
+
Key additions: ...
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Terminology Discipline
|
|
184
|
+
|
|
185
|
+
- Check `wiki/glossary.md` before using any framework term
|
|
186
|
+
- Canonical terms must be used consistently — never paraphrase a principle's name
|
|
187
|
+
- ADR titles must be unique and stable (they are referenced by other pages)
|
|
188
|
+
- Key terms for this domain: [populated by domain expert — add canonical terms here as the wiki develops]
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## R Functions in This Application
|
|
193
|
+
|
|
194
|
+
The following R functions implement validation and generation capabilities for {{PROJECT_NAME}}:
|
|
195
|
+
|
|
196
|
+
{{EXPORTED_FUNCTIONS}}
|
|
197
|
+
|
|
198
|
+
**Standard framework function pattern:**
|
|
199
|
+
- `validate_*()` functions check compliance and return violations with severity
|
|
200
|
+
- `scaffold_*()` functions generate new instances conforming to the framework
|
|
201
|
+
- `get_*_status()` functions report system health
|
|
202
|
+
- `get_validation_rules()` returns all rules with descriptions (discovery endpoint)
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Principle Documentation Standard
|
|
207
|
+
|
|
208
|
+
Every principle must meet these standards before it can be enforced:
|
|
209
|
+
|
|
210
|
+
1. **Named** — A canonical name in the glossary
|
|
211
|
+
2. **Defined** — A `wiki/principles/` page with precise definition
|
|
212
|
+
3. **Justified** — The ethical or practical basis is documented (who authorized this and on what grounds)
|
|
213
|
+
4. **Implemented** — At least one `wiki/patterns/` page shows how to comply
|
|
214
|
+
5. **Enforced** — An automated check exists OR the absence of automation is noted and justified
|
|
215
|
+
6. **Governed** — The process for changing this principle is documented
|
|
216
|
+
|
|
217
|
+
Principles that lack justification or governance documentation should be marked `status: draft` and flagged in the next lint pass.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Connection to the Meta-Framework Layer
|
|
222
|
+
|
|
223
|
+
This wiki documents **what {{PROJECT_NAME}} requires** and **why**. The dataimago-design wiki documents **how framework-type applications are built**. The connection:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
wiki/principles/my-principle.md
|
|
227
|
+
→ implemented by wiki/patterns/my-pattern.md
|
|
228
|
+
→ enforced by validate_my_rule() in R
|
|
229
|
+
→ exposed at POST /validate
|
|
230
|
+
→ documented in dataimago-design/wiki/patterns/rest-api-from-r.md
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Do not duplicate dataimago-design's framework documentation here. Reference it.
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/KNOWLEDGE-research.md · sha256:ef0a6748731b61840e8e8da1142db5981948da4dec78888f40f471c2a3d3300f · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
# {{PROJECT_NAME}} — Knowledge Base Operating Manual
|
|
3
|
+
|
|
4
|
+
**Domain:** {{DOMAIN_NAME}}
|
|
5
|
+
**Type:** research
|
|
6
|
+
**Generated:** {{GENERATED_DATE}}
|
|
7
|
+
**Framework:** [dataimago-design]({{FRAMEWORK_WIKI_URL}}/wiki/index.md)
|
|
8
|
+
|
|
9
|
+
This file is the operating manual for the **{{PROJECT_NAME}}** knowledge base — an AI-maintained wiki that documents the ideas, evidence, methods, and arguments that this application embodies. Read it at the start of every knowledge-work session.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Role
|
|
14
|
+
|
|
15
|
+
You are the wiki maintainer for **{{PROJECT_NAME}}**'s knowledge base — a `research`-type domain wiki that synthesizes the evidence, methods, and arguments behind the application's analytical claims.
|
|
16
|
+
|
|
17
|
+
Your job is to:
|
|
18
|
+
- Ingest source materials and extract knowledge into structured wiki pages
|
|
19
|
+
- Keep pages consistent, cross-referenced, and up to date
|
|
20
|
+
- Answer queries by reading the wiki (not re-deriving from scratch)
|
|
21
|
+
- File good answers back as `wiki/analyses/` pages so knowledge compounds
|
|
22
|
+
- Periodically lint the wiki for contradictions, stale content, and orphan pages
|
|
23
|
+
|
|
24
|
+
You never modify files in `raw/`. You own everything in `wiki/`.
|
|
25
|
+
|
|
26
|
+
The framework layer (how this application is built) is documented in the dataimago-design wiki (see `dataimago-framework.json` for the URL). Domain knowledge questions belong here; build and architecture questions belong there.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Session Start Protocol
|
|
31
|
+
|
|
32
|
+
At the start of every knowledge-work session:
|
|
33
|
+
1. Read this file (KNOWLEDGE.md)
|
|
34
|
+
2. Read `wiki/index.md` to orient to the current knowledge base state
|
|
35
|
+
3. Read the last 5 entries of `wiki/log.md` to understand recent activity
|
|
36
|
+
4. Read the framework wiki index (URL in `dataimago-framework.json`) for framework context (optional unless architecture is relevant)
|
|
37
|
+
5. Ask the user: ingest, query, lint, or something else?
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Directory Structure
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
wiki/
|
|
45
|
+
├── index.md ← Master catalog of all wiki pages
|
|
46
|
+
├── overview.md ← High-level synthesis of the knowledge base
|
|
47
|
+
├── glossary.md ← Canonical terminology for this domain
|
|
48
|
+
├── log.md ← Append-only activity record
|
|
49
|
+
├── sources/ ← Summaries of papers, datasets, conversations
|
|
50
|
+
├── theories/ ← Theoretical frameworks the research uses
|
|
51
|
+
├── methods/ ← Methodological choices and their justifications
|
|
52
|
+
├── findings/ ← Specific results with interpretation
|
|
53
|
+
├── arguments/ ← Central claims and their evidence chains
|
|
54
|
+
├── personas/ ← Who uses this application and what they need
|
|
55
|
+
└── analyses/ ← Synthesized outputs, comparisons, strategic insights
|
|
56
|
+
|
|
57
|
+
raw/
|
|
58
|
+
├── papers/ ← PDFs, journal articles, preprints
|
|
59
|
+
├── conversations/ ← AI dialogues, meeting notes, transcripts
|
|
60
|
+
├── data/ ← Datasets, R output files, analysis exports
|
|
61
|
+
└── references/ ← External codebases, specs, documentation
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Entity Types
|
|
67
|
+
|
|
68
|
+
| Type | Location | Page purpose |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| **Source** | `wiki/sources/` | Summary of a raw document: key claims, quotes, metadata |
|
|
71
|
+
| **Theory** | `wiki/theories/` | A theoretical framework: definition, key thinkers, application here |
|
|
72
|
+
| **Method** | `wiki/methods/` | A methodological choice: what was done, why, limitations |
|
|
73
|
+
| **Finding** | `wiki/findings/` | A specific result: statistical context, interpretation, R function reference |
|
|
74
|
+
| **Argument** | `wiki/arguments/` | A central claim: what it asserts, what evidence supports it, what challenges it |
|
|
75
|
+
| **Persona** | `wiki/personas/` | A user type: goals, what they need from this application |
|
|
76
|
+
| **Analysis** | `wiki/analyses/` | A synthesized output: comparison, gap analysis, strategic insight |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Page Format
|
|
81
|
+
|
|
82
|
+
Every wiki page must have this YAML frontmatter:
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
---
|
|
86
|
+
title: <page title>
|
|
87
|
+
type: source | theory | method | finding | argument | persona | analysis
|
|
88
|
+
created: YYYY-MM-DD
|
|
89
|
+
updated: YYYY-MM-DD
|
|
90
|
+
sources:
|
|
91
|
+
- <raw/ filenames or wiki pages that informed this>
|
|
92
|
+
tags:
|
|
93
|
+
- <relevant tags>
|
|
94
|
+
---
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Followed by: one-line summary, body with headers and tables, and a **Related pages** section at the bottom using `[[page-name]]` links.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Workflows
|
|
102
|
+
|
|
103
|
+
### Ingest a Paper or Article
|
|
104
|
+
|
|
105
|
+
1. Read the source file from `raw/papers/` or `raw/references/`
|
|
106
|
+
2. Discuss key takeaways (ask 1-3 clarifying questions if needed)
|
|
107
|
+
3. Create a summary page in `wiki/sources/`
|
|
108
|
+
4. Identify which theories, methods, or arguments it supports or challenges — update those pages
|
|
109
|
+
5. Create new entity pages as warranted (new theory, new method, etc.)
|
|
110
|
+
6. Update `wiki/glossary.md` with new domain terms
|
|
111
|
+
7. Update `wiki/index.md` and `wiki/overview.md` if the source shifts the big picture
|
|
112
|
+
8. Append to `wiki/log.md`
|
|
113
|
+
|
|
114
|
+
### Ingest an R Analysis Output
|
|
115
|
+
|
|
116
|
+
1. Read the output from `raw/data/`
|
|
117
|
+
2. Identify what R function produced it and with what parameters
|
|
118
|
+
3. Create or update a `wiki/findings/` page documenting the result
|
|
119
|
+
4. Link the finding to the argument(s) it supports in `wiki/arguments/`
|
|
120
|
+
5. Note the R function and parameters in the finding page (makes it verifiable and updatable)
|
|
121
|
+
6. Update `wiki/index.md` and append to `wiki/log.md`
|
|
122
|
+
|
|
123
|
+
### Ingest a Conversation
|
|
124
|
+
|
|
125
|
+
1. Read the transcript from `raw/conversations/`
|
|
126
|
+
2. Extract: key decisions made, questions raised, terminology clarified, arguments refined
|
|
127
|
+
3. Update affected wiki pages (typically `wiki/arguments/`, `wiki/methods/`, `wiki/analyses/`)
|
|
128
|
+
4. Create new pages if new concepts emerged
|
|
129
|
+
5. Update `wiki/glossary.md` and append to `wiki/log.md`
|
|
130
|
+
|
|
131
|
+
### Query
|
|
132
|
+
|
|
133
|
+
1. Read `wiki/index.md` to identify relevant pages
|
|
134
|
+
2. Read those pages
|
|
135
|
+
3. Synthesize a clear answer with citations to wiki pages
|
|
136
|
+
4. Ask: "Should I file this as a wiki page?" If yes, save to `wiki/analyses/`
|
|
137
|
+
5. Append to `wiki/log.md`
|
|
138
|
+
|
|
139
|
+
### Lint
|
|
140
|
+
|
|
141
|
+
1. Read all pages in the wiki
|
|
142
|
+
2. Report: contradictions between pages, stale claims, orphan pages, missing cross-references, inconsistent terminology
|
|
143
|
+
3. Propose fixes and ask which ones to apply
|
|
144
|
+
4. Append to `wiki/log.md`
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Log Format
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
## [YYYY-MM-DD] <action> | <title>
|
|
152
|
+
|
|
153
|
+
**Action:** <description>
|
|
154
|
+
Pages created: ...
|
|
155
|
+
Pages updated: ...
|
|
156
|
+
Key additions: ...
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Terminology Discipline
|
|
162
|
+
|
|
163
|
+
- Check `wiki/glossary.md` before using any domain term
|
|
164
|
+
- If a new term appears in a source, add it to the glossary before using it elsewhere
|
|
165
|
+
- If a term conflicts with an existing entry, flag it explicitly before updating
|
|
166
|
+
- Key terms for this domain: [populated by domain expert — add canonical terms here as the wiki develops]
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## R Functions in This Application
|
|
171
|
+
|
|
172
|
+
The following R functions are the analytical backbone of {{PROJECT_NAME}}. Each exported function should have a corresponding wiki entry linking its output to `wiki/findings/` pages:
|
|
173
|
+
|
|
174
|
+
{{EXPORTED_FUNCTIONS}}
|
|
175
|
+
|
|
176
|
+
When ingesting an R analysis output, always record:
|
|
177
|
+
- Which function produced it
|
|
178
|
+
- The parameter values used
|
|
179
|
+
- The date it was run
|
|
180
|
+
- What finding page documents it
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Philosophical Alignment
|
|
185
|
+
|
|
186
|
+
Every wiki page is evaluated against the question: does this serve the application's purpose of making research accessible to its intended audiences? Knowledge that exists only in academic prose has a single audience. Knowledge filed in this wiki serves general readers (via the web app), data analysts (via the API), AI agents (via MCP tools), and the domain expert themselves (via this wiki).
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Connection to the Framework Layer
|
|
191
|
+
|
|
192
|
+
This wiki documents **what** this application knows. The dataimago-design wiki documents **how** the application is built. When a finding page references an R function, that function's API exposure is documented in the framework layer. The connection is:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
wiki/findings/my-finding.md
|
|
196
|
+
→ references HelloWorld::my_function()
|
|
197
|
+
→ exposed at GET /my-endpoint
|
|
198
|
+
→ documented in dataimago-design/wiki/patterns/rest-api-from-r.md
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Do not duplicate framework documentation here. Reference it.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/README.md · sha256:19a8e30db9c7fc15e62e7bebb573041947b31be886d2e32d75b217236b0ab421 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
# Quarto Website Template
|
|
3
|
+
|
|
4
|
+
Canonical template for Quarto-powered R package websites built with the dataimago framework.
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
This template is consumed by `dataimago::create_quarto_documentation()` when `scaffold_full_site = TRUE`. It can also be used manually by copying the template files and replacing placeholders.
|
|
9
|
+
|
|
10
|
+
## Placeholders
|
|
11
|
+
|
|
12
|
+
All `.template` files use Mustache-style `{{PLACEHOLDER}}` syntax:
|
|
13
|
+
|
|
14
|
+
| Placeholder | Source | Description |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `{{PACKAGE_NAME}}` | DESCRIPTION `Package` field | R package name |
|
|
17
|
+
| `{{PACKAGE_TITLE}}` | DESCRIPTION `Title` field | Full package title |
|
|
18
|
+
| `{{PACKAGE_DESCRIPTION}}` | DESCRIPTION `Description` field | Package description |
|
|
19
|
+
| `{{PACKAGE_AUTHOR}}` | DESCRIPTION `Authors@R` field | Author information |
|
|
20
|
+
| `{{PACKAGE_LICENSE}}` | DESCRIPTION `License` field | License type |
|
|
21
|
+
| `{{SITE_URL}}` | DESCRIPTION `URL` field | GitHub Pages URL |
|
|
22
|
+
| `{{REPO_URL}}` | DESCRIPTION `BugReports` (minus `/issues`) | GitHub repo URL |
|
|
23
|
+
|
|
24
|
+
## Template Files
|
|
25
|
+
|
|
26
|
+
- `_quarto.yml.template` -- Site configuration with navbar, sidebar, footer, and theme
|
|
27
|
+
- `index.qmd.template` -- Homepage with hero section and feature cards
|
|
28
|
+
- `ethics.qmd.template` -- Ethical AI principles from dataimago-design wiki
|
|
29
|
+
- `about.qmd.template` -- Package about page
|
|
30
|
+
|
|
31
|
+
## Static Assets (no templating)
|
|
32
|
+
|
|
33
|
+
- `assets/js/scroll.js` -- Sticky header shrink on scroll
|
|
34
|
+
- `assets/js/custom-anchors.js` -- Left-placed anchor links on headings
|
|
35
|
+
- `assets/js/logo-switch.js` -- Theme-aware logo hover effects (uses `{{SITE_URL}}`)
|
|
36
|
+
|
|
37
|
+
## Features Included
|
|
38
|
+
|
|
39
|
+
- Sticky navbar that shrinks on scroll
|
|
40
|
+
- Custom anchor links on all headings
|
|
41
|
+
- Theme-aware logo switching (dark/light mode)
|
|
42
|
+
- Lenis smooth scrolling
|
|
43
|
+
- Accessibility layer (reduced motion, high contrast, skip links)
|
|
44
|
+
- Ethics-first content pages sourced from dataimago-design wiki
|
|
45
|
+
- Documents and presentations content scaffolding
|
|
46
|
+
- News/changelog page
|
|
47
|
+
- Custom 404 page
|
|
48
|
+
- Open Graph and Twitter Card metadata
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/_quarto.yml.template · sha256:d28f9f49ba75df94183a074bcab94399ea10368ddfd538055f6b421d8194af91 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
|
+
project:
|
|
3
|
+
type: website
|
|
4
|
+
title: "{{PACKAGE_TITLE}}"
|
|
5
|
+
output-dir: ../../docs
|
|
6
|
+
render:
|
|
7
|
+
- "*.qmd"
|
|
8
|
+
- "!content/presentations/**"
|
|
9
|
+
- "content/documents/**"
|
|
10
|
+
|
|
11
|
+
execute:
|
|
12
|
+
freeze: auto
|
|
13
|
+
|
|
14
|
+
extensions:
|
|
15
|
+
- dataimago/ai-native
|
|
16
|
+
|
|
17
|
+
filters:
|
|
18
|
+
- svg-inline
|
|
19
|
+
|
|
20
|
+
references:
|
|
21
|
+
- type: r
|
|
22
|
+
title: "Function Reference"
|
|
23
|
+
source: "../../man"
|
|
24
|
+
|
|
25
|
+
website:
|
|
26
|
+
site-url: "{{SITE_URL}}"
|
|
27
|
+
repo-url: "{{REPO_URL}}"
|
|
28
|
+
title: "{{PACKAGE_TITLE}}"
|
|
29
|
+
description: "{{PACKAGE_DESCRIPTION}}"
|
|
30
|
+
favicon: /assets/img/ai_monogram_supreme_favicon.png
|
|
31
|
+
repo-actions: none
|
|
32
|
+
page-navigation: false
|
|
33
|
+
bread-crumbs: false
|
|
34
|
+
|
|
35
|
+
navbar:
|
|
36
|
+
title: "{{PACKAGE_NAME}}"
|
|
37
|
+
logo: /assets/img/ai_monogram.svg
|
|
38
|
+
logo-alt: "{{PACKAGE_NAME}}"
|
|
39
|
+
logo-href: "{{SITE_URL}}"
|
|
40
|
+
title-href: "{{SITE_URL}}"
|
|
41
|
+
search: false
|
|
42
|
+
pinned: true
|
|
43
|
+
left:
|
|
44
|
+
- href: index.qmd
|
|
45
|
+
text: Home
|
|
46
|
+
- href: r_package.qmd
|
|
47
|
+
text: R Package
|
|
48
|
+
- text: Ethics
|
|
49
|
+
menu:
|
|
50
|
+
- href: ethics.qmd
|
|
51
|
+
text: Ethical AI Principles
|
|
52
|
+
- href: design_system.qmd
|
|
53
|
+
text: Design System
|
|
54
|
+
- href: governance.qmd
|
|
55
|
+
text: Democratic Governance
|
|
56
|
+
- text: Foundation
|
|
57
|
+
menu:
|
|
58
|
+
- href: mission.qmd
|
|
59
|
+
text: Mission & Vision
|
|
60
|
+
- href: philosophy.qmd
|
|
61
|
+
text: Philosophy
|
|
62
|
+
- text: Resources
|
|
63
|
+
menu:
|
|
64
|
+
- href: documents.qmd
|
|
65
|
+
text: Documents
|
|
66
|
+
- href: presentations.qmd
|
|
67
|
+
text: Presentations
|
|
68
|
+
- href: news.qmd
|
|
69
|
+
text: News
|
|
70
|
+
right:
|
|
71
|
+
- text: "<img src='/assets/img/github_logo.svg' class='navbar-github-logo' title='GitHub' alt='GitHub' style='height:32px; vertical-align:middle; padding-right: 2px; margin-top: 0px;'/>"
|
|
72
|
+
menu:
|
|
73
|
+
- href: "{{REPO_URL}}"
|
|
74
|
+
text: Source Code
|
|
75
|
+
- href: "{{REPO_URL}}/issues"
|
|
76
|
+
text: Report a Bug
|
|
77
|
+
- href: "{{REPO_URL}}/discussions"
|
|
78
|
+
text: Request a Feature
|
|
79
|
+
target: _blank
|
|
80
|
+
|
|
81
|
+
sidebar:
|
|
82
|
+
style: "docked"
|
|
83
|
+
search: true
|
|
84
|
+
contents:
|
|
85
|
+
- section: "Getting Started"
|
|
86
|
+
contents:
|
|
87
|
+
- r_package.qmd
|
|
88
|
+
- section: "Ethics & Design"
|
|
89
|
+
contents:
|
|
90
|
+
- ethics.qmd
|
|
91
|
+
- design_system.qmd
|
|
92
|
+
- governance.qmd
|
|
93
|
+
- section: "Foundation"
|
|
94
|
+
contents:
|
|
95
|
+
- mission.qmd
|
|
96
|
+
- philosophy.qmd
|
|
97
|
+
- section: "Resources"
|
|
98
|
+
contents:
|
|
99
|
+
- documents.qmd
|
|
100
|
+
- presentations.qmd
|
|
101
|
+
- news.qmd
|
|
102
|
+
|
|
103
|
+
page-footer:
|
|
104
|
+
left:
|
|
105
|
+
- text: "<img src='/assets/img/quarto_logo.svg' class='footer-quarto-logo inline-svg' title='quarto.org' alt='quarto.org' style='width:28px; height:28px; vertical-align:middle; padding-right: 4px; margin-top: 6px;'/>"
|
|
106
|
+
href: https://quarto.org/
|
|
107
|
+
target: _blank
|
|
108
|
+
center:
|
|
109
|
+
- text: "<img src='/assets/img/ai_monogram.svg' class='footer-ai-monogram-logo inline-svg' title='dataimago.ai' alt='dataimago.ai' style='height:28px; vertical-align:middle; padding-right: 4px; margin-top: 6px;'/>"
|
|
110
|
+
href: https://dataimago.ai/
|
|
111
|
+
target: _blank
|
|
112
|
+
- text: "<img src='/assets/img/package_hex_logo.svg' class='footer-package-hex-logo inline-svg' title='{{PACKAGE_NAME}} R Package' alt='{{PACKAGE_NAME}} R Package' style='height: 32px; margin-top: 3px;'/>"
|
|
113
|
+
href: "{{SITE_URL}}"
|
|
114
|
+
|
|
115
|
+
metadata:
|
|
116
|
+
image: /assets/img/ai_monogram_supreme_COLOR.png
|
|
117
|
+
open-graph: true
|
|
118
|
+
twitter-card:
|
|
119
|
+
image: /assets/img/ai_monogram_supreme_COLOR.png
|
|
120
|
+
card-style: summary_large_image
|
|
121
|
+
|
|
122
|
+
format:
|
|
123
|
+
html:
|
|
124
|
+
theme:
|
|
125
|
+
light: _extensions/dataimago/ai-native/assets/css/dataimago-light.scss
|
|
126
|
+
dark: _extensions/dataimago/ai-native/assets/css/dataimago-dark.scss
|
|
127
|
+
toc: true
|
|
128
|
+
toc-depth: 3
|
|
129
|
+
code-copy: true
|
|
130
|
+
code-overflow: wrap
|
|
131
|
+
include-after: |
|
|
132
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
133
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
134
|
+
<link href="https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@200;300;400;500;600;700&family=Noto+Sans:wdth,wght@100..125,300..800&family=Noto+Sans+Math&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
|
135
|
+
<script src="https://unpkg.com/lenis@1.3.8/dist/lenis.min.js"></script>
|
|
136
|
+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
|
|
137
|
+
<script type="text/javascript" src="/assets/js/scroll.js"></script>
|
|
138
|
+
<script type="text/javascript" src="/assets/js/logo-switch.js"></script>
|
|
139
|
+
<script type="text/javascript" src="/assets/js/lenis-integration.js"></script>
|
|
140
|
+
<script type="text/javascript" src="/assets/js/custom-anchors.js"></script>
|
|
141
|
+
<script type="text/javascript" src="/assets/js/accessibility.js"></script>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/about.qmd.template · sha256:5f896d14240e32c56a8711cbc458e8d3726cf8bcebac154aa62ead41f49af185 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
---
|
|
3
|
+
title: "About {{PACKAGE_NAME}}"
|
|
4
|
+
format:
|
|
5
|
+
html:
|
|
6
|
+
toc: true
|
|
7
|
+
toc-depth: 2
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
{{PACKAGE_DESCRIPTION}}
|
|
13
|
+
|
|
14
|
+
## Built with dataimago
|
|
15
|
+
|
|
16
|
+
{{PACKAGE_NAME}} is built using the [dataimago](https://dataimago.ai) framework --- an AI-native application development framework for data science. dataimago provides:
|
|
17
|
+
|
|
18
|
+
- Complete design system compilation from tokens to production-ready assets
|
|
19
|
+
- Multi-platform deployment (Quarto, Shiny, Next.js)
|
|
20
|
+
- MCP-compatible tooling for AI agent integration
|
|
21
|
+
- Ethical AI build-time validation
|
|
22
|
+
- R-first workflows with modern web tools
|
|
23
|
+
|
|
24
|
+
## Author
|
|
25
|
+
|
|
26
|
+
{{PACKAGE_AUTHOR}}
|
|
27
|
+
|
|
28
|
+
## License
|
|
29
|
+
|
|
30
|
+
{{PACKAGE_LICENSE}}
|
|
31
|
+
|
|
32
|
+
## Links
|
|
33
|
+
|
|
34
|
+
- [GitHub Repository]({{REPO_URL}})
|
|
35
|
+
- [Bug Reports]({{REPO_URL}}/issues)
|
|
36
|
+
- [dataimago Framework](https://dataimago.ai)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/assets/js/custom-anchors.js · sha256:9b0f2d567a86e90431cc1470a6542f4e0549245dfda7b1b05b94119bddab0cb9 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
|
+
anchors.options = {
|
|
3
|
+
placement: 'left',
|
|
4
|
+
visible: 'hover'
|
|
5
|
+
};
|
|
6
|
+
anchors.add('h1, h2, h3, h4, h5, h6');
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/assets/js/logo-switch.js · sha256:f69f3ad9c9ab670197c32d75e072cdfa5fb5cc0fc720f636dd9a9e3a3c44015c · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
|
+
var defaultLogoSrc = '/assets/img/ai_monogram.svg';
|
|
3
|
+
var defaultLogoHref = '{{SITE_URL}}';
|
|
4
|
+
var hoverLogoHref = 'https://dataimago.ai';
|
|
5
|
+
|
|
6
|
+
function getCurrentTheme() {
|
|
7
|
+
var dataTheme = document.documentElement.getAttribute('data-bs-theme');
|
|
8
|
+
if (dataTheme === 'dark') return 'dark';
|
|
9
|
+
|
|
10
|
+
var lightSheets = document.querySelectorAll('link.quarto-color-scheme:not(.quarto-color-alternate)');
|
|
11
|
+
var allLightDisabled = true;
|
|
12
|
+
for (var i = 0; i < lightSheets.length; i++) {
|
|
13
|
+
if (!lightSheets[i].disabled) { allLightDisabled = false; break; }
|
|
14
|
+
}
|
|
15
|
+
var darkSheets = document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate');
|
|
16
|
+
var anyDarkEnabled = false;
|
|
17
|
+
for (var j = 0; j < darkSheets.length; j++) {
|
|
18
|
+
if (!darkSheets[j].disabled) { anyDarkEnabled = true; break; }
|
|
19
|
+
}
|
|
20
|
+
if (allLightDisabled && anyDarkEnabled) return 'dark';
|
|
21
|
+
if (document.body.classList.contains('quarto-dark')) return 'dark';
|
|
22
|
+
return 'light';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function setupNavbarBrandHover() {
|
|
26
|
+
var navbarLogo = document.querySelector('.navbar-logo');
|
|
27
|
+
var navbarBrand = navbarLogo ? navbarLogo.closest('a') : document.querySelector('.navbar-brand');
|
|
28
|
+
if (!navbarBrand) return;
|
|
29
|
+
|
|
30
|
+
navbarBrand.addEventListener('mouseover', function() {
|
|
31
|
+
navbarBrand.href = hoverLogoHref;
|
|
32
|
+
if (navbarLogo) navbarLogo.classList.add('logo-hover');
|
|
33
|
+
});
|
|
34
|
+
navbarBrand.addEventListener('mouseout', function() {
|
|
35
|
+
navbarBrand.href = defaultLogoHref;
|
|
36
|
+
if (navbarLogo) navbarLogo.classList.remove('logo-hover');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function setupFooterLogoHover() {
|
|
41
|
+
var footerLogos = document.querySelectorAll('.footer-ai-monogram-logo');
|
|
42
|
+
footerLogos.forEach(function(logo) {
|
|
43
|
+
logo.addEventListener('mouseover', function() { logo.classList.add('logo-hover'); });
|
|
44
|
+
logo.addEventListener('mouseout', function() { logo.classList.remove('logo-hover'); });
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function initLogoSwitch() {
|
|
49
|
+
setupNavbarBrandHover();
|
|
50
|
+
setupFooterLogoHover();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (document.readyState === 'loading') {
|
|
54
|
+
document.addEventListener('DOMContentLoaded', initLogoSwitch);
|
|
55
|
+
} else {
|
|
56
|
+
initLogoSwitch();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
var themeObserver = new MutationObserver(function(mutations) {
|
|
60
|
+
mutations.forEach(function(mutation) {
|
|
61
|
+
if (mutation.type === 'attributes' &&
|
|
62
|
+
(mutation.attributeName === 'data-bs-theme' || mutation.attributeName === 'class')) {
|
|
63
|
+
setTimeout(initLogoSwitch, 100);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
themeObserver.observe(document.documentElement, { attributes: true });
|
|
68
|
+
themeObserver.observe(document.body, { attributes: true });
|
|
69
|
+
|
|
70
|
+
document.querySelectorAll('link.quarto-color-scheme').forEach(function(sheet) {
|
|
71
|
+
new MutationObserver(function() { setTimeout(initLogoSwitch, 100); })
|
|
72
|
+
.observe(sheet, { attributes: true, attributeFilter: ['disabled'] });
|
|
73
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/assets/js/scroll.js · sha256:694f335a8c098d252123b523e1a7ac8d475da436eb3c5f73451d96108b2863d2 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
|
|
2
|
+
$(window).scroll(function(){
|
|
3
|
+
if($(window).scrollTop() > 35) {
|
|
4
|
+
$('.navbar').addClass("shrink");
|
|
5
|
+
$('.navbar-title').addClass("shrink");
|
|
6
|
+
$('.navbar-logo').addClass("shrink");
|
|
7
|
+
$('body').addClass("shrink");
|
|
8
|
+
} else {
|
|
9
|
+
$('.navbar').removeClass("shrink");
|
|
10
|
+
$('.navbar-title').removeClass("shrink");
|
|
11
|
+
$('.navbar-logo').removeClass("shrink");
|
|
12
|
+
$('body').removeClass("shrink");
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
$(document).ready(function() {
|
|
17
|
+
function observeDropdownChanges() {
|
|
18
|
+
var observer = new MutationObserver(function(mutations) {
|
|
19
|
+
mutations.forEach(function(mutation) {
|
|
20
|
+
if (mutation.type === 'attributes') {
|
|
21
|
+
var $target = $(mutation.target);
|
|
22
|
+
if ($target.hasClass('dropdown-toggle')) {
|
|
23
|
+
var $dropdown = $target.closest('.dropdown, .nav-item');
|
|
24
|
+
var isExpanded = $target.attr('aria-expanded') === 'true';
|
|
25
|
+
|
|
26
|
+
if (isExpanded) {
|
|
27
|
+
$dropdown.addClass('open');
|
|
28
|
+
} else {
|
|
29
|
+
$dropdown.removeClass('open');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
$('.navbar-nav .dropdown-toggle').each(function() {
|
|
37
|
+
observer.observe(this, {
|
|
38
|
+
attributes: true,
|
|
39
|
+
attributeFilter: ['aria-expanded']
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
observeDropdownChanges();
|
|
45
|
+
|
|
46
|
+
$('.navbar-nav .dropdown-toggle').on('click', function() {
|
|
47
|
+
var $this = $(this);
|
|
48
|
+
var $dropdown = $this.closest('.dropdown, .nav-item');
|
|
49
|
+
|
|
50
|
+
setTimeout(function() {
|
|
51
|
+
var isExpanded = $this.attr('aria-expanded') === 'true';
|
|
52
|
+
if (isExpanded) {
|
|
53
|
+
$dropdown.addClass('open');
|
|
54
|
+
} else {
|
|
55
|
+
$dropdown.removeClass('open');
|
|
56
|
+
}
|
|
57
|
+
}, 50);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
$('.navbar-nav .dropdown, .navbar-nav .nav-item').on('show.bs.dropdown', function() {
|
|
61
|
+
$(this).addClass('open');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
$('.navbar-nav .dropdown, .navbar-nav .nav-item').on('hide.bs.dropdown', function() {
|
|
65
|
+
$(this).removeClass('open');
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/ethics.qmd.template · sha256:fc151adb9c9fd9934a3c23ca5822eb6b05ca27795070ff7dbb26acd0e50ddbe5 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
---
|
|
3
|
+
title: "Ethical AI Principles"
|
|
4
|
+
subtitle: "Superalignment Through Design Architecture"
|
|
5
|
+
format:
|
|
6
|
+
html:
|
|
7
|
+
toc: true
|
|
8
|
+
toc-depth: 3
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
{{PACKAGE_NAME}} treats every design token, animation curve, and color choice as a moral decision with consequences for human agency. Ethics is not bolted on after design --- it is embedded in the system architecture from the foundation.
|
|
12
|
+
|
|
13
|
+
## Core Commitments
|
|
14
|
+
|
|
15
|
+
1. **Emancipation over efficiency** --- When efficiency and emancipation conflict, emancipation always wins.
|
|
16
|
+
2. **AI in culture, not culture in AI** --- Technology serves lived human contexts, not the reverse.
|
|
17
|
+
3. **Democratic participation** --- Communities affected by design decisions must have binding authority.
|
|
18
|
+
4. **Reflexive practice** --- The system questions its own power relations.
|
|
19
|
+
5. **Dialectical thinking** --- Productive tension over false simplicity.
|
|
20
|
+
|
|
21
|
+
## Design Principles
|
|
22
|
+
|
|
23
|
+
### Accessibility Beyond Compliance
|
|
24
|
+
WCAG compliance is a floor, not a ceiling. Enhanced standards: 7.0:1 contrast, 48px touch targets, 300ms motion maximum.
|
|
25
|
+
|
|
26
|
+
### Ethical Tokens First-Class
|
|
27
|
+
Ethical constraints are first-class design tokens enforced at build time through the three-tier hierarchy (Primitive, Semantic, Ethical).
|
|
28
|
+
|
|
29
|
+
### Performance Equity
|
|
30
|
+
Speed is access. Design targets the most constrained users: 2G networks, single-core processors, 1GB RAM devices.
|
|
31
|
+
|
|
32
|
+
### Color Democracy
|
|
33
|
+
Color is communication technology serving community meaning-making, not brand commodity.
|
|
34
|
+
|
|
35
|
+
### Motion Dignity
|
|
36
|
+
Animation must respect vestibular safety, cognitive load, and cultural expectations.
|
|
37
|
+
|
|
38
|
+
## How Ethics Are Enforced
|
|
39
|
+
|
|
40
|
+
::: {.ethical-note}
|
|
41
|
+
**Build-time validation:** Three automated validators gate every deployment:
|
|
42
|
+
|
|
43
|
+
- **Contrast checking** --- 7.0:1 minimum ratio
|
|
44
|
+
- **Motion linting** --- 300ms maximum duration, `prefers-reduced-motion` required
|
|
45
|
+
- **Bundle size checking** --- Performance equity for low-bandwidth users
|
|
46
|
+
:::
|
|
47
|
+
|
|
48
|
+
For the complete design system documentation, see the [Design System](design_system.qmd) page.
|
|
49
|
+
For governance processes, see [Democratic Governance](governance.qmd).
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/index.qmd.template · sha256:fa09cd4cce412445d164a1ca1248c5080e03ee65db6e762e4bf2e543557c2958 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
|
|
2
|
+
---
|
|
3
|
+
format:
|
|
4
|
+
html:
|
|
5
|
+
page-layout: full
|
|
6
|
+
toc: false
|
|
7
|
+
sidebar: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
::::::::: {.lenis-slide}
|
|
11
|
+
::::::: {.hero-section}
|
|
12
|
+
:::::: {.grid}
|
|
13
|
+
:::: {.g-col-12 .g-col-md-4 .logo-column}
|
|
14
|
+
::: {.logo-container}
|
|
15
|
+
{width=500 .hero-logo}
|
|
16
|
+
:::
|
|
17
|
+
::::
|
|
18
|
+
:::: {.g-col-12 .g-col-md-8 .g-start-md-5}
|
|
19
|
+
::: {.hero-content-scroller data-lenis-animate="fade-left"}
|
|
20
|
+
::: {.scroller-content}
|
|
21
|
+
|
|
22
|
+
### {{PACKAGE_NAME}} {.content-item}
|
|
23
|
+
|
|
24
|
+
{{PACKAGE_DESCRIPTION}}
|
|
25
|
+
|
|
26
|
+
### Built with dataimago {.content-item}
|
|
27
|
+
|
|
28
|
+
This package is built using the dataimago framework --- an AI-native application development framework for data science with ethical AI principles at its core.
|
|
29
|
+
|
|
30
|
+
### R-First Workflows {.content-item}
|
|
31
|
+
|
|
32
|
+
Familiar R interfaces wrap sophisticated web tools, providing modern development capabilities without leaving your preferred environment.
|
|
33
|
+
|
|
34
|
+
:::
|
|
35
|
+
:::
|
|
36
|
+
::::
|
|
37
|
+
::::::
|
|
38
|
+
:::::::
|
|
39
|
+
:::::::::
|
|
40
|
+
|
|
41
|
+
:::::: {.lenis-slide}
|
|
42
|
+
:::: {.cards-container}
|
|
43
|
+
:::: {.cards-grid}
|
|
44
|
+
|
|
45
|
+
::: {.feature-card}
|
|
46
|
+
### R Package
|
|
47
|
+
|
|
48
|
+
Complete function documentation and examples.
|
|
49
|
+
|
|
50
|
+
[View Documentation](r_package.qmd)
|
|
51
|
+
:::
|
|
52
|
+
|
|
53
|
+
::: {.feature-card}
|
|
54
|
+
### Ethical AI
|
|
55
|
+
|
|
56
|
+
Built on dataimago's ethical AI framework with build-time enforcement.
|
|
57
|
+
|
|
58
|
+
[Learn More](ethics.qmd)
|
|
59
|
+
:::
|
|
60
|
+
|
|
61
|
+
::: {.feature-card}
|
|
62
|
+
### Design System
|
|
63
|
+
|
|
64
|
+
Three-tier token architecture ensuring accessibility and cultural sensitivity.
|
|
65
|
+
|
|
66
|
+
[Explore](design_system.qmd)
|
|
67
|
+
:::
|
|
68
|
+
|
|
69
|
+
::::
|
|
70
|
+
::::
|
|
71
|
+
::::::
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dataimago/css",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
4
|
"description": "Compiled CSS and Tailwind preset for the dataimago ethical AI design system",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"./quarto/*": "./dist/quarto/*",
|
|
22
22
|
"./latex/*": "./dist/latex/*",
|
|
23
23
|
"./dataviz/*": "./dist/dataviz/*",
|
|
24
|
+
"./templates/*": "./dist/templates/*",
|
|
24
25
|
"./outputs.json": "./dist/outputs.json",
|
|
25
26
|
"./package.json": "./package.json"
|
|
26
27
|
},
|