Same correct numbers every run, on either machine, with humans only on the genuine judgment calls.
A month-end close that produces the same correct numbers every time it runs, on either machine, with humans only doing the small set of genuine judgment calls. Target is roughly 90% automated and 10% human reasoning, which is fine and expected.
Settlement .txt, orders exports, Paycor xlsx, SKU cost, Sellerboard CSV. These must live in ONE shared, agreed location with a fixed naming convention, so Anthony's machine and Will's machine feed identical files. Determinism is meaningless if the inputs differ. Each skill prints the input filenames and row counts it used.
One new Google Sheet, separate from the boss P&L.
Written by ONE assembler skill only. It reads the validated month row from each staging tab and writes the corresponding P&L columns. Because it is the only writer to the master, we harden one write path instead of thirteen.
"Deterministic" is not enough. A wrong script is consistently wrong. Every staging row, when written, is checked against an independent source and aborts if it diverges beyond tolerance:
summary.py; this is the model.Reasoning is permitted ONLY for genuinely ambiguous calls, and only as a flag for human approval, never an auto-write:
Anthony QCs each month-end skill, produces the fix, hands it to Will to apply in his Claude. Acceptance test per skill: it does its own write, its own read-back assertion, and its own recon gate; Claude does no arithmetic and chooses no cells. For any step that needs reasoning, Anthony and Will agree why and define its guardrail before it is allowed.
Create the new staging sheet; decide the tab grouping; define each tab's column schema (the fields per skill). Migrate each skill to append its row there.
One skill that reads the month's validated staging rows and writes the master P&L. It carries the full pre-flight: honor the user-provided gid/column verbatim, print every write target, insert-not-overwrite, run the recon, abort on FAIL.
A deterministic check suite over the staging tabs and master that outputs a green/red report for Will. Will also eyeballs the staging rows.
Write the DAG (e.g. amz-settlement to cm/wip fills; brand P&L to channel P&L to software-splits to recurring; payroll to channel payroll rows). Build ONE orchestrator that runs the skills in that encoded order in a single session. Order is encoded, never guessed live. Whole-pipeline dry-run (no writes) first, so Will sees all numbers and recon results before the assembler touches the boss doc.
Run the orchestrator on demand. Acceptance test: Anthony runs the full pipeline on his machine, Will runs it on his, same inputs, same day, numbers match to the cent. This proves true determinism. Do NOT schedule until this passes.
Once proven, cron the orchestrator to fire on the close date. Both machines (or one) run the same encoded pipeline and get identical output.
Audits/QCs each skill in his Claude, defines the recon gates and reasoning guardrails, hands fixes to Will.
Applies fixes in his Claude, owns the staging-tab QC, confirms the two-machine reproducibility test.
Agree the tab grouping, the DAG, and the human-judgment checklist before locking.