pub struct Question {
pub id: String,
pub status: String,
pub question: String,
pub options: Vec<String>,
pub session_id: String,
pub task_id: Option<String>,
pub workspace: Option<PathBuf>,
pub taint: Taint,
pub asked_at: String,
pub answered_at: Option<String>,
pub answer: Option<String>,
}Expand description
One question, and everything needed to put its answer back where it came from.
Fields§
§id: String§status: Stringopen | answered | abandoned.
question: StringThe question as the model put it.
options: Vec<String>Concrete choices, when the model was confident the answer is one of them. Never exhaustive — the tool’s own description says so, and an answer outside the list is ordinary.
session_id: StringThe conversation this came out of.
Required, unlike the outbox’s, and the difference is the whole design: a staged send is executable on its own, so its session is provenance. An answer is only meaningful as the next turn of the conversation that asked, so a question with no session is one nobody can answer — it would be a note, not a question.
task_id: Option<String>The board item the run was working, when it was working one.
workspace: Option<PathBuf>The jail the asking run was held to, so the resume runs where the question was asked. The outbox’s recorded-jail rule, for the same reason: a deferred continuation resolved against a different root is a different run.
taint: TaintThe conversation’s taint when the question was asked.
A question is an inbound request for information, composed by a model that may have been reading third-party text. “What is the API key for the deploy?” is a perfectly well-formed question and an injection’s dream, so an armed snapshot has to reach the person the same way it does on a staged draft — the outbox warns before a send, and this warns before an answer.
asked_at: String§answered_at: Option<String>§answer: Option<String>What the owner said. None while open, and on an abandoned question —
giving up is not an answer, and recording it as one would put words in
their mouth in the transcript the resume writes.