Live Coding Agenda
Ongoing V2 protocol exploration, cost verification, and experiments
Andamio Pioneers Live Coding Agenda
Today's Agenda 2025-12-17
Opening Round
- How are you showing up?
- What questions do you have?
How Live Coding Works
The purpose of live coding is to create a space for live, collaborative exploration.
The agenda emerges as we work together, following this feedback loop:
- Your questions
- Building in public
- Assign challenges
We will open each session with a check-in round where people can share the questions they have. Then, we'll build in public to answer these questions. Usually, this raises new questions! This is why "interruptions" are encouraged.
In each session, we'll assign a hands-on challenge. Here as well, the expectation is that new questions will arise from your work. Bring those questions back to the group next time, and we'll explore them together.
1. Your Questions
2025-12-17 Session 1 (1400 UTC)
- How can we work as a student network? How do we support networks of students? What do these new tools do for us?
- How can Andamio integrate with existing systems? What "middlemen are we cutting out"?
- How can we make that roles and context remain separate?
2025-12-17 Session 2 (2000 UTC)
- What is the role of "roles" in Andamio "systems"? How do we keep them separate?
- How can we assignment specific tasks to specific contributors?
- What are the little things we pick up during code review?
- Bootstrapping role + reputation - How does reputation emerge through relationships? (What's the thread that gets us to point of saying, "you might be able to help here...")
- Holiday project - is Andamio ready for vibe coding? How can I get started?
2. What we're building
- Andamio Database API
- T3 App template testing
- Transaction loops
3. Your Challenge: Run the Andamio T3 App Template Locally
- Share Github handle
- Get access to Andamio T3 App Template, and run it locally
- Submit issues to the project repository on Github
- Explore "Focus Areas" below
Focus Areas
This section will change frequently, depending on what we are currently building. Here is some of our current work.
1. Andamio Database API Review
Reviewing the Andamio Database API for V2 integration and documentation.
Key Areas:
- API endpoint structure and consistency
- Confirm that
systemandroletags are used correctly - T3 App Template coverage of API endpoints
- Documentation coverage
2. Transaction Cost Verification ✅
All 8 Course System transactions have been parsed and costs verified against actual wallet deltas.
| Transaction | Documented | Verified | Status |
|---|---|---|---|
general.mint-access-token | ~7.9 ADA | 7.88 ADA | ✅ Verified |
course.admin.create | ~45.3 ADA | — | Parsed |
course.admin.teachers-update | ~5.3 ADA | — | Parsed |
course.teacher.modules-manage | ~1.86 ADA | — | Parsed |
course.teacher.assignments-assess | ~0.21 ADA | 0.21 ADA | ✅ Verified |
course.student.enroll | ~2.14 ADA | 2.14 ADA | ✅ Verified |
course.student.assignment-update | ~0.33 ADA | 0.33 ADA | ✅ Verified |
course.student.credential-claim | -1.03 ADA | -1.03 ADA | ✅ Verified (refund!) |
We are drafting details about some of the improvements in What's New in V2.
Process:
- Execute transaction on preprod, via T3 App Template
- Screenshot wallet delta
- Compare against documented cost
- Update docs if inconsistent
- Document the UTxO flow (spent vs created)
See V2 Cost Estimation for current cost documentation.
3. On-Chain Data Reconstruction
Experimenting with reconstructing database objects from on-chain transaction data.
See On-Chain Reconstruction for experiments and findings.
Questions to explore:
- Can we rebuild course state from transaction history?
- How do we track module creation/updates/burns?
- What's the most efficient way to query the index linked list?
- Can we derive teacher rosters from governance UTxO history?
4. V2 Transaction Parsing ✅ Complete
All 8 course system transactions have been parsed from decoded CBORs.
Completed (8/8):
general/mint-access-token.yamlcourse/admin/create.yamlcourse/admin/teachers-update.yamlcourse/teacher/modules-manage.yamlcourse/teacher/assignments-assess.yamlcourse/student/assignment/commit.yamlcourse/student/assignment-update.yamlcourse/student/credential-claim.yaml
MDX Documentation Generated:
All transactions have corresponding MDX pages at /docs/protocol/v2/transactions/.
API Endpoints Created:
/api/transaction-v2?file=<path>- Get transaction YAML data/api/costs/v2- Get cost registry (supports?tx=,?loop=,?summary=true)
6. Action Items (from Session #1)
- API docs: Add note that
wallet_dataobject is optional when building transactions (alias is sufficient) - GitHub: Add remaining pioneers to the Andamio Pioneers 2026 team
Resources
- Transaction YAMLs:
/public/yaml/transactions/v2/ - Registries:
address-registry.json,cost-registry.json,endpoint-registry.json - Example CBORs:
/drafts/example-txs/v2/ - Atlas API:
https://atlas-api-preprod-507341199760.us-central1.run.app
5. V2 Documentation Generation System
Building tooling to auto-generate MDX docs from V2 YAML files.
Key Findings:
- V1 system works well, must not be modified
- V2 YAMLs have different schema (CBOR analysis vs diagram rendering)
- Need new V2-specific: types, API route, MDX generator, coverage checker
Files Created:
-
types/v2.ts- V2 type definitions +transformV2ToDiagramData()helper -
scripts/generate-v2-tx-docs.mjs- MDX generator (run withnode scripts/generate-v2-tx-docs.mjs) -
app/api/transaction-v2/route.ts- V2 API route
Files Remaining:
-
scripts/docs-coverage-check-v2.ts- Coverage validation
Next Steps
- Verify remaining costs - Test
course.admin.create(~45.3 ADA) andteachers-update(~5.3 ADA) on preprod - Project system transactions - Parse contributor, treasury, escrow CBORs when available
- Complete validator docs - Fill in placeholder YAMLs as we encounter validators in new transactions
- On-chain reconstruction - Document experiments with rebuilding state from transaction history
- Coverage checker - Create
scripts/docs-coverage-check-v2.tsfor validation
Example #1: Mint one Module (∆ = -1.86)
{
"alias": "james",
"courseId": "6f4d8bb9cad4e3379788a205f453fe298e1ff09ea62601c11ba01568",
"modulesToMint": [
{
"slts": [
"I can A"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
}
],
"modulesToUpdate": [],
"modulesToBurn": []
}Example #2: Mint four Modules (∆ -6.69)
- 1.59 per minted token, independent of number of SLTs
Example #3: Mint 12 Tokens (∆ -19.6)
{
"alias": "james",
"courseId": "23a6bbce3a8deca8985764e847594f6956c9dc643e3f6c8efdba04e4",
"modulesToMint": [
{
"slts": [
"I can A",
"I can AA",
"I can AAA",
"I can AAAA",
"I can AAAAA too"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can B"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can C"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can D"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can A",
"I can AA",
"I can AAAAA too"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can E"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can F"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can G"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can W too"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can X"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can Y"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
},
{
"slts": [
"I can Z"
],
"allowedStudents_V2": [
"43e0b6a044a44d8dd38a37d24584767ea414cdeea8f9e917570b5d17"
],
"prerequisiteAssignments_V2": []
}
],
"modulesToUpdate": [],
"modulesToBurn": []
}