BaseHalf
All posts

Unpack a fuzzy problem on the canvas before you name the question

A vague complaint is not yet a question. Dump fragments onto a BaseHalf canvas, cluster them by eye, write upstream only for evidence that should stick, then select the named question for Claude Code or Codex.

A teammate says “onboarding feels broken.” You do not yet have a question worth asking Claude Code or Codex. If you paste the sentence into the Agent Area, you will get a fluent diagnosis of whatever the model already believes onboarding is. The cheap work is earlier: dump the fragments you actually have onto the canvas, see which ones belong together, and only then name the question.

This is the step before you compare options. You do not have options yet. You have a fog.

A complaint that is not a question

Say the note in Slack is only that: onboarding feels broken. Around it you already have scraps, none of them a brief:

  • Two people mentioned bouncing after the welcome screen.
  • Someone else said they accepted an invite and still could not see the shared folder.
  • A guess that the welcome copy is confusing.
  • A guess that the default permission on a new workspace is wrong.
  • A support quote: “I joined yesterday and the project list is empty.”
  • A short log snippet from a first-run session, and a screenshot of the welcome screen.

None of these prove a single cause. Treating them as one “onboarding problem” hides that you may be looking at two different failures.

Dump the fragments as cards

Open the project folder in BaseHalf. Make short notes, not a reconstruction:

  • complaint.md: the raw sentence, who said it, and nothing more.
  • symptom-welcome-bounce.md: people leave after the first screen.
  • symptom-empty-project-list.md: after invite, the shared folder never appears.
  • guess-welcome-copy.md: maybe the copy is unclear.
  • guess-default-acl.md: maybe a new member does not get access to the default project.
  • evidence-support-quote.md: the support sentence, copied plainly.
  • evidence-firstrun.log: the log snippet as its own file.
  • screenshot-welcome.png: the screenshot, sitting on the canvas as an ordinary file.
  • constraints.md: what you cannot change this week (no rewrite of registration, no extra identity provider).
  • whose-problem.md: new members, not admins who already have a workspace.

Keep each card small enough that you can move it. The point is to see the pieces, not to write the investigation up front.

Drag them the way you would scraps on a whiteboard or a mind-map you are drawing by hand. Put the raw complaint at the top. Symptoms in one area, guesses in another, evidence near the symptom they might explain, constraints and “whose problem” off to the side. Then start clustering what actually resembles what. First-run confusion (welcome bounce, copy guess, welcome screenshot, first-run log) drifts one way. A later permissions failure (empty project list, ACL guess, support quote) drifts the other.

That arrangement is for your eyes. Card places and sizes live under .bh/ and usually stay out of git, so you can keep regrouping without turning a hunch into a merge conflict.

Cards grouped on a BaseHalf canvas so related fragments sit near each other.

A cluster is not a connection

Three different moves are easy to mix up once the board looks like a diagram.

MoveWhat it isWhat it is for
Spatial groupWhere cards sit and how large they are, typically under .bh/Letting your eyes notice that two symptoms may not be the same problem
Upstream connectionA plain-text list in a file: Markdown frontmatter upstream:, or .bh/mirror/.../upstream.yamlContext that should persist and flow into another note
SelectionThe cards or passages you highlight for this askWhat Claude Code or Codex should see right now in the Agent Area

Visual organization is seating. It is not a semantic relation, not an automatic mind map, and not a knowledge graph the canvas built for you. BaseHalf does not cluster the cards, label the groups, or discover the real problem. You move things until a shape appears.

Draw a line only when A should keep feeding B. A good example: once question-empty-project-list.md exists, connect evidence-support-quote.md and evidence-firstrun.log into it if that evidence should travel with the question next week. Do not draw lines between every card that happens to sit in the same corner. Sitting together is a hunch. A line is a claim that context flows.

Name the question, then ask about that cluster

After a few rearrangements, the fog often splits. “Onboarding feels broken” was covering at least two askable questions:

  1. Why do some people leave on the welcome screen?
  2. Why does a new member accept an invite and still see an empty project list?

Those are different asks, with different evidence. Pick the cluster that became clear enough to name. Write a short note that is finally a question, for example question-empty-project-list.md: “A new member joins and cannot see the shared folder. What in our invite and default ACL path would produce an empty project list?”

If the support quote and the ACL guess should stay attached to that question, draw those upstream connections now. Then select that question card plus the evidence and constraints that belong to it, not the welcome-screen cluster, and not the leftover guesses. Selection feeds the Agent Area so Claude Code or Codex see the slice you chose for this ask. The rest of the board can stay visible to you without being poured into the prompt.

Select the cluster that became a question so the Agent Area sees that slice.

What to keep after the answer

Keep what makes the next hour of thinking cheaper: the named question, the evidence that actually mattered, maybe a short conclusion in the same note or beside it. Connect those with upstream if they should keep traveling together.

Leave the other cluster alone until you are ready to name it. Delete or ignore guesses that did not hold. Do not promote every spatial group into a permanent link just because the board looked tidy. A tidy board of leftover hunches is still leftover hunches, now written into files.

Limits

The canvas does not discover the real problem for you. It only makes the fragments visible enough that you can stop treating them as one thing. If the fragments are wrong, if the support quote is about a different product surface, or the log is from a successful run, you will name a neat wrong question and the model will answer it fluently. Spatial grouping is a way to look; it is not analysis, and it is not an auto-clustered map of the truth.

Unpack the fog first. Cluster with your eyes. Write upstream only for context that should stick. Name the question, select that cluster, and then ask.