Skip to content

Repair Phase 20 fixed-point regeneration and E4 ownership - #30

Open
kmccleary3301 wants to merge 54 commits into
mainfrom
phase20/followup-1000
Open

Repair Phase 20 fixed-point regeneration and E4 ownership#30
kmccleary3301 wants to merge 54 commits into
mainfrom
phase20/followup-1000

Conversation

@kmccleary3301

@kmccleary3301 kmccleary3301 commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up to #28. Repairs the Phase 20 clean-checkout fixed point without weakening gates:

  • provisions hash-verified immutable lane inputs and preserves the authoritative 98-row ledger seed
  • binds lane evidence to explicit workspaces and regenerates accepted E4 evidence from authoritative inputs
  • makes score authority explicit while keeping internal kernel schemas off the public SDK barrel
  • centralizes Phase 11 execution, provider subcalls, and TUI todo-status presentation
  • requires exact immutable deletion authority and adds two independently provisioned clean-checkout CI runs

Review corrections

Two-axis Standards/Spec review found and this stack corrects: external-history deletion bypass, duplicated Phase 11 request parameters, incomplete clean-checkout CI, leaked internal SDK schema exports, todo alias drift, and split todo-presentation ownership. Final Standards and Spec re-reviews are clean. All bb-0bv tasks are closed after green product-spine, full E4 battery, and dual clean-checkout fixed-point evidence; main branch protection now requires the product-spine and independent fixed-point comparison contexts.

Compat reviewed: non-breaking

Stack

  1. provision immutable checkout inputs
  2. preserve authoritative ledger seed provenance
  3. bind lane evidence to explicit workspaces
  4. encode fixed-point score authority
  5. regenerate evidence with authoritative inputs
  6. share typed Phase 11 execution
  7. unify provider subcall execution
  8. centralize todo status presentation
  9. require immutable deletion authority
  10. verify the fixed point in clean checkouts

Verification

  • pytest -q tests/e4_parity: 716 passed, 1 skipped, 1 xfailed
  • focused Python repair suite: 42 passed
  • npx tsc --noEmit in tui_skeleton: pass
  • focused TUI suites: 22 passed, plus delegated-checkbox suites: 7 passed
  • npm test in sdk/ts: 3 passed against the default server
  • npm run build && npm test in sdk/ts-kernel-contracts: 9 passed
  • full fixed-point regeneration: exit 0; score authority 1000/1000, 10 accepted target claims, 630 non-target accounting points
  • product-spine API surface: 42 passed; compilation: 377 passed, 22 skipped
  • PR checks: full E4 battery, both fixed-point clean checkouts, independent comparison, and product-spine pass

Merge gate

Green. main requires product-spine and Compare independent fixed-point checkouts; strict up-to-date checks and conversation resolution are enabled.

@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: 626aa26218

ℹ️ 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 thread scripts/e4_parity/regenerate_evidence.py

@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: 2599e33b81

ℹ️ 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 1604 to 1605
if candidate_code != 0:
return candidate_code, results

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 Restore readiness state before returning candidate failures

When a scratch candidate reaches a placeholder-bearing stage and then fails, expanded_argv() reloads the readiness module against the candidate workspace, but this early return leaves that module cached after the temporary directory is removed. _fixed_point() then snapshots a watch set whose SCORE_AUTHORITY_PATH still points into the deleted candidate, so the authoritative live score file can be omitted from the failure report. Despite the earlier review reply, fresh evidence in c998661 shows this return still occurs before any reload under the restored BB_WORKSPACE_ROOT; restore the readiness module in a finally before returning.

Useful? React with 👍 / 👎.

@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: e659e69f98

ℹ️ 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 +228 to +230
env_gates[gate_ids[0]] = {"env_name": str(env_name), "gate_id": gate_ids[0],
"required": True,
"satisfied": bool(metadata.get("env_satisfied", False))}

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 Reject conflicting states for a shared environment gate

When multiple effective values reference the same env_name, each iteration overwrites the same env.<name> entry, so conflicting env_satisfied metadata is resolved solely by lexicographic path order. For example, an unsatisfied a value and a satisfied z value for the same variable produce a satisfied gate, while renaming the paths can reverse the result; reject inconsistent states or combine them conservatively so the lock cannot incorrectly report a required credential as available.

Useful? React with 👍 / 👎.

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.

1 participant