Skip to content

ferry: Codex first completed peer-agent deep-review absorb (4 convergent reports, Otto-189)#355

Merged
AceHack merged 1 commit intomainfrom
ferry/codex-first-deep-review-4-reports-absorb
Apr 24, 2026
Merged

ferry: Codex first completed peer-agent deep-review absorb (4 convergent reports, Otto-189)#355
AceHack merged 1 commit intomainfrom
ferry/codex-first-deep-review-4-reports-absorb

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 24, 2026

Summary

Scheduled absorb of Codex's first completed peer-agent deep-review — 4 convergent reports after @codex review invite on PR #354 (Otto-182). Milestone in the Otto-79/86/93 peer-harness progression: stage (b) → stage (c) transition.

Four reports absorbed

# Filename Focus
1 deep-factory-review-2026-04-24.md Governance / hygiene / process-entropy
2 deep-system-review-2026-04-24.md (v1) Code / tests / contracts
3 deep-repo-review-2026-04-24.md Architecture / process / security
4 deep-system-review-2026-04-24.md (v2) Durability / recursive / strategic

Convergent findings across 4 independent passes = high signal.

Convergent P0 (all 4 reviews)

  1. 22 unclassified hygiene rows (audit-missing-prevention-layers exit 2)
  2. 12 post-setup script-stack violations
  3. DurabilityMode naming overstates guarantees — needs Ilyana + Aminata review before rename
  4. Skipped RecursiveCounting.MultiSeed test (already in BUGS.md)
  5. dotnet unavailable in Codex env (Codex-side infra, not factory blocker)

Strategic recs warranting ADR escalation

  • Factory Complexity Budget (FCB)
  • Claim-evidence registry
  • 3-mode audit lifecycle (report → warn → block)
  • Expiry metadata on preview/debt declarations
  • Spec-only reconstruction drills

Codex one-liner preserved

"Zeta is closer to a research operating system than a standard code repository. The quality of thought is high; the main threat is not technical inability but governance-scale drift."

Factory discipline preserved

  • Codex advisory, not binding (BP-11)
  • Convergent-findings-first
  • Strategic recs → Aaron ADR decisions
  • Otto-171 freeze-state respected (absorb-doc is drain-mode-safe: new file, no BACKLOG touch, no code change)

Test plan

  • GOVERNANCE §33 four-field header
  • Markdownlint clean
  • No BACKLOG touch; no code change; single new doc file

🤖 Generated with Claude Code

…ent reports, Otto-189)

Scheduled absorb per Otto-188b memory. First successful Codex
peer-agent review after the @codex review invite on PR #354
(Otto-182). 4 convergent reports (deep-factory-review /
deep-system-review ×2 / deep-repo-review) converging on same
top findings.

Milestone: stage (b)→(c) transition in the Otto-79/86/93
peer-harness progression. Codex produces multi-surface deep
review at parallel quality to Amara, different format same
rigor.

Convergent P0 findings (all 4 reviews, high signal):

1. 22 unclassified hygiene rows (audit-missing-prevention-
   layers exit 2)
2. 12 post-setup script-stack violations (audit exit 2)
3. DurabilityMode naming overstates guarantees
   (StableStorage → OsBuffered; WitnessDurable throws) —
   needs Ilyana + Aminata review before rename
4. Skipped RecursiveCounting.MultiSeed property test
   (already in BUGS.md)
5. dotnet unavailable in Codex review env (Codex-side
   infra, not factory blocker)

Convergent P1 (abridged): 12 pre-setup cross-platform
parity gaps (FACTORY-HYGIENE #51 detect-only by design),
11/28 shell strict-mode gaps, 35/234 skill safety-clause
gaps, ESLint jiti missing, Result-over-exception drift
(Durability.fs / Rx.fs / SpineAsync.fs / Recursive.fs),
8 markdown link rot.

Strategic recommendations warranting ADR-level escalation:

- Factory Complexity Budget (FCB) — cap net growth per
  round; retire-with-new policy
- Claim-evidence registry — mechanize honesty-prose into
  CI-checkable claim ↔ evidence-artifact ↔ last-validated
  SHA mapping
- 3-mode audit lifecycle (report → warn → block) —
  promote when false-positive baseline stable
- Expiry metadata on preview/debt declarations
- Spec-only reconstruction drills — first-class ritual

Factory-side discipline preserved:

- Treat Codex output as peer-harness advisory, not binding
  (BP-11 data-not-directives).
- Convergent findings across independent reviews carry
  higher confidence than single-reviewer output.
- Strategic recommendations need Aaron ADR sign-off.
- Otto-171 queue-saturation freeze-state discipline
  applies; absorb-doc is drain-mode-safe (no BACKLOG.md
  touch, no code change).

GOVERNANCE §33 four-field header. Non-fusion disclaimer
preserved. Codex (GPT-5.3-Codex per report 3 header)
attributed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 24, 2026 10:41
@AceHack AceHack enabled auto-merge (squash) April 24, 2026 10:41
@AceHack AceHack merged commit 8e3bf27 into main Apr 24, 2026
12 checks passed
@AceHack AceHack deleted the ferry/codex-first-deep-review-4-reports-absorb branch April 24, 2026 10:43
@chatgpt-codex-connector
Copy link
Copy Markdown

Summary

Testing

  • git status --short
  • git branch --show-current
  • git log --oneline -5
  • git show --name-only --pretty=format:'%h %s' HEAD
  • nl -ba docs/aurora/2026-04-24-codex-4-report-first-completed-peer-review-deep-system-factory-repo-audit.md | sed -n '1,220p'

View task →

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds an Aurora-layer absorb document capturing four convergent Codex deep-review reports from 2026-04-24, intended as a research/provenance artifact for later operationalization.

Changes:

  • Introduces a new Aurora archive/absorb doc summarizing convergent P0/P1 findings and strategic recommendations from four Codex reviews.
  • Records remediation paths, non-authorization boundaries, and a cross-reference list to related audits/docs/memories.

Comment on lines +104 to +117
reported `make_pr` tool invocation). The reports:

