Túneles
Un túnel es un viaje dividido en pasos — un registro, un pago, una renovación — cuyo camino puede cambiar según lo que responda el visitante. El paquete recuerda en qué punto se encuentra cada visitante, les permite avanzar por los pasos que pueden ver y les envía de vuelta a donde pertenecen cuando intentan adelantar.
Un árbol de cursores
Un túnel se construye como un árbol, no como una lista. Un paso alcanzado desde dos lugares es dos cursores, cada uno con su propio hash y sus propios valores almacenados: eso es lo que permite que una rama crezca pasos que otra no tiene, y de lo que se lee el camino que tomaste, mostrado al final de cada túnel.
Una sesión en la base de datos
Abrir un túnel crea una sesión, que la sesión del navegador solo conoce por su id. Mantiene los valores que almacenan los pasos y expira un día después del último paso mostrado — o antes, cuando ese paso lo solicita. Las sesiones expiradas son eliminadas por el programador, cada 15 minutos; se mantienen las completadas y pendientes.
A dónde puede ir el visitante
Cada paso decide si puede mostrarse y a dónde enviar al visitante en caso contrario. Los enlaces y botones se dibujan con las mismas reglas, por lo que un enlace nunca lleva a una redirección de vuelta: no hay botón de siguiente donde el camino se divide, no hay forma de volver después de un pago, nada a lo que regresar en una sesión cerrada.