Where I work, people don't like to write specs. (Boy, does anyone?) So they don't do it, unless forced by their bosses. If they are forced to write them, they make them as short as possible. (By the way, *they* also includes *me*.)

This results in specifications like

* This software logs the time between event A and B to the event log
* Name and path of parameter X are set in a configuration file in ini format.
* The software is active without a user needing to log on to the computer (implementation as a Windows service)

This example is taken from a very small project, and it worked out pretty well, But I don't think that it will suffice for anything more complex. I did not specify OS/hardware requirements because this is in-house development and we have company or department standards covering those. 

So my question is: 
*What do you consider the absolute minimum level of detail in a functional specification for any non-trivial software?*