The Laboratory Campus should expose DotTalk++ education features as runnable labs, not as disconnected reference text. The current source tree already contains enough structure to seed this alpha campus area.
Source Evidence
| Feature | Source Evidence | Campus Reading |
|---|---|---|
| Education command family | src/edu/edu_*.cpp and src/cli/shell_commands.cpp | Built-in teaching commands are source-defined and registered through the central command surface. |
| Reference and retro commands | src/edu/edu_ascii_table.cpp, src\cli\cmd_retro.cpp, and src\cli\cmd_bbox.cpp | ASCII, RETRO, and BBOX are public education-facing commands and should be treated as campus material. |
| Timed index/sort lab | src/cli/cmd_idx.cpp and docs/teaching/TEACHING_POINT_LEDGER.md | IDX is a memory-only educational index lab; it supports STD and BUBBLE sort choices and reports build/sort elapsed time, comparisons, and swaps. |
| Student/custom index families | src/edu/edu_six.cpp, src/cli/cmd_scx.cpp, src/cli/cmd_reindex.cpp, include/snx/*, and src/edu/edu_snx.cpp | SIX and SCX provide opt-in local index labs; SNX preserves a future slot and partial container groundwork. A general user-supplied index attachment contract remains planned. |
| DBF sort path | src/cli/cmd_sort.cpp | SORT creates a sorted DBF copy, supports key expressions, FOR, WHILE, FIELDS, UNIQUE, and reports scanned/selected/written counts. |
| Student command hooks | src/ext/cmd/cmd_student_hello.cpp, cmd_student_echo.cpp, and src\ext\ext_policy.hpp | Student commands may self-register from the extension area while built-in command names remain protected. |
| Student function hooks | src/ext/fn/fn_student_text_autoreg.cpp | Student functions demonstrate the same registry-compatible pattern for learner-created expression helpers. |
| Pre/post polling hooks | src/cli/pre_poll.cpp, post_poll.cpp, and cmd_polling.cpp | Current hooks emit [POLL PRE] and [POLL POST]; cmd_polling.cpp is a placeholder for future polling/integration command work. |
| Vertical publication rule | docs/contracts/WEBSITE_SELFDOC_PUBLICATION_CONTRACT_V1.md | Website pages are downstream derivatives of runtime/source, HELP, metadata, CMDHELPCHK, SelfDoc, and manualgen. |
Timed Sort and Index Labs
The strongest current timing surface is IDX, not plain SORT.
IDX is explicitly described in source as a memory-only educational index lab. It accepts commands such as:
IDX ON LNAME TAG lname_std
IDX ON LNAME TAG lname_bubble BUBBLE
IDX ON LNAME TAG lname_bubble2 SORT BUBBLE DESC
IDX LIST
IDX DROP <tag>
Its output path records:
- records scanned and indexed,
- deleted records skipped,
- total build elapsed time,
- sort elapsed time,
- comparisons,
- swaps.
That makes it suitable for a campus algorithm lab where students compare STD versus BUBBLE against the same table.
Plain SORT is also lab-ready, but it currently reports operation counts rather than elapsed time. It is useful for teaching DBF output creation, key expressions, FOR/WHILE predicates, field projection, deleted-record handling, and UNIQUE suppression.
Student and Custom Index Systems
DotTalk++ reserves index families for learner and downstream experimentation:
SIX CREATE students.six TAG LNAME FIELD 2
SIX BUILD students.six
SIX INFO students.six
REINDEX CUSTOM
SIX is a registered single-tag educational stub. SCX is the current compound
student/custom family. REINDEX CUSTOM opts into both while ordinary
REINDEX ALL deliberately leaves them out. This keeps experiments from being
mistaken for the normal table-flavor defaults.
SNX must be described more carefully: format and catalog groundwork exists,
but its education translation unit is an empty placeholder and its shell command
is not registered. It represents reserved extension space, not a finished command.
The intended next architecture step is a documented adapter lifecycle through
which students or users can attach their own indexing systems: detect/open,
bind to an area/schema, build, seek/navigate, verify, report timing, close, and
emit proof. That general attachment contract is planned; the current SIX and
SCX paths are laboratories for shaping and testing it.
Reference, Retro, and Blackbox Commands
Current education-visible commands include:
| Command | Campus use |
|---|---|
ASCII | Teach character codes, control characters, extended ASCII, ranges, and table rendering. |
RETRO | Show ASCII-safe retro system screens for lineage and classroom context. |
BBOX | Teach the Blackbox model: data enters a processing system and information comes out. |
BOOLEAN | Teach predicate evaluation through xexpr. |
CASE | Browse education case-study catalog entries. |
CHRISTMAS | Demonstrate controlled colored ASCII output. |
COBOL, CODASYL, NORMALIZE, SIX | Tie xBase learning to older database/toolchain concepts and normalization/index labs. |
These are campus curriculum and proof surfaces that should connect to command catalog rows, transcripts, and SelfDoc reports.
Student Code Hooks
The extension policy separates core and learner code:
built-in commands -> central registry
student/custom commands -> src/ext/cmd self-registration
function families -> function catalog or self-registration pattern
Current examples:
| Hook | Registered Surface | Lesson |
|---|---|---|
cmd_student_hello.cpp | STUDENTHELLO, SHELLO | Add a custom command without touching the protected command registry. |
cmd_student_echo.cpp | STUDENTECHO, SECHO | Add aliases and command-local usage behavior. |
fn_student_text_autoreg.cpp | STU_UPPER, STU_REPEAT | Add expression-style functions with argument checks and small evaluators. |
This is a strong campus pattern: students can first inspect a command/function in the website catalog, then add a controlled extension, then prove it with HELP/CMDHELP and a runtime transcript.
Pre/Post Polling
The current pre/post polling files are small but important:
pre_poll() -> [POLL PRE]
post_poll() -> [POLL POST]
That gives the campus a visible seam for later labs about command lifecycle observation. The next useful campus slice is:
before command -> pre poll -> command execution -> post poll -> transcript -> SelfDoc evidence
Until a full POLLING command is implemented, the website should describe this as a source-defined hook surface and placeholder integration lane, not a finished user-facing polling subsystem.
Vertical Documentation Flow
The Laboratory Campus should feed these pages from the existing vertical stack:
source comments and @dottalk.usage
-> comments/SRC* evidence
-> HELP DATA and CMDHELP
-> CMDHELPCHK validation
-> SelfDoc/manualgen artifacts
-> website pages and campus lessons
The initial website implementation uses source-derived pages:
The next implementation step is to replace manual extraction with a repeatable generator that reads the same evidence tables and reports used by SelfDoc.
See also Command Families.