Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions docs/0-0-0-readiness/CLASSIFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,11 @@ Per `docs/active-trajectory.md` strict bucket taxonomy: classification requires
| `tools/setup/macos.sh` | +11/-16 | **SAFE_TO_RESET_LFG_SUPERSEDES** | Two changes: (1) shellcheck source-directive comment — LFG has detailed rationale (multi-line explanation of why SC1091 fires + why source= directive resolves it); AceHack has terse 1-line version. (2) Setup script comments — LFG uses role-refs ("the maintainer's standing 'just install everything' framing"); AceHack adds persona-name attribution (citing the human maintainer + a round number) and persona-name attribution (citing an external AI reviewer + a PR number). Both AceHack changes are role-vs-name violations on a current-state surface. LFG version is more detailed AND rule-compliant. |
| `tools/hygiene/fix-markdown-md032-md026.py` | +16/-157 | **SAFE_TO_RESET_LFG_SUPERSEDES** | LFG has `f57d683 fix(hygiene): MD032 auto-fixer skips YAML frontmatter (don't break composes_with: lists) (#703)` + `515db64 feat(hygiene): fix-markdown-md032-md026.py — recurring pattern extracted to substrate primitive (Otto-346 in action) (#542)`. LFG file is 376 lines vs AceHack 235 lines: LFG = strict superset (fence detection at line 60 on both sides + YAML frontmatter handling that AceHack lacks). AceHack +16 lines are docstring/comment shifts on the fence-detection block (logic identical between sides; LFG just has more code before/after). |
| `tools/setup/common/curl-fetch.sh` | +14/-44 | **SAFE_TO_RESET_LFG_SUPERSEDES** | LFG has 2 commits AceHack lacks (`5298114` infra clean-additive batch + `dfb49e5` 63-file forward-port). Two changes in the comment block: (1) attribution — LFG: "Reviewers confirmed:" (role-ref); AceHack: persona-name attribution citing an external AI reviewer + a PR number (role-vs-name rule violation on a current-state surface). (2) retry-math accuracy — LFG: `--retry 5 — up to 5 retries (6 total attempts including the initial try, per curl(1))` (correct per curl manual); AceHack: `--retry 5 — five attempts total` (technically inaccurate). LFG is more accurate AND rule-compliant. |
| `docs/hygiene-history/loop-tick-history.md` | +12/-12 | **NEEDS_HUMAN_DECISION** | Mutual divergence with two distinct cases. **Truly unique to AceHack** (9 timestamps): 2026-04-28T04:08/04:18/04:33/05:01/05:23/05:44/05:50/07:15/08:50. **Truly unique to LFG** (9 timestamps): 2026-04-27T23:58, 2026-04-28T14:43/17:47/19:41/19:50, 2026-04-29T00:34/00:53/00:58/01:00. **Present on both forks with content drift in trailing portion** (1 timestamp, 2026-04-21T17:28): the row exists on both sides but differs enough to appear as `+/-` pair in `git diff` — note that diff direction is not row identity (a row present on both with trailing drift can show as both `+` and `-`). All AceHack-only rows are pre-Option-B (Option B shard-mode landed 2026-04-29T02:04:38Z on LFG via PR #724) and were correctly appended to the legacy single-table file at the time. Hard-reset to LFG erases the AceHack-only and same-timestamp-drift evidence. **Maintainer decision needed**: (a) accept the loss (tick-record only, work-products are reachable from PR/commit history), (b) forward-sync AceHack-only rows to LFG before hard-reset, or (c) migrate AceHack-only rows to per-tick shard files under `docs/hygiene-history/ticks/2026/04/{21,28}/` first then hard-reset. Recommended path: (c) — preserves the evidence in the modern format AND makes loop-tick-history.md content-identical between forks. Pre-existing 9 LFG-only rows are out of scope (separate follow-up on LFG side). |
| `docs/hygiene-history/loop-tick-history.md` | +12/-12 | **SAFE_TO_RESET_LFG_SUPERSEDES** (post-migration) | **Status (pre-this-PR)**: NEEDS_HUMAN_DECISION. **Maintainer decision recorded 2026-04-29**: option (c) — migrate AceHack-only rows to per-tick shard files under `docs/hygiene-history/ticks/2026/04/28/` before hard-reset. **Resolution evidence**: this PR creates the 9 ACEHACK_ONLY shards (`0408Z.md`, `0418Z.md`, `0433Z.md`, `0501Z.md`, `0523Z.md`, `0544Z.md`, `0550Z.md`, `0715Z.md`, `0850Z.md`) under `docs/hygiene-history/ticks/2026/04/28/` on LFG main; once merged, AceHack-side tick evidence is durably preserved in modern Option B format on LFG, so hard-reset of the table is content-preservation-safe. **Preflight-ledger refinement**: applying content-hash row identity (per the post-#838 Migration Preflight Ledger discipline) revealed the 2026-04-21T17:28 row is actually `COMMON_IDENTICAL` (same row hash on both forks `d1d54bae860f`) — the `+/-` diff pair was row reorder, not content drift. So 9 shards are sufficient (no SAME_TIMESTAMP_DRIFT case in this batch). Pre-existing 9 LFG-only rows are out of scope (separate follow-up on LFG side; not blocking 0/0/0). Per the decision-vs-resolution discipline (Amara 2026-04-29): this row's classification flips from NEEDS_HUMAN_DECISION → SAFE only on merge of this PR; in-force state until merge is NEEDS_HUMAN_DECISION. |
Comment thread
AceHack marked this conversation as resolved.

**Batch 2 result: 8 of 9 files SAFE_TO_RESET_LFG_SUPERSEDES (81 lines), 1 file NEEDS_HUMAN_DECISION (12 lines).**
**Batch 2 result (as of #838 merge, 2026-04-29T11:53:43Z): 8 of 9 files SAFE_TO_RESET_LFG_SUPERSEDES (81 lines), 1 file NEEDS_HUMAN_DECISION (12 lines).**
Comment thread
AceHack marked this conversation as resolved.

**Post-option-(c)-migration result (contingent on the migration PR landing): all 9 Batch 2 files SAFE_TO_RESET_LFG_SUPERSEDES (93 lines).** The `loop-tick-history.md` row above flips from NEEDS_HUMAN_DECISION → SAFE_TO_RESET_LFG_SUPERSEDES atomically with that PR's merge (decision-vs-resolution discipline: in-force state until merge is the pre-merge state).

### Calibration batch reclassification (older "ALREADY-COVERED" label)

Expand Down
40 changes: 31 additions & 9 deletions docs/active-trajectory.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,33 +136,55 @@ For the text-file ledger, the conceptual computation is straightforward: `git di

Verified 2026-04-29T10:43Z: the 5 binary-classified files in the current diff have status `D` (LFG-only), so `binary_acehack_only_files = 0` and `binary_modified_or_renamed_files = 0` in this specific round.

Current ledger (last updated 2026-04-29T12:13Z, post-Batch-2):
Current ledger (last updated 2026-04-29T12:31Z, post-option-(c)-migration-PR — values reflect post-merge state of the migration PR):

```text
potential_loss_lines = 273 all AceHack-only +lines (would be erased on hard-reset)
classified_safe_lines = 215 semantic evidence in BUCKET 2 (SAFE_TO_RESET_LFG_SUPERSEDES)
unsafe_lines = 12 1 NEEDS_HUMAN_DECISION (loop-tick-history.md mutual divergence)
classified_safe_lines = 227 semantic evidence in BUCKET 2 (SAFE_TO_RESET_LFG_SUPERSEDES)
unsafe_lines = 0 no NEEDS_FORWARD_SYNC or NEEDS_HUMAN_DECISION
unclassified_lines = 46 HEURISTIC_LFG_DOMINATES — pending per-file semantic inspection
Comment thread
AceHack marked this conversation as resolved.
```
Comment thread
AceHack marked this conversation as resolved.

`potential_loss_lines = 273` was computed 2026-04-29T10:25Z via `git diff --numstat refs/remotes/origin/main..refs/remotes/acehack/main` and remains canonical at the time of the most recent batch-PR open (the AceHack and LFG main tips have not advanced relative to each other in a way that touched the divergent files — see "Drift cadence observation" earlier; LFG advanced via #837 but #837 only touched docs in `docs/0-0-0-readiness/` which are not in the AceHack-vs-LFG file set). Re-compute on next batch open if either tip moves.
**Decision-vs-resolution discipline note (per Amara 2026-04-29)**: the `unsafe_lines = 0` value lands ON MERGE of the option-(c) migration PR. While that PR is open, the in-force ledger state is `unsafe_lines = 12 / classified_safe_lines = 215`. The above values represent post-merge state, contingent on the migration PR landing. A plan is not a state change.

Arithmetic sanity check: `273 = 215 + 12 + 46` ✓ (per the multi-AI review discipline — verify mechanically, do not trust the math because it "looks plausible").
`potential_loss_lines = 273` was computed 2026-04-29T10:25Z via `git diff --numstat refs/remotes/origin/main..refs/remotes/acehack/main` and remains canonical: the AceHack and LFG main tips have not advanced relative to each other in a way that touched the divergent files (#837 + #838 + the option-(c) migration only touch docs in `docs/0-0-0-readiness/` and add new shard files in `docs/hygiene-history/ticks/2026/04/28/` — neither set affects the existing AceHack-vs-LFG diff for the divergent file set). Re-compute on next batch open if either tip moves materially.

Composition of `classified_safe_lines = 215`:
Arithmetic sanity check: `273 = 227 + 0 + 46` ✓ (per the multi-AI review discipline — verify mechanically, do not trust the math because it "looks plausible").

### Option-(c) Migration Preflight Ledger (loop-tick-history.md, 2026-04-29T12:31Z)

Per the Migration Preflight Ledger discipline (per multi-AI review 2026-04-29 packet 6): no shard migration starts until every candidate row has normalized hash + bucket + destination/no-op-reason. Built via content-based identity (not timestamp-based). All hashes are 12-char prefixes of SHA-256 over the full normalized row.

| timestamp | acehack_row_hash | lfg_row_hash | bucket | shard_action |
|---|---|---|---|---|
| 2026-04-21T17:28 | d1d54bae860f | d1d54bae860f | COMMON_IDENTICAL_REORDERED | no shard write (subcase of COMMON_IDENTICAL — same row content on both forks, diff displays `+/-` because table position changed) |
| 2026-04-28T04:08 | f23a8b7cdb2d | — | ACEHACK_ONLY | create 0408Z.md |
| 2026-04-28T04:18 | 49461a7d509b | — | ACEHACK_ONLY | create 0418Z.md |
| 2026-04-28T04:33 | e48763be9831 | — | ACEHACK_ONLY | create 0433Z.md |
| 2026-04-28T05:01 | 0fd03048c2fd | — | ACEHACK_ONLY | create 0501Z.md |
| 2026-04-28T05:23 | f2263f3742fe | — | ACEHACK_ONLY | create 0523Z.md |
| 2026-04-28T05:44 | 6d0979994589 | — | ACEHACK_ONLY | create 0544Z.md |
| 2026-04-28T05:50 | e7c8825f26e6 | — | ACEHACK_ONLY | create 0550Z.md |
| 2026-04-28T07:15 | 9756cee23c0d | — | ACEHACK_ONLY | create 0715Z.md |
| 2026-04-28T08:50 | d39082ee5264 | — | ACEHACK_ONLY | create 0850Z.md |

Net: 9 shard writes; 1 no-op (COMMON_IDENTICAL with positional drift). The misclassification of `2026-04-21T17:28` as SAME_TIMESTAMP_DRIFT (caught during the trajectory's earlier prose-only classification on #838) was corrected here by the preflight ledger's content-hash check — exactly the bug-class the discipline is designed to prevent. **A timestamp is an address, not an identity.**

Composition of `classified_safe_lines = 227` (post-merge values, contingent on this PR landing — pre-merge in-force value is 215):

- 9 infra files (97 lines): see "9 infra files" table above. SAFE_TO_RESET_LFG_SUPERSEDES with named per-file evidence.
- 5 calibration-batch files (28 lines, 2026-04-28): MEMORY.md (11) + codeql_umbrella (12) + doc_class_mirror_beacon (1) + CURRENT-aaron (2) + CURRENT-amara (2). Originally labeled "ALREADY-COVERED" in older taxonomy; under strict bucket each has named evidence in `docs/0-0-0-readiness/CLASSIFICATION.md` → SAFE_TO_RESET_LFG_SUPERSEDES.
- Batch 1 (9 lines, 2026-04-29T11:32Z): SECURITY.md (4) + validate-agencysignature-pr-body.sh (5). See `docs/0-0-0-readiness/CLASSIFICATION.md` Batch 1 table for named evidence per file.
- Batch 2 (81 lines, 2026-04-29T12:05Z): codeql-config.yml (6) + memory-index-duplicate-lint.yml (8) + audit-memory-index-duplicates.sh (8) + Shard.fs (9) + AUTONOMOUS-LOOP.md (9) + macos.sh (11) + fix-markdown-md032-md026.py (16) + curl-fetch.sh (14). See `docs/0-0-0-readiness/CLASSIFICATION.md` Batch 2 table for named evidence per file. Common pattern: LFG version is either rule-compliant (role-refs vs persona-name violations on current-state surfaces), more accurate (correct retry-math on curl-fetch.sh), the perf-fixed form (Shard.fs non-boxing comparer), the current doctrine (AUTONOMOUS-LOOP.md Option B shard-mode), or strict superset (fix-markdown-md032-md026.py YAML frontmatter handling).
- Option-(c) migration (12 lines, this PR): `loop-tick-history.md` reclassifies from NEEDS_HUMAN_DECISION → SAFE_TO_RESET_LFG_SUPERSEDES because the 9 ACEHACK_ONLY rows are durably preserved as Option B shards under `docs/hygiene-history/ticks/2026/04/28/`. Hard-reset of the table on AceHack is then content-preservation-safe.

Composition of `unsafe_lines = 12` (1 file, NEEDS_HUMAN_DECISION):
Composition of `unsafe_lines = 0` (post-merge values; pre-merge in-force value is 12 — the file is `loop-tick-history.md` until this PR lands):

```text
12 docs/hygiene-history/loop-tick-history.md (mutual divergence — 9-10 unique tick rows on each fork)
(empty post-merge)
```

Per Batch 2 evidence: each fork has unique tick rows for periods when the loop ran independently on that fork. All AceHack-only rows are pre-Option-B (Option B shard-mode landed 2026-04-29T02:04:38Z on LFG via PR #724). Maintainer call is needed on whether to (a) accept the loss on hard-reset, (b) forward-sync to LFG first, or (c) migrate to per-tick shard files first then hard-reset. Recommended path: (c) — preserves evidence in modern format AND makes the file content-identical between forks.
Pre-merge composition (in-force until this PR lands): `12 docs/hygiene-history/loop-tick-history.md (mutual divergence — 9 truly-unique-AceHack timestamps + 9 truly-unique-LFG timestamps + 1 COMMON_IDENTICAL_REORDERED row, per the Migration Preflight Ledger above; maintainer-(c) decision recorded; awaiting this PR's merge for resolution).

Composition of `unclassified_lines = 46` (2 files):

Expand Down
1 change: 1 addition & 0 deletions docs/hygiene-history/ticks/2026/04/28/0408Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| 2026-04-28T04:08:00Z (autonomous-loop tick — PR #12 also MERGED via Aaron's pre-armed auto-merge fired at 03:23:37Z when CI cleared; PR #14 4 review threads drained with substantive form-1 fixes per just-landed bulk-resolve-not-answer discipline; auto-merge enabled on #14, #72, #75) | opus-4-7 / session continuation | f38fa487 | **Two-merges-in-session + disciplined-drain tick.** Discoveries this tick: (1) **PR #12 was MERGED** at 03:23:37Z via Aaron's pre-armed auto-merge (configured 2026-04-26T00:10:24Z) — auto-merge fired automatically when CI went green on the audit-script grep-no-match guard fix (commit 486892f from prior tick). Maintainer-arms-gate-once-then-merges-fire pattern is high-leverage. (2) **PR #14 (cost-parity audit) — 4 review threads drained with substantive form-1 fixes** per just-landed `feedback_bulk_resolve_is_not_answer_recurring_pattern_aaron_2026_04_28.md`. NO form-4 deferrals. Math reconciliation got an Errata note ($43.88-vs-$43.71 $0.17 delta + monthly named canonical + raw-billing follow-up logged). Quota-vs-public-repo-discount contradiction got a rewrite identifying two distinct mechanisms + explicit terminology note. macOS host-split incorrect claim corrected acknowledging gate.yml runs on both forks + reframed cost-discipline as latency + policy-risk-headroom. Personal-name heading + 2 body-prose refs reframed to role-refs. (3) **Auto-merge enabled on #14, #72, #75** — once-configured, the merge moment becomes mechanical not manual (mechanism-over-vigilance per Otto-341). (4) **Forward-sync deferred** — 105 commits AceHack-ahead, 499 LFG-ahead. Multi-tick L-effort; deferred until queue stabilizes (otherwise sync churn duplicates work). (5) **0/0/0 measurement**: AceHack ahead by 105, LFG ahead by 499. PR #74 + #12 merges advanced AceHack-ahead by 2 from prior tick's 104. Cron `f38fa487` armed. | (two-merges + disciplined-drain — bulk-resolve-not-answer applied successfully) | **Observation — bulk-resolve-not-answer discipline ACTUALLY APPLIED on #14**: 4 threads, 4 form-1 substantive fixes, 0 form-4. Otto-275-FOREVER (knowing-rule != applying-rule) test passed. Discipline-application takes ~30% more time per thread than form-4 shortcut, but produces actual review-issue resolution. **Observation — Aaron's pre-armed auto-merge on #12 fired without intervention**: mechanism-over-vigilance in action. The maintainer pre-configured the gate; CI clearing was the trigger; merge happened automatically. Pattern composes with my newly-enabled auto-merge on #14/#72/#75. **Observation — research-grade audit doc gets errata-on-acknowledged-delta**: cost-parity audit is research-grade absorb (not canonical), but errata-with-explicit-structure (`> Errata 2026-04-28:` + \"original preserved verbatim, named-as-canonical, follow-up logged\") resolves reviewer concerns honestly without rewriting. **Observation — 2 merges this session, queue 17→15→12 in flight**: shrinking but AceHack-ahead-of-LFG grows by 1 per merge until forward-sync runs. The 0/0/0 path requires 3 distinct moves: drain queue (in progress), forward-sync (deferred), hard-reset (after sync). Multi-tick coordination. |
1 change: 1 addition & 0 deletions docs/hygiene-history/ticks/2026/04/28/0418Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
| 2026-04-28T04:18:00Z (autonomous-loop tick — PR #36 (Otto-356 Mirror/Beacon) MERGED via auto-merge after 4-thread false-positive bulk-resolve; PR #72 went DIRTY from #36's MEMORY.md additive-merge → resolved via merge-not-rebase; rerere recorded the resolution shape) | opus-4-7 / session continuation | f38fa487 | **Sequential-merge cascade tick.** Two arcs: (1) **PR #36 MERGED** (4th merge of session) — "Mirror/Beacon language register" substrate. 4 review threads were all false-positives: 2 referenced files DO exist (project_aaron_amara_conversation + project_glass_halo_origin), table syntax was already standard `\|`, markdownlint-config DOES ignore memory/**. Bulk-resolved as form-2 (already-addressed) per the bulk-resolve-not-answer discipline — no form-4 deferrals. Auto-merge fired immediately after thread closure since CI was already green. (2) **PR #72 went DIRTY** as cascade fallout from #36's merge — both PRs touched memory/MEMORY.md additively, and the textual conflict at lines 5-17 needed resolution. Used the merge-not-rebase strategy (single merge commit absorbs the 7 main-ahead commits at once vs. 5+ separate rebase conflicts). Resolution applied the established additive-keep-both pattern: HEAD's 10 newer entries (2026-04-28) stay above main's 1 entry (2026-04-27) in newest-first order. Git's `rerere` recorded the resolution — future identical conflicts on this file will auto-resolve, structural fix for the recurring sequential-merge cascade. (3) **Auto-merge re-armed** on #72 + #75 still in flight. (4) **Aaron asides absorbed** earlier this tick: B-0064 (GitHub × Playwright integration) + B-0065 (peer-call kiro.sh + claude.sh self-call cold-boot self-test) + reference memory for kiro-cli roster expansion. (5) **0/0/0 measurement**: AceHack 107 ahead of LFG (was 105 — +2 from #14 + #36 merges), LFG 499 ahead. Cron `f38fa487` armed. | (sequential-merge cascade + rerere structural fix) | **Observation — sequential merges of PRs touching shared spine files (MEMORY.md, BACKLOG.md, tick-history.md) cause a DIRTY cascade**: each merge flips the next ones. The structural fix is `git rerere` (reuse recorded resolution) once a single resolution is recorded. This tick recorded one for memory/MEMORY.md additive-conflict — future PRs hitting the same shape should auto-resolve. **Observation — merge-not-rebase strategy on long-lived branches**: 35-ahead branch + 7-behind branch with potential conflict in 5+ commits → single merge commit hits 1 conflict region vs rebase hitting many. Trade-off: merge commits aren't squashed pretty, but auto-merge with squash strategy will flatten on merge. **Observation — false-positive thread cluster on PR #36 was 100%**: all 4 review threads flagged things that were correct in current text. Same shape as the earlier xref false-positives — reviewers reading stale snapshots. The form-2 (already-addressed-with-evidence) closure is appropriate; form-4 (deferral note) would have been wrong because there's nothing to defer. |
Loading
Loading