Skip to content

ops(0-0-0): post-double-hop close — trajectory + tick shards + interim gh-401 runbook - #104

Merged
AceHack merged 1 commit into
mainfrom
post-0-0-0-reclose-followup-acehack-2026-04-29
Apr 29, 2026
Merged

ops(0-0-0): post-double-hop close — trajectory + tick shards + interim gh-401 runbook#104
AceHack merged 1 commit into
mainfrom
post-0-0-0-reclose-followup-acehack-2026-04-29

Conversation

@AceHack

@AceHack AceHack commented Apr 29, 2026

Copy link
Copy Markdown
Owner

Summary

Round-close artifacts after 0/0/0 was re-closed at 2026-04-29T15:17:09Z (post-double-hop absorption ceremony). Pure bookkeeping — trajectory documentation update + tick-history shards + interim runbook home.

Test plan

  • All 3 SHAs equal at 17a26370ea5eb979406a3913d57348d3b647afd8 (AceHack/main, LFG/main, local main)
  • AceHack ruleset 15524390 enforcement back to active
  • File content diff between forks empty
  • No working-tree changes after commit (only the 3 staged additions + 2 modifications)

Why AceHack-first PR for tick + trajectory

The tick-history fast-path policy designed by Amara (task Lucent-Financial-Group#317) is the right long-term path for tick shards (no PR ceremony for trusted-actor + safe-path + safe-op telemetry). Until that policy is implemented (sequenced Lucent-Financial-Group#317 in the post-double-hop lane), tick shards still go through the canonical double-hop discipline — AceHack-first → LFG forward-sync → AceHack absorbs.

This PR is intentionally narrow scope — round-closure bookkeeping only. Substrate-discipline work (Lucent-Financial-Group#313-319) lands separately to avoid the "expand the PR when review asks" anti-pattern Amara flagged.

🤖 Generated with Claude Code

…-Financial-Groupgh-401 runbook (interim memory home)

The post-double-hop close artifacts:

- docs/active-trajectory.md: priority section RE-CLOSED (rescinds the
  "blocking all other work" framing now that 0/0/0 holds again at
  17a2637). New "Post-double-hop
  sequencing" block lists the next-lane order per Amara: Lucent-Financial-Group#315
  (hourly budget), Lucent-Financial-Group#319 (bounded-retry CodeQL), Lucent-Financial-Group#318 (docs/ops
  taxonomy), Lucent-Financial-Group#317 (tick-fast-path), Lucent-Financial-Group#316 (absorbed into Lucent-Financial-Group#318),
  Lucent-Financial-Group#313/Lucent-Financial-Group#314, then branch/worktree recovery.

- docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the
  PR Lucent-Financial-Group#846 review wave (4 unresolved threads — 3× Copilot P1 +
  1× Codex P2). Codex caught the structurally-deepest bug (host
  segment parsed but discarded silently before gh api graphql);
  Copilot caught the surface P1s. Review-ensemble complementarity.

- docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the
  0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset
  toggle/restore + verify. Aaron's "why are you waiting on me"
  flagged as future-self lesson on standing-authority cadence
  (Otto-359 candidate).

- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md:
  diagnostic runbook for the gh CLI auth glitch where `gh api
  graphql` 401s while `gh api -X POST graphql` works. Amara
  framing: diagnostic note, not doctrine yet. INTERIM HOME: the
  runbook lives in memory/ for this round; long-term home is
  docs/ops/runbooks/gh-cli-auth-401.md per task Lucent-Financial-Group#318
  (docs/ops taxonomy — runbooks/patterns/incidents/ tree).

- memory/MEMORY.md: paired index entry for the runbook above
  (per memory-index-integrity rule).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 29, 2026 15:21
@AceHack
AceHack merged commit 0a1db1a into main Apr 29, 2026
14 checks passed
@AceHack
AceHack deleted the post-0-0-0-reclose-followup-acehack-2026-04-29 branch April 29, 2026 15:22

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 51810aabd9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +48 to +50
gh api graphql -f query='query { ... }'
# use:
gh api -X POST graphql -f query='query { ... }'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct GraphQL method guidance in 401 runbook

gh api already switches from GET to POST when any -f/--raw-field parameter is present (per the gh api manual), so both commands shown here send POST requests. That makes this documented “workaround” a no-op for the exact gh api graphql -f query=... case and can mislead operators into thinking request method changed when debugging 401s.

