Conversation
… 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.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
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.shand document it in alignment + factory hygiene surfaces; appenddocs/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. |
| state composes with SQL queries (e.g. "every | ||
| frame where Mario was in this Y-range"). | ||
|
|
||
| Priority P3 / way-back-backlog (depends on |
There was a problem hiding this comment.
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.
| Priority P3 / way-back-backlog (depends on | |
| Priority P2 / research-grade (depends on |
| # 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 |
There was a problem hiding this comment.
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).
| # 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 |
| # 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): |
There was a problem hiding this comment.
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.
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
roms/folder + sentinel — gitignored-except-sentinels pattern (sibling todrop/). Maintainer can start adding safe ROMs once this lands.Two maintainer directives captured
Why emulators compose
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:Forbidden: ROM dumps, BIOS dumps, anything-uncertain.
Composes with
drop/sibling pattern (gitignored-except-sentinels)Test plan
roms/.gitignoreblocks all binaries; tracks only.gitignore+README.mdroms/README.mdenumerates allowed + forbidden classes🤖 Generated with Claude Code