Twine error message

Twine Version: Harlowe 3.2.2

Could someone please explain to me what to do when Twine gives me this “The (passage:) macro’s 1st value is a passage datamap, but should be (optional) a string.”? Thanks!

Ideally when you’re asking why specific code is throwing an error you would include an example of the code that is causing that error.
eg. This code prints the name of the ‘current’ Passage.

Name of current Passage: (print: (passage:)'s name)

Without an example of the code that produced the error message you mentioned I had to guess what you might be trying to do to cause it.

Based on the wording of the error message it appears you are trying to pass a Datamap value, instead of a String value, as the 1st parameter to your (passage:) macro call.
eg. You’re trying to do something like this…

<!-- Try using a Datamap variable to obtain specific Passage datamap instance -->
(set: _datamap to (dm: "propertyname", "value"))
(set: _erroneous to (passage: _datamap))

…instead of doing something like…

<!-- Use a String variable to obtain specific Passage datamap instance -->
(set: _string to "Other")
(set: _other to (passage: _string))

note: Obviously the names of your variables are likely to be different to the ones I used in the above examples.

My code currently looks like this:
(if:(history: where (passage:it)'s tags contains “hallie”)'s length >= 1)[And then whatever text I want to put here]

And this is what’s causing that message. I’m not sure what I need to change.

I suggest looking at the 3rd example mentioned in the (history:) macro’s documentation, you are using the it keyword operator where the examples use the its keyword operator.