Skip to content

Commit 309b1db

Browse files
authored
docs: add GSoC'26 week 09 blog by vyagh (#999)
1 parent 4081a2c commit 309b1db

5 files changed

Lines changed: 195 additions & 0 deletions

File tree

30.9 KB
Loading
68.5 KB
Loading
68.2 KB
Loading
33.5 KB
Loading
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
---
2+
title: "GSoC '26 Week 09 Update by Shubham Sharma"
3+
excerpt: "Running two builds of the reflection feature on the actual Sugar codebase, rebuilding the fork's entry view against a finished design, working out where in-activity reflection can live, and finding a scoring update had partly learned the test cases used to check it"
4+
category: "DEVELOPER NEWS"
5+
date: "2026-07-27"
6+
slug: "2026-07-27-gsoc-26-vyagh-week09"
7+
author: "@/constants/MarkdownFiles/authors/shubham-sharma.md"
8+
description: "GSoC'26 Contributor at SugarLabs (AI Reflection in the Sugar Journal)"
9+
tags: "gsoc26,sugarlabs,week09,vyagh"
10+
image: "assets/Images/GSOCxJournal.webp"
11+
---
12+
13+
<!-- markdownlint-disable -->
14+
15+
**Project:** [AI Reflection in the Sugar Journal](https://github.com/sugarlabs/GSoC/blob/master/Ideas-2026.md#ai-reflection-in-the-sugar-journal)
16+
**Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya](https://github.com/chimosky)
17+
**Assisting Mentors:** [Diwangshu Kakoty](https://github.com/Commanderk3), [Mebin J Thattil](https://github.com/mebinthattil), [Harshit Verma](https://github.com/therealharshit), [Aman Naik](https://github.com/AmanNaik)
18+
**Reporting Period:** 2026-07-20 - 2026-07-26
19+
20+
---
21+
22+
## Goals for This Week
23+
24+
- Run Devin's labels as an independent check as soon as they land
25+
- Keep building and testing the conversation-level judge
26+
- Move design and engine work onto the actual Sugar codebase, fork, simplest version first
27+
- Keep peer reflection queued
28+
29+
---
30+
31+
## This Week's Progress
32+
33+
### 1. Two builds, one status for the mentors
34+
35+
[Last week](news/all/2026-07-20-gsoc-26-vyagh-week08) I described Walter's steer to stop waiting on Sugar reviews and start building on a fork of the real codebase.
36+
37+
This week that fork was one of two places the feature existed. To keep moving past slow review cycles, I'd also been keeping a second, separate build going all week on the same real Sugar source. This whole post covers both.
38+
39+
#### The Sugar-fork build
40+
41+
On the fork, I built the reflection panel itself, and this was the first time the whole feature worked end to end. The conversation is saved in the entry's own `metadata['reflections']` field. A notification invites reflection after an activity closes. And a live version talks to the AI, carrying the last answer forward as a banner on the next visit.
42+
43+
I then kept matching it to the design file and building further screens from it: a foldable "Our talk" section with a thinking animation while the AI replies, a home-view nudge card, and a badge on each Journal row when Jo has a question waiting. Along the way I fixed a bug: a step reading an entry's colour failed silently, and that blanked the description, tags, comments, and conversation all at once.
44+
45+
#### The second build
46+
47+
The second build was further along in different ways. The engine there is its own package with a full test suite, reached through a small server. I'd tested the same kind of panel end to end in Sugar. And I'd run a first evaluation: thirty scripted conversations against a local model. No real children are involved anywhere in this yet; a written stand-in plays the child.
48+
49+
#### A same-day design sweep
50+
51+
The same morning, I ran a wide design sweep on that build. It covered fourteen directions for the panel and several ways to draw Jo. I also did states for waiting, being offline, and saying goodbye, plus rules for how any of it should move.
52+
53+
The next day I picked a direction. The child's work sits big and front-and-centre, everything Sugar's entry view already has stays, and reflection becomes a thread hanging underneath it. Jo became a plain chrome XO shape with one ember, unpainted, no buddy colours.
54+
55+
![The design spec for Jo's neutral XO identity: three states, available, thinking, and leaving, told apart by the amber centre's glow, plus how it sits next to a question in context.](/assets/Developers/vyagh/gsoc26-week9-jo-chrome.webp)
56+
57+
#### What I found running the evaluation
58+
59+
The small model went over the word-length limit fifty-one times, gave a few compliments it isn't supposed to give, and broke the one-question rule twice. I'd expected results like that from a model this small; real quality checks need a stronger one.
60+
61+
I also turned that same check on the fork build's shipped interface. The alert inviting a child back to Jo was titled "Nice work!". Since Walter's marking [last week](news/all/2026-07-20-gsoc-26-vyagh-week08) I no longer score the AI down for plain praise. But Jo's own instructions still tell her to ask about the work, never grade it, and that title grades it. I fixed it and checked again the same day.
62+
63+
#### What I brought to the mentors
64+
65+
I brought both builds to Walter and Ibiam. Three questions came out of that:
66+
67+
- Should reflection be on by default, or something a teacher switches on?
68+
- Does warm acknowledgment of an idea count as the judging Jo is meant to stay out of?
69+
- What should Jo say if a child discloses something like feeling sad?
70+
71+
The last question needs an answer before any of this goes in front of a child.
72+
73+
#### Keeping an answer
74+
75+
The second build already had a small mechanic for a good answer. Press a star next to what a child wrote, and it's saved word for word into the entry's description. The saved line also shows under the entry's title in the Journal's list view, so a kept thought is visible without opening the entry.
76+
77+
![The reflection panel on the second build's Journal entry, mid-conversation: a child's answer, "it did the sum in the wrong order but it still worked," is starred and kept word for word in the entry's description, while Jo asks how the child would explain it to a friend.](/assets/Developers/vyagh/gsoc26-week9-notification.webp)
78+
79+
#### A stray bug fixed along the way
80+
81+
In the Sugar source itself I fixed a bug unrelated to my work: pressing Enter or the Left arrow key inside a focused text field resumed or exited the whole activity instead of typing the character.
82+
83+
### 2. Stepping back: the design itself needed to change
84+
85+
#### What Walter and Ibiam said
86+
87+
Walter and Ibiam both read the builds as still thin, and where in-activity reflection should live is open on their side too, though both leaned away from a change that would touch every activity's toolbar and toward keeping it inside Sugar's frame somehow. Ibiam added that whatever a redesign changes has to stay at least as clear and useful as it was before.
88+
89+
#### Where the design file came from
90+
91+
The design file the fork build had been built against was a wireframe sketching out the flow, never a finished visual design. It took me most of the week to go back and trace it to its source; until then I'd assumed the gap was in my own work, and polishing harder didn't help.
92+
93+
On the fork, I went back to a more finished set of [mockups](https://gsoc-html-share.vercel.app/mockups/second-pass/standalone/journal) I'd built earlier and decided to build directly from those. They solve something I hadn't fully worked through: most Sugar activities don't produce one single visual thing to reflect on the way a painting does. That version treats a saved reflection as its own small unit, tagged with the activity's icon and colour, so a Turtle Blocks project or a piece of writing works the same way a painting does.
94+
95+
#### Designing the whole journey on the second build
96+
97+
On the second build I took the same realisation somewhere else: I stepped back to design the complete experience as one connected story. It runs across six moments: capturing a thought while still in the activity, a nudge to return to that same activity next time, and the conversation in the Journal. The other three are the moment a good answer gets kept, watching a replay of how the work was made, and how a reflected entry looks in the list.
98+
99+
The entry-view screens on that build won't get touched again until that whole journey is designed and agreed on, screen by screen. The first of the six moments, reflecting inside the activity itself, is solid enough to build now, and that's where the rest of this build's work went this week.
100+
101+
#### What Walter said about one piece of it
102+
103+
One piece of that design went straight to Walter: a small "Reflect" tag in the corner of a running activity that a child could tap. He pushed back on it sitting there all the time as too intrusive; the Frame, where a child already goes to invoke things, made more sense to him. He also floated a keyboard shortcut, which I flagged as likely too hard for a young kid, and something that could pop up on leaving an activity, so long as it never takes up space inside the activity while it's running.
104+
105+
#### A focus-stealing bug in fullscreen activities
106+
107+
On the second build, I dug into where in-activity reflection could live at all. Typing into a window drawn over a running, fullscreen activity doesn't work, because Sugar keeps the keyboard on the activity underneath no matter what's on top. Taps get through fine, so an in-activity panel there has to give a child answers to tap.
108+
109+
I also tried two places for its icon in Sugar's frame, one on each side of the screen; both opened the panel on the first tap, each with a small rendering glitch I need to fix before I can pick between them.
110+
111+
![Jo's device icon live in Sugar's own Frame, next to the other device icons, on the actual Home screen.](/assets/Developers/vyagh/gsoc26-week9-frame-icon.webp)
112+
113+
### 3. Rebuilding the fork's entry view, and a frame panel on the second build
114+
115+
Since the target design had changed, I reset the fork back to stock Sugar and rebuilt the entry view against the new mockups. The storage, the notification, and the AI wiring the fork had earlier in the week aren't running on it right now. Adding them back on top of the rebuilt view is the next piece of work.
116+
117+
I rebuilt Jo's reflection sidebar on the fork as a panel down the right side of the entry view, resizable and hideable, with a message area and a text box to reply in. I also merged the old separate back button into Sugar's toolbar, so it navigates through the same place as everything else in Sugar.
118+
119+
#### Comparing it to the reference
120+
121+
I looked at the rebuilt panel running on the actual VM, next to the reference design, and listed the gaps. The entry's title rendered as a big grey input box where the reference has a small identity line. The kind, date, and size details ran as three lines instead of one. The preview photo had a hard black border and square corners.
122+
123+
Working through that list, the preview came first: I moved it into a centred band above the rest of the entry, with rounded corners and a soft border. Tags went from one freeform text box into small chips you add and remove one at a time. The title and the three-line kind, date, and size layout haven't been touched yet.
124+
125+
I also found and fixed four rendering bugs in the same view, including a tag chip whose remove button looked fixed in a screenshot but silently did nothing; I only caught that one by clicking it myself.
126+
127+
#### Reflecting inside the activity itself
128+
129+
On the second build, I built a panel opened from a Frame icon, answered with the tap chips the focus finding had already pointed to. Whether opening on top of a running activity, even only on demand, still counts as taking up space by his standard is unresolved; I built it anyway so there'd be something to show him. It works live on the test device. A notification also offers to open it right after an activity closes.
130+
131+
![The in-activity panel, polished: mood chips, a thumbnail of the current work, and starter chips for a first answer, layered over the running activity.](/assets/Developers/vyagh/gsoc26-week9-inactivity-panel.webp)
132+
133+
### 4. Piloting a judge for whole conversations, and finding it tuned to its own test cases
134+
135+
Last week I started building a second test that judges a whole conversation, not one line at a time. This week I finished piloting both halves. The half that reads the child's side came out consistent. Before I can trust it, a second person needs to hand-label a sample, so their reading can be compared against mine.
136+
137+
#### Checking the question judge
138+
139+
A rules update I'd made had partly learned the wording of the exact test cases I check it with, rather than the general pattern behind them. I went back and checked because the scores from that update looked too good when I piloted this half. It still tells a weak suggestion apart from a carefully asked question. A fresh test, on conversations it has never seen at all, is still ahead.
140+
141+
I also compared it against a faster, cheaper way of scoring the same conversations. That one sometimes scored a question by which pile of examples it came from, and two nearly identical suggestions landed four points apart. It's useful as a rough first filter and I'm not relying on it for more than that.
142+
143+
#### What to measure at all
144+
145+
I'd been looking at whether one good question from Jo leads to a deeper next answer, one exchange at a time. In my example conversations the richest answers kept coming first, and the follow-ups were a coin flip. I reread the research this is built on, and it measures these effects across a whole conversation rather than at a single exchange. So that per-exchange measurement is now a note I keep rather than a score.
146+
147+
What I need to score is a full three-step unit: Jo asks, the child answers, and what Jo does next. The third step is what shows whether Jo's next question does anything with the child's answer, or only repeats it back.
148+
149+
### 5. Peer reflection stays queued
150+
151+
Still queued behind the single-child engine and design work, same as the last few weeks.
152+
153+
---
154+
155+
## Key Learnings
156+
157+
- **A design file I'd been matching pixel-for-pixel was only ever a wireframe.** Polishing harder didn't close the gap; I had to pick a finished design to build against.
158+
- **Turning my own evaluation on my own shipped UI caught a mistake my manual review had missed.** The invite alert praised a child's work in its title, something Jo's own instructions still rule out.
159+
- **I found that typing doesn't reach a window layered over a running activity, but tapping does.** So any in-activity panel has to lead with tap-first answers.
160+
- **I found that a scoring rule can improve on the exact examples it was tested against without the underlying pattern getting better.** I caught it by re-checking on the very same test items; a fresh, unseen set would be a stronger check.
161+
- **A fix can look right in a screenshot and still be broken.** I only caught the tag chip's dead remove button by clicking it myself.
162+
163+
---
164+
165+
## Next Week's Roadmap
166+
167+
- Add the conversation storage, the post-exit notification, and the AI wiring back on top of the fork's rebuilt entry view; all three already work in the second build.
168+
- Finish matching the fork entry view to the reference (title styling, the kind, date, and size line); the list view's reference is a full card-grid layout, a separate task to scope.
169+
- In-activity reflection placement is still open on the mentors' side too; compare the second build's frame-panel approach against staying inside the fork's entry view before settling on one.
170+
- Finish designing the whole six-moment reflection journey on the second build, then decide whether the fork follows that or the mockups already in use.
171+
- Two outside checks on the evaluation: a second person hand-labels a sample of the child-side scores, and Devin's labels run as an independent check whenever they land.
172+
- Peer reflection stays queued.
173+
174+
---
175+
176+
## Resources & References
177+
178+
- **Week 8 blog:** [GSoC '26 Week 08 Update](news/all/2026-07-20-gsoc-26-vyagh-week08)
179+
- **Week 7 blog:** [GSoC '26 Week 07 Update](news/all/2026-07-13-gsoc-26-vyagh-week07)
180+
- **Reference design mockups:** [second-pass Journal prototype](https://gsoc-html-share.vercel.app/mockups/second-pass/standalone/journal)
181+
182+
---
183+
184+
## Acknowledgments
185+
186+
Thanks to Walter and Ibiam, who looked at both builds this week and gave feedback on where reflection should live and how much a redesign is allowed to change. Thanks to Diwangshu, Mebin, Harshit, and Aman for their continued input.
187+
188+
---
189+
190+
## Connect with Me
191+
192+
- GitHub: [@vyagh](https://github.com/vyagh)
193+
- Email: [vyagh.vy@gmail.com](mailto:vyagh.vy@gmail.com)
194+
195+
---

0 commit comments

Comments
 (0)