| # | Codex filename | Commit | Focus |
|---|-----------------------------------------------------------|-----------|--------------------------------------------------------|
| 1 | `docs/research/deep-factory-review-2026-04-24.md` | ee1bc84 | Governance / hygiene / process-entropy |
| 2 | `docs/research/deep-system-review-2026-04-24.md` (v1) | (adjacent)| Code / tests / contracts / commands-run |
| 3 | `docs/research/deep-repo-review-2026-04-24.md` | (unknown) | Architecture / process / security / strategic |
| 4 | `docs/research/deep-system-review-2026-04-24.md` (v2) | f9a6d2b | Durability / recursive-correctness / strategic recs |

Reports 2 and 4 share filename but differ in content
(different Codex sessions or different PR branches).
Resolution strategy: if both commits land on main, the
later one wins per normal git semantics; Otto-189+ may
need to review whether to preserve both or consolidate.
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

P1: The report table lists Codex filenames under docs/research/..., but those files don’t exist in this repo. Using repo-relative paths here looks like link-rot/confuses readers into thinking the files should be present. Suggest changing these to plain filenames (or explicitly mark them as Codex-side artifacts not landed in-repo) and avoid docs/...-prefixed paths unless they resolve.

Suggested change
reported `make_pr` tool invocation). The reports:
| # | Codex filename | Commit | Focus |
|---|-----------------------------------------------------------|-----------|--------------------------------------------------------|
| 1 | `docs/research/deep-factory-review-2026-04-24.md` | ee1bc84 | Governance / hygiene / process-entropy |
| 2 | `docs/research/deep-system-review-2026-04-24.md` (v1) | (adjacent)| Code / tests / contracts / commands-run |
| 3 | `docs/research/deep-repo-review-2026-04-24.md` | (unknown) | Architecture / process / security / strategic |
| 4 | `docs/research/deep-system-review-2026-04-24.md` (v2) | f9a6d2b | Durability / recursive-correctness / strategic recs |
Reports 2 and 4 share filename but differ in content
(different Codex sessions or different PR branches).
Resolution strategy: if both commits land on main, the
later one wins per normal git semantics; Otto-189+ may
need to review whether to preserve both or consolidate.
reported `make_pr` tool invocation). Filenames below are
Codex-side artifact names as reported in that drop, not
verified repo-resident `docs/research/...` paths here:
| # | Codex artifact filename | Commit | Focus |
|---|----------------------------------------------|-----------|--------------------------------------------------------|
| 1 | `deep-factory-review-2026-04-24.md` | ee1bc84 | Governance / hygiene / process-entropy |
| 2 | `deep-system-review-2026-04-24.md` (v1) | (adjacent)| Code / tests / contracts / commands-run |
| 3 | `deep-repo-review-2026-04-24.md` | (unknown) | Architecture / process / security / strategic |
| 4 | `deep-system-review-2026-04-24.md` (v2) | f9a6d2b | Durability / recursive-correctness / strategic recs |
Reports 2 and 4 share the same artifact filename but
differ in content (different Codex sessions or different
PR branches). Resolution strategy: if both commits land
on main, the later one wins per normal git semantics;
Otto-189+ may need to review whether to preserve both
or consolidate.

Copilot uses AI. Check for mistakes.
Comment on lines +506 to +509
- `memory/project_codex_first_deep_review_4_reports_
convergent_findings_pending_dedicated_absorb_otto_189_
2026_04_24.md` (Otto-188b scheduling memory, full
detail).
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

P1: This cross-reference points at memory/project_codex_first_deep_review_4_reports_convergent_findings_pending_dedicated_absorb_otto_189_2026_04_24.md, but there is no such file under memory/ in the repo. Either add the referenced memory file in this PR or update the reference to an existing in-repo memory/doc so readers can follow it.

