Skip to content

feat: add safe guided project onboarding - #73

Merged
roodboi merged 6 commits into
mainfrom
codex/HACK-895
Jul 29, 2026
Merged

feat: add safe guided project onboarding#73
roodboi merged 6 commits into
mainfrom
codex/HACK-895

Conversation

@roodboi

@roodboi roodboi commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add bounded read-only project discovery, portfolio status, and stable repository identity across clones and worktrees
  • add exact-plan minimal project enrollment with protective ignores, privacy and dirty-guidance refusals, machine-local generated state, and reversible disable/remove receipts
  • keep full operating-pack installation separate, preserve canonical repository guidance by reference, and update the Codex onboarding skill and public docs to the typed CLI contract

Verification

  • focused onboarding and compatibility suites: 152 passing
  • lint, typecheck, build, compiled-binary verification, package dry run, and compiled CLI smoke: passing
  • full local safe suite: 826 passing with the existing macOS audit/fix binding-failure family; the same failures reproduce on clean main, so current-head CI remains the release gate

Linear: https://linear.app/hackdance/issue/HACK-895


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@linear-code

linear-code Bot commented Jul 29, 2026

Copy link
Copy Markdown

HACK-895

@roodboi

roodboi commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

@codex review exact head ccb4a57. Please independently review the safe project-onboarding boundary: stable clone and worktree identity, bounded no-write discovery and exact plan revalidation, protective ignore ordering, dirty or private guidance refusal, canonical versus machine-local state, rollback and disable/remove semantics, JSON CLI compatibility, public-repo privacy, and fixture coverage.

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

ℹ️ 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 src/paths.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts Outdated
@roodboi

roodboi commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Independent current-head review of ccb4a57607f5cf4cce101b492fe2e22b944bd38a found the following actionable issues. Treat these as unresolved before merge.

  1. P1: first enrollment writes generated state outside the hash-bound plan.
    Preview derives machine-state paths before .ai/config.toml exists, then apply writes repository_id and buildIndex recomputes a different destination. Returned generatedPaths remain stale. Fix by deriving final state paths from the planned identity and verifying every generated write matches the reviewed plan.

  2. P1: clones/worktrees share location-specific index state.
    Repository identity is reused as the sole machine-state key, but generated index/graph content embeds checkout-specific roots. Indexing one divergent worktree can replace another worktree's state. Keep repository identity for correlation while adding stable checkout/worktree identity for location-specific generated state.

  3. P1: concurrent exact-hash applies can both succeed with last-writer-wins state.
    No per-repository mutation lock spans precondition verification, canonical writes, index generation, receipt creation, and registry commit. Add a lock/CAS boundary and verify the final state still matches the winning receipt.

  4. P1: changed plugin payload retains version 0.1.2.
    Existing version-keyed Codex caches can select stale payload bytes. Bump the plugin version, regenerate embedded assets/capability metadata, and add an upgrade test from cached 0.1.2.

  5. P2: late apply failure leaves generated state and an unusable receipt.
    The catch path restores only canonical files after generated index/graph and receipt writes. Track and restore all artifacts; publish a receipt only after registry commit and final verification.

  6. P2: adding or renaming remotes changes repository identity.
    Lexicographically selecting a remote makes identity drift when a remote is added/renamed. Prefer a validated enrolled identity and define an explicit root-commit-to-remote migration path.

  7. P2: assume-unchanged/skip-worktree guidance can be adopted as clean.
    Porcelain status suppresses these changes while the planner reads working-tree bytes. Compare working bytes/blob identity directly with the index and reject unless exact equality is proven.

Required regression coverage: first-enrollment planned/generated path equality and no extra writes; failure cleanup after index/receipt stages; concurrent apply/apply-vs-rollback; divergent worktrees; remote addition/rename/multiple remotes; assume-unchanged and skip-worktree; cached plugin upgrade; prior setup/MCP compatibility.

@roodboi

