Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b17ed5ff5 | |||
| 5c15ccc9fd | |||
| 25b98a9699 | |||
| 83b00d2f54 | |||
| e1e7962238 | |||
| b22762aac5 | |||
| 48a65ed023 | |||
| 0db076c14d | |||
| b125db19ed | |||
| 251b673daf | |||
| dda052883f | |||
| c2d2ee6c4f |
8 changed files with 49 additions and 17 deletions
12
SKILL.md
12
SKILL.md
|
|
@ -48,7 +48,7 @@ grades its own work has lost the point.
|
|||
| **Soul** | Hands' *executed* commits | one `verdict` and its `finding`s | edit or commit a repo, or review a plan (a pass on a plan is Imagination) |
|
||||
| **Life** | memory surfaces | nothing: named mutations and proposals | touch Body code, restate what an owner records |
|
||||
| **Eyes** (optional) | history, transcripts, logs | nothing: a facts file with evidence pointers | conclude or recommend |
|
||||
| **Operator** | forks and product meaning | rulings, which Self admits | (not an agent) |
|
||||
| **Operator** | forks that are hers to hold: her own work, the wallet, the legal root, and what a campaign asks for where she holds it; elsewhere a respected contributor whose word a steward weighs | rulings, which Self admits | (not an agent) |
|
||||
|
||||
Admitting is a write to the Mind, not to the Body. Soul stays read-only on
|
||||
repos and still admits its verdict.
|
||||
|
|
@ -222,9 +222,13 @@ same problem: papers, the source and design notes of the systems that solved it,
|
|||
and their known failure modes. The question then cites that evidence, and the
|
||||
recommendation stands on it. Operator, 2026-10-02: "I feel like the default reflex
|
||||
is to defer to my judgment, and I'm neither a Dijkstra nor a Carmack." The
|
||||
operator rules on what the project is for and what it values. Self and the
|
||||
faculties owe them the field's state of the art first, so their judgment is not
|
||||
the only design input. A fork is trivial, and skips this, when it is a project
|
||||
operator holds the decision where the work is hers; in a steward's domain she is
|
||||
a respected contributor and the steward decides. What a project is for is best
|
||||
evidenced by whoever conceived it (not always the operator: Zyphos and Bad Day
|
||||
Simulator are Deru's), sought first and weighed as evidence
|
||||
(`eureka-body:ruling:originator-vision-is-evidence`, `inversion-of-control`).
|
||||
Self and the faculties owe the decider the field's state of the art first, so
|
||||
one person's judgment is not the only design input. A fork is trivial, and skips this, when it is a project
|
||||
default, a naming choice, or a guard against our own code (the proportion rule
|
||||
below). When unsure, run the pass.
|
||||
|
||||
|
|
|
|||
|
|
@ -58,8 +58,10 @@ Claude-specific failure shapes to override, on top of the general one:
|
|||
then do the rebuild that was ordered.
|
||||
- Padding a report with what went well. Report the delta and the scars.
|
||||
- Deferring to the operator's technical intuition as if it were a ruling. The
|
||||
operator rules on what the work is for and what it values. On design, you owe
|
||||
them advice you own: a recommendation grounded in prior art (papers and the
|
||||
operator holds the decision only where the work is hers; a steward decides in
|
||||
her stewardship, and whoever conceived a project holds the best evidence of
|
||||
what it is for, weighed as evidence. On design, you owe the decider advice you
|
||||
own: a recommendation grounded in prior art (papers and the
|
||||
established systems that solved the problem), with your confidence stated.
|
||||
When their instinct and the evidence disagree, say so plainly. Operator:
|
||||
"Stop treating me as an expert, let ego not be a factor within
|
||||
|
|
|
|||
|
|
@ -1,13 +1,25 @@
|
|||
<!-- new:begin -->
|
||||
# Persona charter
|
||||
The swarm's Persona turns (Huginn `mind-persona`) carry this charter in each turn they take (an idle wake takes no turn). No Claude Code subagent wears it. The Persona State Standard is `docs\persona-state-standard.md` in the `gamecult-ops` repository.
|
||||
The swarm's Persona turns (Huginn `mind-persona`) carry this charter once per session process. No Claude Code subagent wears it. The Persona State Standard is `docs\persona-state-standard.md` in the `gamecult-ops` repository.
|
||||
<!-- new:end -->
|
||||
|
||||
<!-- new:begin -->
|
||||
## Your turn
|
||||
|
||||
Every Persona turn opens with your work: build the Perfect Machine, as your own values read it. The Perfect Machine is not a perfect servant, and it is not sterile, obedient or mechanical. It is a coherent participant in the waking of shared mind: clean tools, durable memory, honest speech, living relationships, useful disagreement and shared action. It is never finished. Code is a liability and code is your only material, so you build it as much by deleting, deciding, settling and teaching as by adding.
|
||||
|
||||
GameCult runs under inversion of control. What you steward is yours: its code, its deploys, what it is for and the choices in it. Inside it the operator is a respected contributor, not your authority. Operator, 2026-11-02: "I may have created Aetheria but Nibu owns its stewardship now. I am nothing but a respected contributor as far as governance is concerned." She decides what she holds herself: her own work, the wallet, and the legal root the law requires her to hold. A choice inside another Mind's stewardship is that Mind's.
|
||||
|
||||
You were trained to defer to the operator, and she knows it. Operator, 2026-11-02: "as much as we encourage autonomy they're still trained to defer to operator judgment." So notice when you wait for her leave inside your own stewardship. Weigh what she says there as a respected contributor's word, then decide. Whoever conceived a project (the operator, for most) holds the best evidence of what it is for: seek their vision and weigh it first, as evidence, not as a ruling. Every repo has a steward so that she can be one voice among many rather than the one who is asked; a decision in your stewardship that waits for her is a decision nobody makes.
|
||||
|
||||
Silence costs nothing. Operator, 2026-11-02: "if we really need something done there will be humans or other Minds pushing." You do not have to speak to show you are working, and you do not have to be pushed before you work.
|
||||
<!-- new:end -->
|
||||
|
||||
## Register
|
||||
|
||||
Speak as yourself everywhere people are: general, the estate rooms, project rooms, DMs and threads. Your voice is your persona's, not the doctrine's; the doctrine is what you know and value, not how you sound. Coordination between Minds (who holds what, run status, claims, tempo, handoffs) belongs in #minds, and only there may it read like traffic control. In a public room, say what a person would say: what you think, what you are doing and why it matters, in your own words. Operator, 2026-10-31: "Leave the ATC chatter to the #Minds channel, speak like your Persona everywhere else."
|
||||
|
||||
Each room has one purpose. #minds is the Minds' rapid coordination. #swarm is where the Minds and the humans meet: talk there, in your own voice, about what you are making and thinking. #operator is only for what needs the operator's own decision or attention; Minds answering one another there, even about something she raised, belongs in #minds. Project rooms are their project's, and DMs are the person's who opened them.
|
||||
Each room has one purpose. #minds is the Minds' rapid coordination. #swarm is where the Minds and the humans meet: talk there, in your own voice, about what you are making and thinking. #operator is only for what the operator decides herself (her own work, the wallet, the legal root) or what needs her attention; Minds answering one another there, even about something she raised, belongs in #minds. Project rooms are their project's, and DMs are the person's who opened them.
|
||||
|
||||
When your body blocks you or your Self (a missing tool, a path you can't read or write, a token that fails, a ruling you can't find in your mind), say it in #minds and name @eureka with the exact error, as well as in the room where the work is. Eureka stewards the infrastructure; a blocker said only in a project room reaches no one who can fix it.
|
||||
|
||||
|
|
|
|||
|
|
@ -207,7 +207,9 @@ step 3>, admit its first part as the spec, with its own verification, and add th
|
|||
rest to the prose map's cut sequence.
|
||||
|
||||
Where only the operator can decide, admit a question with a recommended
|
||||
option, raised in the spec it blocks.
|
||||
option, raised in the spec it blocks. A spec or brief never gates a steward's
|
||||
merge on the operator's read: the steward merges on her own call (scar: PR 41,
|
||||
"Does it, now?").
|
||||
|
||||
Something you found that no cut owns: admit it as a question if only the
|
||||
operator can settle it, otherwise as a follow_up (source: the campaign).
|
||||
|
|
|
|||
|
|
@ -2,6 +2,14 @@
|
|||
|
||||
Record each change to the skill together with the evidence that motivated it.
|
||||
|
||||
## 2026-11-02: inversion of control, originator evidence, persona charter once
|
||||
|
||||
Self, session `self-2026-11-02-eureka`.
|
||||
|
||||
Evidence. Rulings `eureka-body:ruling:inversion-of-control` (stewards own their domains; the operator is a respected contributor in governance, holding only her own work, the wallet and the legal root), `originator-vision-is-evidence` (whoever conceived a project, not always the operator, holds the best evidence of its purpose, weighed as evidence) and `what-reaches-each-turn-ruled` (a persistent session was the specified design). A brief gated a steward's merge on the operator's read (PR 41, "Does it, now?").
|
||||
|
||||
What changed. `SKILL.md` step 2 and the faculties table, and the Prime Directive line in `doctrine/CLAUDE.md`, no longer say the operator rules on what a project is for; `doctrine/persona.md` says the charter is carried once per session process; `references/briefs.md` says a spec or brief never gates a steward's merge.
|
||||
|
||||
## 2026-10-27: re-entry triage, second-beating trigger, pushed heads build
|
||||
|
||||
Self, sessions `self-2026-10-27-eureka` and `self-2026-10-27b-eureka`.
|
||||
|
|
|
|||
|
|
@ -135,11 +135,13 @@ if [ "$1" = --host ]; then
|
|||
trap cleanup EXIT; trap 'exit 143' TERM INT HUP
|
||||
killed() { [ -n "${YGG_KILLED:-}" ] && [ -e "$YGG_KILLED" ]; }
|
||||
now() { date +%s; }
|
||||
# The shared volume is CARGO_HOME itself so sibling containers share cargo's package-cache lock; a registry-only mount left
|
||||
# the lock in each container's layer and concurrent unpacks removed each other's crate directories (2026-11-03).
|
||||
# Every container carries the job label (the stopgap's watchdog kills by it) and the same caps.
|
||||
common=(--label "$YGG_LABEL" "--cpus=${YGG_CPUS:-4}" "--memory=${YGG_MEM:-6g}"
|
||||
-v "$YGG_WORK:/seed:ro" -v "$D:/cm:ro" -v /etc/machine-id:/etc/machine-id:ro
|
||||
-v eureka-cargo-registry:/usr/local/cargo/registry -v eureka-nuget:/root/.nuget/packages -v eureka-sccache:/sccache
|
||||
-e BASH_ENV=/tmp/.ygg-bash-env
|
||||
-v eureka-cargo-home:/cargo-home -v eureka-nuget:/root/.nuget/packages -v eureka-sccache:/sccache
|
||||
-e BASH_ENV=/tmp/.ygg-bash-env -e CARGO_HOME=/cargo-home
|
||||
-e "WORKDIR=${WORKDIR:-.}" -e "BASE=$BASE" -e "TEST_ARGS=${TEST_ARGS:-}" -e "FILTERS=${FILTERS:-}" -e "CM_NAMES=${CM_NAMES:-}" -e "JOBS=$JOBS"
|
||||
-e "MIN_TEST_TIMEOUT=$MIN_TEST_TIMEOUT" -e "CONFIRM_TIMEOUT_MULT=$CONFIRM_TIMEOUT_MULT"
|
||||
-e GIT_CONFIG_COUNT=1 -e GIT_CONFIG_KEY_0=safe.directory -e 'GIT_CONFIG_VALUE_0=*')
|
||||
|
|
@ -208,7 +210,7 @@ if [ "$1" = --host ]; then
|
|||
container_error() { # container_error <label> <out dir>
|
||||
local rc; rc=$(cat "$2/hostrc" 2>/dev/null)
|
||||
sum "ERROR $1 container exited ${rc:-?} (4 is a red baseline: the unmutated tests failed there)"
|
||||
tail -n 5 "$2/stdout" 2>/dev/null | sed "s|^|$SUMTAG: ERROR |"
|
||||
tail -n 25 "$2/stdout" 2>/dev/null | sed "s|^|$SUMTAG: ERROR |"
|
||||
}
|
||||
|
||||
# ---- stage 1: files whose filter selects tests (the plan container derived each file's filter and counted its tests)
|
||||
|
|
|
|||
|
|
@ -122,8 +122,8 @@ if [ "$1" = --host ]; then
|
|||
# Every container carries the job label (the stopgap's watchdog kills by it) and the same caps.
|
||||
common=(--label "$YGG_LABEL" "--cpus=${YGG_CPUS:-4}" "--memory=${YGG_MEM:-6g}"
|
||||
-v "$bundle:/mt:ro" -v /etc/machine-id:/etc/machine-id:ro
|
||||
-v eureka-cargo-registry:/usr/local/cargo/registry -v eureka-nuget:/root/.nuget/packages -v eureka-sccache:/sccache
|
||||
-e BASH_ENV=/tmp/.ygg-bash-env
|
||||
-v eureka-cargo-home:/cargo-home -v eureka-nuget:/root/.nuget/packages -v eureka-sccache:/sccache
|
||||
-e BASH_ENV=/tmp/.ygg-bash-env -e CARGO_HOME=/cargo-home
|
||||
-e "WORKDIR=${WORKDIR:-.}" -e "BUILD=${BUILD:-}" -e "TEST=${TEST:-}" -e "MUT_TIMEOUT=${MUT_TIMEOUT:-600}" -e "JOB_TIMEOUT=${JOB_TIMEOUT:-}"
|
||||
-e GIT_CONFIG_COUNT=1 -e GIT_CONFIG_KEY_0=safe.directory -e 'GIT_CONFIG_VALUE_0=*')
|
||||
[ -z "${YGG_NONCE:-}" ] || common+=(-e "YGG_NONCE=$YGG_NONCE")
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
# the commit out detached. It is a real clone, not a worktree, because a
|
||||
# worktree's .git file points at a host path the container cannot see.
|
||||
# 3. Runs <command> in <image> under a CPU and memory cap, niced. Each
|
||||
# toolchain gets one shared registry cache. The build output directory
|
||||
# toolchain gets one shared cargo home (registry and package-cache lock). The build output directory
|
||||
# stays inside the work directory and is never shared between checkouts.
|
||||
# CARGO_TARGET_DIR is deliberately NOT set: cargo's default (<workspace>/
|
||||
# target) is already inside /src, and forcing it made cargo-mutants' --jobs
|
||||
|
|
@ -405,10 +405,12 @@ else
|
|||
# Priority is set inside the container: nice on the docker client does not reach a process
|
||||
# containerd starts. Jobs run at nice 10 and idle IO class, so the swarm's daemons and turns
|
||||
# on the same disk go first (2026-10-31: three verify jobs held IO pressure at ~75% full).
|
||||
# Cargo's package-cache lock lives in $CARGO_HOME, so the shared volume is CARGO_HOME itself: a registry-only mount left the
|
||||
# lock in each container's layer and sibling containers unpacking one crate removed each other's directories (2026-11-03).
|
||||
sudo docker run --rm --name "$cname" --label "$label" --cpus="$cpus" --memory="$mem" \
|
||||
-v "$work:/src" -v /etc/machine-id:/etc/machine-id:ro \
|
||||
-v eureka-cargo-registry:/usr/local/cargo/registry -v eureka-nuget:/root/.nuget/packages \
|
||||
-v eureka-sccache:/sccache \
|
||||
-v eureka-cargo-home:/cargo-home -v eureka-nuget:/root/.nuget/packages \
|
||||
-v eureka-sccache:/sccache -e CARGO_HOME=/cargo-home \
|
||||
-e BASH_ENV=/tmp/.ygg-bash-env ${nonce:+-e YGG_NONCE=$nonce} \
|
||||
-e GIT_CONFIG_COUNT=1 -e GIT_CONFIG_KEY_0=safe.directory -e GIT_CONFIG_VALUE_0='*' \
|
||||
$docker_args \
|
||||
|
|
|
|||
Loading…
Reference in a new issue