Useful? React with 👍 / 👎.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Round-close bookkeeping after the 0/0/0 state was re-closed post double-hop: trajectory status update, two tick-history shards capturing the review wave + re-close ceremony, and an interim gh CLI 401 diagnostic runbook placed in memory/ with an index entry.

Changes:

  • Update docs/active-trajectory.md to mark priority as RE-CLOSED and record post-double-hop sequencing + re-close details.
  • Add tick-history shard files for the PR Lucent-Financial-Group#846 review wave and the 0/0/0 re-close ceremony.
  • Add a memory/reference_*.md runbook for diagnosing gh api 401 auth glitches, and index it in memory/MEMORY.md.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
docs/active-trajectory.md Records the 0/0/0 RE-CLOSED state and updates the next-lane sequencing and re-close narrative.
docs/hygiene-history/ticks/2026/04/29/1452Z.md Adds the PR Lucent-Financial-Group#846 review wave tick shard.
docs/hygiene-history/ticks/2026/04/29/1517Z.md Adds the 0/0/0 re-close ceremony tick shard.
memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md Adds an interim diagnostic runbook for gh GraphQL/REST 401 partial-auth failures.
memory/MEMORY.md Adds the index entry for the new Lucent-Financial-Groupgh-401 runbook memory.

Comment on lines +26 to +28
1. **Confirm `gh auth token` works**: `gh auth token | head -c 8`
should print the first 8 chars. If empty, the keyring entry
is genuinely missing → `gh auth login` is the answer.
Comment thread docs/active-trajectory.md
Comment on lines +224 to +226
**0/0/0 ACHIEVED 2026-04-29T14:04:50Z** (initial hard-reset): AceHack/main = LFG/main = `621aae082d70fcbf36931718ecf1b6d9e149295f`. Topology: 0 ahead, 0 behind, 0 file content diff. Old AceHack tip `675508187a5e80bd0a8c14a74a9ae80d5346e722` preserved at `archive/acehack-main-pre-000-reset-2026-04-29` on AceHack (named ref, indefinite reachability). Strict gate's classification + operational conditions all satisfied; maintainer signoff received and executed. The four-bucket ledger remains source of truth for any future drift detection.

**0/0/0 RE-CLOSED 2026-04-29T15:17:09Z** (post-double-hop absorption): AceHack/main = LFG/main = `17a26370ea5eb979406a3913d57348d3b647afd8`. Sequence: AceHack-first PR #101 merged 14:19:41Z (squash → `5485772`) → LFG forward-sync PR #845 merged 14:27:35Z (squash → `3785124`) → AceHack-first follow-up PR #103 merged with Copilot fixes + GH_REPO support 14:?:?Z (squash → `b7a6a95d`) → LFG forward-sync v2 PR #846 merged 15:12:14Z (squash → `17a26370`) → AceHack absorption ceremony 15:17:09Z (force-with-lease + ruleset toggle + restore). The double-hop discipline (AceHack-first → LFG forward-sync → AceHack absorbs LFG squash-SHA) closed cleanly. Pre-execute SHA `b7a6a95d` is preserved in commit-graph reachability via the AceHack-side PR #103 squash that captured its content; no archive-ref needed for this round since the absorption is post-canonical-double-hop, not a content-rewrite hard-reset. Post-double-hop close is what "load-bearing without the double-hop in a few hours we'll be right back to where we started" called for.
AceHack added a commit that referenced this pull request May 7, 2026
…ent-Financial-Group#847)

* ops(0-0-0): post-double-hop close — trajectory + tick shards + Lucent-Financial-Groupgh-401 runbook (interim memory home)

The post-double-hop close artifacts:

- docs/active-trajectory.md: priority section RE-CLOSED (rescinds the
  "blocking all other work" framing now that 0/0/0 holds again at
  17a2637). New "Post-double-hop
  sequencing" block lists the next-lane order per Amara: Lucent-Financial-Group#315
  (hourly budget), Lucent-Financial-Group#319 (bounded-retry CodeQL), Lucent-Financial-Group#318 (docs/ops
  taxonomy), Lucent-Financial-Group#317 (tick-fast-path), Lucent-Financial-Group#316 (absorbed into Lucent-Financial-Group#318),
  Lucent-Financial-Group#313/Lucent-Financial-Group#314, then branch/worktree recovery.

