When a pull request is opened, a time submission comment is posted automatically. The author is enrolled immediately — regardless of whether the PR is a draft.
Warning
If your organization does not require time submission, see Whitelist.
| Event | Enrolled |
|---|---|
| PR opened (author) | ✅ Always, including drafts |
| Commit pushed to PR branch | ✅ If not already enrolled |
| Review submitted | ✅ If not already enrolled |
| Review comment posted | ✅ If not already enrolled |
| Reviewer assigned | ❌ Assignment is not contribution |
Bot accounts are never enrolled.
Any user whose login ends with [bot] is skipped silently.
A member is never asked for time on pull requests in their own HR repository,
the repo in their roster entry. Leave requests, expense claims and profile
changes are their own admin, not billable work. Other people on those pull
requests, such as the HR Staff who review them, are asked as usual.
If a member submits or adds time on their own HR pull request, Wizard refuses
it with a reply saying it was not recorded. Time recorded from October 2026
before that refusal existed is not billed and is left out of invoices and cost
reports.
Once enrolled, submit your time by commenting on the PR:
@holdex pr submit-time 2h
To add time on top of a previous submission:
@holdex pr add-time 1h30m
submit-time
and add-time must be used within 24 hours of the merge.When a closed (unmerged) PR is reopened:
Merged PRs cannot be reopened on GitHub.
| Format | Meaning |
|---|---|
15m |
15 minutes |
1h |
1 hour |
2h30m |
2 hours 30 minutes |
1.5h |
1 hour 30 minutes |
A comment is posted on the PR as soon as it opens.
Rows are added silently as contributors are enrolled —
no @-mentions are sent until the PR is merged.
Once the PR is merged, the bot waits 5 minutes,
then @-mentions each contributor who still has not submitted, once.
The wait makes sure a submission sent right before or
after the merge is counted.
| Member | Status | Time | Last Update |
|---|---|---|---|
| zolotokrylin | ⏳ Pending | - | - |
| Member | Status | Time | Last Update |
|---|---|---|---|
| zolotokrylin | ⏳ Pending | - | - |
| willsmith | ⏳ Pending | - | - |
| Member | Status | Time | Last Update |
|---|---|---|---|
| zolotokrylin | ⏳ Pending | - | - |
| willsmith | ✅ Submitted | 7min | May 11, 2026, 1:40 PM |
| Member | Status | Time | Last Update |
|---|---|---|---|
| @zolotokrylin | ⏳ Pending | - | - |
| willsmith | ✅ Submitted | 7min | May 11, 2026, 1:40 PM |
| Member | Status | Time | Last Update |
|---|---|---|---|
| zolotokrylin | ✅ Submitted | 2h | May 11, 2026, 3:00 PM |
| willsmith | ✅ Submitted | 7min | May 11, 2026, 1:40 PM |
A cost submission check appears for each enrolled contributor. These checks are informational and do not block merging.
Each check shows a title
(the status line you see in the UI)
and a conclusion (GitHub's underlying result).
Pending and missing both use a Failure conclusion,
but the title tells you which case applies.
| Title | Conclusion | Meaning |
|---|---|---|
| ⏳ cost submission pending | Failure | PR is open — time not yet submitted |
| ❌ cost submission missing | Failure | PR was merged — time not yet submitted |
| ✅ cost submitted: {time} | Success | Time submitted |
| ⚪ cost submission check cancelled | Neutral | PR was closed without merging — no submission needed |