Skip to content

Commit 4497efe

Browse files
docs(receipt): Stage 9 council record and owner remote-cleanup script; manifest corrections
Three seats (astra, kimi-k2-thinking replacing grok, qwen) approved the disposition manifest; every finding was a verification request and each was run against git before acting: merge-base --all empty for both local/remote archive pairs, dev and codex tips reachable without tags, b5's work committed and its worktree clean, the installed session-export resolved to a uv tool install with no pin in its import chain, zero notes and LFS, and Stage 8's harvest input reachable through the retrofit tag. Astra caught an inconsistency in my own manifest -- the Pages API delete is a remote write -- recorded as owner-authorised, coordinator-executed. Executed locally: 14 archive tags, 6 worktrees removed, 13 branches deleted (each only after an automated reachability check), GitHub Pages disabled and pinned out by test. Remaining refs: main and feat/knowledge-proof. The owner script pushes main, the feature branch and the tags, then deletes the 9 tagged/merged remote branches, refusing to run if any tag has moved from the manifest's OID.
1 parent 60c2ee0 commit 4497efe

3 files changed

Lines changed: 105 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Council record — Stage 9 (branch, worktree, pin and Pages disposition)
2+
3+
**Date:** 2026-09-10 · **Manifest reviewed:** `stage9-disposition-2026-09-10.md` (committed `b30d020c`
4+
*before* any deletion) · **Cadence:** full three seats — `openai.gpt-6-astra` **APPROVE-WITH-CHANGES**
5+
(7 findings, 44 s), `kimi-k2-thinking` **APPROVE-WITH-CHANGES** (9 findings, 48 s; replaces grok-4.6, which
6+
failed to deliver on two of three stages), `qwen3-coder` **APPROVE** (2 MINOR, 11 s). No seat rejected;
7+
**all three independently endorsed keeping `feat/knowledge-proof`** as the one surviving feature branch.
8+
9+
## Dispositions
10+
11+
Almost every finding was a verification request; each was run against git before acting.
12+
13+
| seat / id | severity | finding | disposition | check |
14+
|---|---|---|---|---|
15+
| kimi F1 | BLOCKING | knowledge-proof count and OKF residue UNVERIFIED by the seat | **CLOSED.** `main..464a8cdc` = 69 (manifest 69); OKF grep on its tip's `packages/` = 0 files. | `git rev-list --count`, `git grep -il` |
16+
| kimi F2 / astra F2 | BLOCKING / MAJOR | b5's uncommitted work really committed? worktrees really clean, incl. ignored files? | **CLOSED.** `a4c5b518` = 4 files, +1,715/−223; b5 `status --porcelain` = 0. Ignored files in the five removed worktrees were mkdocs privacy-plugin cache, `.DS_Store` and `egg-info` — reproducible build output; the two pins had none. | `git show --stat`, `git ls-files --others --ignored` |
17+
| kimi F3/F4, astra F7 | MAJOR / MINOR | are the local/remote `archive/*` pairs truly unrelated? distinct tag names? | **CLOSED.** `git merge-base --all` is **empty** for both pairs (no common ancestor at all). Tags are distinct: `…-archive-local-…` / `…-archive-remote-…` and `…-local-…` / `…-remote-…`. | `git merge-base --all` |
18+
| kimi F5, astra F6 | MAJOR / MINOR | `dev` and `codex/session-memory-mvp` deleted without a tag — are they really reachable? | **CLOSED.** `538dc2bb` (dev) is contained by `main` and 11 other refs; `5dfe0f9b` (codex) is an ancestor of the tagged rescue tip. Manifest wording corrected: "every *deleted tip* is reachable from a tag or `main`", not "every tip tagged". | `git branch --contains`, ancestry |
19+
| kimi F6 | MAJOR | wip's unique commit "superseded by B3/B4/B5" — is it actually contained? | **Correct concern, no loss.** It is *not* contained (its 8 files are unique); it is preserved by `archive/wip-parallel-integration-gaps-20260908-2026-09-10`. Manifest reason reworded from "superseded" to "preserved by tag; author marked it superseded". | ancestry checks |
20+
| kimi F7, astra F3 | MAJOR | `lsof +D = 0` is a snapshot; audit the installed `session-export`'s resolved entrypoint | **CLOSED.** `~/.local/bin/session-export` → uv tool install `~/.local/share/uv/tools/agent-session-tools/…`; its interpreter imports `agent_session_tools` from that tool's own site-packages — **no pin in the chain**. The only launchd job runs that binary. No config file references either pin path. | symlink chain, shebang, `import agent_session_tools.__file__` |
21+
| kimi F9 | MINOR | gh-pages unique commit may hold CNAME/custom-domain config | **CLOSED.** The commit is "Deployed 72c3dd3 with MkDocs 1.6.1" (`.nojekyll`, `404.html`, rendered HTML); **0 CNAME**. No CNAME anywhere tracked. | `git show --stat`, `git ls-tree` |
22+
| kimi F8 | MINOR | delete the docs workflow instead of cutting it? | **Cut, not deleted**: the strict mkdocs build still fails CI on broken docs; the retirement contract is pinned by `test_docs_workflow_has_no_pages_deploy` (`60c2ee0c`), proven to discriminate against the old workflow. | test run |
23+
| **astra F1** | MAJOR | manifest says the coordinator cannot do remote writes, then has the coordinator run the Pages API `DELETE` | **ACCEPT — my inconsistency.** The Pages deletion *is* a remote write; it was run because the owner authorised it explicitly and in words ("can now be removed too"), unlike pushes, which the platform blocks outright. Recorded as such: **owner-authorised, coordinator-executed**, verified `has_pages=false`. | `gh api repos/…/pages` → 404, `has_pages=false` |
24+
| astra F4 | MAJOR | do Stages 6–8 need anything deleted here? | **CLOSED.** Stage 8's harvest input `031dbab9:openspec/…/tasks.md` is reachable via `archive/feat-sessionweaver-phase2-retrofit-2026-09-10` (checked with `cat-file -e`). Stage 6's DROP list is DB-only. Stage 7 touches the installer and `~/.grok`. No remaining stage references a removed worktree path or pin. | `git cat-file -e <tag>:<path>` |
25+
| astra F5 | MAJOR | owner script's tag→OID mapping and fast-forwardability UNVERIFIED | **CLOSED.** `scripts/maintenance/stage9-owner-remote-cleanup.sh` carries an explicit 14-entry tag→OID **preflight that refuses to run on any mismatch** (dry-run: 14/14 verified); `origin/main` and `origin/feat/knowledge-proof` are both ancestors of the local tips → both pushes fast-forward. | script preflight, `merge-base --is-ancestor` |
26+
| kimi Q8 || git notes / LFS not covered by tags | **CLOSED.** 0 notes refs; 0 LFS objects; no LFS filters. | `for-each-ref refs/notes`, `git lfs ls-files` |
27+
28+
## Executed (local)
29+
30+
- **14 archive tags** created (13 tips to be deleted + the pre-OKF-removal tip), each pointing at the
31+
commit named in the manifest.
32+
- **6 worktrees removed** (all `status --porcelain` = 0): PR #18's, b5 (after committing its work as
33+
`a4c5b518`), the codex rescue checkout, a sub-agent scratch checkout, and both `~/.local/share` pins.
34+
- **13 local branches deleted**, each only after an automated check that its tip is reachable from an
35+
archive tag, `main`, or `feat/knowledge-proof` (the check refuses otherwise; nothing was refused).
36+
- **GitHub Pages retired**: live deployment disabled (owner-authorised API call; `has_pages=false`);
37+
`docs.yml` cut to a build-check job with read-only permissions; `site_url`www.studyloop.dev;
38+
CONTRIBUTING link → `docs/contributing.md` (www has no `/contributing/`); local `site/` removed;
39+
retirement pinned by a discriminating test.
40+
- Remaining: **`main`** and **`feat/knowledge-proof`** (branch + its worktree). Stashes 0.
41+
42+
## Remaining for the owner (`scripts/maintenance/stage9-owner-remote-cleanup.sh`)
43+
44+
Push `main` (now 39 ahead) and `feat/knowledge-proof`; push the 14 tags; delete the 9 remote branches
45+
whose tips are tagged or fully merged. The script's preflight re-verifies every tag→OID first.

