Need clarification about the HearBtInt (108)

Specification says,
The HeartBtInt (108) field is used to declare the timeout interval for generating heartbeats (same value used by both sides). The HeartBtInt value should be agreed upon by the two firms and specified by the Logon initiator and echoed back by the Logon acceptor.

Here is my question,
What is meant by “value should be agreed upon by two firms” ?
Does this mean the value is agreed once(static) and initiator should use the same value upon every logon and acceptor should echoed back? Or does this mean initiator can propose a value in the logon(theoretically can be different for each logon) and acceptor has to agree to this value and echoed back ?

Secondly, can the acceptor allowed to adjust the value(if he does not agree to the initiator proposed one) and return different value in logon ?

For. e.g, initiator sends ‘30 secs’ in HeartBtInt (108) and acceptor sends back ‘60 secs’. What should be the value used here ? 30 secs?

What is meant by “value should be agreed upon by the two firms” ?
==> you left out the word “the” which makes clear that it is between the two parties exchanging messages using a FIX transport. It is subject to bilateral agreement and FIX does not prescribe a single behaviour.

The value is agreed once for every logon. Typically, there will be a Rules of Engagement document that describes the agreed behaviour, for example:

The minimum value is 100 milliseconds. The upper limit is 60 seconds.
If the field is not supplied, then a default value will be used. The applied heartbeat interval is provided in the
Session Logon Response.

If one of the counterparties does not follow agreed behaviour then the session should be terminated with an error referring to the violation.