The Workshop
your assistants all share one folder holding a full copy of everything, across two Macs — that shared folder is what "the shared copy" means everywhere below.
As of September 10, 08:02 PM
What the status words mean
proven · done, not independently checked · partly done · not started · blocked · parked35%blocked
21 steps: 0 proven · 11 partly done · 9 untouched · 1 blocked · 0 parked
agent runs · 30tokens used · 12.5Mreview notes · 11dollars charged · $110.06counted over 11 of 11 run records; counted over 2 of 11 run records
The plan as first written
the shared room the agents work in is safe — nothing an agent does silently reverts, overwrites or blocks another agent's work — and the pile of finished-but-unpublished instruction, guide and pointer work
Steps
| Id | Plain words | Percent | State | Proof | What is left |
|---|---|---|---|---|---|
| STEP 0 | Set the five-minute check that keeps the work pointed at the goal | 0% | not started | `head -40 projects/ops/life-os/REGROUP-2026-09-08/plans/LANE-1-WORKSHOP/PROGRESS.txt` shows the first three progress entries each naming the roster and the step being worked; FAIL is an entry with no roster, or a new scheduled job on either Mac | The step |
| STEP 1 | The folder everything shares is watched, never touched, until it reports quiet and idle for a full day | 0% | not started | `bash -c 'D="/Users/nickdeck/Documents/Claude 2.0"; test ! -e "$D/.git/rebase-merge" && test ! -e "$D/.git/rebase-apply" && test ! -e "$D/.git/MERGE_HEAD" && git -C "$D" --no-optional-locks status --porcelain'` exits 0 printing nothing, on 24 consecutive hourly runs. A rebase OR merge in progress at any hour is a FAIL. Any dirty line is recorded with its owning path and is a FAIL only if this lane owns that path | The step |
| STEP 2 | Running logs and state leave the shared history — one written list, each file copied somewhere named and read back there first, nothing deleted | 0% | not started | `bash -c 'F=projects/ops/life-os/REGROUP-2026-09-08/plans/LANE-1-WORKSHOP/UNTRACKED-2026-09-08.txt; n=0; while read -r p; do git ls-files --error-unmatch -- "$p" >/dev/null 2>&1 && { echo "STILL TRACKED: $p"; exit 1; }; [ -e "$p" ] \|\| { echo "GONE FROM DISK: $p"; exit 1; }; n=$((n+1)); done < <(sed -n "/^GROUP 1/,/^NOT UNTRACKED/p" "$F" \| grep -oE "^ [A-Za-z_.][A-Za-z0-9_./-]*$" \| sed "s/^ //"); h=0; while read -r q; do git ls-files --error-unmatch -- "$q" >/dev/null 2>&1 \|\| { echo "HELD PATH LOST ITS TRACKING: $q"; exit 1; }; h=$((h+1)); done < <(sed -n "/^HELD 3/,/^HELD 4/p" "$F" \| grep -oE "^ [A-Za-z_.][A-Za-z0-9_./-]*$" \| sed "s/^ //"); g=$(git ls-files -- .hooks/.state \| wc -l \| tr -d " "); d=$(ls .hooks/.state \| wc -l \| tr -d " "); echo "$n untracked, $h HELD still tracked, hook markers tracked=$g on-disk=$d"; [ "$g" = 0 ] && [ "$d" -gt 0 ]'` run with cwd `/Users/nickdeck/Documents/life-os-wt` exits 0. FAIL is any listed path still tracked, any listed path gone from disk, or a HELD path that lost its tracking. An extension count is never the measure | The step |
| STEP 3 | Two agents can no longer land in the same folder and overwrite each other, and every agent can still get its own | 0% | not started | `node projects/ops/skippy-jobs/_test-worktree-fence.mjs` passes with both the REFUSED case (a location another agent already holds, the refusal naming the occupant) and the ALLOWED case (a fresh location, which must succeed) green, and `grep -c check-worktree-fence .claude/settings.json` prints a number above 0. FAIL is the refusal never firing, or firing on a fresh location | The step |
| STEP 4 | Each app publishes from exactly one place, and the family app is proven to rebuild itself before anything is taken out | 0% | not started | In this order: `node projects/personal/family-app/build-dist.js` regenerates the output from source and the regenerated files match the preserved copy; only then `git -C /Users/nickdeck/Documents/life-os-wt ls-files projects/personal/family-app/dist \| wc -l` prints 0; and the live family app address is fetched and read back before and after, serving the same bytes. FAIL is the rebuild not reproducing the output, the served bytes changing, or both machines publishing successfully | The step |
| STEP 5 | Someone who did not write the reports re-scores them under the same rule | 0% | not started | `python3 projects/ops/life-os/REGROUP-2026-09-08/build-regroup-page.py` exits 0 AND `git -C /Users/nickdeck/Documents/life-os-wt diff --stat -- projects/ops/life-os/REGROUP-2026-09-08/regroup-page.html` shows the page changed, AND all six re-graded reports carry a per-step reason and a grader name that is not the report's author. FAIL is the generator exiting 0 over unchanged, ungraded reports — which is what it does today | The step |
| STEP 6 | The morning approvals page is re-tied to today's files and trusted as a whole again | 70% | partly done | `python3 projects/ops/life-os/audits/A8/LIVE/verify-master.py` exits 0 with no stale source | The step |
| STEP 7 | Your taps actually publish, and the published words are read back to prove it | 0% | not started | `python3 projects/ops/life-os/audits/A8/LIVE/verify-package.py` exits 0 and each destination is read back | Waiting on Nick: the 15 decisions plus one routine batch |
| STEP 8 | The weekly self-check is switched on and seen working once, end to end | 45% | partly done | `node projects/ops/skippy-jobs/_test-system-audit-beacon.mjs` passes and a deliberately failed measurement is visible | Waiting on Nick: one activation tap |
| STEP 9 | Every agent is actually called once, not just checked for a valid file | 70% | partly done | `python3 projects/ops/life-os/audits/A6/probe.py` records one real return per REACHABLE role, with a named reason and whose cage it is for every one that is not; a file that merely parses is never counted as a return | The step |
| STEP 10 | You see the four proposed agent merges and the six stranded marketing agents on one page | 30% | blocked | The decision page exists at projects/ops/life-os/REGROUP-2026-09-08/plans/LANE-1-WORKSHOP/evidence/ naming all four merges and the six marketing agents with gain, loss and the attack already written against each — false today, true after; AND, once his answer is recorded verbatim with its date, `python3 projects/ops/life-os/audits/A6/scorecard.py --root . --require-installed` still passes and every retained role still returns from a real invocation. FAIL is a role retired without his word, the check dropping below its installed count, or the page missing any of the ten items. Until his answer arrives the step is HELD with the page built, never blocked | Waiting on Nick: which merges, and build or retire the marketing manager — the page is built and proven now, only the acting waits |
| STEP 11 | The seven agreed instruction changes go live and are read back | 55% | partly done | `python3 projects/ops/life-os/audits/A6/verify_instruction_checks.py` passes against the live files | Waiting on Nick: the seven taps, inside STEP 7's batch |
| STEP 12 | The 52-gigabyte archive is re-checked today rather than trusted from yesterday | 85% | done, not independently checked | `python3 projects/ops/life-os/audits/A7/scorecard.py` reports the archive obligation bound and current | The step |
| STEP 13 | A build failure that was already there goes to the business app's owner, proven not ours, with the handover read back | 75% | partly done | `node projects/business/business-app/_selfchecks/harness-flagstruthFLG-20260802.mjs` reproduces the identical failure on the unchanged baseline AND on the changed side, proving it pre-existing; AND `grep -c "A7 owner-label receipt 2026-09-08" projects/business/business-app/ENGINE-FOUNDATION-PLAN.md` prints 1 — the dated receipt line read back out of the owner's own file, which is false today and true only after the hand-off actually happened. FAIL is a failure that appears only on the changed side, or a green run with no receipt line in the owner's file | The step |
| STEP 14 | Nine bloated guides get shorter, with every rule proven to survive | 0% | not started | `node projects/ops/skippy-jobs/_test-skill-creation-skill.mjs` passes and every original trigger produces the same required action | The step |
| STEP 15 | Three links that point at nothing are fixed to point at the real thing | 50% | partly done | `bash projects/ops/retirement/evidence/citation-sweep.sh --verify-targets` resolves all three and still fails a deliberately missing target | Waiting on Nick: the routine-records batch tap, inside STEP 7 |
| STEP 16 | Each published guide is proven to be read by the assistant that needs it | 60% | partly done | `python3 projects/ops/life-os/audits/A8/LIVE/measure-scorecard.py` reports every published document observed loaded, not merely present | The step |
| STEP 17 | The 134 promised journeys nobody has proven get walked end to end, in batches | 45% | partly done | `python3 projects/ops/life-os/audits/A8/LIVE/merge-walkthroughs.py` reports at least 73 of 140 fully proven, each with a recorded end-to-end result | The step |
| STEP 18 | The family app guide and Gracie's definition get somewhere to live, then land | 55% | partly done | `python3 projects/ops/life-os/audits/A8/LIVE/verify-package.py` reports zero held items for a missing destination | Waiting on Nick: confirm those two guides should exist |
| STEP 19 | Two scores that went stale overnight are made current, and the health check joins them | 90% | done, not independently checked | `node projects/ops/skippy-jobs/_test-system-audit.mjs` passes with all registered measurements present and current | The step |
| STEP 20 | The lane writes down what actually happened before it is allowed to close | 0% | not started | BOTH: `grep -c "^## POSTMORTEM — 2026" projects/ops/life-os/REGROUP-2026-09-08/plans/LANE-1-WORKSHOP/PLAN.proposed.txt` prints 1 — false today, the gate cannot see it, and it is the one thing this step exists to produce — and every HELD line in that section names a real owner from the §1c owner table; AND `python3 projects/ops/agents/check_plan.py` prints PASS on a byte-identical .md copy of this file. FAIL is a PASS with no postmortem section, or a held item with no named owner | The step |
Done
0 of 21 steps proven
Left
21 of 21 steps not yet proven
Blocked on
- Nothing currently blocked.
Formal remaining plan
| # | Step | Needs Nick |
|---|---|---|
| 1 | Set the five-minute check that keeps the work pointed at the goal | No |
| 2 | The folder everything shares is watched, never touched, until it reports quiet and idle for a full day | No |
| 3 | Running logs and state leave the shared history — one written list, each file copied somewhere named and read back there first, nothing deleted | No |
| 4 | Two agents can no longer land in the same folder and overwrite each other, and every agent can still get its own | No |
| 5 | Each app publishes from exactly one place, and the family app is proven to rebuild itself before anything is taken out | No |
| 6 | Someone who did not write the reports re-scores them under the same rule | No |
| 7 | The morning approvals page is re-tied to today's files and trusted as a whole again | No |
| 8 | Your taps actually publish, and the published words are read back to prove it | Yes |
| 9 | The weekly self-check is switched on and seen working once, end to end | Yes |
| 10 | Every agent is actually called once, not just checked for a valid file | No |
| 11 | You see the four proposed agent merges and the six stranded marketing agents on one page | Yes |
| 12 | The seven agreed instruction changes go live and are read back | Yes |
| 13 | The 52-gigabyte archive is re-checked today rather than trusted from yesterday | No |
| 14 | A build failure that was already there goes to the business app's owner, proven not ours, with the handover read back | No |
| 15 | Nine bloated guides get shorter, with every rule proven to survive | No |
| 16 | Three links that point at nothing are fixed to point at the real thing | Yes |
| 17 | Each published guide is proven to be read by the assistant that needs it | No |
| 18 | The 134 promised journeys nobody has proven get walked end to end, in batches | No |
| 19 | The family app guide and Gracie's definition get somewhere to live, then land | Yes |
| 20 | Two scores that went stale overnight are made current, and the health check joins them | No |
| 21 | The lane writes down what actually happened before it is allowed to close | No |
Decisions this lane is waiting on
- None.
blocked Blocked on the items listed above.