Por “ambiente”, estou me referindo a um pouco mais do que apenas SO/AppServer/etc. É tambem toda configuração do mesmo que é necessário para uma aplicação rodar: datasources, diretórios específicos, parâmetros de configuração, etc.
A infra básica realmente costuma ser uma condição de contorno, e, via de regra, é razoavelmente conhecida do desenvolvedor tb. (vai ser oracle ou sqlserver ? Java ou PHP ou ASP ?)
Isto não isenta o desenvolvedor de passar o as informações de configuração específicas da aplicação para a produção e, neste contexto, já vi muita besteira sendo feita por programadores que colocavam senhas, endereço de servidor, diretórios, etc, travados no código, só para citar um erro comum.
Estava claro para você. Será que estava claro para um leigo ? Mesmo que estivesse, seres humanos nem sempre respeitam a lógica. Nestas horas você deve ser menos analista e mais terapeuta de sistemas ;^).
Seu caso apenas reforça minha tese. Um checklist de ambiente embutido na aplicação certamente teria poupado horas e horas de discussão inútil. Se a aplicação assumia 2K e está rodando em 2K3, e este ambiente não foi homologado, era obrigação da aplicação recusar-se a rodar, dando uma mensagem bem berrante: “Esta aplicação não pode ser executada neste ambiente. Motivo: O sistema operacional para o qual foi homologado é W2K. Sistema operacional atual: W2K3. Cabeção.”. Tudo bem, eu tiraria na versão final o “Cabeção” ;^).