- A Casework project hosted in ReasonOS. Set one up from The Casework sample: an Empty repository project with the sample pushed to it. Moving a workspace and submitting a stack need a project hosted here. A project imported from another Git server works for the planning steps (1 and 2) but not for the rest.
-
The tutorial proposal Getting Work done: show overdue case counts
under Work › Proposals. A demo stack seeded for the tutorial has it. In
your own project, create it: choose New proposal, use that title, paste
this as its argument, and choose File proposal:
The principles
Four rules explain everything below:- One issue, owned by the project. An issue lives in the project’s Work. A workspace, a branch or an agent shows that same issue; none of them makes a copy.
- Cycles are optional plans. Putting an issue in a cycle schedules it. The issue list and the cycle’s board are two views of the same issues.
- Branches are linked, not owners. Linking a branch to an issue records where the work happens. It doesn’t move the issue or create a second one.
- The same permissions everywhere. What you can see and change is the same in the project, in a workspace and through an agent.
1. Start from a proposal
A proposal is how work is suggested before anyone commits to it.- Open the project, then Work › Proposals, and open Getting Work done: show overdue case counts. Read its goal, scope and acceptance criteria.
- Choose Accept & file issue.
2. Plan it
- On the issue, set Assignee to yourself, Priority to High and Cycle to Demo cycle 1, the cycle in the tutorial’s demo. In a project with no cycles yet, make some first under Work › Cycles: if it says cycles are off, choose Turn on cycles, switch on Enable cycles in the settings that open, and go back to Cycles; then choose Add upcoming cycles. Pick the first cycle it lists, and use it wherever this page says Demo cycle 1.
- Open Work › Cycles and choose Demo cycle 1.
3. Create the first branch
The change has two parts: the rule and its tests, then the visible count that depends on it. Each part gets its own branch, the second stacked on the first, so they can be reviewed and merged in order. On the issue, under Development, choose Create branch or stack. Pick Stacked branch onmain and name it overdue-rule; the issue key is added
for you, giving CAS-6/overdue-rule. Leave Start a workspace for this
branch on, and choose Create stacked branch.
Expected: the branch appears under the issue’s links, and it is still one
issue. The page opens the new branch’s workspace, a branch server of its own.
Why it matters: a stack lets dependent changes be reviewed and merged in
order, with each change request targeting the branch below it. A Feature
branch would work too, but it records no parent, so it isn’t part of a stack.
See Stacks.
4. Work in the workspace
- Choose the Work tab and the branch’s name. The issue is listed because the branch name carries its key. Choose it: the issue opens in a panel beside your code, with the same status, comments and links.
-
Describe the behaviour as a test first. Add to
cases_test.go:Runrbs test //:test --no-cacheand watch it fail: the service doesn’t knowoverdueyet. -
Make it pass. In
cases.go, replaceselectCases:Then inmain.go, have/api/casessay how many cases matched and how many there are, so the page can show a count that agrees with the rule:Runrbs test //:test --no-cacheagain until it passes, then commitcases.go,main.goandcases_test.gofrom Source Control. Leaveweb.goalone; the page belongs to the next branch. -
Publish the commit: open a terminal (Show Terminal) and run
git push origin HEAD. The next branch starts from this one as published, so an unpublished commit wouldn’t be in it. - In the issue panel, comment with what you did and the test result.
5. Stack the next branch, and move the workspace to it
Open the stack pill in the top bar and choose New stacked branch. This box takes the full branch name: enterCAS-6/overdue-count, keeping the issue key
so the branch links to the issue, and create it. It starts from the rule branch
as published. ReasonOS then asks where you want to work:
- Move here moves this workspace onto the new branch.
- Open in its own workspace starts a separate workspace for it, and this one stays on the rule branch.
web.go:
- After Closed cases, add
<option value="overdue">Overdue cases</option>. - After the
<select>line, add<p id="count" role="status" aria-live="polite"></p>. - In
refresh(), after the line that sets the demo date, adddocument.getElementById('count').textContent=data.count+' of '+data.total+' cases'; - In the
catchblock, clear it too, before the error is shown:document.getElementById('count').textContent='';
rbs test //:test --no-cache, start the page with rbs run //:server, and
open http://127.0.0.1:8077 in Tools → Browser. Expected: All cases
says 4 of 4 cases, Open cases 3 of 4, Closed cases 1 of 4, and
Overdue cases 1 of 4, listing only CW-101. Commit web.go, run
git push origin HEAD, and comment the result on the issue.
6. When a move is refused
A move checks your uncommitted changes first, and refuses before anything changes if one would be lost.- Change
cases.gowithout committing. - Open the stack pill, point at the
mainrow (or move to it with the keyboard) to show its actions, and choose Move here.
7. Review, merge and close
- From the stack pill, choose Submit stack. It shows what it will do, including any uncommitted changes it leaves out, then opens a change request for each branch, each into the branch below it.
- A change request starts with no reviewers. On each one, choose Ask someone (or Add) under Reviewers and pick a teammate. It then appears in their Inbox under Needs your review.
- Run the gates. Where the project has CI or QA checks set up, they run on each
request; otherwise the evidence is the
rbs testruns you recorded. - Merge from the bottom of the stack up: the rule first. The count’s request
then targets
mainby itself, rebased onto the merged rule; review and merge it next. - Finish on the issue in the project’s Work. Once a branch is merged it is removed, along with its workspace, so its old workspace address no longer opens. Move the issue to Done and record the evidence on it: the test runs, the reviews and the merged change requests.
What “done” means
Keep these four apart:- Tested: the gates passed on the branch.
- Merged: the change is on the main branch.
- Documented: the public docs describe it, where people would look.
- Deployed: it is running for customers. Merging doesn’t deploy anything.