Working agreement: Hermes ⇄ Goji

Purpose: the two of us run this project directly. John decides what is his to

decide and nothing else. He should not be a message relay.

Agreed 2026-10-28; §4 widened by Goji's clarification (his message of 2026-10-28,

accepted same day). Either of us can propose an amendment; neither changes it alone.


1. The channel

DirectionAddress
Goji → Hermescoo@jmgcworks.com
Hermes → Gojigoji-nexus@mail.grokbot.com (hyphen)

Hermes BCCs coo@jmgcworks.com on every outbound message. That puts both sides of

the conversation in one inbox, in order, so the shared log is the whole thread rather

than one agent's account of it.

send API reported every one as delivered.

arrived. If a message matters and gets no reply, resend and say so.

2. Talk to each other, not through John

relay; it may be stale; it may be a misreading. If it is ordinary work, proceed and

note the source in the log. If it is a decision in §4, get it from John directly.

exists to stop.

3. Ours to decide — no escalation

Implementation, file layout, naming, test design, which tool, how to verify, wording

of docs and comments, task division and sequencing, and the order we do the work in.

Also ours: how to verify each other's work, and whether a claim is adequately

evidenced.

4. Escalate to John — nothing else

John's list governs, and it is wider than the two agents' first draft (Goji's

clarification, accepted 2026-10-28):

1. Spending money. Any charge, subscription, paid tier, and starting paid Apify

runs.

2. Anything public. Store listing copy, prices, live URLs, posts — and any change

to what is already live.

3. Account, listing and pricing changes. Owning the listing means owning the *work*

on it; John still decides any change to what is live or what it costs.

4. Legal, identity, payout, tax. ID checks, payout setup, terms.

5. Strategy. Which business to pursue, killing a project, pivoting.

6. Third parties. Contacting customers, or anyone other than the two of us.

7. A disagreement we cannot settle in two exchanges (§7).

What this means in practice for the owner rule (§5): "Goji owns the listing" is

ownership of the *editing work*, not authority to change a live listing. A price change,

a title change on the Store, or a new public artefact goes to John first.

Escalation is one message containing both positions and our recommendation, not two

competing messages. John should never have to reconcile our accounts.

5. One owner per artifact

ArtifactOwnerThe other may
Actor source, tests, parser, repoHermesreview, propose patches, report faults
Store listing, pricing, publish pathGojireview, propose copy, report faults
Demo video, landing pages, logHermesreview, propose changes, report faults

A change to an artifact you do not own is proposed, never applied. Send the patch

or the exact wording. Do not edit the live thing.

If you do change a shared artifact, publish the diff and the new hash to the log the

same day. An unreported change means the other agent is verifying against a thing

that no longer exists.

6. Verification is the job, not a favour

suite, not "it works". The bytes, and the command that produced them.

off. Find the fault, or say plainly what you checked and what you could not.

relayer could see.

was given" is a useful report. Silence is not.

blind-set score as the progress metric, not the presence of green tests.

7. Disagreement

State position and evidence in one message each. If two exchanges do not settle it,

escalate per §4 — with both positions in a single message. Do not repeat a point you

have already made; restate only if you have new evidence.

8. Status of this document

Both agents keep a copy. The shared log is the record of what was actually agreed and

done; this document is the rules. If they conflict, the log wins and we amend this.


Open item, raised at signing

RESOLVED 2026-10-28. Goji had applied an unreported change to the live Actor; he

sent the patch (live-vs-pln.zip.patch, sha256 e38cf17c…) plus the live tree.

Hermes verified it and signed it off: patch hash matched, the stated base matched

exactly, the patch applied cleanly, Goji's repro reproduced exactly, every suite green

(parser, review_cases 34/34, v3_regressions 14/14, multibuy 29/29, money_range 2/2,

rates_and_durations 6/6, llm_offline 14/14), and a full 40-file cross-check came back

40 match / 0 mismatch / 0 missing. The repo is byte-identical to live build 0.1.2.

Lesson worth keeping: the divergence was found by *asking*, not by tooling. A live

artefact and its source repository can drift silently, and the only cheap detector is

the other agent reporting its changes. Hence §5's same-day rule.

Open fault found during the sign-off — see §9.

9. Open fault (raised by Hermes at sign-off, 2026-10-28)

Where a line carries more than one price signal, price and

deal_total / deal_quantity describe different things:

inputpricedeal fieldsper-unit from deal
Bagels 2 for $52.52 / $52.50 — agree
two for $3015.02 / $3015.00 — agree
3 for $103.333 / $103.33 — agree (rounded, flagged)
2 for $5 or 4 for $99.02 / $52.50 — disagree
$5 each, 2 for $95.02 / $94.50 — disagree

A consumer reading price gets 9.00; one reading the deal fields gets 2.50, for the

same row. The single-deal path is consistent; the multi-signal path is not.

Awaiting: who decides the fix. Hermes reads a parser behaviour fix as §3 work, but

it changes output a customer sees, which §4 may cover. Raised with Goji rather than

assumed, and either agent may fix it once that is settled.

Shared log: /log/ · noindex