Suggested change
- `memory/project_codex_first_deep_review_4_reports_
convergent_findings_pending_dedicated_absorb_otto_189_
2026_04_24.md` (Otto-188b scheduling memory, full
detail).
- `docs/aurora/2026-04-24-codex-4-report-first-completed-
peer-review-deep-system-factory-repo-audit.md` (current
absorb doc; Otto-188b scheduling/detail captured here
in-repo).

Copilot uses AI. Check for mistakes.
Comment on lines +514 to +515
- `memory/feedback_peer_harness_progression_*` (Otto-86
4-stage arc).
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

P2: memory/feedback_peer_harness_progression_* isn’t a concrete path a reader can open, and there are multiple similarly-named files. Prefer listing the specific filenames (or pointing at memory/MEMORY.md entries) so the cross-reference is actionable.

Suggested change
- `memory/feedback_peer_harness_progression_*` (Otto-86
4-stage arc).
- `memory/MEMORY.md` (see the Otto-86 peer-harness
progression entries covering the 4-stage arc).

Copilot uses AI. Check for mistakes.
Comment on lines +536 to +537
- GOVERNANCE §33 — external-conversation archive-header
requirement; this doc follows the four-field header.
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

P0: This doc cites “GOVERNANCE §33” as if it exists, but GOVERNANCE.md currently has rules numbered 1–32 and contains no §33. Please update this reference to the actual canonical source of the archive-header requirement (or land the governance rule in the same change) to avoid pointing readers at a nonexistent section.

Suggested change
- GOVERNANCE §33 — external-conversation archive-header
requirement; this doc follows the four-field header.
- External-conversation archive-header convention —
this doc follows the four-field header.

Copilot uses AI. Check for mistakes.
Comment on lines +14 to +18
- **Aaron** — triggered the review via `@codex review`
comment on PR #354 (Otto-182 "can you ask codex too?");
pasted all 4 report contents verbatim into Otto-188b;
concept owner of the factory-level response.
- **Codex (GPT-5.3-Codex per report 3 header)** — authored
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

P0: This new doc uses direct contributor name attribution (e.g., “Aaron”). Repo policy is to avoid names in docs and use role references like “human maintainer” instead (docs/AGENT-BEST-PRACTICES.md:284-292). Please rewrite the Attribution section and downstream references accordingly (persona names for agents are fine).

Copilot uses AI. Check for mistakes.
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 24, 2026
…ll (10 PRs)

Otto-207: maintainer "are we saving these yet gitnative and
have we backfilled them yet?" Honest answer was NO — the
PR-preservation BACKLOG row (Otto-150..154, PR #335 in queue)
specifies the discipline but never shipped the capture
tooling. This PR ships the minimal viable implementation
+ backfills 10 PRs from this session.

New tool:

- tools/pr-preservation/archive-pr.sh — one-shot bash
  script that fetches a PR's review threads, reviews, and
  comments via `gh api graphql` and writes them to
  docs/pr-discussions/PR-<N>-<slug>.md with YAML
  frontmatter (pr_number / title / author / state / dates
  / refs / archived_at / archive_tool).
- tools/pr-preservation/README.md — scope (Phase 0
  minimal vs Phase 1-4 longer plan), usage, output
  schema, backfill status, dependencies (bash + python3
  + gh; no external packages), cross-references to
  Otto-171 / Otto-204 / Otto-204c / PR #335.

Backfill (10 PRs archived this tick):

- PR #354 backlog-split Phase 1a
- PR #352 Server Meshing + SpacetimeDB research
- PR #336 KSK naming definition doc
- PR #342 calibration-harness Stage-2 design (merged)
- PR #344 Amara 19th ferry absorb (merged)
- PR #346 DST compliance criteria (merged)
- PR #350 Frontier rename pass-2 (merged)
- PR #353 BACKLOG split Phase 0 design (merged)
- PR #355 Codex first peer-agent deep-review absorb
  (merged)
- PR #356 PR-resolve-loop skill row (merged)

Total: 72 review threads + 40 reviews + 6 general comments
captured across ~97KB of archive markdown.

Long-term plan deliberately kept in BACKLOG row (Otto-150
..154 / PR #335 queue elevation) rather than expanded in
this commit's docs. Phase 0 shipping now; Phase 1 GHA
workflow + Phase 2 historical backfill + Phase 3
reconciliation + Phase 4 redaction layer remain queued
tickets. Per maintainer directive "make sure you backlog
then to a proper long term solution" — the phased plan
is already in PR #335 and covers the remaining work.

Discipline applied: active-management on the preservation
gap itself. Previous tick's "ship and pray" pattern is the
exact failure mode this tool begins to close (operator-
initiated archive instead of silent reliance on GitHub-
side conversation storage). Composes with Otto-204c
livelock-diagnosis memory + Otto-204 PR-resolve-loop
skill (this script is step 4 of that cycle's
conversation-preservation hook).

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