# QuantixMind Institute

A free and open academy for everything AI. A QuantixMind Institute initiative.

The Institute is a self paced, self hostable, MIT licensed online academy. It spans nine programs of study, from defending your own judgment to building and governing intelligent systems. There is no cost, no account, and no tracking. Everything runs in the browser and your progress is saved locally on your device.

The Institute confers recognition of self paced study. It is not an accredited degree granting body.

## Each program is a twenty week course

Every program is structured as a twenty week course of study. The canonical numbers live in `content/curriculum.js`, the one place program length and examination coverage are defined; nothing else should hard code them.

- **Twenty weekly units.** Each program spans twenty tracks, named "Week 1" through "Week 20", each with its own theme. The tracks are delivered across up to twelve content files per school (a base file plus `-2.js` through `-12.js` extension files, see "Split content files" below) and merged, in order, into one continuous program.
- **Lessons by kind.** A lesson may be a `lecture` (the default), a `reading`, an `exercise`, or a `case`. The engine shows a small typographic badge for the kind in the sidebar and lesson header. Opening a lesson marks it visited; it only counts as complete once the learner clicks "Mark complete" on the lesson itself.
- **Weekly examinations.** Each week ends in an examination of eight to ten questions, presented as the "Week N Examination". It passes at eighty percent or better and may be retaken freely. As of this writing, weeks 1 through 8 have their examination written; weeks 9 through 20 have lessons but not yet an examination. `content/curriculum.js` tracks this as `EXAM_WEEKS_BUILT`.
- **Capstone project.** An optional project brief, rendered after the founding weeks, marked complete by a self attestation checkbox ("I have completed this project").
- **Final examination.** An optional program wide final of twelve to fifteen questions, passing at eighty percent or better.

A program is complete when every lesson is marked complete, every weekly examination is passed, every drill (where present) is done, the capstone (if any) is attested, and the final examination (if any) is passed. Completion confers a program certificate. Completing all nine programs confers the Institute Diploma.

Every new field is optional. Programs still being published may show fewer than twenty weeks and remain fully usable and completable; the engine adapts its pacing copy to the actual number of weeks and never crashes on missing fields, missing content files, or stale saved progress.

## The nine programs

1. **Cognitive Security.** Protect your judgment from manipulation, disinformation, and AI over trust. (The founding school, fully published.)
2. **AI Foundations.** What AI is, how it works at a plain language level, and how to reason about it.
3. **Machine Learning Core.** The mechanics of learning from data, from models and training to evaluation.
4. **Working With AI.** Prompting, tools, and everyday workflows that get real value from AI systems.
5. **Building With AI.** Designing, integrating, and shipping applications on top of AI models.
6. **AI Safety.** Alignment, robustness, evaluation, and the open problems of reliable AI.
7. **Ethics, Law, and Policy.** Rights, accountability, regulation, and governance of AI in society.
8. **AI and Society.** Work, media, education, and the human impact of widespread AI.
9. **Frontiers.** Agents, multimodality, and the research edge of what AI can do next.

Programs come online as their curriculum is published. The hub shows any unpublished program as "in preparation" and never breaks if a content file is missing.

## Honest by design

This is free education, not a professional certification or proof of expertise. The Institute confers recognition of self paced study; it is not an accredited degree granting body. Each program issues a certificate, and completing every program confers the Institute Diploma. Both are exactly what they say: a record of self paced completion, generated in your browser. Understanding is a practice you keep, not a badge you earn once.

## Run it locally

No backend, no build step, no dependencies. It is static HTML, CSS, and JavaScript. From the project folder:

```
python3 -m http.server 8151
```

Then open <http://localhost:8151/> in a browser. Progress is saved locally under a single localStorage key (`qmi_academy_v1`), namespaced per school. Progress from the earlier standalone cognitive security app (`qmi_cogsec_v1`) is migrated automatically on first load. Clearing site data resets progress.

Because there is no backend, the whole academy also works offline once loaded, and can be served from any static host.

## Project structure

