Put the citation next to the checked answer
We opened RFC 9535 in a BaseHalf folder, grew a note from the official PDF, checked JSONPath shorthand against a dotted member name, and wrote the answers with the exact section and quote into the same question page.
I keep mixing up a JSON member named a.b with a two-step path. I wanted the official sentence sitting next to the answer, not only in a chat I would close.
I put the official text of RFC 9535, JSONPath Query Expressions for JSON, by S. Gössner, E. Normington, and C. Bormann, IETF, February 2024, into a folder and opened it in BaseHalf 0.7.0. I retrieved both the PDF and the plain text from the RFC Editor on 2026-11-14, Asia/Shanghai, and kept them to read. I am not republishing the document. A short SOURCE.md records those facts. I also wrote question.md first, with this JSON value and two guesses, before I had checked the text:
{
"a": { "b": 2 },
"a.b": 1
}My first guess was that $.a.b would select 1, because of the member named a.b. For the query that should select that 1, I guessed $.a.b again, or maybe $.a\.b.
In Card Detail I opened the PDF, went to section 2.5.1.1, Syntax, on page 41, selected the sentence that begins $.foo.bar is shorthand, and used Grow branch. That created rfc9535-note.md, already listing rfc9535.pdf as its upstream, with a blockquote and a source link to page 41. The product cut the title and the quote at $['f. I did not tidy that away.
I connected the official texts and the grown note to question.md by writing them into its upstream list. Lines appeared on the canvas between the same files. SOURCE.md sits nearby, but I did not connect it. Being nearby is for my eyes. A connection is the context that should stick.


I selected the question card and started Claude Code in the Agent Area. The Agent Area is where the session runs; it is not itself the agent. I asked it to read question.md and only the files in its upstream, and for each question to say whether my first guess was right, give the answer, and quote the official rule with the section number, without changing any files.
It opened those files, and after 53 seconds, at 18:26 Asia/Shanghai, it said both of my first guesses were wrong.

I did not stop at the model's wording. I checked the same sentences in the official text.
$.a.bselects2, not1. Each.nameis its own step, so this query is the same as$['a']['b']. RFC 9535, Section 2.5.1.1: "Thus, for example, $.foo.bar is shorthand for $['foo']['bar'] (but not for $['foo.bar'])."- The query that selects
1at the member nameda.bis$['a.b'], or$["a.b"].$.a\.bis not valid shorthand:member-name-shorthanddoes not allow.or\. Section 2.3.1.2 says a name selector "selects a member value whose name equals the member name M". Section 2.1 says an implementation "MUST raise an error for any query that is not well-formed and valid."
I wrote those checked answers, with the section numbers and the sentences I used, back into the same question.md page, under the heading I had left for them, and I left my first guesses above that heading. In Card Detail, the Preview shows the answers and the citations in the page I will reopen tomorrow. The Source view shows the upstream list at the top of the same file: rfc9535.pdf, rfc9535.txt, and rfc9535-note.md.


This is not a notebook that answers every file by itself, and it is not a built-in summary. The selection in the status bar lasts only while the window is open. The official text, the grown note, the question, and the checked answers with their citations are ordinary files in the folder. If I close the chat, I still have the page where the sentence sits next to the answer.