Andamio LogoAndamio

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:

  1. Your questions
  2. Building in public
  3. 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


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 system and role tags 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.

TransactionDocumentedVerifiedStatus
general.mint-access-token~7.9 ADA7.88 ADA✅ Verified
course.admin.create~45.3 ADAParsed
course.admin.teachers-update~5.3 ADAParsed
course.teacher.modules-manage~1.86 ADAParsed
course.teacher.assignments-assess~0.21 ADA0.21 ADA✅ Verified
course.student.enroll~2.14 ADA2.14 ADA✅ Verified
course.student.assignment-update~0.33 ADA0.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:

  1. Execute transaction on preprod, via T3 App Template
  2. Screenshot wallet delta
  3. Compare against documented cost
  4. Update docs if inconsistent
  5. 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.yaml
  • course/admin/create.yaml
  • course/admin/teachers-update.yaml
  • course/teacher/modules-manage.yaml
  • course/teacher/assignments-assess.yaml
  • course/student/assignment/commit.yaml
  • course/student/assignment-update.yaml
  • course/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_data object 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 with node 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

  1. Verify remaining costs - Test course.admin.create (~45.3 ADA) and teachers-update (~5.3 ADA) on preprod
  2. Project system transactions - Parse contributor, treasury, escrow CBORs when available
  3. Complete validator docs - Fill in placeholder YAMLs as we encounter validators in new transactions
  4. On-chain reconstruction - Document experiments with rebuilding state from transaction history
  5. Coverage checker - Create scripts/docs-coverage-check-v2.ts for 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": []
}