```
index.html      Institute hub: the nine school cards, progress, and diploma link
learn.html      The course app for one school (?school=<id>)
diploma.html    The overall Institute diploma page
schools.js      Canonical roster of the nine schools (ids, order, names, taglines)
academy.js      Shared progress layer (qmi_academy_v1, migration, progress math)
app.js          Generalized course engine: navigation, lessons, quizzes, drills, certificate
hub.js          Renders the hub school grid from the roster and registry
diploma.js      Renders the Institute diploma
content/        Up to three JavaScript files per school, each self registering (see below)
styles.css      Cinematic dark first theme with a luminous gold and ivory palette, light mode via prefers-color-scheme
ui.js           Shared interface layer: scroll reveals, count up stat band, reading progress, and the command palette
README.md       This file
LICENSE         MIT
```

## Adding a school, track, or lesson

Each school is a single self contained file in `content/`. It registers itself by pushing one school object onto `window.QMI_REGISTER`. The engine and hub read that registry, so no app code needs to change to add content.

Create `content/<id>.js` following this schema. Fields marked optional may be omitted; the engine tolerates their absence.

```js
window.QMI_REGISTER = window.QMI_REGISTER || [];
window.QMI_REGISTER.push({
  id: "slug",               // matches the id in schools.js, e.g. "ai-foundations"
  order: 2,                 // display order 1..9 (rendered as a roman numeral)
  name: "AI Foundations",
  icon: "◆",                // any single glyph, used as the program crest
  tagline: "one line",
  description: "2 to 3 sentence program description (shown on the syllabus)",
  tracks: [                 // the program's weekly units, in order
    {
      id: "slug",           // unique within the program
      name: "Week 1: What AI actually is",   // "Week N: <theme>"
      lessons: [
        {
          id: "slug",       // unique within the track
          title: "Lesson title",
          kind: "lecture",  // optional: "lecture" (default), "reading", "exercise", "case"
          minutes: 8,
          html: "<p>Lesson body as an HTML string.</p>",
          tools: [          // optional: copyable text blocks shown under the lesson
            { label: "Template name", text: "plain text to copy" }
          ]
        }
      ],
      quiz: {               // the Week N Examination, 8 to 10 questions, passes at 80%
        questions: [
          { q: "Question?", options: ["a", "b", "c", "d"], answer: 0, explain: "Why a is correct." }
        ]
      },
      drills: []            // optional, see below
    }
    // ...more weekly tracks
  ],
  capstone: {               // optional: a project brief shown after Week 4
    title: "Capstone project title",
    html: "<p>The project brief as an HTML string.</p>"
  },
  finalExam: {              // optional: 12 to 15 questions, passes at 80%
    questions: [
      { q: "Question?", options: ["a", "b", "c", "d"], answer: 0, explain: "Why a is correct." }
    ]
  }
});
```

### Completion rules

A program is complete when all of the following hold:

- every lesson has been visited,
- every weekly examination is passed at eighty percent or better,
- every drill (where a track defines them) is done,
- the capstone (if the program defines one) is attested, and
- the final examination (if the program defines one) is passed at eighty percent or better.

Progress lives in `localStorage` under `qmi_academy_v1`, namespaced per program, and includes lesson visits, examination scores, drill scores, the final examination score, and the capstone attestation. Records that predate any of these fields are healed on load rather than crashing.

Then add a `<script src="content/<id>.js"></script>` tag to `index.html`, `learn.html`, and `diploma.html` (alongside the existing content scripts), and make sure `schools.js` lists the school with a matching `id` and `order`.

### Split content files

Because an eight week program is large, its curriculum can be delivered across up to three files per school:

```
content/<id>.js     base file: the full program object (weeks 1 to a few)
content/<id>-2.js   extension: the next block of weeks
content/<id>-3.js   extension: the final block of weeks
```

The base file pushes a full program object as shown above. Each extension file pushes a lighter object that only carries more weekly tracks:

```js
window.QMI_REGISTER = window.QMI_REGISTER || [];
window.QMI_REGISTER.push({
  id: "ai-foundations",   // the SAME id as the base program
  extend: true,           // marks this as an extension, not a new program
  tracks: [ /* more weekly tracks, same track schema as above */ ]
});
```

`window.QMIAcademy.registry()` merges the registry before the hub, engine, and diploma read it: for every `extend: true` entry, its tracks are appended to the base program with the same `id`. Order is preserved by the script tag order in the HTML (base first, then `-2`, then `-3`), so the weeks stay in sequence. The merge is idempotent, and an extension whose base is not present is ignored.

