Skip to content

docs(ENS): Audit baseline, record remaining gaps, and defer ENS runtime changes due to bytecode headroom#170

Open
MontrealAI wants to merge 1 commit into
mainfrom
codex/audit-and-improve-ens-job-page-subsystem
Open

docs(ENS): Audit baseline, record remaining gaps, and defer ENS runtime changes due to bytecode headroom#170
MontrealAI wants to merge 1 commit into
mainfrom
codex/audit-and-improve-ens-job-page-subsystem

Conversation

@MontrealAI

Copy link
Copy Markdown
Owner

Motivation

  • Capture a precise, machine-readable audit of the current main ENS/Prime baseline and answer the mandatory current-state questions required for safe ENS cutover.
  • Preserve already-merged ENSJobPages architecture and avoid any Prime runtime changes unless absolutely necessary.
  • Attempt small ENS helper improvements (legacy adoption / root-version observability) but detect and respect the EIP-170 bytecode budget so risky runtime changes are deferred until a bytecode-safe plan is approved.

Description

  • Added an explicit baseline audit docs/ENS/CURRENT_BASELINE_AUDIT.md recording scope, findings, and answers to the mandatory questions about preview/effective semantics, legacy adoption, root-version observability, and size gates.
  • Added docs/ENS/REMAINING_GAPS.md and docs/ENS/CHANGE_MINIMIZATION_PLAN.md to separate confirmed open code gaps from operational follow-ups and to document the Prime size-freeze decision and rejected alternatives.
  • Updated docs/ENS/ENS_JOB_PAGES_OVERVIEW.md to clarify which features are implemented vs deferred, and added machine-readable audit artifacts under scripts/ens/output/ (current-baseline-audit.json, change-minimization-plan.json, remaining-gaps.json) for operator automation.
  • Reconciled PRIME_BLOCKER_VERIFICATION_MEMO.md with a fresh npm run test:size run and recorded current runtime/initcode sizes and headroom so deploy/runbook decisions reflect the measured bytecode budget.
  • Note: a minimal attempt to add read surfaces and adoption logic was exercised during the rollout for validation, but it caused ENSJobPages to exceed the EIP-170 runtime limit and was therefore rolled back; no ENS runtime behavior remains changed in this commit.

Testing

  • Ran npm run test:size and verified all enforced artifacts pass the size-gate after rollbacks, with ENSJobPages runtime measured at 24560 bytes (headroom 16 bytes) and Prime artifacts within expected headroom.
  • Ran npm run test:size:benchmark to confirm the canonical best EIP-170-safe compiler profile and margin; the benchmark completed successfully.
  • During exploratory edits a compile run failed with ENSJobPages at 25295 runtime bytes (exceeded EIP-170), which prompted reverting those runtime edits; after revert, the size checks passed.
  • No behavioral unit test changes were made in this commit; all size/benchmark runs succeeded against the final committed tree.

Codex Task

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db9e476b40

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +71 to +74
- `rootVersionCount()`
- `currentRootVersionId()`

These surfaces are present today; adding a direct `rootVersionInfo(rootVersionId)` read surface remains a follow-up to simplify explicit root-version repair selection.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove nonexistent root-version getter claims

This section states that rootVersionCount() and currentRootVersionId() are already available, but ENSJobPages only stores those values in private state (contracts/ens/ENSJobPages.sol:148-149) and does not expose public functions with those selectors. In practice, operators or scripts following this doc will expect callable getters and hit reverts (or misleading fallback reads), which can break root-version repair workflows.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant