Skip to content

Commit 4b7d71f

Browse files
docs: refresh QTI documentation scope
Align documentation with the current QTI 2.x/3.0 project scope, capture the review baseline, and remove obsolete planning artifacts. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent abe0be5 commit 4b7d71f

104 files changed

Lines changed: 786 additions & 1370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
## Project Context
44

5-
This is an educational assessment framework implementing QTI 2.x standards for K-12 assessments.
5+
This is an educational assessment framework implementing QTI standards for K-12 assessments.
66

77
**Critical Requirements**:
88

99
- **Accessibility**: WCAG 2.2 Level AA compliance is mandatory
1010
- **Cross-platform**: Components must work on desktop and mobile (touch-friendly)
11-
- **Standards compliance**: Must adhere to QTI 2.x specification
11+
- **Standards compliance**: Must adhere to the relevant QTI specification version
1212
- **Type safety**: TypeScript strict mode is enforced
1313
- **Modern Svelte**: Using Svelte 5 with runes
1414

.claude/skills/api-design-reviewer/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ export class Player {
239239
### 7. Framework-Specific Considerations
240240

241241
**For QTI/Educational Assessment Projects:**
242-
- Does the API respect QTI 2.2 standard terminology?
242+
- Does the API respect QTI standard terminology for the relevant version?
243243
- Are QTI roles (candidate, scorer, author, etc.) properly typed?
244244
- Is response processing type-safe?
245245
- Are interaction types properly discriminated?

.claude/skills/assessment-content-validator/SKILL.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Invoke this skill when:
2525
This skill performs both **technical validation** and **content quality review**:
2626

2727
### Technical Validation
28-
- QTI 2.x specification compliance
28+
- QTI specification compliance for the relevant version
2929
- Well-formed XML structure
3030
- Correct response processing logic
3131
- Proper interaction configuration
@@ -498,7 +498,7 @@ bun --filter @pie-qti/to-pie test
498498

499499
## QTI/PIE Knowledge Base
500500

501-
### QTI 2.2 Interaction Types (21 total)
501+
### Standard QTI Interaction Types (21 total)
502502

503503
1. **choiceInteraction** - Multiple choice (single or multiple response)
504504
2. **orderInteraction** - Order/sequence items
@@ -524,7 +524,7 @@ bun --filter @pie-qti/to-pie test
524524

525525
### Response Processing Templates
526526

527-
**QTI 2.2 Standard Templates:**
527+
**Standard Response Processing Templates:**
528528
1. `MATCH_CORRECT` - All-or-nothing scoring
529529
2. `MAP_RESPONSE` - Partial credit via response mapping
530530
3. `MAP_RESPONSE_POINT` - Partial credit for coordinates
@@ -550,7 +550,7 @@ PIE extends QTI with modern, JavaScript-based elements:
550550

551551
## References
552552

553-
- **QTI 2.2 Specification**: http://www.imsglobal.org/question/qtiv2p2/imsqti_v2p2.html
553+
- **QTI Specifications**: https://www.1edtech.org/standards/qti
554554
- **PIE Documentation**: https://github.com/pie-framework/pie-elements
555555
- **Item Writing Best Practices**: Educational measurement literature
556556
- **Accessible Assessment**: WCAG 2.2 + assessment-specific guidelines

CONTRIBUTING.md

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,39 @@ Thank you for your interest in contributing to the PIE-QTI project! This documen
66

77
### Prerequisites
88

9-
- **Bun** ≥1.1.0 (package manager and runtime)
9+
- **Bun** ≥1.3.11 (package manager and runtime)
1010
- **Node.js** ≥20.19.0 (for compatibility)
1111
- **Git** for version control
1212

1313
### Getting Started
1414

1515
1. **Clone the repository**
16+
1617
```bash
1718
git clone https://github.com/pie-framework/pie-qti.git
1819
cd pie-qti
1920
```
2021

2122
2. **Install dependencies**
23+
2224
```bash
2325
bun install
2426
```
2527

2628
3. **Build all packages**
29+
2730
```bash
2831
bun run build
2932
```
3033

3134
4. **Run tests**
35+
3236
```bash
33-
bun test
37+
bun run test
3438
```
3539

3640
5. **Start development server**
41+
3742
```bash
3843
cd apps/demo
3944
bun run dev
@@ -45,8 +50,13 @@ This is a monorepo with multiple packages:
4550

4651
- **`packages/item-player/`** - Core item player (21 interaction types)
4752
- **`packages/assessment-player/`** - Multi-item assessment player
53+
- **`packages/default-components/`** - Default web-component renderers for QTI interactions
54+
- **`packages/qti-common/`** - QTI 2.x / 3.0 version abstraction utilities
55+
- **`packages/to-pie/`**, **`packages/pie-to-qti2/`**, **`packages/core/`** - Transformation packages
4856
- **`packages/player-elements/`** - Web component wrappers
57+
- **`tools/cli/`** - Transform and analysis CLI
4958
- **`apps/demo/`** - Demo application
59+
- **`apps/docs/`** - Published docs site
5060
- **`apps/transform/`** - Internal transform reference harness; not part of supported app CI
5161

5262
## Code Standards
@@ -67,9 +77,9 @@ This is a monorepo with multiple packages:
6777

6878
- Write tests for new features
6979
- Maintain existing test coverage
70-
- Run tests with `bun test`
80+
- Run tests with `bun run test`
7181
- For QTI certification-facing changes, run `bun run test:certification:public`
72-
- E2E tests: `bun run test:e2e` (requires dev server running)
82+
- E2E tests: `bun run test:e2e` (Playwright starts the demo server unless `PLAYWRIGHT_REUSE_EXISTING_SERVER=true`)
7383

7484
### Commits
7585

@@ -79,17 +89,18 @@ This is a monorepo with multiple packages:
7989

8090
## Pull Request Process
8191

82-
1. **Fork the repository** and create a branch from `main`
92+
1. **Fork the repository** and create a branch from `master`
8393

8494
2. **Make your changes**
8595
- Follow code standards
8696
- Add tests for new functionality
8797
- Update documentation as needed
8898

8999
3. **Test your changes**
100+
90101
```bash
91102
bun run build
92-
bun test
103+
bun run test
93104
bun run test:certification:public # Required for QTI delivery behavior changes
94105
bun run test:e2e # If applicable
95106
```
@@ -108,11 +119,11 @@ This is a monorepo with multiple packages:
108119

109120
### Adding New Interaction Types
110121

111-
1. Create processor in `packages/item-player/src/processors/`
112-
2. Add Svelte component in `packages/item-player/src/components/`
113-
3. Update `InlineInteractionRenderer.svelte` or `BlockInteractionRenderer.svelte`
114-
4. Add tests in `packages/item-player/tests/processors/`
115-
5. Update documentation in README
122+
1. Add extraction and data-model support under `packages/item-player/src/interactions/<interaction>/`.
123+
2. Add the default Svelte custom element under `packages/default-components/src/plugins/<interaction>/`.
124+
3. Register the interaction in the item-player interaction modules and the default-components plugin index.
125+
4. Add extractor, component, and browser-visible tests that cover the interaction's QTI attributes and response semantics.
126+
5. Update the relevant README, PRD, eval YAML, and certification matrix entries when behavior or coverage changes.
116127

117128
### Fixing Bugs
118129

@@ -129,7 +140,7 @@ This is a monorepo with multiple packages:
129140

130141
## Security
131142

132-
If you discover a security vulnerability, please follow our [Security Policy](SECURITY.md) for responsible disclosure.
143+
If you discover a security vulnerability, please follow the security model in [docs/prds/architecture/security.md](docs/prds/architecture/security.md) and contact the maintainers privately before opening a public issue.
133144

134145
## Questions?
135146

README.md

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ This project provides two major capabilities:
3030

3131
Many Renaissance partners exchange content in **QTI format**, so bidirectional QTI ↔ PIE transformation is essential. This project **open sources that transformation framework** for partners and the broader community.
3232

33-
We also built a **spec-complete QTI player** because a modern, open-source option was missing—and we needed one for previewing, analysis, and "convert then render" workflows.
33+
We also built a **standards-oriented QTI player** because a modern, open-source option was missing—and we needed one for previewing, analysis, and "convert then render" workflows.
3434

3535
---
3636

37-
## Part 1: QTI Players (2.2 & 3.0)
37+
## Part 1: QTI Players
3838

39-
> **Status**: Production-ready (QTI 2.2); QTI 3.0 infrastructure complete; PCI/PNP/Catalog implemented (see STATUS.md)
39+
> **Status**: Production-ready for the supported QTI delivery scope; QTI 3.0 infrastructure, PCI, PNP, and Catalog support are implemented (see STATUS.md)
4040
41-
Full-featured players for rendering QTI 2.2 and 3.0 assessment content in the browser.
41+
Full-featured players for rendering QTI assessment content in the browser.
4242

4343
### Version-Agnostic Architecture
4444

@@ -55,7 +55,7 @@ See [`@pie-qti/qti-common`](packages/qti-common/README.md) for the version abstr
5555

5656
Renders and scores individual QTI items:
5757

58-
- **21 interaction types**All QTI 2.2 interactions supported
58+
- **21 standard interaction types**Standard QTI interactions supported through the shared extraction/rendering path
5959
- **45 response processing operators** — Complete client-side scoring
6060
- **Role/view-aware rendering** — candidate, scorer, author, tutor, proctor, testConstructor
6161
- **Adaptive items** — Multi-attempt workflows with progressive feedback
@@ -90,7 +90,7 @@ See the [ACME Likert plugin](packages/acme-likert-plugin/) for a complete extens
9090

9191
Components render via web components (Shadow DOM) with a CSS variable contract:
9292

93-
- **Theme tokens**DaisyUI-compatible variables (`--p`, `--a`, `--b1`, `--bc`, etc.)
93+
- **Theme tokens**PIE-QTI CSS variables (`--pie-qti-*`) with DaisyUI bridge support
9494
- **`::part()` hooks** — Stable part names for host-side style refinement
9595
- **Zero-CSS fallback** — Components render correctly with no host styles
9696

@@ -113,7 +113,7 @@ See [`@pie-qti/i18n`](packages/i18n/) for the complete i18n API and [custom tran
113113

114114
> **Status**: Under active development
115115
116-
Bidirectional transformation between QTI 2.2 XML and PIE JSON.
116+
Bidirectional transformation between QTI XML and PIE JSON: QTI → PIE ingest, plus PIE → QTI 2.2 export.
117117

118118
### Architecture Overview
119119

@@ -138,7 +138,7 @@ See [Transformation Engine Documentation](docs/TRANSFORMATION-ENGINE.md) for com
138138
- Best-effort semantic transformation otherwise
139139
- Vendor extension system for custom QTI variants
140140

141-
**PIE → QTI** (`@pie-qti/pie-to-qti`)
141+
**PIE → QTI** (`@pie-qti/pie-to-qti2`)
142142

143143
- Lossless reconstruction when PIE contains embedded QTI
144144
- Generator registry for custom PIE model handling
@@ -172,7 +172,7 @@ Command-line tool for batch operations:
172172
bun run pie-qti -- transform input.xml --format qti22:pie --output output.json
173173

174174
# Analyze QTI content
175-
bun run pie-qti -- analyze ./content-package/
175+
bun run pie-qti -- analyze-qti ./content-package/
176176

177177
# See all commands
178178
bun run pie-qti -- --help
@@ -206,10 +206,13 @@ bun run verify:apps:deploy
206206
bun run verify:publish
207207
```
208208

209-
CI uses two required quality lanes on PRs:
209+
CI runs the main quality gates on PRs:
210210

211-
- **Deployability lane:** `verify:apps:deploy` (apps/docs and apps/demo production buildability)
212-
- **Publishability lane:** `verify:publish:quick` (metadata, exports, publint, attw, pack, deps, source exports)
211+
- **Lint/type gates:** Biome, Svelte checks, TypeScript, translation coverage, and unit tests
212+
- **Certification gate:** `test:certification:public`
213+
- **Accessibility gate:** `verify:a11y`
214+
- **Deployability gate:** `verify:apps:deploy` (apps/docs and apps/demo production buildability)
215+
- **Publishability gate:** `verify:publish:quick` (metadata, exports, publint, attw, pack, deps, source exports)
213216

214217
Release behavior is lockstep and patch-only for publishable `packages/*`:
215218

@@ -225,9 +228,10 @@ To test with [pie-players](https://github.com/pie-framework/pie-players) locally
225228
### GitHub Pages Preview
226229

227230
```bash
228-
bun run build:pages
231+
bun run verify:apps:deploy
232+
bun run docs:preview
233+
# In another shell, preview the examples app if needed:
229234
bun run preview:pages
230-
# Open http://localhost:4173/pie-qti/
231235
```
232236

233237
---
@@ -237,6 +241,8 @@ bun run preview:pages
237241
### Architecture & Project Layout
238242

239243
- **[Architecture Guide](docs/ARCHITECTURE.md)** — System design, package map, extensibility, theming, and security
244+
- **[PRD Inventory](docs/prds/INVENTORY.md)** — Canonical rationale and acceptance criteria map
245+
- **[Documentation Review](docs/DOCUMENTATION-REVIEW.md)** — Documentation inventory, review findings, and maintenance rules
240246

241247
### Players
242248

@@ -251,17 +257,16 @@ bun run preview:pages
251257
- **[Transformation Engine](docs/TRANSFORMATION-ENGINE.md)** — Architecture, plugin system, and extensibility
252258
- **[Transformation Guide](docs/PIE-QTI-TRANSFORMATION-GUIDE.md)** — Bidirectional transform overview
253259
- **[Vendor Plugin Guide](docs/VENDOR-TRANSFORM-PLUGIN-GUIDE.md)** — Building custom vendor plugins
254-
- **[Configuration Guide](docs/CONFIGURATION.md)** — Storage backends, plugins, and environment setup
255-
- **[Migration Guide](docs/MIGRATION_GUIDE.md)** — Upgrading from legacy storage to new architecture
260+
- **[Source Profiles](docs/SOURCE-PROFILES.md)** — Real-world QTI source detection and import adaptation
256261
- **[Transform Reference Harness](apps/transform/README.md)** — Internal playground for transformation experiments
257262
- **[CLI](tools/cli/README.md)** — Command-line batch operations
258263
- **[QTI → PIE](packages/to-pie/README.md)** — QTI to PIE transformer
259-
- **[PIE → QTI](packages/pie-to-qti/README.md)** — PIE to QTI transformer
260-
- **[IMS Content Packages](packages/pie-to-qti/docs/MANIFEST-GENERATION.md)** — Manifest generation
264+
- **[PIE → QTI](packages/pie-to-qti2/README.md)** — PIE to QTI transformer
265+
- **[IMS Content Packages](packages/pie-to-qti2/docs/MANIFEST-GENERATION.md)** — Manifest generation
261266

262267
### Extensibility
263268

264-
- **[Custom Generators](packages/pie-to-qti/CUSTOM-GENERATORS.md)** — Adding PIE model support
269+
- **[Custom Generators](packages/pie-to-qti2/CUSTOM-GENERATORS.md)** — Adding PIE model support
265270
- **[ACME Likert Plugin](packages/acme-likert-plugin/README.md)** — Player extensibility example
266271

267272
---

STATUS.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ workflows are the authoritative sources for detailed behavior.
1212
The core player packages are pre-1.0 but considered production-ready for the
1313
supported QTI delivery scope.
1414

15-
- `@pie-qti/item-player` renders single QTI items and supports all standard QTI
16-
2.2 item interaction types.
15+
- `@pie-qti/item-player` renders single QTI items and supports standard QTI
16+
item interaction types across the supported delivery scope.
1717
- `@pie-qti/assessment-player` sequences QTI assessment tests, sections, item
1818
refs, item session control, rubric blocks, and response submission.
1919
- `@pie-qti/default-components` supplies the default web-component renderers.
@@ -77,6 +77,9 @@ The current high-signal verification commands are:
7777
- `bun run typecheck`
7878
- `bun run build`
7979
- `bun run test:certification:public`
80+
- `bun run verify:a11y`
81+
- `bun run verify:apps:deploy`
82+
- `bun run verify:publish:quick`
8083

8184
The full suite was last run successfully as part of the interaction module
8285
refactor on 2026-05-04.

0 commit comments

Comments
 (0)