The HTML loads all three files for every school, after the base file. A missing extension file (a `404`) degrades gracefully: the program simply shows the weeks that did load, and the pacing copy adapts to the actual count. Only the base file is required for a program to appear.

### Drills

`drills` is an optional array of drill objects. Each drill has a unique `id`, a `type` that selects the engine, a `title`, and an `intro`. Three engines exist:

- `type: "spot"` reads `techniques: [string]` and `items: [{ text, answer, why }]` where `answer` is one of the techniques.
- `type: "inbox"` reads `emails: [{ from, subject, preview, suspicious, why }]`.
- `type: "calibration"` reads `items: [{ claim, isTrue, why }]`.

See `content/cognitive-security.js` for complete, working examples of all three.

### Lesson checkpoints and widgets

Any lesson may carry two optional fields that the engine renders after the lesson body: `checks` (inline checkpoint questions) and `widgets` (interactive practice cards). Both are optional; a lesson without them renders exactly as before. Old saved progress keeps working, since these only add new keys.

#### `lesson.checks`

One to three inline checkpoint questions, rendered as a styled "Checkpoint" block after the lesson body. Each question locks on the first answer, shows the correct option and an explanation, and persists per lesson. Checkpoints never gate progress; they are a self check. Answering a checkpoint correctly on the first try earns a small point bonus.

```js
checks: [
  {
    q: "Question text?",
    options: ["a", "b", "c", "d"],   // exactly four strings
    answer: 1,                        // index of the correct option
    explain: "Why that answer is correct."
  }
  // up to three
]
```

#### `lesson.widgets`

Zero or more interactive cards, rendered after the checkpoints, one card each, in order. Unknown types are skipped gracefully. The five shapes are exact:

```js
widgets: [
  // 1. reveal: a prompt, then a button flips to the answer.
  { type: "reveal", prompt: "<html string>", answer: "<html string>" },

  // 2. match: two columns, click one on each side to pair. 4 to 8 pairs.
  { type: "match", instruction: "...", pairs: [ ["left", "right"], /* ... */ ] },

  // 3. sort: items given in CORRECT order; the engine shuffles them
  //    (deterministically, seeded from the lesson id, never starting solved).
  { type: "sort", instruction: "...", items: [ "first", "second", /* ... */ ] },

  // 4. scenario: a setup, then options; exactly one has best: true.
  { type: "scenario", setup: "<html string>", options: [
      { text: "...", feedback: "...", best: true },
      { text: "...", feedback: "...", best: false }
  ] },

  // 5. flashcards: a click to flip deck, prev and next. 5 to 12 cards.
  { type: "flashcards", title: "...", cards: [ { front: "...", back: "..." } /* ... */ ] }
]
```

Notes for contributors:

- `reveal.prompt`, `reveal.answer`, and `scenario.setup` accept HTML strings (like `lesson.html`). Everything else (`match` pairs, `sort` items, `scenario` option text and feedback, flashcard `front` and `back`) is plain text and is escaped by the engine.
- `sort` items must be listed in their correct final order. The learner sees them shuffled and reorders with arrows or drag; the shuffle is stable per lesson and re-solvable.
- `scenario` must have exactly one option with `best: true`.
- All widgets are keyboard accessible and mobile friendly, and use transitions only, no continuous animation.

### Light mastery: points and streak

The engine keeps a modest, honest mastery layer, stored in the same `qmi_academy_v1` key. Points are **recomputed from real progress on every read**, never banked, so they cannot drift or be gamed: a lesson visit earns points, a checkpoint answered correctly on the first try earns a bonus, a passed weekly examination earns more, and the capstone, final, and whole program each add a lump. A small points chip and a gentle day streak show in the course sidebar, and per program point totals show on the hub cards. Points are a personal study aid, not a score of competence, and the interface says so. Passing an examination and completing a program each trigger a brief, CSS only flourish.

## Writing guidelines for contributors

- Defensive and honest framing. Teach recognition and understanding, never how to cause harm.
- Keep lessons substantive and concrete, roughly 300 to 600 words, with real examples.
- Do not use em dashes or en dashes anywhere. Use commas, colons, or periods instead.
- Keep the tone clear, honest, and calm. Avoid hype and fear mongering.
- Do not overclaim. Certificates record completion, not competence.

## License

MIT, copyright 2026 QuantixMind Institute. See [LICENSE](LICENSE).
