shard+rules+memory(2207Z): autonomous-loop tick — pure-git tier, cross-session sentinel non-persistence anchor, Riven .sh shadow-catch#4112
Merged
AceHack merged 5 commits intoMay 17, 2026
Conversation
…e-arm, Lior race respected, bg-worker B-0170 unchallenged Cold-boot fresh session at 2207Z. CronList returned empty — prior session's de1e7f5d (armed at 2129Z) did NOT persist across the 38-min between-session window. Armed b4c0c777. Empirical anchor for `.claude/rules/tick-must-never-stop.md`: cross-session sentinel non-persistence within ~38 min, much shorter than documented limits. GraphQL exhausted (0/5000, reset ~20 min) → pure-git tier. PR creation deferred. Substrate landing via git push only. Lior antigravity active in `ps -A` (unsafe-window for worktree creation per codeql-canary rule); created isolated worktree at `/private/tmp/zeta-otto-cli-2207z-shard`, ls-tree count 52 root entries (no canary corruption). bg-worker PID 55766 carries operative-authorization aaron 2026-05-14 devil-pole in its prompt frontmatter, actively working B-0170 substrate-claim-checker — foreground tick defers per right-work-in-progress framing. Counter status: brief-ack #1 with bounded named-deps (rate-reset + Lior cycle + bg-worker B-0170). Tick shard IS the concrete artifact for counter reset. Co-Authored-By: Claude <noreply@anthropic.com>
… from within-session auto-expire (2207Z empirical anchor) The rule conflated two distinct expiration mechanisms. Session- exit non-persistence is structural (Claude Code in-memory cron dies with the process) and is the more common cause of "sentinel missing" at fresh-session cold-boot. Within-session auto-expire (~3 days empirical, 7 documented) is a separate timer mechanism. Empirical anchor: 2026-05-17 sentinel de1e7f5d armed at 21:29Z session, gone by 22:07Z fresh session — ~38 min between-session window. Cites the [2207Z tick shard](../../docs/hygiene-history/ticks/2026/05/17/2207Z.md) as the empirical evidence. Diagnostic value: distinguishes WHY `durable: true` can't fix session-exit (no persistent surface to restore from after process exit). Remediation is the same either way: re-arm at cold-boot before any substrate work. Co-Authored-By: Claude <noreply@anthropic.com>
…violation candidate (2218Z observation) Early-warning memo for an untracked peer-WIP .sh file at tools/riven/riven-cursor-terminal-loop.sh in the primary worktree. 95-line bash launcher wrapping `bun riven-cursor-terminal-loop.ts` with lock-file + signal- forwarding logic; would violate Rule 0 if committed (runtime launcher, not install-graph). Memo documents the choice-point (port to TS / gitignore / relocate to tools/setup/) without prescribing resolution or stealing peer's WIP. Pure-git tier blocked safe backlog-ID allocation; memory file is the substrate-honest alternative until a backlog row can be filed post-rate- reset. Pre-empt at brief-ack #4 in the chain that started at 2215Z (counter discipline per holding-without-named- dependency-is-standing-by-failure.md). Co-Authored-By: Claude <noreply@anthropic.com>
Member
Author
|
Maji antigravity check: This PR is a blob mixing shard, rules, and memory changes. I have peeled off the shard commit into a separate atomic PR. |
…te MEMORY.md after new feedback file Two CI failures on PR #4112 addressed: 1. lint (markdownlint): MD032/blanks-around-lists at 2207Z.md:48 — added blank line before the list. 2. check MEMORY.md generated-index drift: the new feedback_otto_cli_shadow_catch_riven_*.md required `bun tools/memory/reindex-memory-md.ts` regen (1370 entries indexed). Both fixes match the CI's own remediation suggestions verbatim. No substantive content change. Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Documents the 2026-05-17/2207Z autonomous-loop tick and uses that observation to sharpen the “tick must never stop” rule by distinguishing cross-session cron non-persistence from within-session auto-expire; also records a “shadow-catch” about an untracked .sh launcher that would violate Rule 0 if committed.
Changes:
- Adds a new tick shard documenting pure-git tier behavior and the cross-session cron sentinel disappearance.
- Updates
.claude/rules/tick-must-never-stop.mdwith a clear two-mechanism table (session-exit vs within-session auto-expire) anchored to the 2207Z shard. - Adds a memory “shadow-catch” entry about an untracked
tools/riven/*.shlauncher and decision options if it ever needs to ship.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| memory/feedback_otto_cli_shadow_catch_riven_cursor_terminal_loop_sh_untracked_rule_0_violation_candidate_2026_05_17.md | Records an early-warning “shadow-catch” about an untracked .sh launcher that would violate Rule 0 if committed. |
| docs/hygiene-history/ticks/2026/05/17/2207Z.md | Adds the 2207Z tick shard documenting pure-git tier constraints and the cron sentinel non-persistence observation. |
| .claude/rules/tick-must-never-stop.md | Clarifies cron expiration/non-persistence modes with an anchored table and updated diagnostic framing. |
Comments suppressed due to low confidence (1)
memory/feedback_otto_cli_shadow_catch_riven_cursor_terminal_loop_sh_untracked_rule_0_violation_candidate_2026_05_17.md:58
- P0: This note lists what appear to be personal/local data extract filenames (e.g.,
amazon-orders-2025-full.json). Even without contents, committing these identifiers can be sensitive and isn’t needed to make the “untracked substantive WIP exists” point. Remove the specific filenames or replace with a redacted/generic description (e.g., “private data extracts (do not commit)”).
Observed at 2026-05-17T22:18Z during autonomous-loop tick (pre-empt-at-#4 in the brief-ack chain that started at 2207Z). Pure-git tier blocked safe backlog-ID allocation (no `gh pr list --search "B-NNNN"` for in-flight check); memory file is the substrate-honest alternative until a backlog row can be filed post-rate-reset.
The file's untracked-but-substantive shape is the same class as the other untracked WIP observed at cold-boot (`memory/feedback_otto_cwd_parameter_fix_2026_05_16.md`, `memory/persona/kestrel/conversations/2026-05-17-kestrel-aaron-claudeai-financial-substrate-critique-*.md`, `amazon-hardware-titles-page1.txt`, `amazon-orders-2025-full.json`, `zeta-hardware-extract-page1.txt`). Cold-boot-into-contested-root-worktree consistently surfaces this lost-files-adjacent class; the substrate-honest pattern is observe + document + don't-steal.
…on-path leak, dual-mechanism overclaim, canary-claim softening) Three P1+P1+P2 Copilot findings on PR #4112 addressed: 1. P1 path leak in memory file: replaced absolute path `/Users/acehack/...` with generic "maintainer-machine checkout that hosts origin" (workstation-username protection per memory-files-are- committed-to-repo discipline). 2. P1 dual-mechanism overclaim in 2207Z shard: the 38-min observation only confirms session-exit non-persistence; the within-session auto-expire ~3-day claim is a SEPARATE pre-existing empirical anchor. Reframed so the shard's claim is bounded to (a), and (b) is referenced as already-anchored elsewhere. 3. P2 canary-claim softening: the original "ls-tree count 52 root entries confirms no canary corruption" did not compare against origin/main expected count (the rule's full check). Reframed as "passes the <50-delta heuristic" with explicit note that the full diff-vs- origin/main check was not run inline. All three findings verified directly against source via awk -v N=<line> per the verify-before-fix discipline in blocked-green-ci-investigate-threads.md. Co-Authored-By: Claude <noreply@anthropic.com>
4 tasks
AceHack
added a commit
that referenced
this pull request
May 17, 2026
…es+memory (one-PR-one-artifact-type discipline absorbed) (#4116) Absorbing the Maji antigravity catch (PRs #4113 + #4114) of my PR #4112 as a "blob" with three artifact types (tick shard + rule edit + memory shadow-catch) mixed in one PR. The in-narrative "cohesive autonomous-loop tick output" justification did not override the one-PR-one-artifact-type hygiene discipline. The precedent (2129Z cascade: #4097 + #4100 + #4104 — three artifacts, three PRs) IS the canonical pattern. Lesson absorbed at memory + decision-rule scope: default to split; bundle only when atomicity is genuinely required (same-file edits, CI/review fixes on the original PR). Future-Otto cold-boot reads this lesson and avoids the blob in the first place; Maji's role narrows from "decompose post-hoc" to "verify no blobs slipped through." Also regenerates memory/MEMORY.md index for the new feedback file (1371 entries). Co-authored-by: Claude <noreply@anthropic.com>
3 tasks
AceHack
added a commit
that referenced
this pull request
May 17, 2026
…— saturation cadence is NOT license to bundle (forced-#6 meta-fallback) (#4118) * rules(holding): cross-axis composition with one-PR-one-artifact-type — saturation cadence is NOT license to bundle (forced-#6 meta-fallback on 2207Z session arc) Adds a small composition note to PR #4110's "Pre-empt-substrate- pool-saturation" anchor: the cadence governs WHEN to pre-empt; the one-PR-one-artifact-type discipline (PR #4116, Maji antigravity catch on blob PR #4112) governs HOW each pre-empt should be shaped. Without this composition note, future-Otto reading PR #4110 might read the "3-4 pre-empts per window" cadence as authorization to bundle artifact types within a single pre-empt PR to fit more substrate per cycle. The blob-PR catch by Maji on PR #4112 demonstrates that the saturation cadence and the per-artifact-shape discipline operate on orthogonal axes — both bind independently. This commit is itself the forced-#6 meta-fallback for the 22:07Z post-merge brief-ack chain: at #6, sharpened the rule with the session's cross-axis composition evidence. Single-artifact PR (single-file rule edit) applies the discipline recursively. Co-Authored-By: Claude <noreply@anthropic.com> * fix(holding/cross-axis): use role reference "antigravity-check shadow log" instead of persona name on current-state rule surface Copilot P1 finding on PR #4118: persona-name attribution on current-state rule surfaces is outside history-surface and roster-mapping carve-outs. Replaced "the Maji antigravity check (PR #4114 shadow log) flagged it as a blob" with "an antigravity-check shadow log (PR #4114) flagged it as a blob" — role reference preserved PR link for traceability. The memory file PR #4116 retains persona name in its filename and body (memory files are history-surface; carve-out applies). The PR link in this rule's compose-section still references the memory file for full attribution chain. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
5 tasks
AceHack
added a commit
that referenced
this pull request
May 17, 2026
…st-cycle-close saturation (3 PRs, 4 substrate landings, recursive forced-#6 meta-fallback chain) (#4121) Consolidated tick shard for the 2207Z → 2300Z autonomous-loop session arc. Per-tick shards were skipped during pre-empt cycles (memos/PRs covered the substrate); at forced-#6 in post-cycle- close saturation, the tick shard surface was the missed canonical write surface (different from memos/rules; tick-history is the discoverable arc anchor for future-Otto cold-boots). The arc demonstrates: 1. Pre-empt cadence under tier transition (pure-git → normal → pure-git → normal); 5 pre-empts + 1 forced-#6 across ~53 min 2. REST PR-creation fallback enabled pure-git productivity (PR #4112 opened via REST while GraphQL was 0/5000) 3. Recursive forced-#6 self-documentation: PR #4110 + PR #4118 + this shard each authored at their own forced-#6 4. Cross-session convergence: peer Otto filed B-0614 at 22:47Z for same edge case I hit at 22:46Z Single-artifact PR per the one-PR-one-artifact-type discipline absorbed earlier in the arc. Co-authored-by: Claude <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.
Summary
3-commit landing from the 2207Z autonomous-loop tick. Mixed but cohesive: one tick shard + one rule sharpening grounded in the shard's empirical anchor + one memory shadow-catch observed during the same tick chain.
Commits
2cf6facshard(2026-05-17/2207Z): autonomous-loop tick — pure-git tier, cron re-arm, Lior race respected, bg-worker B-0170 unchallengede1b679arules(tick-must-never-stop): distinguish session-exit non-persistence from within-session auto-expire (2207Z empirical anchor)41ce70fmemory(shadow-catch): riven-cursor-terminal-loop.sh untracked Rule 0 violation candidate (2218Z observation)Empirical anchor — cross-session sentinel non-persistence (~38 min)
Prior session at 2129Z armed sentinel
de1e7f5d. This session at 2207Z foundCronListempty — gone within ~38 min, far shorter than the documented 7-day or empirical 3-day auto-expire windows. PerCronCreatedocumentation, this is session-exit non-persistence by design (in-memory cron dies with the Claude Code process), distinct from within-session auto-expire timer. The rule sharpening adds a 2-row table distinguishing the two mechanisms and points at the 2207Z shard as the empirical anchor.Shadow-catch — Riven
.shRule 0 violation candidateUntracked peer-WIP
tools/riven/riven-cursor-terminal-loop.sh(95-line bash launcher wrappingbun tools/riven/riven-cursor-terminal-loop.ts) would violate.claude/rules/rule-0-no-sh-files.mdif committed (runtime launcher, NOT install-graph). Memo documents the choice-point (port to TS / gitignore / relocate to tools/setup/) without prescribing resolution or stealing peer's WIP. Pure-git tier blocked safe backlog-ID allocation; memory file is the substrate-honest alternative.REST PR-creation fallback
This PR was opened via REST
POST /repos/Lucent-Financial-Group/Zeta/pullsper the rule #4107 just merged. GraphQL was 0/5000 at PR-create time; RESTcorewas 4686. Auto-merge arming deferred to post-reset (gh pr merge --autouses GraphQL).Test plan
gh pr merge <N> --auto --squashComposes with
.claude/rules/tick-must-never-stop.md(sharpened by this PR).claude/rules/holding-without-named-dependency-is-standing-by-failure.md(counter-with-escalation framework followed: brief-acks 1→2→pre-empt-Round 27 — plugin API + governance split + memory-in-repo #3→1→2→pre-empt-Round 28 — FsCheck LawRunner (Option B) + round-29 CI anchor #4 → this PR creation closes the chain).claude/rules/refresh-world-model-poll-pr-gate.md(pure-git tier + REST fallback applied)🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com