SC Contractor Task Quality - Review Standard
Purpose
Defines how to review and close a contractor's work on a ClickUp task. This is the companion standard to SC Contractor Task Quality - Pre-Work Standard: pre-work covers what we hand the contractor; this standard covers what happens when they hand it back.
Bad review patterns -- vague feedback, scope-creep masquerading as bug fixes, inconsistent approve/clarify decisions -- cause errors to repeat across cycles and erode trust in both directions. This doc names the patterns and the choices a reviewer makes at the close of every task.
Scope
Applies when a contractor moves a ClickUp task to REVIEW status (or its equivalent) and the SC reviewer (typically AM or CEO) reads the work product and decides what to do next.
Section index
- Acceptance Criteria confirmation
- Feedback tone — blocking vs. advisory
- Decision documentation
- Follow-up vs. send-back
- Time-entry validation
- Quality tagging
- Approve vs. clarify
Acceptance Criteria confirmation
What: Before any other review action, walk every bullet in the task's ## Acceptance Criteria section and mark each as met / not met / partially met.
How:
- Open the task description and read AC. Skip the chat history — AC is the contract; chat is context.
- For each criterion, verify it on the actual deliverable (the live URL, the merged PR, the deployed config), not on the contractor's screenshot or report.
- Mark partials explicitly: a criterion is "partially met" only if the unmet portion is small enough to land as a follow-up (see Follow-up vs. send-back).
Why: A task with ## Acceptance Criteria but no AC walk-through at review time is operationally identical to a task with no AC at all. The walk-through is the only thing that converts AC from theater to reality.
If the task has no AC (i.e., it was assigned before the pre-work standard was enforced): construct AC retroactively from the task description and the chat history, post them as a comment on the task ("Reading AC from the description as: 1...2...3... -- confirming below"), and walk through those. Do not approve a task whose success criteria cannot be stated.
Feedback tone
Two tones, named explicitly so the contractor can act on them differently.
Blocking feedback
A defect that prevents closure. Marked clearly: Blocking: or Must fix: at the start of the bullet.
- Format:
Blocking: <what's wrong> -- <how to fix> -- <which AC it violates> - Example:
Blocking: Carousel uses custom code -- swap for the chosen WP plugin (Smart Slider 3 per spec §2.1) -- violates AC #3 (no custom code).
The contractor cannot close the task until every Blocking item is resolved.
Advisory feedback
A suggestion that improves the work but does not prevent closure. Marked clearly: Advisory: or Nice-to-have: at the start.
- Format:
Advisory: <observation> -- <suggested change> -- <reason> - Example:
Advisory: H1 font weight is 600, design kit suggests 700 -- consider bumping unless deliberate -- minor consistency improvement.
The contractor may address advisory items in this task or open a follow-up; their call.
Why the labels matter: Without them, contractors over-rotate on small advisory comments (wasting hours) or ignore blocking comments (forcing a second review cycle). Naming the severity at the start of every bullet removes that ambiguity in one word.
What not to do:
- "It looks off" -- not actionable; either advisory with a specific suggestion, or blocking with the AC violated.
- Long unstructured paragraphs mixing 3 blockers and 2 nice-to-haves -- separate into bullets, label each.
- Sarcasm or rhetorical questions ("did you even read the spec?") -- not feedback, just damage. Replace with the blocking statement.
Decision documentation
What: When the reviewer makes a judgment call -- accepting a deviation from spec, downgrading a blocker to advisory, deferring an AC item to a follow-up -- the call is documented in the task comments.
Format:
Decision: <what was decided>
Why: <one-line rationale>
Tradeoff: <what was given up, if anything>
Example:
Decision: Accepting H1 weight 600 (spec said 700) for this task.
Why: Design kit was updated to 600 last week; spec is stale.
Tradeoff: Need to update spec in next sprint -- filed follow-up CL-RS-2026-05-001.
Why: Decisions made verbally or in Slack vanish from the audit trail in 90 days. The next contractor reading this task to understand a similar pattern needs to see the call and the reasoning. Comments on the task survive; Slack threads do not.
When to skip: Routine approvals where everything went per spec. The default outcome doesn't need a "Decision: approved" comment; the task status moving to COMPLETE is the artifact.
Follow-up vs. send-back
A binary at the end of every review: send the task back (move to IN PROGRESS, list blockers) or accept and open a follow-up for any remaining gaps. Don't approve-with-list-of-blockers — that's neither.
Send back (rework)
- The task is missing something that was in the original AC.
- Or, the work product has a defect on a criterion that was actually met-in-spec.
- The contractor stays on the task; status moves back to
IN PROGRESS.
Accept + follow-up
- The original AC is met (possibly with documented decisions).
- New work was identified during review that's adjacent but out-of-scope.
- The original task closes; new ClickUp task(s) are opened for the follow-up.
- New tasks reference the original (
Follow-up to <task_url>).
Heuristic: if the contractor's last commit could plausibly be the "final" commit on this task, you're in follow-up land. If they need to make more commits to satisfy the original AC, send it back.
What not to do: "Almost done -- can you also add X, Y, Z" as a single feedback dump. That's three scope items disguised as a review. Either send back with the blockers (and let X/Y/Z be follow-ups), or accept and file the three follow-ups explicitly.
Time-entry validation
What: When approving a task, glance at the contractor's logged time against the estimated-effort.
The validation is light, not forensic:
- Within ~20% of estimate: no comment.
- 20-50% over: flag in approval comment, no action. ("Note: logged 5.5h vs. 4h estimate -- carousel debug took longer than expected.")
- 50%+ over and no explanation: ask. ("Saw 9h logged on a 4h estimate -- can you note what consumed the extra time? Trying to recalibrate estimates.")
- 50%+ under: also worth checking. ("Logged 1.5h on a 4h estimate -- did anything ship short of full scope?")
Why a light touch: Time entries are not a basis for payment disputes -- they're calibration data for future estimates. Forensic time auditing destroys the trust that the standard depends on. The right reaction to a chronic over-runner is not policing; it's better estimates next time.
Deferred to M7b cron: Automated time-entry hygiene checks (no missing entries, no entries on closed tasks, no entries from before task assignment date) will run as a scheduled symphony-flow job per FR-050. This standard's role is the human review at task close — not the automated drift check.
Quality tagging
What: When a task surfaces a quality issue — either during this review or after it was previously closed — the reviewer applies the appropriate quality:* tag from the SC ClickUp Tag Taxonomy. The tag is the audit-trail artifact; it persists on the task across reopens.
Three tags, three trigger moments:
quality:rework— apply when sending a task back during this review for a blocking defect. The move fromREVIEWtoIN PROGRESS(per Follow-up vs. send-back §Send back) is the same moment the tag goes on. Remains on the task even after re-close.quality:escaped— apply when a previously-closed task is found defective in the wild (defect surfaced in production, reported by client, caught by a downstream task, or noticed on later review). Apply either by reopening the original task or by tagging a follow-up task that links to the original. Captures the "oversight" case — what AC or validation-evidence-rule should have caught.quality:partial-met— apply when closing a task whose AC walk-through marked one or more criteria as "partially met" by mutual agreement, with the unmet portion deferred to a follow-up or accepted as a known limitation. The decision comment names the unmet portion.
How to apply:
- Tag in the ClickUp UI (Tags field on the task) or via
clickup_add_tag_to_taskif doing it programmatically. - Tags persist; do not remove them on re-close.
- The reviewer also leaves a one-line comment explaining the trigger:
quality:rework — AC #3 not met (custom carousel code), sending back.This pairs the tag with context so the audit trail is readable.
Why: Tags give us reporting. Per-contractor quality:rework rate, per-domain quality:escaped count, partial-met patterns across a quarter — these surface only if the tagging discipline is consistent. The Quality tag family is small on purpose; resist proposing new variants without a documented recurring pattern.
What not to do:
- Don't apply
quality:reworkfor advisory feedback. Advisory items are not defects. - Don't omit
quality:escapedon a follow-up because "the original is already closed." The whole point of the tag is that closed-then-defective is the case we want to count. - Don't manually create new
quality:*variants in ClickUp. Propose them via PR to the taxonomy first.
Approve vs. clarify
The final action on a task: approve (close) or clarify (post a comment and wait).
Approve
- All AC met (per walk-through)
- All blocking feedback addressed
- Time-entry sanity check passed
- Any deviations documented as decisions
Move the task to COMPLETE. Add a one-line approval comment if anything notable happened (decision documented, follow-up filed). Otherwise the status change is sufficient.
Clarify
Use when you cannot yet make the approve/send-back call. Examples:
- AC mentions a behavior that requires production data to verify -- ask the contractor to confirm.
- A screenshot looks right but you cannot reproduce locally -- ask for steps.
- The deliverable is in a staging environment you don't have access to -- ask for access.
Post the question as a comment. Leave task status at REVIEW. Do not move to IN PROGRESS (that signals "rework needed" when you actually just have a question).
If clarification reveals work is needed: move to IN PROGRESS with blocking feedback per Follow-up vs. send-back.
If clarification reveals work is fine: approve.
What not to do: Sit on the task without commenting. The contractor cannot tell the difference between "you're thinking about it" and "you forgot". State Reviewing — back in <timeframe> if you need time.
Quick reference
| Situation | Action |
|---|---|
| AC all met, no surprises | Approve, move to COMPLETE |
| AC met but new scope discovered | Approve + open follow-up task |
| Original AC unmet | Send back with Blocking: bullets, tag quality:rework |
| Cosmetic issue, AC met | Advisory feedback, approve |
| Defect found in previously-closed task | Reopen or open follow-up, tag quality:escaped |
| AC partially met, by agreement | Approve + tag quality:partial-met, document deferral |
| Need more info to decide | Clarify comment, stay in REVIEW |
| Big estimate overrun, no explanation | Approve + ask in comment |
| Conflicting spec docs | Apply doc precedence per Markdown Task File to ClickUp SOP §3a |
Related Documents
- SC Contractor Task Quality - Pre-Work Standard -- companion standard for task creation
- SC ClickUp Tag Taxonomy -- canonical list of approved tags, including the
quality:*family - Markdown Task File to ClickUp SOP -- task creation and update procedures
- SC Task Data Standard -- universal status/priority model
- SC SOP Standard -- authoring conventions
Revision History
| Date | Version | Change | Author |
|---|---|---|---|
| 2026-05-12 | 1.0 | Initial release. Codified the six review concerns: AC confirmation, feedback tone, decision documentation, follow-up vs. send-back, time-entry validation, approve vs. clarify. | Symphony Core Systems Team |
| 2026-05-21 | 1.1 | Added Quality tagging section defining when reviewers apply quality:rework, quality:escaped, quality:partial-met from the new SC ClickUp Tag Taxonomy. Updated Quick reference table with corresponding rows. | Symphony Core Systems Team |