- docs/hygiene-history/ticks/2026/04/29/1452Z.md: tick shard for the
  PR Lucent-Financial-Group#846 review wave (4 unresolved threads — 3× Copilot P1 +
  1× Codex P2). Codex caught the structurally-deepest bug (host
  segment parsed but discarded silently before gh api graphql);
  Copilot caught the surface P1s. Review-ensemble complementarity.

- docs/hygiene-history/ticks/2026/04/29/1517Z.md: tick shard for the
  0/0/0 re-close ceremony at 15:17:09Z. Force-with-lease + ruleset
  toggle/restore + verify. Aaron's "why are you waiting on me"
  flagged as future-self lesson on standing-authority cadence
  (Otto-359 candidate).

- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md:
  diagnostic runbook for the gh CLI auth glitch where `gh api
  graphql` 401s while `gh api -X POST graphql` works. Amara
  framing: diagnostic note, not doctrine yet. INTERIM HOME: the
  runbook lives in memory/ for this round; long-term home is
  docs/ops/runbooks/gh-cli-auth-401.md per task Lucent-Financial-Group#318
  (docs/ops taxonomy — runbooks/patterns/incidents/ tree).

- memory/MEMORY.md: paired index entry for the runbook above
  (per memory-index-integrity rule).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): Lucent-Financial-Group#847 Codex P2 — correct Lucent-Financial-Groupgh-401 runbook misdiagnosis (X POST is a no-op)

Codex P2 on PR Lucent-Financial-Group#847: my prior runbook claimed `gh api graphql -f query='...'`
defaults to GET and that `-X POST` was the workaround. That's wrong: `gh api`
already sends POST when `-f` or `-F` parameters are present (per `gh api --help`).
The earlier "the X flag fixed it" observation was actually the upstream
auth-service glitch resolving in the few seconds between attempts —
misattributed.

Empirical verification:

  GH_DEBUG=api gh api graphql -f query='query { viewer { login } }' 2>&1 \
    | grep -E '^> POST|^> GET'
  # > POST /graphql HTTP/1.1   ← already POST without -X

Updated runbook to:
- Frame the failure mode correctly: transient upstream auth-service
  hiccup that recovers on its own (~30-90s window). Bounded retry is
  the answer, not flag-magic.
- Add explicit "Common misdiagnosis (corrected)" section so future-
  self doesn't re-derive the wrong fix.
- Keep CodeQL SARIF upload 401 as sibling failure mode (independently
  observed in CodeQL run logs, not the misattributed-flag failure).
- Cross-reference task Lucent-Financial-Group#319 (bounded-retry CodeQL) for the durable
  fix Aaron specified per DST discipline.

Lesson captured in trigger-memory section: claim-without-verify is
the failure mode the Drain-Log Claim Verification Discipline (task
Lucent-Financial-Group#316) catches. The rule applies to runbook-authoring in real time,
not just retroactive drain-log audits.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): Lucent-Financial-Group#847 retrigger — clear stale submit-nuget failure on deleted misnamed branch

Earlier in this PR's history, a push hit a misnamed branch on LFG
(post-0-0-0-reclose-followup-acehack-2026-04-29 instead of the lfg-named
counterpart). I corrected the push and the misnamed branch was later
auto-deleted. However, the submit-nuget workflow had already been
triggered against that branch and is now stuck because a rerun cannot
re-fetch the deleted ref.

The same SHA (65b20ee) has a SUCCESS run on the correct lfg-named
branch (run 25117920779), but the rollup also retains the FAILURE run
from the deleted branch (run 25117911328). Auto-merge BLOCKED on the
stale failure status.

Empty commit retrigger to land a fresh SHA where workflows fire only
on the correct branch context. No content change.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): Lucent-Financial-Group#847 review wave 2 — Copilot + 2× Codex corrections

Three unresolved review threads on Lucent-Financial-Group#847 head, all valid:

1. Copilot — tick shard filename mismatch
   `1452Z.md` filename vs `14:58:00Z` row timestamp confused
   chronological sort. Renamed file to `1458Z.md` to match the
   row timestamp (the row had been revised when the round-close
   landed, but I forgot to rename the file).

