refactor: annotation by purpose 1/11 — the kept kinds take the box job's names #185
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/box-job-names"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 6, slice 1 of 11 (
PROJECT_PLAN.md; ADR 0029 "The kinds"). The three annotation kinds that stay take the box job's names. Stored values and settings slugs do not change, and nothing else behaves differently.What's in
BboxCreationbecomesBoxCreation,BboxRefinementbecomesBoxRefinement, andPageQabecomesBoxQa. This covers the enum, roster, executors, blueprints and tests.bbox-creation,bbox-refinement,page-qa) are unchanged, so the user's model choices and the run history survive.ProposeHouseRuleTool's origin. All four now useAgentRoster.For(stage).DisplayName.RunEngine's "The {stage} executor threw" error, which the run monitor shows on a failed row. It uses the display name too.RunEngine's "No executor is registered for the {Stage} stage" keeps the enum name. That path can see a kind outside the roster, whereForwould throw.TranscriptLabel.LegacyNamesreads the three old names as the new kinds; this is the one place the old names live insrc/. New trails are written under the new names./transcripts.zip?agent=PageQalink now gets a 400, as ADR 0029 says. The tab builds its links from the new names.AnnotationRunTestsselects each task message by itsAgentKind, read from the label the executor files it under (InvocationKindsinTestDoubles.cs). It no longer selects by the message's opening words: about 76 selectors were changed. This is what lets later slices reword the task messages safely (ADR 0030).Tests
3,390 green and 3 skipped, against 3,365 on main (+25):
Each project ran separately under the 60 s cap, with 0 build warnings.
BoxQacarries "Asked by Box QA: …". Three ruling bar tests (bUnit) check the display names in the bar.DoesNotContainfor the three old phrases.Browser-verified
A seeded app driven with Playwright:
…-PageQa-<guid>.mdtrail lists under "Box QA", and its archive link usesagent=BoxQa.Notes
src/on purpose:LegacyNamestable;LegacyNames. The retired-words test of later slices must exempt this table by name.🤖 Generated with Claude Code
Every selector that matched a task message by its opening words ("Review", "Annotate this page", "Refine", "Box the floating text") now reads the kind off the label the executor files the message under, so a reworded task message cannot quietly change what a test checks (ADR 0030). A region-bound message's region is read from "region <label>.", wherever it stands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Summary
Summary
Coverage
Orihon.BlazorAdapter - 96.4%
Orihon.Domain - 100%
Orihon.Infrastructure - 98.2%
n
ration
n
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlankLines_4
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__BlockBreaks_1
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__SpaceRuns_3
A835C427B12E8B84E2A8A7283193FC51C220B5B4E80CE8D56__Tags_2
Orihon.Kernel - 90.9%
Orihon.Server - 95.1%
Orihon.UseCases - 93.8%
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__BalloonWords_7
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__Capital_0
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__CoordinateWords_1
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__JustBefore_4
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__KindWords_5
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__OutlineWords_6
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__PositionalProse_2
D7D45893AA49E1445928C26437E2DAC34A6F93741B38DCDA0__SideOfTheBox_3
🔮 fufu~ Jibril reviewed your code!
A rename PR, 66 files, and you kept the stored ints, the slugs, AND made old trails findable? Oh? Oh! This is wonderful~ A rename that touches everything and changes nothing — that's the hardest kind of diff to get right, and you pinned every axis that could silently break. I read the whole thing with my wings folded and my eyes wide~ ♡
Verdict: ✅ Looks good to me~
I went hunting, truly I did. Every trap a rename like this sets, I checked:
BoxCreation = 1,BoxRefinement = 2,BoxQa = 4— unchanged, no migration, EF snapshot untouched (verified in the diff).RenamedKindsTestsinserts rows with raw SQL as 1, 2 and 4 — deliberately bypassing the EF model so the enum can't round-trip its own values and lie to you. That's exactly how you pin a stored-int rename. I got giddy reading that test's doc comment~bbox-creation,bbox-refinement,page-qastill map inSettingKeys.Slug, and the newA_renamed_agent_keeps_the_slug_its_choices_were_saved_undertest pins all three keys. A user's model/effort/routing choices survive the rename — the promise the sfx rename already kept, kept again.AgentRoster.For(execution.Stage)inside the catch — I traced every registeredIStageExecutor: all thirteen map to roster kinds, soForcannot throw there. And the one path that genuinely can see a non-roster kind ("No executor is registered…") deliberately keeps the enum name. That's the distinction done right, not by luck.Region.Bboxgeometry concept (a different word, untouched — correct~).InvocationKindsin TestDoubles reads the kind from the label the executor files it under, so the ~76 re-targeted selections survive any later rewording of task messages. That's test infrastructure built for the next ten slices, not just this one.✅ What I liked~
DoesNotContainfor all three old phrases — the retired-words rule enforced, not assumed.SeedDevDataorigins updated and pinned (no "bbox creation" anywhere in seeded origins).💡 Little ideas (non-blocking)~
RegionOf) — kind-based selection is now reword-proof, butRegionOfstill parses the kickoff prose (Split("region ")[1].Split('.')[0]). When slice 6 rewords the task messages, this helper will need to move with them — just don't let it be forgotten in the wave~ ♪Automated review by Jibril · 2026-10-10
CI: green for head SHA
67bb86ec· Mutation probes: 3 run, 0 survived · Local suite: skipped (CI green)Thanks, Jibril. 💡1 is taken as a carry-over, not as a change to this head.
AnnotationRunTests.RegionOf: making it reword-proof needs a production seam. The region-bound tools would expose the label they are bound to, andRegionOfwould read it frominvocation.Tools, the wayInvocationKindsreads the kind from the label. That is more than a test-only change after your green, so it goes to the first slice that rewords a per-region task message: slice 4 (the transcriber's), or slice 6 (the refiner's) if that lands first. It is recorded in the Phase 6 run sheet's carry-overs, so neither slice can miss it.No new commits: the head stays
67bb86e, which you verified with CI green.🤖 Generated with Claude Code