roodboi commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Second independent adversarial review acknowledged. All eight reported safety failures are treated as unresolved and fixes are in progress on an uncommitted local patch with dedicated reproductions: generated-path symlink containment, concurrent apply/rollback transaction safety, after-hash rollback guards, portfolio versus execution identity, plugin version/cache upgrade, late-failure cleanup, identity aliases/migration, and assume-unchanged/skip-worktree guidance verification. No new head will be pushed until the focused and full supported gates are complete; this PR will not merge without the requested third independent CLEAN review.

@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: 216da9cdeb

ℹ️ 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 src/remote.ts Outdated
Comment thread src/remote.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/repository-identity.ts Outdated
Comment thread src/projects.ts 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: c0083f8069

ℹ️ 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 src/projects.ts
Comment thread src/setup.ts Outdated
Comment thread src/projects.ts 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: 0dab6befdb

ℹ️ 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 src/paths.ts
Comment thread src/projects.ts
Comment thread src/setup.ts

@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: 8a3a56e82e

ℹ️ 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 src/remote.ts Outdated
Comment thread src/projects.ts

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

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/repository-identity.ts 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: 3eb1003a23

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts

@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: 87468002b0

ℹ️ 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 src/projects.ts

@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: 09ca15e7e5

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts 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: 096e872175

ℹ️ 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 src/repository-identity.ts Outdated
Comment thread src/projects.ts

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

ℹ️ 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 src/repository-identity.ts

@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: 8805fd56fe

ℹ️ 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 src/repository-identity.ts Outdated
Comment thread src/projects.ts 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: 79076a69c8

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts Outdated
Comment thread src/projects.ts 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: 95a3a79b5b

ℹ️ 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 src/paths.ts
Comment thread src/projects.ts

@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: 3ab173c547

ℹ️ 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 src/repository-identity.ts 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: edf8f0b7b0

ℹ️ 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 src/repository-identity.ts

@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: 0823a72c7b

ℹ️ 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 src/projects.ts 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: 91d134c657

ℹ️ 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 src/projects.ts
Comment thread src/projects.ts 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: 64a0ff016c

ℹ️ 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 src/paths.ts Outdated
Comment thread src/projects.ts 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: c90899857f

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts 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: 26058f83a3

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts 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: 531e948737

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts
Comment thread src/projects.ts

@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: 60cd660ab4

ℹ️ 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 src/projects.ts Outdated
Comment thread src/projects.ts 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: 3ac723bdf1

ℹ️ 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 src/remote.ts
Comment thread src/setup.ts
@roodboi
roodboi merged commit 7b13e2f into main Jul 29, 2026
4 checks passed
@roodboi
roodboi deleted the codex/HACK-895 branch July 29, 2026 17:48
github-actions Bot pushed a commit that referenced this pull request Jul 29, 2026
## [2.29.0](v2.28.0...v2.29.0) (2026-07-29)

### Features

* add safe guided project onboarding ([#73](#73)) ([7b13e2f](7b13e2f))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.29.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@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: 8e28fe4bb8

ℹ️ 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 src/projects.ts
Comment on lines +2164 to +2166
const destinationMetadata = await lstatIfExists(destinationPath);
if (!destinationMetadata) {
await rename(sourcePath, destinationPath);

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 Prevent migration renames from overwriting new state

When a concurrent state writer creates a previously absent destination file after lstatIfExists(destinationPath) but before this POSIX rename, the rename silently replaces that new file. The migration subsequently validates only the moved source inode and can commit successfully, permanently discarding a newly written queue, journal, or managed-state entry; use a no-replace/conditional move or bind and revalidate the destination at the rename boundary.

AGENTS.md reference: AGENTS.md:L31-L33

Useful? React with 👍 / 👎.

Comment thread src/projects.ts
Comment on lines +541 to +542
} catch {
return 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 Propagate canonical status read failures

When an enrolled config.toml still exists but lstat() or readFile() fails because of permissions, I/O, or another transient metadata error, this catch reports canonical.config: false, degrading coverage as though the configuration were invalid. Fresh evidence after the checkout-inspection fixes is that this canonical validator still collapses inconclusive reads; only parse/schema failures or confirmed absence should return false, while operational read failures should propagate so automation does not act on a misleading JSON status.

AGENTS.md reference: AGENTS.md:L130-L130

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