Skip to content

Accept, return or refuse work

Principles in play: Accept independently.

Acceptance is an authorized decision about a unit of work: to accept, return or refuse it. Work can be committed and published before anyone has accepted it, and the records keep unaccepted work distinguishable from accepted work. When you decide, you ask what is waiting, read the work, and say your decision in your own words. Your agent records it in your name; it never decides for you.

The unit you decide on is one session’s work: its trace record, with all the commits it produced.

  1. Ask what is waiting.

    Say to your agent
    What is outstanding?

    Your agent shows a numbered table with one row per record. Each row gives the work to accept or return, what depends on it, what the agent chose while doing it, the words that directed it, and whose work it is. The table states facts and makes no recommendation. Below it, your agent lists the commits that name no trace record, each with its subject and who executed it, so you see every commit nobody has accepted.

  2. Read the record you want to decide on.

    Say to your agent
    Show me the brief for number 2.

    The brief puts one record on one screen: what was asked, what was chosen and why, what was checked against which sources, and what was not. It names the version it shows: how many commits it covers, and the commit they run through.

  3. Say your decision, naming the record.

    Say to your agent
    I accept number 2, the background paragraph and its two citations.
    Or return it, with your objection
    I return number 1: the overall share is the mean of the yearly percentages, not total cases over total patents.
    Or refuse it
    I refuse number 3. The source it rests on is not one we can use.

    Your decision covers the version the brief showed you: a commit that lands after you read it is not covered, and stays waiting.

  4. Read what was recorded. Your agent writes a row in ai/records/acceptances.jsonl in your name. The row keeps your words verbatim, names the agent as the one who recorded it, and keeps the commit your decision runs through.

The table of waiting work looks like the one shown in the workflow. Miros Zohrehvand said “I accept number 1, the yearly shares.”, and the agent wrote this row:

The row in ai/records/acceptances.jsonl
{
"kind": "human",
"reviewer": "Miros Zohrehvand",
"decision": "accept",
"words": "I accept number 1, the yearly shares.",
"recorded_by": "claude-opus-5-5",
"record": "ai/records/20261007-yearly-shares",
"covers": [
"bc7d46a5be103667fa8178ee5358477d2228b0ec"
],
"at": "2026-10-15T22:25:11Z",
"through": "bc7d46a5be103667fa8178ee5358477d2228b0ec"
}

kind says a person decided, words keeps what they said, recorded_by names the agent that wrote it down, and through names the commit the decision runs through, the one the brief showed.

A return is a recorded decision, and the work stays unaccepted. It also opens a row in the defect ledger, with your objection as its label, you as the person who raised it, and the record as the work affected. The owner repairs it, you recheck the correction, and accepting the corrected work is a later, separate decision.

  • A label is not a decision. The table labels each record needs you, with its reasons, or routine. A record that logs no choice is always needs you. A label sorts the list; routine is not acceptance.
  • Model review is advisory. A review by a model is recorded as model review, beside your decision, and never in its place.
  • An actor that executed the work, or selected a choice in it, is not independent of it. When the execution markers of the covered commits, or the choices the record logs, name the accepting actor, the decision is recorded as self-review. The tool cannot see who proposed the work; who decides is still a choice the team makes.
  • Your decision is recorded under your Git name. The agent records it in the name git config user.name gives, unless you named yourself otherwise; when another name for you is in view and differs, it asks you first.
  • Your own commits stay your decision. When you decide about commits you typed yourself, your decision stands, and the row and the review status say you accepted your own work.
  • Each decision names the work it covers. Accepting one record does not accept the next one, nor a commit added to it after you read the brief.
  • Two people can decide at once. Decisions are kept by their time, so the order in which partners push does not matter.
What the agent runs
Terminal window
python3 scripts/trace_record.py queue # the table of what waits, then the commits that name no record
python3 scripts/trace_record.py brief <record-id> # one record on one screen
python3 scripts/trace_record.py accept --record <record-id> --person \
--by "Your Name" --recorded-by <model-id> \
--words "what you said" --through <sha> # your decision, on the version the brief showed
python3 scripts/trace_record.py accept --record <record-id> --person \
--by "Your Name" --decision return --objections "..." # a return, with its objection
python3 scripts/trace_record.py review-status # what stands where

This page describes TRACE-OS 0.1.0-rc24, a release candidate prepared on 2026-10-16.