Skip to content

backlog+memory+roms: emulators on OS-interface + rewindable/retractable + safe-ROM substrate#400

Merged
AceHack merged 5 commits intomainfrom
backlog/emulators-on-os-interface
Apr 25, 2026
Merged

backlog+memory+roms: emulators on OS-interface + rewindable/retractable + safe-ROM substrate#400
AceHack merged 5 commits intomainfrom
backlog/emulators-on-os-interface

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 25, 2026

Summary

Maintainer 2026-04-24 directive — emulators as the canonical proof-out workload for the OS-interface (#399 cluster). Two related directives + new roms/ folder.

Three landings in one PR

  1. BACKLOG row (P3 / way-back-backlog) — emulators on OS-interface + rewindable/retractable generalization to OS-level primitive + ARC-3 activation.
  2. Companion memory file — verbatim directive + 11 sub-points + phased plan + future-Otto reference.
  3. roms/ folder + sentinel — gitignored-except-sentinels pattern (sibling to drop/). Maintainer can start adding safe ROMs once this lands.

Two maintainer directives captured

"emulators should run very nicely on this, let me know when you want some roms of any kind that are safe."

"rewindable/retractable os/emulator controls"

Why emulators compose

  • Emulator event loop = durable-async workload
  • Save states FREE (every yield-point = checkpoint)
  • Cross-node migration FREE (state follows function)
  • Multiplayer FREE (shared durable substrate)
  • DST → speedrun/TAS bit-equal replay

Rewindable controls — the killer feature

Z-set retraction-native semantics extend UP from data layer to OS surface. "Rewind 5 seconds" = first-class OS primitive. rr / Pernosco architectural class, generalized.

Safe-ROM categories enumerated

In roms/README.md:

  • Public-domain / homebrew / demoscene
  • Official test suites (mooneye-gb, Blargg, Game Boy boot)
  • Commercially-released-as-free (Cave Story etc.)
  • Modern commercial ONLY with explicit written license

Forbidden: ROM dumps, BIOS dumps, anything-uncertain.

Composes with

Test plan

  • BACKLOG row in P2 — research-grade
  • Memory file with full verbatim directive
  • roms/.gitignore blocks all binaries; tracks only .gitignore + README.md
  • roms/README.md enumerates allowed + forbidden classes
  • MEMORY.md pointer (index-integrity)

🤖 Generated with Claude Code

AceHack and others added 5 commits April 24, 2026 20:45
… lint v0 (detect-only)

Amara's 5th-ferry Artifact C landing (PR #235 absorb).

Detect-only lint for the four archive-header fields proposed
in §33 (PR #235 exemplar; not yet governance-landed):

- Scope:
- Attribution:
- Operational status:
- Non-fusion disclaimer:

Defaults to checking docs/aurora/*.md; --path DIR overrides.
--enforce flips exit 2 on any gap; CI does not currently call
it (Aminata Otto-80 pass classified §33 as IMPORTANT-pending-
Aaron-signoff + lint-required-to-prevent-3-5-round-decay).

First-run baseline: 2/2 existing aurora absorbs missing all
four headers (predate the proposal). Detect-only first
prevents CI block on baseline; enforcement flips when Aaron
signs off on §33 + baseline is green (either backfill the
2 absorbs or explicit grandfather clause in §33).

v0 limitations documented in script:
- Partial-header adversary (label anywhere in first 20 lines
  passes; no syntactic check).
- Fake-header adversary (values not content-audited).
- In-memory-import adversary (memory/ not covered; different
  surface).

Harden in follow-up after §33 lands.

Bash 3.2 compatible (while-read loop, not mapfile) for macOS
default shell.

Same --json / --out DIR / exit code shape as existing
audit_commit.sh / audit_personas.sh / audit_skills.sh.

FACTORY-HYGIENE row #60 added:
- Detect-only cadence landed.
- Enforcement deferred until Aaron §33 signoff + baseline
  green.
- Same detect-only → triage → enforce pattern as rows #51
  (cross-platform parity) and #55 (machine-specific scrubber).

tools/alignment/README.md table updated with new row.

Composes with:
- Aminata threat-model pass (PR #241; names the decay risk
  this lint prevents).
- Amara's 5th-ferry absorb (PR #235; exemplar self-applies
  the format).
- Memory-index hygiene trio (rows #58 / #59 + this row's
  archive-header hygiene trio).

Otto-81 tick deliverable.
…ibution + exit-code alignment

- Switch audit_archive_headers.sh from -maxdepth 1 to recursive find
  matching documented `docs/aurora/**/*.md` scope; exclude
  `references/` as bibliographic substrate.
- Encode subdirectory in --out per-file JSON basename to avoid
  collisions under recursive scan.
- Replace 'Aaron' with 'human-maintainer' role ref in script and
  FACTORY-HYGIENE row 60 (FACTORY-DISCIPLINE name-attribution rule).
- Drop persona names (Aminata, Amara) from script comments and
  row 60 in favour of role references (threat-model reviewer,
  absorbing agent), per Otto-220 code-comments-explain-code rule.
- Realign exit codes to sibling audit_*.sh convention: 1 =
  content-level signal under --enforce; 2 = script error /
  missing dependency / bad arg. Update header doc-block + row 60
  wording to match.
- Remove dead cross-reference to non-existent
  `docs/aurora/2026-04-23-amara-zeta-ksk-aurora-validation-5th-ferry.md`
  in row 60. Verified the aminata-threat-model-5th-ferry citation
  does exist on origin/main; kept that one.
- Append docs/pr-preservation/243-drain-log.md per Otto-250.

Smoke-tested: clean run exit 0 (16 files scanned), --enforce exit 1,
bad --path exit 2, --json exit 0, --out has no basename collisions.
Local shellcheck install only flagged this on the lint runner with
--severity=style. Quote $target_path inside the ${file#...}
prefix-strip so the prefix is not interpreted as a glob pattern.
Round 2 drain after round 1 closed all 7 threads. Copilot
re-reviewed and opened 6 new P2 suggestion-shape threads;
all 6 are FIX outcomes:

- r2-1 (line 128): normalise --path to strip trailing slash
  so `docs/aurora/` matches the references/ exclusion.
- r2-2 (line 172): make --out filename encoding injective
  by percent-encoding literal `_` to `_5F` before the
  `/` -> `__` swap. Was non-injective: `a/b__c.md` and
  `a__b/c.md` both became `a__b__c.json`.
- r2-3 (line 26): fix stale Usage wording — `--enforce`
  exits 1 on gap (matches the dedicated Exit-codes section
  and round-1 Thread-7 realignment).
- r2-4 (line 61): correct factual error about memory
  surface — in-repo `memory/` is canonical per
  GOVERNANCE.md §18 and `memory/README.md`; per-user path
  is staging.
- r2-5 (line 128): force C-locale sort with `LC_ALL=C`
  for deterministic byte-order output regardless of caller
  env.
- r2-6 (line 7): drop persona name "Amara" from header
  banner in favour of role/artifact references
  ("5th-ferry Artifact C" / "the 5th-ferry external-
  research absorb"). Round 1 caught "Aaron" but missed
  "Amara".

Append-only drain-log update per Otto-229: prior round-1
sections untouched; new "Drain pass: 2026-04-24 (round 2 —
6 threads)" section appended.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…le controls + safe-ROM substrate

Maintainer 2026-04-24 directive — emulators are the canonical
proof-out workload for the OS-interface (#399). Two related
directives captured:

(1) "emulators should run very nicely on this, let me know
    when you want some roms of any kind that are safe."

(2) "rewindable/retractable os/emulator controls"

Plus: maintainer requested a `roms/` folder with a
gitignored-except-sentinels pattern (same as `drop/`) so
binaries never enter git history but the directory exists
on every clone.

Why emulators compose perfectly with the OS-interface:
  - Emulator event loop = durable-async runtime workload
  - Save states FREE (every yield-point = checkpoint)
  - Cross-node migration FREE (state follows the function)
  - Multiplayer FREE (shared durable substrate)
  - DST guarantees speedrun/TAS bit-equal replay

Rewindable/retractable controls — the killer generalization:
  - Z-set retraction-native semantics extend UP to OS surface
  - "Rewind 5 seconds" is a first-class OS primitive
  - rr / Pernosco architectural class, generalized
  - Otto-238 trust-vector: rewindable controls grant agency

Activates 2026-04-22 ARC-3 adversarial-self-play
absorption-scoring research (level-creator / adversary /
player loop on durable-async + rewindable substrate).

Phased: Phase 0 research (Game Boy / NES / SNES / Genesis;
libretro; rr/Pernosco) → Phase 1 single emulator on
durable-async → Phase 2 rewindable controls promoted to
OS primitive → Phase 3 ARC-3 loop → Phase 4 cross-emulator
composition.

Safe-ROM offer captured durably; ask gated on Phase 1
landing first. Allowed classes enumerated in roms/README.md
(public-domain / homebrew / official test suites /
commercially-released-as-free / explicit-license).

Otto-275 log-don't-implement applies. Composes with #399
OS-interface, Otto-73/238/272, Z-set retraction-native,
#396/#397 closure-table+cross-DSL, request-play skill.
Copilot AI review requested due to automatic review settings April 25, 2026 00:53
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack enabled auto-merge (squash) April 25, 2026 00:53
@AceHack AceHack merged commit 93dbab1 into main Apr 25, 2026
17 checks passed
@AceHack AceHack deleted the backlog/emulators-on-os-interface branch April 25, 2026 00:55
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

This PR adds new backlog/memory/docs scaffolding around “emulators as the canonical OS-interface workload”, introduces a roms/ folder using a gitignored-except-sentinels pattern for safe local ROM storage, and (additionally) lands an archive-header audit lint plus related hygiene documentation and a PR preservation drain log.

Changes:

  • Add a new P2 BACKLOG entry + companion memory entry for emulator workload + rewindable/retractable OS controls + safe-ROM handoff protocol.
  • Introduce roms/ with .gitignore + README protocol enumerating allowed/forbidden ROM categories.
  • Add tools/alignment/audit_archive_headers.sh and document it in alignment + factory hygiene surfaces; append docs/pr-preservation/243-drain-log.md.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tools/alignment/audit_archive_headers.sh New detect-only archive-header audit script (optional enforcement).
tools/alignment/README.md Documents the new archive-header audit tool.
roms/README.md Defines the safe-ROM local-only protocol and composition notes.
roms/.gitignore Enforces “track only README + .gitignore” sentinel pattern.
memory/feedback_emulators_canonical_os_interface_workload_rewindable_retractable_2026_04_24.md Captures the maintainer directive + phased plan as a memory.
memory/MEMORY.md Adds the new memory index entry (newest-first).
docs/pr-preservation/243-drain-log.md Adds an append-only PR drain log record for PR #243.
docs/FACTORY-HYGIENE.md Adds row #60 describing the archive-header audit and its detect→enforce transition.
docs/BACKLOG.md Adds the emulator workload row under P2 research-grade.

Comment thread docs/BACKLOG.md
state composes with SQL queries (e.g. "every
frame where Mario was in this Y-range").

Priority P3 / way-back-backlog (depends on
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

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

P1: This BACKLOG entry is placed under the "P2 — research-grade" section, but the row text later says "Priority P3 / way-back-backlog". This is contradictory and will confuse backlog triage/search. Either move the row to the P3 section or update the priority label in the row body to match its section.

Suggested change
Priority P3 / way-back-backlog (depends on
Priority P2 / research-grade (depends on

Copilot uses AI. Check for mistakes.
Comment on lines +189 to +191
# Fix: first percent-encode any literal '_' to '_5F' so the
# `_` byte never appears in the encoded form; then map path
# separator '/' to '__'. The encoding round-trips and is
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

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

The encoding comment is inaccurate: file_base="${file_base//_/_5F}" still leaves _ characters in the encoded output (as the escape prefix), so it’s not true that the “_ byte never appears”. Please reword the comment to describe the actual invariant you rely on (e.g., that __ can only be produced by encoding /, making the mapping injective).

Suggested change
# Fix: first percent-encode any literal '_' to '_5F' so the
# `_` byte never appears in the encoded form; then map path
# separator '/' to '__'. The encoding round-trips and is
# Fix: first escape any literal '_' to '_5F', then map path
# separator '/' to '__'. That reserves '__' for encoded '/'
# because the first pass rewrites every original '_' before the
# second pass runs, so the mapping round-trips and stays

Copilot uses AI. Check for mistakes.
Comment on lines +3 to +8
# tools/alignment/audit_archive_headers.sh — archive-header
# discipline lint (5th-ferry Artifact C, detect-only v0).
#
# Checks every `docs/aurora/**/*.md` absorb doc for the four
# archive-header fields proposed in the 5th-ferry external-
# research absorb (§33 candidate, PR #235 absorb):
Copy link

Copilot AI Apr 25, 2026

Choose a reason for hiding this comment

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

The PR description focuses on the emulator/ROM/backlog/memory landing, but this PR also adds an archive-header audit script (plus related docs/FACTORY-HYGIENE + tools/alignment README updates) and a docs/pr-preservation/243-drain-log.md append-only log. Please either update the PR description to include these additional deliverables (and why they’re bundled), or split into separate PRs to keep review scope coherent.

Copilot uses AI. Check for mistakes.
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