Skip to content

release: Ledger interface and commercial hardening - #83

Merged
Coding-Dev-Tools merged 10 commits into
mainfrom
codex/ledger-commercial-hardening-1-1-2
Jul 28, 2026
Merged

release: Ledger interface and commercial hardening#83
Coding-Dev-Tools merged 10 commits into
mainfrom
codex/ledger-commercial-hardening-1-1-2

Conversation

@Coding-Dev-Tools

@Coding-Dev-Tools Coding-Dev-Tools commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

This PR publishes the audited 1.1.2 Ledger release candidate.

  • Makes Ledger the primary dashboard while retaining Classic at /classic.
  • Adds the Ledger graph experience, grounded Ask flow, provenance and management surfaces, and their packaging.
  • Hardens browser/API authentication, hosted entitlement refresh and recovery behavior, checkout routing, token handling, and release checks.
  • Defers the ForceGraph renderer until Graph & Relations is opened, preserving Ledger's responsive lazy-load contract.

Final graph hardening

  • Replaces the non-functional duplicate unlinked controls with one Ledger Show unlinked nodes action that reloads the correct graph payload.
  • Keeps the default Ledger overview bounded to connected entities, while preserving Classic's mixed graph behavior.
  • Restores time-travel graph visibility at the requested anchor and prioritizes live relations before historical ghosts under the edge cap.
  • Makes drag-release click suppression safe in both browsers and the graph test harness.
  • Regenerates the README graph image from the final Ledger UI.

Why

The review found several subtle graph correctness and reliability regressions: future evidence could appear in a historical view, old relations could crowd out live ones, and the unlinked-node control did not consistently affect either loading or rendering. This change makes the reviewed release candidate reliable and accurately documented.

User impact

Ledger users get one working unlinked-node action, a readable connected-only overview by default, and trustworthy historical graph views. Classic remains available without the removed complete-graph control.

Validation

  • python -m pytest tests -q
  • npx playwright test tests/e2e/ledger.spec.js tests/e2e/graph-engine.spec.js — 22 passed
  • ruff check .
  • git diff --check
  • python -m eval.harness --dataset eval/datasets/sample.jsonl --k 5
  • python -m eval.harness --dataset eval/datasets/codemem.jsonl --k 5
  • python -m eval.ablation

@Coding-Dev-Tools
Coding-Dev-Tools marked this pull request as ready for review July 28, 2026 07:28

@greptile-apps greptile-apps 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.

Coding-Dev-Tools has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@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

now = time.time()

P2 Badge Use the requested anchor for memory-link fallback

When a workspace has no entity rows and the graph falls back to mem_links, an as_of request still filters both endpoint memories against the current wall clock. The Time view consequently omits links whose memories were valid at the selected date but are closed now, and can include currently live links even when they were not valid at that date; the fallback nodes also lack temporal metadata to correct this client-side. Use temporal_anchor for these validity predicates when supplied.

AGENTS.md reference: AGENTS.md:L145-L147

ℹ️ 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 engraphis/private_state.py Outdated
greptile-apps[bot]

This comment was marked as spam.

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

ℹ️ 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 engraphis/dashboard_assets/ledger.js Outdated
Comment thread engraphis/dashboard_assets/ledger.js Outdated

@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: 5e33d80823

ℹ️ 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 engraphis/service.py
Comment thread engraphis/service.py Outdated

@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: 9487ac8940

ℹ️ 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 engraphis/dashboard_assets/ledger.js
Comment thread scripts/cli.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: 8e950123df

ℹ️ 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 engraphis/service.py
Comment thread engraphis/service.py Outdated

@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: 77952b4ce6

ℹ️ 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 engraphis/dashboard_assets/ledger.js
Comment thread engraphis/dashboard_assets/ledger.js Outdated
Comment thread engraphis/dashboard_assets/ledger.js Outdated
Comment thread engraphis/dashboard_assets/ledger.js
Comment thread engraphis/service.py Outdated

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

ℹ️ 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 engraphis/dashboard_assets/ledger.js
Comment thread engraphis/dashboard_assets/ledger.js Outdated
Comment thread scripts/start_dashboard.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: b8fffae943

ℹ️ 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 engraphis/service.py
@Coding-Dev-Tools
Coding-Dev-Tools merged commit 17cdc17 into main Jul 28, 2026
11 checks passed

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

ℹ️ 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 docker-compose.yml
# This process binds all container interfaces. Even though the published host port is
# loopback-only, require an explicit bearer so a changed port mapping cannot silently
# expose the legacy v1 API. Compose fails before creating the container if it is absent.
ENGRAPHIS_API_TOKEN: ${ENGRAPHIS_API_TOKEN:?Set ENGRAPHIS_API_TOKEN before starting the api profile}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Move the API token check behind profile activation

On a fresh clone without ENGRAPHIS_API_TOKEN, the documented default docker compose up is blocked even though engraphis-api belongs to an inactive profile: Compose interpolates the entire file before selecting active profiles, and ${VAR:?error} aborts when the variable is unset or empty (Docker Compose interpolation syntax). Enforce the token only when the API-profile container actually starts rather than during global interpolation.

Useful? React with 👍 / 👎.

Comment thread scripts/start_server.py
Comment on lines +47 to +48
if not _loopback(args.host) and not os.environ.get("ENGRAPHIS_API_TOKEN", "").strip():
ap.error("non-loopback serving requires ENGRAPHIS_API_TOKEN")

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 Load the project token before rejecting non-loopback starts

When ENGRAPHIS_API_TOKEN is configured only in the project .env, this check runs before engraphis.config is imported and therefore sees an empty process environment, rejecting a secured --host 0.0.0.0 launch even though the app's configuration loader would load that token immediately afterward. Load dotenv/config before this check or validate settings.api_token instead.

AGENTS.md reference: AGENTS.md:L36-L38

Useful? React with 👍 / 👎.

Comment on lines +505 to +509
state.graphWorkspace = '';
state.graphData = null;
state.graphDataIncludeCode = false;
state.graphDataShowUnlinked = false;
state.selectedMemory = '';

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 Clear scoped Ask results when switching workspaces

After asking a question in workspace A and then switching to workspace B, this transition resets graph and Library state but leaves answer-panel and retrieval-list untouched, so A's answer and citations remain displayed under B; an in-flight Ask request can also repopulate them after the switch because askMemory() has no workspace/epoch guard. Clear these panels and invalidate outstanding Ask requests during the workspace transition.

AGENTS.md reference: AGENTS.md:L148-L149

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