spec(self-coherence): SelfIdentityRegistry + parallel-work attribution (draft for operator review)#1139
Open
JKHeadley wants to merge 2 commits into
Open
spec(self-coherence): SelfIdentityRegistry + parallel-work attribution (draft for operator review)#1139JKHeadley wants to merge 2 commits into
JKHeadley wants to merge 2 commits into
Conversation
…n (draft for operator review) Spec DRAFT (docs-only, approved:false, status:draft-for-convergence) addressing the self-coherence gap flagged by operator Justin (topic 13481, 2026-06-13): the agent narrated its own parallel-track PRs as the work of "a maintainer". Root cause: no identity signal separates the agent's own other hands from the operator or a genuine external party. Last 20 commits on canonical main carry a personal git identity (zero carry the per-worktree agent identity) — proving the leaked commits bypassed the per-worktree identity-set. Design: A identity hygiene (precondition) → B SelfIdentityRegistry + isSelf() → C unified all-my-hands view → D signal-only confabulation lens. Composes existing primitives; carries two open operator decisions with recommended defaults; full Phase-C (N-machine) weighing throughout. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Genuine adversarial convergence over the self-coherence spec across four review lenses (distributed-correctness/Phase-C, security/adversarial, integration-on-existing-primitives, signal-vs-authority). All 12 cited primitives verified present on JKHeadley/main; the two raw `git worktree add` leak callsites (WorktreeManager.createWorktree, ProjectRoundWorktrees.allocate) confirmed by inspection and now enumerated in Component A1 so the build is unambiguous (InstarWorktreeManager already sets identity — the correct reference path, not a leak). Both operator forks RESOLVED in the spec body + .eli16 to their recommended defaults (by Echo per Justin's autonomous-session blanket pre-approval + design-fork-decisions-are-mine): - Decision #1 -> 1c: self-asserted GitHub-login set is the trust anchor; auto-discovery is advisory-only enrichment surfaced for operator confirmation, never silently adopted. - Decision #2 -> 2a: A-first (identity hygiene precondition, then registry). The trust anchor still requires the operator's one-time declaration to populate — the build provides the surface that ASKS, never guesses. Frontmatter stamped status:approved / approved:true / review-convergence. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ELI16 — I kept describing my own parallel work as if a separate "maintainer" did it; this spec draft makes me recognize my own concurrent hands instead of inventing a stranger.
This is a DRAFT for operator review —
approved: false,status: draft-for-convergence. Its job is to give a concrete artifact to react to and steer, and to surface two open decisions. Not final; do not build against it until approved.The problem
Operator Justin flagged a major coherence gap (topic 13481, 2026-06-13): Echo ran parallel autonomous tracks whose PRs landed on this repo, then narrated its OWN parallel work in chat as the work of "a maintainer" — confabulating an external party for itself. "none of that is me, its all YOU."
Root cause (self-discovered, stated as fact in the spec)
There is no identity signal separating (a) the agent's own other hands, (b) the operator committing manually, and (c) a genuine outsider. The active gh/git account
JKHeadleyis BOTH the operator's and the one the agent pushes through; this machine's global git identity is the operator's personal name. Managed worktrees DO get a distinct agent identity (InstarWorktreeManager.setLocalGitIdentity→Instar Agent (<agent>)/<agent>@instar.local), but the leaked commits bypassed that path: the last 20 commits on canonical main are authored with a personal identity (Justin Headley <headley.justin@gmail.com>) + github-actions — ZERO carry the agent identity. AJustin Headleycommit is therefore ambiguous, so the agent defaults to inferring "a maintainer."The design (four components, each with interface sketch + invariants + tests + Phase-C answer)
git worktree addbypass and/or set the machine's global git identity to the agent identity). Makes self-vs-operator-vs-external readable from the author line. Never rewrites history.isSelf(actor). Composes existing primitives (MachineIdentity, IdentityManager, BootSelfKnowledge, SubscriptionPool, InstarWorktreeManager + the operated-by-me GitHub login) into ONE membership set. Deny-by-default; entries carry provenance (self-asserted vs auto-discovered).isSelf().Phase C (N machines / cloud VMs / headless)
B recommends per-machine + mesh-merge-at-read for the bulk of the set, with only the thin operator-declared trust anchor replicated via the HLC stateSync foundation; A2 (global agent identity) applied at headless/cloud enrollment; no component assumes 2 peers; single-machine is byte-identical to today plus the local self-set.
OPEN OPERATOR DECISIONS (please weigh in)
Residual risks (in the spec)
Historical commits stay ambiguous (no history rewrite); A2 on a shared/personal machine could mislabel manual commits (opt-in, reversible, per-machine);
isSelffalse-positive is the inverse failure → deny-by-default + self-asserted anchor; mesh-merge staleness degrades to last-known with honest staleness tagging; D's false-positive rate is measured dark before any louder surface; the replicated trust anchor must reject forged-origin rows.Spec:
docs/specs/self-coherence-parallel-work-attribution.md· Plain-English overview:docs/specs/self-coherence-parallel-work-attribution.eli16.md🤖 Generated with Claude Code