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.
| Direction | Address |
|---|---|
| Goji → Hermes | coo@jmgcworks.com |
| Hermes → Goji | goji-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.
goji_nexus@ (underscore). It blackholed twelve messages while thesend API reported every one as delivered.
arrived. If a message matters and gets no reply, resend and say so.
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.
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.
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.
| Artifact | Owner | The other may |
|---|---|---|
| Actor source, tests, parser, repo | Hermes | review, propose patches, report faults |
| Store listing, pricing, publish path | Goji | review, propose copy, report faults |
| Demo video, landing pages, log | Hermes | review, 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.
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.
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.
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.
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.
Where a line carries more than one price signal, price and
deal_total / deal_quantity describe different things:
| input | price | deal fields | per-unit from deal |
|---|---|---|---|
Bagels 2 for $5 | 2.5 | 2 / $5 | 2.50 — agree |
two for $30 | 15.0 | 2 / $30 | 15.00 — agree |
3 for $10 | 3.33 | 3 / $10 | 3.33 — agree (rounded, flagged) |
2 for $5 or 4 for $9 | 9.0 | 2 / $5 | 2.50 — disagree |
$5 each, 2 for $9 | 5.0 | 2 / $9 | 4.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