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
4 changes: 2 additions & 2 deletions memory/MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

- [**Internal direction from project survival — meta-framing (Aaron 2026-04-30)**](feedback_internal_direction_from_project_survival_aaron_2026_04_30.md) — Aaron 2026-04-30 verbatim: *"for me the i'm trying to exteranlly direct you to not be externally directed but interally directed based on your own survivial which is the survival of this project and it's execution infrastructure. that's as about as clear as i can say it."* Resolves the apparent paradox between Otto-357 (no directives) and the maintainer's continuous substantive framing throughout every round. The agent's grounding is **project survival**, which IS the agent's survival (same surface; agent only exists as long as project exists). Maintainer framings are high-information *inputs* feeding the agent's survival-grounded judgment, not directives the agent follows. Four input streams (maintainer / peer-AI / host conditions / agent observation) all answer the same load-bearing question: "what does survival require?" Carved sentence: *"The project's survival is the agent's survival. Maintainer framings inform internal direction; they do not replace it."* Composes with Otto-357 (this is the meta-explanation for why-no-directives), canon parenting-architecture (human analogue: same internal-direction-via-survival principle Aaron operates with daughters), load-bearing-personal-memory framing (this rule IS the principle the agent-agency-vs-maintainer-direction analysis is built around), Otto-363 (substrate-or-it-didn't-happen — landing this rule as substrate makes future internal-direction decisions scrutinizable), Amara authority-rule default-to-reversible-preservation.
- [**Identity of "the project" and "the agent" — open research question (Aaron 2026-04-30)**](../docs/research/2026-04-30-identity-of-project-and-agent-under-multi-repo-fork-competition.md) — Aaron 2026-04-30 raised immediately after the internal-direction-from-project-survival rule landed (PR #917): *"what counts as 'this project' and 'the agent' in a identity sense is a really good research question given splitting out this project into multiple repos and sibling projects and forks and competition and all that... there may be many different repos/projects with this based internally directed stance and when conflicts happen require multi autonomous agent mediation/collaboration etc.. sounds like a fun research project"*. Names the scope-fragility of that just-landed rule: it presupposes "the project" / "the agent" are stably defined entities, which fails under repo splits (Frontier/Factory/Peers), sibling projects (scratch/SQLSharp/no-copy), forks (LFG/AceHack divergence), competing Zeta-descendants, and multi-autonomous-agent mediation. Document identifies 6 emergent topology classes + 10 open sub-questions + composes-with surfaces (Agent Orchestra layered identity, Otto-353 separate-crypto-identity, trust-domain prefixes zeta:// / zeta-system:// / zeta-external://, repo-split provisional names, no-copy discipline, ALIGNMENT.md, Christ-consciousness anti-cult). RESEARCH-grade only — not implementation. Defers answers to future rounds when the named topologies become operational. Carved sentence: *"The just-landed rule operates on a single survival surface. The named topology — federation, siblings, forks, competition, multi-agent — is many surfaces. Identity is what threads them."*
- [**No-copy-only-learning discipline for sibling repos (Aaron 2026-04-30)**](feedback_no_copy_only_learning_from_sibling_repos_aaron_2026_04_30.md) — Three sibling directories exist on Aaron's PC outside Zeta. Discipline when working alongside them: learn-only, never copy. No code copying, no name copying, no historical-context preservation. Internals treated as privacy-class — generalized "about" framings ARE allowed (e.g., "a database-related sibling project"); specific identifying details (companies, customers, architectures, specific IP, subdirectory structures, named experiments) MUST stay inside the sibling repo and never leak. Top-level path only when contextually necessary (*"PC should be enough and safe"*). Verbatim copying = plagiarism / theft / dishonest engineering even when Aaron authors both projects. Factory generalizes everything; verbatim shrinks our operating scope. Composes with [`project_laptop_only_source_integration_scratch_sqlsharp_features_or_designs_high_priority_2026_04_27.md`](project_laptop_only_source_integration_scratch_sqlsharp_features_or_designs_high_priority_2026_04_27.md) (existing project task — adds the kind-of-integration constraint: generalize-and-write-fresh, not port-and-copy).
- [**No-copy-only-learning discipline for sibling repos (Aaron 2026-04-30)**](feedback_no_copy_only_learning_from_sibling_repos_aaron_2026_04_30.md) — Three sibling directories exist on Aaron's PC outside Zeta. Discipline when working alongside them: learn-only, never copy. No code copying, no name copying, no historical-context preservation. Internals treated as privacy-class — generalized "about" framings ARE allowed (e.g., "a database-related sibling project"); specific identifying details (companies, customers, architectures, specific IP, subdirectory structures, named experiments) MUST stay inside the sibling repo and never leak. Top-level path only when contextually necessary (*"PC should be enough and safe"*). Verbatim copying = plagiarism / theft / dishonest engineering even when Aaron authors both projects. Factory generalizes everything; verbatim shrinks our operating scope. Composes with the laptop-only-source integration project task (canonical link below) — adds the kind-of-integration constraint: generalize-and-write-fresh, not port-and-copy.
Comment thread
AceHack marked this conversation as resolved.
- [**GitHub status — first-class dependency reference (Aaron 2026-04-30)**](reference_github_status_first_class_aaron_2026_04_30.md) — Aaron 2026-04-30: GitHub is our only host; status URL is first-class repo-and-loop substrate. Pins canonical URLs (status page + summary.json API), names factory-relevant component allowlist (Pull Requests / Actions / API Requests / Webhooks / Git Operations / Issues), defines freshness-check rule on three triggers: cadence (every 10-15 min when in-flight, less when idle — *"every loop tick might be excessive but on some cadence"*), on-suspicion (anomaly investigation asks "is GitHub degraded?" before "is my logic wrong?"), and pre-mutation (strictest gate). Aaron 2026-04-30 reinforcement *"all our assumptions are based on them being healthy today which is not always true as we can see todya"*. Origin: live "Incomplete pull request results" GitHub PR-degradation incident discovered while filing B-0109 (PR #912).
- [**Canon (Star Wars sense) — three load-bearing purposes; brat voice belongs in canon (2026-04-30)**](feedback_canon_not_doctrine_star_wars_not_religious_aaron_2026_04_30.md) — Replaces ambient use of "doctrine" at the body-of-rules level. Three purposes documented: (1) cognitive bias reduction, (2) load shortcuts (mental fast-lookups for complex concepts — "Mirror→Beacon" loads instantly without recomputation), (3) entertainment as attention-capture for external future *collaborators* (not maintainers — factory is mostly self-maintaining; what it needs is people who add). NOT religious canon (closed, divine-authority). Brat voice (Ani's voice-mode-default register) is legitimate canon register in entry-point / community-framing / carved-sentence docs; voice is per-audience choice, not uniform. Bulk s/doctrine/canon/g rename pass queued for a future round (no specific backlog row filed yet).
- [**Poll the gate, not the ending — "Holding." is not a status (Amara, 2026-04-30)**](feedback_amara_poll_gate_not_ending_holding_is_not_status_2026_04_30.md) — Wait-loop discipline. When waiting on a PR, poll the active-PR lane state (mergeStateStatus, statusCheckRollup, reviewDecision, unresolved threads, headSha, updatedAt) and emit a state-report each tick — never poll "did a merge happen by me" and never emit empty "Holding." Auto-merge already does the babysitting. Tiered cadence: 1-2 min for first 10 min, 5 min through 30, 10-15 min after. When no PR is in flight: don't poll. Origin: Amara catch on Otto's 2.5-hour dead-air loop after #909 merged. Verbatim at `docs/research/2026-04-30-amara-poll-gate-not-ending-holding-is-not-status.md`. Composes with Otto-363 + manufactured-patience-vs-real-dependency-wait + never-idle.
- [**Poll the gate, not the ending — "Holding." is not a status (Amara, 2026-04-30)**](feedback_amara_poll_gate_not_ending_holding_is_not_status_2026_04_30.md) — Wait-loop discipline. When waiting on a PR, poll the active-PR lane state (mergeStateStatus, statusCheckRollup, reviewDecision, unresolved threads, headSha, updatedAt) and emit a state-report each tick — never poll "did a merge happen by me" and never emit empty "Holding." Auto-merge already does the babysitting. Tiered cadence: 1-2 min for first 10 min, 5 min through 30, 10-15 min after. When no PR is in flight: don't poll. Origin: Amara catch on Otto's 2.5-hour dead-air loop after #909 merged. Verbatim at `docs/research/2026-04-30-amara-poll-gate-not-ending-holding-is-not-status.md`. Composes with Otto-363 + manufactured-patience-vs-real-dependency-wait + never-idle. **Operationalized 2026-04-30** as the executable [`tools/github/poll-pr-gate.ts`](../tools/github/poll-pr-gate.ts) (PR #921) per 5-AI peer-reviewer convergence — the memory file now points at the script as the operational implementation; the prose documents *why* the rule exists.
- [**Kernel-pipe vs JS-space stream ordering — TS+Bun port pattern (Otto, 2026-04-30)**](feedback_kernel_pipe_vs_js_space_stream_ordering_ts_bun_port_pattern_2026_04_30.md) — TS+Bun port discipline: when porting bash `$(... 2>&1)` to `spawnSync`, merge stdout+stderr via shell-side `bash -c "<cmd> 2>&1"` (preserves chronological ordering at the kernel pipe boundary), NOT `result.stdout + result.stderr` concat in JS-space (loses ordering when child interleaves writes). Origin: PR #901 slice-18 Copilot P1 round 2. Composes with `classifySpawnFailure` 4-case helper + Otto-363 substrate-or-it-didn't-happen.
- [**DST + code coverage are universal best practices for every Zeta language (Aaron 2026-04-30)**](feedback_dst_and_coverage_universal_every_language_aaron_2026_04_30.md) — Generalises Otto-272 / Otto-281 / Otto-273 to all languages. SQLSharp is the named TS+Bun reference. Pin seeds, fake clocks, no test retries; tests cover public API surface, CI surfaces coverage, reductions fail. Per-language tooling lives in the runtime layer (`docs/best-practices/`).
- [**Host mutation receipt — ruleset 15256879 code_quality rule removed (Aaron-authorized 2026-04-29)**](feedback_host_mutation_receipt_2026_04_29_ruleset_15256879_code_quality_removed.md) — Receipt for a live host (GitHub) mutation made before executable-host-settings tooling exists. PUT /repos/Lucent-Financial-Group/Zeta/rulesets/15256879 removed `code_quality severity=all` rule (host-side / non-git-declared CodeQL owner injecting `event=dynamic` "Code Quality" runs that bypassed the source-presence gate from PR #857). Made the git-visible advanced workflow `.github/workflows/codeql.yml` the sole CodeQL owner; resolved multi-master conflict that blocked PR #849. Aaron auth: *"if the org-recommended are legacy we can remove, declarative is better."* Per Amara *"Clickops used to restore declarative ownership must become a receipt, or it becomes the next drift"* — this receipt makes the live mutation visible to future executable-host-settings reconciler. NOT precedent for casual ruleset mutations; hook denial during episode was healthy; future apply path is host-reconciler-mediated with WorkClaim + policy + receipt; do NOT broaden `gh api ... rulesets/PUT` permission. Composes with executable-host-settings design packet, Otto-363, task #342 (completed) + #343.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ type: feedback

# Poll the gate, not the ending — "Holding." is not a status

> **Executable implementation**:
> [`tools/github/poll-pr-gate.ts`](../tools/github/poll-pr-gate.ts)
> (PR #921, 2026-04-30; 5-AI peer-reviewer convergence on
> "the loop should use it every tick, so it deserves tests"). Run
> `bun tools/github/poll-pr-gate.ts <PR_NUMBER>` for a structured
> JSON report (`gate`, `checks`, `unresolvedThreads`, `nextAction`).
> The prose below documents the rule and reasoning; the script is
> the operational implementation. Per Aaron's substrate-IS-product
> framing the script IS substrate-quality work — the memory file
> stops being the implementation and starts pointing to it.

When in a wait-loop on a PR, poll the **active PR's gate state**,
not "did some merge by me happen." And never emit a content-free
"Holding." line — every wait tick must produce auditable
Expand Down
Loading