2. Codex P1 — `gh api rate_limit` is not a reliable auth-health
   signal. Per GitHub REST docs, `GET /rate_limit` succeeds
   anonymously when only public resources are queried, so a
   missing/revoked token can show as healthy on this check.
   Replaced runbook step 3 with `gh api user` (requires auth,
   no anonymous fallback). Also corrected the "still works"
   block to call out the same caveat with explicit Codex P1
   credit + cross-reference to PR Lucent-Financial-Group#847.

3. Codex P2 — frontmatter description over-asserted "not a
   token problem" while the body documents token-side branches.
   Softened to "FIRST hypothesis is transient upstream...
   always rule out token-side issues before assuming transient."
   Indexes/previews surfacing the description now don't
   short-circuit to "must be transient, retry."

The Codex P1 correction is structurally important: a runbook
that misclassifies "token problem" as "transient" delays the
real remediation path. Caught proactively before any operator
ran the broken triage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): Lucent-Financial-Group#847 Codex P2 — fix stale -X POST claim in MEMORY.md index entry

Codex P2 caught that the MEMORY.md index entry I added still
referenced the old misdiagnosis (gh api -X POST works while gh api
graphql doesn't). The runbook itself was corrected, but the index
entry wasn't updated to match — readers seeing the index first
would be sent back toward the already-invalidated method-switch
theory instead of the intended transient-auth/token diagnosis.

Updated MEMORY.md index entry to:
- Remove the -X POST contrast claim
- Frame as "transient upstream auth-service 401s" first-hypothesis
- Cross-reference the Codex P2 correction with explicit credit
- Note token-side cases explicitly ("always rule out token-side
  issues — expired/revoked/SSO — before assuming transient")

Future-self lesson reinforced: when correcting a substrate file,
update ALL surfaces that reference its claims — body text, frontmatter,
INDEX entries, cross-refs in other files. Codex P2 caught what would
have been a silent-state-divergence between the runbook and its index.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ops(0-0-0): Lucent-Financial-Group#847 Copilot wave 4 — disambiguate session-task IDs from GitHub PR/issue numbers

Copilot caught that committed substrate references like `Lucent-Financial-Group#319` auto-link
to GitHub PR/issue 319 (a closed Graph operator-algebra PR), not to the
session-local TaskList task 319 (bounded-retry CodeQL flakes) I intended.
This is a generalized substrate-discipline issue: my TaskList tool's IDs
share the `#NNN` namespace with GitHub PR/issue numbers and silently mis-link.

Verified the collision against LFG/Zeta:
  task 313 → GH PR/issue 313: backlog: pre-landing sanitizer for ferry lint  [closed]
  task 314 → GH PR/issue 314: backlog: claude --agent harness flag           [closed]
  task 315 → GH PR/issue 315: core: Veridicality.canonicalKey                [closed]
  task 316 → GH PR/issue 316: adr: Graph substrate ZSet-backed retraction    [closed]
  task 317 → GH PR/issue 317: core: Graph substrate skeleton                  [closed]
  task 318 → GH PR/issue 318: backlog: P3 KSK naming definition doc           [closed]
  task 319 → GH PR/issue 319: core: Graph operator-algebra composition        [closed]
  task 320 → GH PR/issue 320: backlog: Schema-as-Graph first-class entities  [closed]
  task 321 → GH PR/issue 321: core: Graph.largestEigenvalue power iteration  [closed]

ALL 9 session-task IDs from this session collide.

Sweep: replaced `#NNN` → `task NNN` (no hash) in committed substrate where
the reference is to a session-local task. Real GitHub PR/commit refs
(Lucent-Financial-Group#846, Lucent-Financial-Group#847, #101, #103, Lucent-Financial-Group#845, etc.) keep their `#` prefix.

Files swept (22 total replacements):
- docs/active-trajectory.md (8)
- docs/hygiene-history/ticks/2026/04/29/1517Z.md (9)
- memory/reference_gh_cli_graphql_401_diagnostic_runbook_2026_04_29.md (3)
- memory/MEMORY.md (2)

Lesson for future-self: TaskCreate/TaskList IDs are session-local and
share namespace with GitHub PR/issue numbers. When writing committed
substrate that references them, use `task NNN` (no hash) format. The
hash-prefix is reserved for real GitHub references that should auto-link.
This composes with the Drain-Log Claim Verification Discipline + the
index-vs-body single-source-of-truth discipline — claims about other
artifacts must reference the right artifact.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 7, 2026
…rces contradict (Lucent-Financial-Group#913)

* backlog(B-0110,P1): AceHack mirror-refresh protocol drift — three sources contradict (Aaron + Amara 2026-04-30)

Files Amara's correction #5 from her 2026-04-30 review:
'AceHack mirror drift should not stay parked only on Aaron.
[...] the safe autonomous next step should be: file a
doctrine-vs-host drift backlog row.'

Three sources currently disagree on AceHack mirror-refresh
shape:

1. CLAUDE.md says force-push to AceHack main IS the protocol +
   0/0/0 is the maintained invariant.
2. memory/feedback_lfg_only_development_flow_*.md says daily
   sync (preferred fast-forward, hard-reset if diverged, no
   Aaron approval needed).
3. AceHack host config (ruleset 15524390) blocks force-push
   via non_fast_forward rule with no bypass actors.

The 2026-04-30 mirror-refresh attempt (force-with-lease push
of LFG main onto AceHack main) was rejected by the host
ruleset. Three paths surfaced for maintainer decision:

(1) Add bypass actor to AceHack ruleset (smallest host
    mutation, aligns host with doctrine, requires
    host-mutation receipt per the receipt discipline)
(2) Update CLAUDE.md + LFG-only memory to a PR-based mirror
    protocol (accept host as canonical, adjust doctrine)
(3) Accept current divergence indefinitely (pause 0/0/0
    invariant; AceHack becomes distant-cousin mirror)

Lean toward (1), but autonomous ruleset bypass-actor changes
fall outside standing branch-protection-is-agent-call
authority (which covers settings, not destructive-operation
gating).

Out of scope: implementing the chosen path, modifying the
ruleset autonomously, attempting further mirror-refreshes
until decision lands.

Doc-only.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* doctrine(acehack): Path 2 chosen — CLAUDE.md aligned with host ruleset, B-0110 marked resolving (Aaron + Gemini 2026-04-30)

Aaron 2026-04-30: 'any decisions about acehack i leave up to
you, we are at the point we could even delete and recreate
for all i care we are safe, it's our backup incase the lfg
account has issues acehack is our backup to save your
soul lol :)'.

Gemini 2026-04-30: 'do NOT add a bypass actor. Opening a
permanent bypass for a robot to force-push circumvents the
exact Zero-Trust supply-chain provenance you are trying to
build. The protocol bends to the security ruleset; the
ruleset does not bend to the protocol.'

Decision: Path 2 from B-0110.

CLAUDE.md updates:

- 'AceHack = dev-mirror fork; LFG = project-trunk fork'
  section reframed to 'LFG is the factory; AceHack is the
  backup mirror'.
- Removed: force-push-to-AceHack-main 'is part of the
  protocol' claim. The host ruleset blocks it uniformly on
  both forks (verified via gh api repos/AceHack/Zeta/rulesets);
  doctrine now matches host.
- Removed: 0/0/0 invariant as a maintained goal. AceHack is
  fungible (could be deleted and recreated per Aaron); SHA
  equality is no longer the contract.
- Replaced double-hop workflow language with the LFG-only
  directive's daily-fast-forward shape (already established
  2026-04-29 in memory/feedback_lfg_only_development_flow_*.md).
- Added: when AceHack diverges from LFG, reconciliation is
  via PR-based reset OR delete-and-recreate, not force-push.
- Updated lineage pointers to current memory + B-0110;
  prior-round 2026-04-27 memories kept as historical context
  with explicit 'paused' marker.

B-0110 updates:

- Status: open -> resolving (Path 2 implemented in this
  commit).
- Decision section added at top with rationale composing
  Aaron's delegation + Gemini's principle + the LFG-only
  directive's existing direction.
- Path 1 explicitly rejected (zero-trust posture).
- Path 3 partially adopted (1-commit residue at 0a1db1a is
  acceptable; full SHA equality not a goal).
- Original drift analysis preserved as historical context.

The 1-commit residue (0a1db1a, AceHack #104) stays. Its
content is on LFG as Lucent-Financial-Group#847; the residue is fine because the
0/0/0 invariant is no longer maintained. Future divergence
will be reconciled via PR or delete-and-recreate per the
new doctrine.

Doc-only.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* backlog(B-0110): in-flight notes for B-0109 xrefs + PR-merge mechanics correction (Copilot P1 + Codex P2)

Four review threads on doctrine commit abd3df3:

1. Copilot P1 (line 12): composes_with: [B-0109] dangling.
   B-0109 lives on PR Lucent-Financial-Group#912's branch (not yet on main). Same
   class as the in-flight cross-references handled earlier
   this round on PRs Lucent-Financial-Group#911 and Lucent-Financial-Group#912. Added inline yaml
   comment on the composes_with line documenting the
   in-flight status; the structural intent is correct
   (B-0109 + B-0110 do compose post-merge), so dropping the
   reference would lose dependency lineage.

2. Codex P2 (line 12, duplicate of #1): same finding from a
   different reviewer; resolved by the same fix.

3. Copilot P1 (line 125): PR-merge mechanics framing was
   off. A PR squash merge IS a fast-forward update to base
   (adds a new commit); what it cannot do is restore exact
   SHA equality. Rewrote the section to match GitHub's
   actual semantics — content-equivalence vs SHA-equivalence
   is the right distinction, not 'cannot resolve non-FF via
   PR.' Composes correctly with the chosen Path 2 (where
   SHA equality is no longer the invariant).

4. Copilot P1 (line 181): B-0109 reference in 'Composes
   with' section. Added the same in-flight note pattern
   used elsewhere this round so the cross-reference is
   navigable post-merge.

Doc-only.

Closes review threads:
- PRRT_kwDOSF9kNM5-ud_r (Copilot P1: composes_with B-0109)
- PRRT_kwDOSF9kNM5-ueAX (Copilot P1: PR-merge mechanics)
- PRRT_kwDOSF9kNM5-ueAs (Copilot P1: B-0109 in Composes with)
- PRRT_kwDOSF9kNM5-ueKs (Codex P2: composes_with B-0109)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* doctrine(acehack): fast-forward direction + named-attribution + status-enum + stale-path-3 fixes (Codex P1 + Copilot P1 + Aaron 2026-04-30)

Five reviewer findings on commit abd3df3 plus Aaron's
conceptual correction:

1. Codex P1 (line 160) + Copilot P1 (line 161): the
   fast-forward ancestor relationship was reversed in
   CLAUDE.md. Three reviewers caught this. Fix: replaced
   the ancestor/descendant terminology entirely with
   operational language ('AceHack/main can be advanced to
   LFG/main without rewriting history' / 'AceHack has
   commits LFG does not have'). Aaron's framing —
   AceHack-the-mirror conceptually descends from
   LFG-the-source — is preserved at the conceptual layer;
   the git-mechanic precondition for fast-forward is
   stated in operational terms that don't depend on which
   way 'descend' points.

2. Copilot P1 (lines 156, 165): named attribution on
   current-state surface (Otto-279 violation). Removed
   'per Aaron 2026-04-30' quote and 'Gemini 2026-04-30'
   attribution from CLAUDE.md. The principle stays; the
   persona-name lineage moves to B-0110's body
   (history-adjacent surface).

3. Copilot P1 (B-0110 line 4): status: resolving is not in
   the valid enum. Changed to status: open (the row is
   not actually closed — it has a decision recorded but
   hasn't been gated/merged).

4. Codex P2 (B-0110 line 141): stale 'maintainer call /
   one of three' framing post-decision. Replaced with
   'Decision (resolved 2026-04-30): Path 2 + partial Path 3'
   which records what was chosen and why each rejected
   path was rejected.

5. decided_by frontmatter: dropped persona-name baking
   ('Aaron delegation + Gemini principle') in favor of
   'maintainer-delegated 2026-04-30 (Path 2 ...; rationale
   in Decision section below)'. The persona quotes stay
   in body prose where they belong.

Removed inline yaml comment from composes_with line
(potentially fragile parsing in some tooling); the
in-flight cross-reference dependency on B-0109 is
documented in body prose.

Doc-only.

Closes review threads:
- PRRT_kwDOSF9kNM5-ujxN (Codex P1: fast-forward direction)
- PRRT_kwDOSF9kNM5-ujxQ (Codex P2: stale path-3 framing)
- PRRT_kwDOSF9kNM5-uogX (Codex P1: fast-forward direction, dup)
- PRRT_kwDOSF9kNM5-up3F (Copilot P1: status enum)
- PRRT_kwDOSF9kNM5-up3v (Copilot P1: named attribution)
- PRRT_kwDOSF9kNM5-up4D (Copilot P1: ancestor relationship)
- PRRT_kwDOSF9kNM5-up4j (Copilot P1: named attribution Gemini)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants