Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file modified .DS_Store
Binary file not shown.
25 changes: 25 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,29 @@ Technical handoff for coding agents and contributors working on this repository.
- No backend/runtime services required
- Source dataset and generated card data are JSON files in repo

## Current Overnight Focus

If the active task is the post-synthesis snippet completeness round, start here first:

- `docs/curation/SNIPPET_COMPLETENESS_EXECUTION_CHECKLIST.md`
- `docs/curation/OVERNIGHT_AGENT_RUNBOOK.md`
- `data/vision_exam_pipeline/OVERNIGHT_EXECUTION_BOARD.md`
- `data/vision_exam_pipeline/plan_after_manual_synthesis.md`
- `data/vision_exam_pipeline/review_packets/round1_manual_synthesis.md`

Quick state command:

```bash
python3 scripts/vision_exam_pipeline.py status --round round1
```

Important for this phase:

- optimize for snippet completeness, not UI/topic architecture changes
- treat metadata architecture ideas as future-facing only for now
- be conservative about pruning before the next grading pass
- do not use OCR, `pdftotext`, or deterministic text extraction for exam question capture in the vision exam pipeline

## Current Snapshot (2026-03-22)

- `topic_cards.json`: **27 total cards**
Expand Down Expand Up @@ -315,3 +338,5 @@ PY
- If localStorage schema changes are intentional, bump storage key versions in `app/state-and-init.js`.
- If you adjust topic curation policy, update both this file and `docs/curation/TOPIC_MERGING_GUIDELINES.md`.
- If you defer a larger issue, track it in `docs/ROADMAP.md` and add/update a spec in `docs/specs/`.

@RTK.md
17 changes: 10 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
.PHONY: check-js check-py check-lines test setup-playwright smoke-ui full-ui stress-layout-ui export-canvas-guard-ui gemini-ui-protocol gemini-benchmark gemini-prompt-experiments gemini-health quality-dashboard maintenance-audit leave-better leave-better-ui validate
.PHONY: build-frontend-bundle check-js check-py check-lines test setup-playwright smoke-ui full-ui stress-layout-ui export-canvas-guard-ui gemini-ui-protocol gemini-benchmark gemini-prompt-experiments gemini-health quality-dashboard maintenance-audit leave-better leave-better-ui validate

PW_TMP := /tmp/pwtmp
PW_NODE_PATH := $(PW_TMP)/node_modules
PW_CLI := $(PW_NODE_PATH)/.bin/playwright

build-frontend-bundle:
python3 scripts/build_frontend_bundle.py
Comment on lines +7 to +8

Copilot AI Mar 25, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wiring build_frontend_bundle.py into check-py means a 'check' target now has side effects (generating/updating bundle outputs). In CI or local workflows this can cause surprising dirty working trees or inconsistent results; consider separating 'generate' vs 'check' (e.g., keep generation explicit, or add a follow-up verification step that asserts the generated bundle is up-to-date without modifying tracked files).

Copilot uses AI. Check for mistakes.

check-js:
node --check app/state-and-init.js
node --check app/splash-storage.js
Expand All @@ -25,9 +28,9 @@ check-js:
node --check scripts/full_ui_playwright.js
node --check scripts/stress_layout_playwright.js

check-py:
check-py: build-frontend-bundle

Copilot AI Mar 25, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wiring build_frontend_bundle.py into check-py means a 'check' target now has side effects (generating/updating bundle outputs). In CI or local workflows this can cause surprising dirty working trees or inconsistent results; consider separating 'generate' vs 'check' (e.g., keep generation explicit, or add a follow-up verification step that asserts the generated bundle is up-to-date without modifying tracked files).

Suggested change
check-py: build-frontend-bundle
check-py:

Copilot uses AI. Check for mistakes.
python3 -m py_compile build_topic_cards.py generate_ai_sections.py generate_key_points_and_recommendations.py enrich_key_point_details.py
python3 -m py_compile scripts/add_week_material.py scripts/migrate_study_database.py scripts/gemini_test_protocol.py scripts/maintenance_audit.py scripts/gemini_capability_benchmark.py scripts/gemini_prompt_experiments.py scripts/gemini_model_health.py scripts/quality_dashboard.py scripts/validate_extracted_material.py
python3 -m py_compile scripts/add_week_material.py scripts/build_frontend_bundle.py scripts/migrate_study_database.py scripts/gemini_test_protocol.py scripts/maintenance_audit.py scripts/gemini_capability_benchmark.py scripts/gemini_prompt_experiments.py scripts/gemini_model_health.py scripts/quality_dashboard.py scripts/validate_extracted_material.py scripts/vision_exam_pipeline.py
python3 -m py_compile $$(find pipelines -name '*.py' -type f)

check-lines:
Expand All @@ -41,16 +44,16 @@ setup-playwright:
npm install --prefix $(PW_TMP) playwright
$(PW_CLI) install chromium

smoke-ui: setup-playwright
smoke-ui: build-frontend-bundle setup-playwright
NODE_PATH=$(PW_NODE_PATH) node scripts/smoke_ui_playwright.js

