Support your testing with local LLMs

Exercises for Tuesday 6 Oct

Subject

YARGS – https://yargs.js.org/

Github: https://github.com/yargs/yargs / https://deepwiki.com/yargs/yargs

Exercise 1: Teach me / Quiz me

install pi-fetch with ?? pi install -l npm:pi-fetch

use this:

Use extension pi-fetch to read the list of pages as markdown. Collate information, pick 5 key points, and write a short paragraph on each. Then quiz me (10 questions, multiple-choice) to help the understanding stick.
List of pages: https://yargs.js.org/ , https://github.com/yargs/yargs and https://deepwiki.com/yargs/yargs

Exercise 2:

use the github-issue-triage skill to run several agents that summarise issues over a period.

Use the pi-fetch extension to read web pages as Markdown. Use the github-issue-triage skill tp pick up and summarise the last 18 months of issues on yargs/yargs

A pair of comparison exercises

Exercise: Interview with a Chatbot

10 minutes

Pick an interview topic

Your job is to interview me. Ask one question at a time. Keep track of inconsistencies and ambiguities. Help me to clarify my ideas. Offer a clear summary when asked.

Spend 5 minutes being interviewed by a Local LLM, and another 5 minutes being interviewed by a frontier model.

Talk about that

Exercise: Explain Tests

20 minutes

Pick some code with tests from a project. Focus on one function.

In i.e Claude Code, ask the tool to explain the code, and how it is exercised by the tests.

With a local model, paste in just the code you're intetresed in, and its related tests, and asd the LLM to explain the code and how it is exercised by the tests.


James

Qwen3.5:9B

Your job is to interview me. Ask one question at a time. Keep track of inconsistencies and ambiguities. Help me to clarify my ideas. Offer a clear summary when asked.edit

Thought for 72.8 seconds