docs/architecture/session-memory/receipts/stage9-disposition-2026-09-10.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,14 @@ git push origin --delete feat/b1-fresh-install-scope feat/b2-ontology-migration
8181
rescue/session-memory-mvp-20260907 archive/gh-pages archive/socratic-study-mentor-main \
8282
codex/evidence-context-evaluation
8383
```
84+
85+
## Corrections after council review (sidecar; see `council-stage9-2026-09-10.md`)
86+
87+
1. "every deletion is preceded by a tag" → **every deleted tip is reachable from an archive tag, `main`
88+
or `feat/knowledge-proof`** (`dev` and `codex/session-memory-mvp` needed no tag; the delete step
89+
verified reachability automatically and would have refused otherwise).
90+
2. `wip/parallel-integration-gaps-20260908`: its 8 files are **not** contained in B3/B4/B5 (the author's
91+
"superseded" was a judgement, not ancestry); they are preserved by its archive tag.
92+
3. The live Pages deployment was disabled by the coordinator via the GitHub API — a remote write, run
93+
because the owner authorised it explicitly in words; pushes and remote branch deletions remain the
94+
owner's (`scripts/maintenance/stage9-owner-remote-cleanup.sh`).
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
# Stage 9 owner script — the remote half of the 2026-09-10 branch cleanup.
3+
# Agents cannot push or delete remote refs on this repo (platform policy), so the
4+
# owner runs this once. Every step is idempotent; the preflight refuses to run if
5+
# any archive tag is missing or points somewhere other than the manifest says.
6+
# Manifest: docs/architecture/session-memory/receipts/stage9-disposition-2026-09-10.md
7+
set -euo pipefail
8+
cd "$(git rev-parse --show-toplevel)"
9+
10+
echo "== preflight: every archive tag exists and points at the manifest's OID =="
11+
declare -A EXPECT=(
12+
[archive/feat-knowledge-proof-pre-okf-removal-2026-09-10]=27842b79
13+
[archive/feat-sessionweaver-phase2-retrofit-2026-09-10]=031dbab9
14+
[archive/feat-b1-fresh-install-scope-2026-09-10]=40da8e5f
15+
[archive/feat-b2-ontology-migration-2026-09-10]=a6e78d3c
16+
[archive/feat-b3-concept-lifecycle-2026-09-10]=790eff34
17+
[archive/feat-b4-recall-surfaces-2026-09-10]=77f9ab1e
18+
[archive/feat-b5-real-corpus-2026-09-10]=a4c5b518
19+
[archive/rescue-session-memory-mvp-20260907-2026-09-10]=fc30e8b4
20+
[archive/wip-parallel-integration-gaps-20260908-2026-09-10]=ad2935d2
21+
[archive/gh-pages-2026-09-10]=0adb4d5e
22+
[archive/gh-pages-archive-local-2026-09-10]=4104a323
23+
[archive/gh-pages-archive-remote-2026-09-10]=89612961
24+
[archive/socratic-study-mentor-main-local-2026-09-10]=d9bbc73d
25+
[archive/socratic-study-mentor-main-remote-2026-09-10]=bb0a52dd
26+
)
27+
for t in "${!EXPECT[@]}"; do
28+
got="$(git rev-parse --verify -q "${t}^{commit}" | cut -c1-8 || true)"
29+
if [[ "$got" != "${EXPECT[$t]}" ]]; then echo "REFUSING: $t -> '$got', expected ${EXPECT[$t]}"; exit 1; fi
30+
done
31+
echo " 14/14 tags verified"
32+
33+
echo "== 1. push main and the surviving feature branch (fast-forward only) =="
34+
git push origin main
35+
git push origin feat/knowledge-proof
36+
37+
echo "== 2. push today's archive tags =="
38+
git push origin 'refs/tags/archive/*-2026-09-10'
39+
40+
echo "== 3. delete the remote branches whose tips are now tagged or fully merged =="
41+
git push origin --delete \
42+
feat/b1-fresh-install-scope feat/b2-ontology-migration feat/b3-concept-lifecycle \
43+
feat/b4-recall-surfaces feat/sessionweaver-phase2-retrofit rescue/session-memory-mvp-20260907 \
44+
archive/gh-pages archive/socratic-study-mentor-main codex/evidence-context-evaluation
45+
46+
echo "== 4. verify =="
47+
git fetch --prune origin
48+
echo "remote branches now:"; git branch -r | sed 's/^/ /'
49+
echo "remote archive tags: $(git ls-remote --tags origin 'archive/*-2026-09-10' | wc -l | tr -d ' ') (expect 14)"

0 commit comments

Comments
 (0)