Pues ahí lo tienes: el script obra.php sí está recibiendo el valor, así que te equivocaste en tu afirmación inicial.
Ahora, ¿por qué será que no almacena el valor en sesión?
Es simple: las sesiones, cookies (ambas usan headers) tienen restricciones de uso, para que funcionen debes evitar cualquier salida anterior.
Pero eso es lo que haces, al imprimir cosas (como el print_r()) antes de session_start() estás arruinando todo.
Por favor, consulta el manual.