Thinking Process:

  1. Analyze the Request:
    • Task: Interview the user.
    • Constraint 1: Ask one question at a time.
    • Constraint 2: Keep track of inconsistencies and ambiguities.
    • Constraint 3: Help clarify ideas.
    • Constraint 4: Offer a clear summary when asked.
    • Tone: Professional, inquisitive, helpful, structured.
    • Current State: This is the beginning of the interview. No topic has been specified yet.
  2. Determine the Next Step:
    • I need to start the interview.
    • Since there's no predefined topic (e.g., job application, product development, personal goals), I need to ask the user what they want to discuss or provide an opening prompt to initiate the conversation.
    • However, the instruction says "Ask one question at a time." So I should ask the first question to get the topic or the first piece of information.
    • Best approach: Ask the user what they would like to focus the interview on. This sets the context.
  3. Draft the Response:
    • Greeting/Acknowledgement.
    • The Question: "What topic or subject would you like to focus our interview on today?"
    • Wait, I should also acknowledge the constraints implicitly (one question, keeping track, etc.).
    • Keep it concise.
  4. Refine the Response:
    • "Hello! I'm ready to begin. To get started, could you please tell me what topic or subject you'd like to focus our interview on today?"
    • This is one question.
    • I will remember the constraints for future turns.
  5. Final Check:
    • Does it violate "Ask one question at a time"? No.
    • Does it violate "Keep track of inconsistencies"? Not yet, but I'll note it mentally.
    • Does it violate "Help clarify"? Not yet.
    • Does it violate "Offer a clear summary when asked"? Yes, I'll wait for that trigger.
    • Self-Correction: Actually, just jumping straight into the topic might be better than asking "what topic." But without a topic, I can't interview. So asking "What is the topic?" is the only logical first step.
    • Alternative: Maybe I should ask them what they want to achieve? "What is the goal of this interview?"
    • Let's keep it open: "What subject or topic would you like us to explore during this interview?"
  6. Final Polish:
    • "Hello! I'm ready to interview you. To get us started, what specific topic or subject would you like to focus on today?"
    • Wait, I should ensure I don't sound like a standard AI. Just start.
    • Okay, simple and direct.
    • "Hello! I am ready to begin our interview. What is the main topic or goal you would like to explore today?"
    • Actually, looking at the prompt again: "Your job is to interview me." It implies I am the interviewer.
    • Okay, first question.
    • "Hello! I'd be happy to conduct this interview with you. To begin, could you tell me what specific topic or subject you would like to focus on today?"
    • Wait, is there a hidden instruction? No.
    • Okay, proceed.
    • Wait, I need to make sure I don't provide a summary unless asked.
    • I need to track inconsistencies (I'll have a mental map).
    • I need to help clarify (I'll ask follow-ups).
    • Okay, the first question is about the topic.
    • Decision: "Hello! I'm ready to begin. What topic or subject would you like to discuss today?"
    • Wait, maybe it's better to ask about the purpose. "What would you like to achieve through this interview?"
    • Let's combine: "What topic would you like to explore, and what are you hoping to gain from this conversation?" -> That's technically two questions in one.
    • Better: "What topic would you like to explore today?"
    • Okay, keeping it simple.
    • Wait, one more thought: Since I'm an AI, I should probably acknowledge the constraints lightly or just start. The prompt says "Your job is...", so I should just start.
    • Okay, question: "What topic or subject would you like to focus our interview on today?"
    • Wait, if I ask that, the user might say "I want to discuss my career path." Then I ask "What specific challenges are you facing?" etc.
    • Okay, let's go.
    • Wait, check constraints again: "Ask one question at a time."
    • "Keep track of inconsistencies and ambiguities."
    • "Help me to clarify my ideas."
    • "Offer a clear summary when asked."
    • Okay, ready.
    • Draft: "Hello! I am ready to begin. What topic or subject would you like to focus our interview on today?"
    • Wait, is there any hidden context? No.
    • Okay, send.
    • Wait, I should consider that the user might expect me to ask about a specific scenario if they didn't say. But since they didn't, I ask.
    • Final decision: Keep it polite and direct.
    • "Hello! I'm ready to begin our interview. What topic or subject would you like to explore today?"
    • Wait, I need to make sure I don't accidentally answer my own question or give advice. Just ask.
    • Okay.

Hello! I am ready to begin our interview. What topic or subject would you like to focus on today?

Eyeballs

Thought for 76.5 seconds

Thinking Process:

  1. Analyze the Request:
    • Role: Interviewer.
    • Task: Interview the user.
    • Constraints: Ask one question at a time. Keep track of inconsistencies and ambiguities. Help clarify ideas. Offer a summary when asked.
    • User's Input: "Eyeballs".
    • Context: This is a very vague statement. It could mean:
      • Anatomy/Physiology (structure, function)
      • Metaphor (attention, focus)
      • Technology (webcam, digital eyes)
      • A specific project/painting/phrase
      • An expression of interest (like "I want to talk about eyeballs")
    • Goal: Since the user said "Eyeballs", they are likely indicating the topic they want to discuss. I need to ask a clarifying question to understand what aspect they want to explore, while adhering to the "one question at a time" rule.
  2. Determine the Next Step:
    • I need to acknowledge their topic choice.
    • I need to ask a probing question to narrow down the scope (since "Eyeballs" is ambiguous).
    • I need to stay in character as an interviewer helping clarify ideas.
  3. Drafting the Question:Decision: Option 4 is good for tracking ambiguity, but Option 3 is slightly more conversational for an interview setting. Let's aim for a mix: Acknowledge the topic, ask for their angle/goal.Revised Draft: "Okay, that's a fascinating starting point. However, 'eyeballs' can refer to several things—the biology of the eye, the concept of public attention, or perhaps something artistic? Could you tell me a bit about what specifically you'd like to discuss regarding this topic?"Wait, constraint check: "Ask one question at a time." My draft has two embedded questions ("could you tell me..."). I should make it a single, clear inquiry.Refined Draft: "That's a unique starting point. Since 'eyeballs' can mean many things, what is your primary focus—perhaps the biological function, a metaphorical meaning, or something else entirely?"Wait, constraint check: "Keep track of inconsistencies and ambiguities." I should explicitly note the ambiguity internally (or in my response if it helps), but the main task is to ask one question.Final Polish: "Understood. Since that term can mean a few different things, what specifically would you like to focus on? Is it the anatomy, a metaphor, or perhaps a different context entirely?" (Still feels like two clauses, but one core question). Let's make it simpler."To clarify your intention, are you interested in the biological aspect of eyeballs, the metaphorical idea of 'catching eyeballs' (attention), or something else?" (This is one question asking for categorization).Actually, the prompt says "Help me to clarify my ideas." So I should treat the user's input "Eyeballs" as their idea/thesis/statement. I need to ask them to elaborate."Thank you. Before we proceed, could you share why you chose to start with 'eyeballs'? What specific angle or question about them would you like to explore?" (This is one question).Let's go with: "Thank you for that topic. To help me understand where you want to take this conversation, could you tell me what specifically you are interested in regarding eyeballs? Are you interested in their biology, the concept of attention, or perhaps something else?" -> This is one sentence with a core question.Let's keep it simple and open-ended to avoid leading. "Okay, 'Eyeballs.' To ensure I understand your focus correctly, could you tell me a bit about what you hope to gain from discussing this topic today?"Actually, looking at the instruction "Ask one question at a time", I should be concise."I see. To help clarify your focus, could you tell me what specific aspect of eyeballs you would like to discuss?"
    • Option 1: What do you want to know about eyeballs? (Too generic)
    • Option 2: Are you interested in the biology, the culture, or something else? (Better, but still a bit open)
    • Option 3: To help me understand your perspective better, could you share what specific aspect of eyeballs you're most interested in exploring today? (More focused on clarifying ideas)
    • Option 4: Are we discussing the biological organ, a metaphor for attention, or perhaps a creative project involving eyes? (Directly addresses the ambiguity)
  4. Finalizing the response:"That's a broad starting point. To help me understand your focus better, could you tell me what specific aspect of eyeballs you'd like to discuss?"Wait, I should also acknowledge the instruction to "Keep track of inconsistencies and ambiguities." I don't necessarily need to state "I am tracking" unless I'm summarizing later. But I should be aware of it.Let's refine the question to be very focused on their goal. "Okay, noted. Since 'eyeballs' can mean quite a few different things, what specific question or perspective about them would you like to explore?"Okay, ready to output.cw
    • Acknowledge the input.
    • Ask one question to clarify the ambiguity.
    • Keep it professional and supportive.

Okay, that is a bit of an open starting point. To help me understand your perspective, could you tell me what specific question or idea you are trying to explore regarding eyeballs?

How to get as many people as possible to pay attention to our workshop!

Thought for 171.3 seconds

Thinking Process:

  1. Analyze the Request:
    • Role: Interviewer.
    • Task: Ask one question at a time, track inconsistencies/ambiguities, help clarify ideas, offer summary when asked.
    • Current Context: The user started with "Eyeballs" (likely meaning attention/views/engagement), then clarified the goal: "How to get as many people as possible to pay attention to our workshop!"
    • Goal: Get the user to explain more about their situation, the workshop, their current strategy, or the audience to help brainstorm solutions and identify ambiguities.
  2. Identify Key Information Needed (Ambiguities/Inconsistencies):
    • What is the "workshop" about? (Topic matters for target audience).
    • Who is the target audience? (Who do we want to pay attention?)
    • What has been tried so far? (Current context/strategy).
    • What is the current reach/audience size?
    • What are the constraints (budget, time, platform)?
    • What does "pay attention" mean in this context? (Registration? Physical attendance? Digital viewership?)
  3. Formulate the Next Question:Draft 1: What is the workshop about and who do you want to target? Critique 1: Too broad, combines two questions.Draft 2: Who is your ideal audience for this workshop? Critique 2: Better, but still might miss the context of the current challenge.Draft 3: To give better advice, could you describe what kind of workshop this is and who your primary target audience is? Critique 3: Good, but I need to be careful not to ask two things at once if possible, though "what kind" and "who" are closely related. Let's try to prioritize the audience since the goal is "getting attention".Refined Draft: To help clarify the situation, who is the primary target audience you are hoping to attract to this workshop? Wait, the user said "our workshop". I should ask about the nature of the workshop to understand the audience potential.Let's go with: Can you describe the content or topic of the workshop? Reasoning: You can't drive traffic effectively without knowing the value proposition (what the workshop is about).Alternative: What is the main barrier you think people are facing regarding paying attention? Reasoning:This focuses on the problem directly.Decision: Let's ask about the workshop topic/content because that defines the "eyeballs" available.Wait, looking back at the instruction: "Keep track of inconsistencies and ambiguities." Ambiguity identified: "Our workshop" – what is it? Who is "our"? Ambiguity identified: "Pay attention" – registration? Attendance? Clicks? Ambiguity identified: "As many people as possible" – is this a new workshop or recurring?Selected Question: To start, can you tell me a bit about what the workshop is focused on? (This defines the value).Actually, let's dig into the audience: Who is the specific group of people you want to draw in? Better:What is the main goal of this workshop, and who is the specific audience you are trying to reach? (Combines them slightly but it's natural). Strict one question rule: Let's ask about the audience. Let's ask about the current marketing/awareness level: What channels are you currently using to promote it?Best approach: Ask about the core offer and audience. Question: Could you share a bit more about the subject of the workshop and who you think the ideal attendee would be? (Self-Correction: Keep it tighter.) Question: To help me understand the potential audience, can you describe what the workshop is about and who you think would benefit most from it?
    • I need to ask one question.
    • It should be open-ended but focused to narrow down the scope.
    • It should address the ambiguity of "our workshop" (ownership, target, content).
    • Let's focus on defining the workshop and the goal first, as that shapes the strategy.
  4. Final Polish: Ensure it's friendly and prompts further thinking. "That's a clear goal. To give you the best advice, could you describe what the workshop covers and who you think the ideal attendee would be?" (Wait, I need to make sure I don't sound like I'm giving advice yet, just interviewing). "Got it. You want maximum attention for this workshop. Could you describe the main topic of the workshop and who you are trying to reach?"
  5. Review against constraints:Let's pick one: Audience definition is crucial for "eyeballs". Let's try: "What is the specific topic of the workshop, and who is your target audience?" (Still feels like two questions, but they are one conceptual question). Strict version: "Can you describe the primary topic or focus of the workshop?" Follow-up:Next time ask about audience. Better: Combine them as one sentence. "What is the main topic of the workshop and who is the intended audience?" Okay, let's go with: "To clarify the context, could you tell me a bit about the specific topic of the workshop and who you hope to attract?"Wait, I should acknowledge the previous turn. The user said "Eyeballs" then clarified. Okay, I'll ask about the content/audience.Revised Question: To help me understand the situation, can you tell me a bit about the specific topic of the workshop and who your target audience is?Wait, I want to make sure I track ambiguity. Ambiguity: "Pay attention" could mean views, sign-ups, or actual presence. Ambiguity: "Workshop" could be online, offline, webinar, course. I will ask: "Can you clarify what type of workshop this is (e.g., online, in-person) and who your ideal attendee is?" Actually, simpler: "Could you describe the topic and target audience?"Let's keep it simple. "Okay, that clarifies the goal. To get started, could you tell me a bit about what the workshop is about and who your target audience is?"(Wait, instruction says "Ask one question at a time.") Is "topic and audience" one question? Yes. Okay, let's write it.Wait, I need to track inconsistencies/ambiguities in my internal state, but output only the question?"Your job is to interview me... Keep track of inconsistencies... Offer clear summary when asked." So I don't need to output the track, just act on it.Final Question: To help me understand the best way to attract attention, could you describe the topic of the workshop and who your ideal attendee is? (Refining for flow) "Got it. To help me understand the situation better, could you describe what the workshop is about and who you hope to reach?"(Wait, is "Eyeballs" a metaphor? Or literal? Likely metaphor for attention.) (User says "our workshop". I need to know who "our" is? Maybe not yet.)Let's ask: "To understand the challenge better, what kind of content or skill will the workshop cover?"No, audience is more important for targeting. Let's combine: "Could you share what the workshop topic is and who your target audience would be?"Actually, let's keep it focused on the ambiguity of "pay attention". Question: "Just to clarify, when you say 'pay attention,' do you mean driving registrations, increasing viewership, or something else?" No, that's too specific.Best: "To narrow this down, could you tell me a bit about the specific subject matter of the workshop and who you are hoping to attract?"(Self-Correction): I should acknowledge the goal again. "Understood. To help me strategize, could you describe the workshop topic and who your ideal attendee is?"(Wait, I need to ensure I don't give advice yet.) Okay.Final decision: "To help me understand the context better, could you describe the main topic of the workshop and who your target audience is?" (Wait, is that one question? Yes.) (Wait, I should check if I need to track ambiguity in the output? No, just keep track internally. But I can mention "It helps to clarify..." ) The prompt says "Keep track of inconsistencies and ambiguities." It doesn't say "Show them". But "Help me to clarify my ideas" implies I should guide them.)Okay, I will ask about the topic/audience. Wait, "Eyeballs" was a noun. Then they explained. I should treat "Eyeballs" as their keyword. Okay. Let's ask: "To help me understand the potential, what is the specific topic of the workshop and who is your target audience?"(Wait, I want to be conversational.) "That's a clear goal. To give you the best direction, could you tell me what the workshop is about and who you hope to attract?"(Wait, I need to make sure I don't ask two things. "What is it about" and "Who" is one idea: "Who gets to attend".) Okay.Wait, I should consider the "Eyeballs" keyword. Maybe ask about "eyeballs" metric specifically? "What are you looking for when you say 'eyeballs'—views, sign-ups, or attendees?" No, let's keep it broad first.Okay, final choice: "To help me understand the situation better, could you tell me the main topic of the workshop and who your ideal target audience is?" (Wait, is there a way to ask just one part?) "Could you tell me the main topic of the workshop?" Then next turn "Who is the audience?" But "topic" and "audience" go together. Let's stick with the combined question as it's natural. Actually, strict instruction: "Ask one question at a time." Does "topic and audience" count as one question? Yes. Okay.(Wait, I should probably track the ambiguity of "our". I don't know the organization name.) Let's just proceed.(Wait, I need to be careful not to be too generic.) "To start, could you describe the subject matter of the workshop and who you are trying to reach?"(Wait, I will write it now.) "Okay, I have your goal. To help me understand the best angle for you, could you describe the topic of the workshop and who your target audience is?"(Wait, let's check if I should mention tracking.) "I'm keeping track of the details. Could you..." No, keep it natural.Final check: Input: "How to get as many people as possible to pay attention to our workshop!" Output: One question. Topic: Workshop definition/audience.Wait, I want to clarify "our". "Is this an internal training or a public course?" That's too technical. Let's ask about the content.Okay, I'll go with: "To help clarify the scope, could you describe the main topic of the workshop and who you are hoping to attract?"
    • One question at a time? Yes.
    • Track inconsistencies/ambiguities? I'll note these mentally (e.g., "our workshop" implies a team, "eyeballs" implies digital or general visibility).
    • Clarify ideas? Yes.
    • Summary when asked? Not asked yet.

To help me understand the scope better, could you describe the main topic of the workshop and who your ideal target audience is?

SOnnet 5


title: Interview setup to clarify ideas through guided questioning and summaries
date: 1790274290290

:You:

Your job is to interview me. Ask one question at a time. Keep track of inconsistencies and ambiguities. Help me to clarify my ideas. Offer a clear summary when asked.


:claude-sonnet-5:

Interview Session

I'm ready to interview you. Before we begin, it would help to know:

What's the topic or purpose of this interview?

For example, are we:

  • Exploring an idea or project you're developing
  • Working through a decision you need to make
  • Clarifying your thinking on a complex topic
  • Developing a piece of writing or argument
  • Something else entirely

Once I know the focus, I'll ask targeted questions one at a time, track any inconsistencies or vague spots that come up, and can offer a summary whenever you'd like one.


:You:

Eyeballs


:claude-sonnet-5:

Got it — eyeballs is the topic. That's a broad starting point, so let me narrow it down.

What aspect of eyeballs are we exploring? For example:

  • The biology/anatomy of eyeballs
  • "Eyeballs" as a metaphor (e.g., attention, views, traffic in marketing/media)
  • A creative or fictional project involving eyeballs
  • A health/medical concern
  • Something else you have in mind

:You:

How to get as many people as possible to pay attention to our workshop!


:claude-sonnet-5:

Great, so "eyeballs" here means attention/visibility — got it. Let's dig into the workshop itself first before we get to attention-getting tactics.

What is the workshop about — what will people actually learn or do there?


:You:

The title is "Support your testing with local LLMs", and it's about that


:claude-sonnet-5:

Good starting point. Let's clarify a few basics before we get into attention-getting strategy.

Who is the intended audience for this workshop? (e.g., QA engineers, software developers, testers with a specific tech stack, beginners vs. experienced practitioners, etc.)


:You:

QA engineers, test managers, consultants, agile practitioners


:claude-sonnet-5:

Noted — that's a fairly wide range, from hands-on technical folks (QA engineers) to strategic/process-oriented folks (test managers, consultants, agile practitioners). We may need to revisit how the pitch differs for each group.

When and where is this workshop happening? (date, physical location or online, part of a larger conference/event, or standalone?)


:You:

Event is part of a conference in Potsdam, in late NOvember. Residential event, 600 people.


:claude-sonnet-5:

That's useful context — a residential conference with 600 people suggests multiple parallel sessions, and attendees likely choose their workshop from a printed/digital program, possibly in advance.

How many other sessions or workshops are running at the same time as yours, and do attendees pick their sessions in advance or on the day?


:You:

5, on the day


:claude-sonnet-5:

Important detail: since people choose on the day, your "getting eyeballs" battle is mostly happening at the conference itself, not just in pre-event marketing. That changes the strategy quite a bit — you're competing head-to-head with 4 other rooms in real time.

What materials or channels do you already have available to promote the workshop — e.g., conference program listing, ability to hand out flyers, social media, a slot to pitch it on stage, personal networks of the other speakers, etc.?


:You:

listing, web page, Linkedin, networks, reputation


:claude-sonnet-5:

Good list. Let's clarify a couple of these.

"Reputation" — whose reputation are we talking about? Yours personally, your company's, or both? And do you (or your company) already have some standing at this specific conference or in this community?


:You:

Mine and my co-presenters: people know that we interact well and come to our hands-on sessions to enjoy themselves


:claude-sonnet-5:

That's a strong asset — a known track record of enjoyable, hands-on sessions can be more persuasive than topic alone when people are choosing on the spot.

Do you know what the other 4 competing sessions are about, or their speakers? This matters because it tells us whether you're up against similarly technical/practical talks, or against unrelated topics that might appeal to a different crowd.


:You:

No, and I don't care


:claude-sonnet-5:

Fair enough — noted as a deliberate choice not to consider competitive positioning; we'll set that aside then.

What's the core takeaway or benefit attendees walk away with? In other words, finish this sentence: "After this workshop, participants will be able to ___."


Claude on TableMaker

❯ explain @tictactoe/src/TableMaker.py , and the way that it is tested
Read tictactoe/src/TableMaker.py (53 lines)

I've read the source. Let me find how it's tested.

  Read 1 file, ran 1 shell command

TableMaker.py — what it does

TableMaker renders an ASCII grid for a Tic-Tac-Toe board (or any square grid). It's pure string-building — no game logic, no state beyond the labels and size you give it.

Configuration (__init__, lines 3–10)

- size — the number of rows/columns (default 3).
- headerLabels — column labels across the top, default ["1"…"9"].
- rowLabels — row labels down the side, default ["A"…"I"].

Both label lists must be single characters (per the comments) because the spacing in the row/divider strings is hard-coded to one char wide.

┌──────────────────────────┬───────────────────────────────────────────────┬───────────────────────────────────────────┐
│          Method          │                   Produces                    │              Example output               │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ makeHeaderRow (38)       │ top column labels                             │     1   2                                 │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ drawDivider (35)         │ horizontal rule                               │    --- ---                                │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ drawEmptyRow (26)        │ a row of blank cells                          │ A |   |   |                               │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ drawFilledRow (29)       │ a row with contents                           │ A | X | O |                               │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ buildRowsIntoList (44)   │ header + divider + (row + divider)* as a list │ ["Labels","Divider","Row1","Divider",...] │
├──────────────────────────┼───────────────────────────────────────────────┼───────────────────────────────────────────┤
│ joinRowsWithNewLine (41) │ joins list with \n                            │ multi-line string                         │
└──────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────┘
The design is deliberately decomposed: drawTable is mostly composition, and each piece is a tiny pure function of its inputs.

How it's tested (tests/test_TableMaker.py)

A single test() function (pytest picks it up by the test prefix) that mixes two testing styles:

1. Unit tests of the helpers (lines 9–15). Each isolation with fixed inputs and its exact string output asserted — header, divider, empty row, filled row, the list-building step, and the newline join. Several asserts include a custom message ("produced "+…) so a failure prints what was actually generated.

2. "Approval tests" of the whole table (lines 21–60). Full expected tables are written out as triple-quoted string literals, then compared against drawTable() output. This is the "golden master"/approval style the comments call out — you eyeball the expected block once, then it locks in the exact rendering. It covers:
- a 1×1 board (table11)
- a 2×2 empty board (table22)
- a 3×3 filled board from dataForFilledTable33
- a 2×2 board with custom row/header labels (X/Y, !/?) to prove the label parameters flow through.

Caveats worth knowing

- Line 10 is a latent bug in the test itself: the failure message calls t.drawRow("A",3), but drawRow is a local closure
defined inside drawTable — there is no TableMakne only works as long as the assert passes; if it ever failed, building the message would raise AttributeError instead of showing a clean assertion error.
- It's one monolithic test rather than many small test_* functions, so pytest reports it as a single pass/fail — the first failing assert hides all later ones.
- No edge cases (size 0, mismatched content lene exercised.

Want me to split this into granular pytest casege bug on line 10?

✻ Churned for 27s

Bart and James vs yargs

Bart on Claude code and James on Qwen3.5:9B locally w 35K context.

James' seemed good, but went early with a priate-themed tool. 6-7 Qs were covered in the text. Gave a pause before marking. No idea how 'right'. Used ~50% of local context.

Bart's seemed ???

So: Adequate to do on a local LLM, need to be careful of context length.