full-ui: setup-playwright
full-ui: build-frontend-bundle setup-playwright
NODE_PATH=$(PW_NODE_PATH) node scripts/full_ui_playwright.js

stress-layout-ui: setup-playwright
stress-layout-ui: build-frontend-bundle setup-playwright
NODE_PATH=$(PW_NODE_PATH) node scripts/stress_layout_playwright.js

export-canvas-guard-ui: setup-playwright
export-canvas-guard-ui: build-frontend-bundle setup-playwright
NODE_PATH=$(PW_NODE_PATH) node scripts/export_canvas_guard_playwright.js

gemini-ui-protocol:
Expand Down
27 changes: 16 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
# Python Exam Cheat Sheet Builder

Build a clean, personalized Python exam cheat sheet from the course topics that actually matter.
Build a clean, personalized Python exam cheat sheet from the course snippets that actually matter.

This app is made for students. You open a topic, tick the exact key points and examples you want, and the app turns your selections into a compact two-page A4 sheet you can print or export.
This app is made for students. You open a topic, browse its subtopics, tick the exact snippet pieces you want, and the app turns your selections into a compact two-page A4 sheet you can print or export.

The website now loads from the new Markdown-first snippet bank in [`new_database/`](new_database), using a build-generated frontend bundle at [`new_database/exports/frontend_bundle.json`](new_database/exports/frontend_bundle.json).

Right now the app includes:

- `27` curated Python topics
- content from weeks `1-6`
- `18` topics linked to practice-exam hits
- `8` top-level topics
- `20` subtopics
- `46` snippets
- `134` individually selectable markdown-backed pieces
- built-in preview, edit, undo, print, PNG, and PDF export tools

## What You Can Do

- browse topics by week in the sidebar
- filter for exam-linked material
- choose exact key points, examples, and snippets instead of taking whole topics
- browse topics and subtopics in the sidebar
- filter by `course_phase` and `recurrence_level`
- search by titles, summaries, keywords, and trap metadata
- choose exact snippet pieces instead of taking whole topics
- preview your sheet on two A4 pages before exporting
- drag, resize, lock, edit, or delete cards in the preview
- keep your progress in the browser so you can come back later

## How It Works

1. Open the app and click `Get Started`.
2. Use the left sidebar to jump to a week and topic.
3. Tick the key points, details, code examples, and snippets you want to keep.
2. Use the left sidebar to jump to a topic.
3. Scan subtopics, then tick the exact snippet pieces you want to keep.
4. Open `Preview & Export` to see your cheat sheet.
5. Rearrange or edit cards until everything fits the way you want.
6. Export as `PDF`, `PNG`, or use `Print`.
Expand All @@ -51,7 +55,7 @@ Once you have picked enough material, the app builds a printable two-page layout

## Quick Tips

- Start with exam-linked topics first if you are short on time.
- Start with the signature and very-common snippets first if you are short on time.
- Keep only what you would genuinely want to read during revision or right before the exam.
- Use the preview early instead of waiting until the end.
- If a card is in the right place, lock it so you do not move it by accident.
Expand All @@ -61,6 +65,7 @@ Once you have picked enough material, the app builds a printable two-page layout
This is a static website, so you do not need a backend or a big setup.

```bash
python3 scripts/build_frontend_bundle.py
python3 -m http.server 8000
```

Expand Down
61 changes: 61 additions & 0 deletions RTK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# RTK - Rust Token Killer (Codex Policy)

## Policy

Treat RTK as the default shell surface.

Before every shell command, first check whether RTK has an equivalent wrapper. If it does, use the RTK form instead of the raw command.

Only fall back to a raw command when:
- RTK has no equivalent wrapper
- you are debugging RTK itself
- you explicitly need unfiltered raw output

If you fall back to a raw command, briefly say why.

## Preferred Rewrites

- `git` -> `rtk git`
- `find` -> `rtk find`
- `grep` -> `rtk grep`
- `cat`, `head`, `tail` -> `rtk read`
- `ls` -> `rtk ls`
- `tree` -> `rtk tree`
- `pytest` -> `rtk pytest`
- `npm` -> `rtk npm`
- `npx` -> `rtk npx`
- `pnpm` -> `rtk pnpm`
- `cargo` -> `rtk cargo`
- `docker` -> `rtk docker`
- `kubectl` -> `rtk kubectl`
- `go` -> `rtk go`
- `ruff` -> `rtk ruff`
- `mypy` -> `rtk mypy`
- `tsc` -> `rtk tsc`
- `eslint`, `lint` -> `rtk lint`
- `playwright` -> `rtk playwright`
- `curl` -> `rtk curl`
- `wc` -> `rtk wc`

## Examples

```bash
rtk git status
rtk find . -name '*.ts'
rtk grep "TODO" src
rtk read package.json
rtk pytest -q
rtk npm run build
```

## Exceptions

Use `rtk proxy <cmd>` when you need the raw command behavior but still want RTK tracking.

## Verification

```bash
rtk --version
rtk gain
which rtk
```
Loading
Loading