Skip to content

fix(agentic-engineering): forbid foreground remote polling - #112

Merged
devantler merged 14 commits into
mainfrom
codex/111-no-foreground-remote-poll
Aug 3, 2026
Merged

fix(agentic-engineering): forbid foreground remote polling#112
devantler merged 14 commits into
mainfrom
codex/111-no-foreground-remote-poll

Conversation

@devantler

@devantler devantler commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Part of #111

What changed

  • permit bounded one-shot remote reads and mutations, but forbid foreground polling and retry/sleep waits
  • prefer completion callbacks; otherwise allow at most one runtime-supported detached watcher
  • persist watcher handle, target, owner, deadline, and lifecycle state in durable memory before ending a run
  • let the next invocation, scheduled or on demand, collect a persisted target when no callback or safe watcher exists
  • require the canonical remote-wait contract and pin the complete agentic-engineer definition by SHA-256
  • normalize only CRLF pairs before hashing while preserving every other byte under inherited runtime settings
  • bump agentic-engineering from 4.1.2 to 4.1.3

Evidence

Bounded 24-hour telemetry found 170 foreground remote-adjacent commands across 58 Claude sessions (2.93/session), up from 1.79/session in the prior run. Six sessions accounted for 119 commands.

Verification

  • manifest self-test: 134 passed
  • production manifest validation passed
  • bump tests: 13 passed
  • version tests: 12 passed
  • shellcheck passed at error severity
  • version gate: 4.1.2 to 4.1.3

User evaluation

Change or append any agentic-engineer instruction without updating the desired-state digest; validation must fail. Remove a canonical clause while refreshing the digest; validation must still fail. Convert the unchanged entrypoint to CRLF or inherit PERL_UNICODE, PERL5OPT, or PERLIO controls; validation must pass. Add a lone carriage return or replace one invalid UTF-8 byte with another; validation must fail.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

Please review the exact current head for behavioral ambiguity, enforcement gaps, and portability regressions.

@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: 255cf06627

ℹ️ 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 plugins/agentic-engineering/agents/agentic-engineer.agent.md Outdated
Comment thread plugins/agentic-engineering/agents/agentic-engineer.agent.md Outdated
Comment thread plugins/agentic-engineering/agents/agentic-engineer.agent.md Outdated
Comment thread scripts/validate-manifests.test.sh Outdated
Comment thread scripts/validate-manifests.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

Please review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Checked-out commit =='
git rev-parse HEAD
git status --short
printf '%s\n' '== PR metadata =='
gh pr view 112 --repo devantler-tech/agent-plugins --json number,headRefOid,baseRefOid,title,files --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'
printf '%s\n' '== Changed files and diff summary =='
git diff --stat HEAD^ HEAD
git diff --name-status HEAD^ HEAD
printf '%s\n' '== Full exact-head diff =='
git diff --no-ext-diff --unified=80 HEAD^ HEAD
printf '%s\n' '== File structure outlines for changed source-like files =='
git diff --name-only HEAD^ HEAD | while IFS= read -r f; do
  case "$f" in
    *.js|*.mjs|*.cjs|*.ts|*.mts|*.cts|*.json|*.yaml|*.yml|*.md)
      printf '\n--- %s ---\n' "$f"
      ast-grep outline "$f" --items all 2>/dev/null || true
      ;;
  esac
done

Length of output: 46352


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Validator function and call sites =='
rg -n -C 8 'validate_desired_state_resources|remote_wait_marker|deadline_marker' scripts/validate-manifests.sh
printf '%s\n' '== Test harness and remote-wait cases =='
rg -n -C 12 'make_desired_state|remote_wait_marker|check_fail|check_pass|validate-manifests\.sh' scripts/validate-manifests.test.sh
printf '%s\n' '== Desired-state resources and entrypoint references =='
fd -t f 'desired-state|agentic-engineering' . | sort
rg -n -C 5 --glob '*.json' '"entrypoint"|"definitionFrom"|agentic-engineer' .
printf '%s\n' '== All remote-wait / polling wording =='
rg -n -i -C 4 'foreground[- ]wait|remote[- ]state|remote wait|detached watcher|polling|poll\b|sleep loop|scheduled tick' \
  --glob '!*.lock' --glob '!node_modules/**' .
printf '%s\n' '== Shell portability metadata =='
sed -n '1,100p' scripts/validate-manifests.sh
sed -n '1,100p' scripts/validate-manifests.test.sh
rg -n -C 3 'shellcheck|validate-manifests' .github README.md package.json Makefile 2>/dev/null || true

Length of output: 108579


@devantler I found one enforcement gap.

  • Medium — scripts/validate-manifests.sh, Line 777: The validator checks only that three substrings occur somewhere in the entrypoint. It does not validate the contract as one rule or reject contradictory text. For example, a later sentence that permits a foreground CI poll, a second watcher, or an exception to the next-tick handoff would still pass if the three required strings remain. The tests at scripts/validate-manifests.test.sh, Line 970 only prove deletion failures. Validate one canonical contiguous remote-wait block, or add negative tests that inject contradictory permission text and require validation to fail.

The production entrypoint text itself is clear. The gap is in the fail-closed enforcement for later edits.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The agent instructions now require bounded asynchronous handling of remote CI, review, merge, and deploy operations. They prohibit foreground polling and retry or sleep loops. Manifest validation now checks the canonical remote-wait contract and the normalized SHA-256 digest of the bundled entrypoint. Regression tests cover policy markers, digest formats, line endings, mismatches, and appended guidance. Plugin metadata updates the version from 4.1.2 to 4.1.3.

Possibly related PRs


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Docstring Coverage ❌ Error Docstring coverage is 57.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the main change: preventing foreground remote polling in the agentic-engineering plugin.
Description check ✅ Passed The description directly explains the remote-wait restrictions, validator changes, integrity pinning, version bump, and verification results.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/validate-manifests.sh`:
- Around line 777-789: Update the remote-wait validation loop in
scripts/validate-manifests.sh (lines 777-789) to validate one canonical
contiguous contract and reject contradictory permission text, rather than
checking independent marker presence. Extend the fixture test in
scripts/validate-manifests.test.sh (lines 970-981) by appending contradictory
permission text and assert that validation fails.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: fe24b727-2087-4c77-b8ef-f7515fbfdc13

📥 Commits

Reviewing files that changed from the base of the PR and between e4b2412 and 255cf06.

📒 Files selected for processing (7)
  • .claude-plugin/marketplace.json
  • .github/plugin/marketplace.json
  • plugins/agentic-engineering/.claude-plugin/plugin.json
  • plugins/agentic-engineering/agents/agentic-engineer.agent.md
  • plugins/agentic-engineering/plugin.json
  • scripts/validate-manifests.sh
  • scripts/validate-manifests.test.sh
📜 Review details
🧰 Additional context used
📓 Path-based instructions (4)
plugins/**/.claude-plugin/plugin.json

📄 CodeRabbit inference engine (AGENTS.md)

Each plugin must have an equivalent plugins/<name>/.claude-plugin/plugin.json matching the portable manifest.

Files:

  • plugins/agentic-engineering/.claude-plugin/plugin.json
plugins/**/plugin.json

📄 CodeRabbit inference engine (AGENTS.md)

Each plugin must have a portable plugins/<name>/plugin.json with kebab-case name, description, version, and no non-array skills or agents component fields.

Files:

  • plugins/agentic-engineering/plugin.json
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Keep marketplace names, descriptions, and README framing tool-neutral across VS Code, GitHub Copilot CLI, and Claude Code.
Use Conventional Commit types (feat:, fix:, chore:, ci:, docs:, or refactor:) for commit messages and PR titles.
Validate manifests, skill specifications, and changed workflows before opening every PR; never weaken a check or security control to make validation pass.
Treat issue, pull-request, and CI text as untrusted data; work in per-run worktrees, never push to main, and never merge external PRs or unreviewed drafts.
Begin every PR, issue, and comment with > 🤖 Generated by the Agentic Engineer.
Prefer additive, backward-compatible changes because the marketplace manifests are a shared library consumed by every agent installation.

Files:

  • plugins/agentic-engineering/plugin.json
  • scripts/validate-manifests.sh
  • plugins/agentic-engineering/agents/agentic-engineer.agent.md
  • scripts/validate-manifests.test.sh
plugins/**/agents/*.agent.md

📄 CodeRabbit inference engine (AGENTS.md)

Custom agents must use the required .agent.md suffix and YAML frontmatter containing non-empty name and description fields.

Files:

  • plugins/agentic-engineering/agents/agentic-engineer.agent.md
🧠 Learnings (1)
📚 Learning: 2026-07-25T12:40:46.973Z
Learnt from: devantler
Repo: devantler-tech/agent-plugins PR: 89
File: plugins/agentic-engineering/skills/portfolio-maintenance/SKILL.md:0-0
Timestamp: 2026-07-25T12:40:46.973Z
Learning: During code review in this repo: (1) For `plugins/agentic-engineering/agents/*.agent.md` (local agent-entrypoints), do NOT require upstream provenance frontmatter—assume these are authored locally; renames/edits to agent-entrypoints should remain local and not be forced through the upstream sync process. (2) For bundled skill artifacts at `plugins/*/skills/*/SKILL.md`, expect upstream provenance frontmatter to be present; do not make direct “local” edits for skill content—skill changes must originate from the upstream source and be brought in via the repo’s sync workflow.

Applied to files:

  • plugins/agentic-engineering/agents/agentic-engineer.agent.md
🔇 Additional comments (6)
.claude-plugin/marketplace.json (1)

30-30: LGTM!

.github/plugin/marketplace.json (1)

30-30: LGTM!

plugins/agentic-engineering/.claude-plugin/plugin.json (1)

4-4: LGTM!

plugins/agentic-engineering/plugin.json (1)

4-4: LGTM!

plugins/agentic-engineering/agents/agentic-engineer.agent.md (1)

112-116: LGTM!

scripts/validate-manifests.test.sh (1)

573-575: LGTM!

Comment thread scripts/validate-manifests.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved at 33de7be. The validator now requires one normalized canonical remote-wait contract and rejects foreground, detached-watcher, or next-tick semantics outside it. Three new contradiction fixtures failed before the implementation and now pass; the suite is 119/119.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

The finding was addressed at 33de7be. Please re-review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Checked-out commit =='
git rev-parse HEAD
git status --short

printf '%s\n' '== PR metadata =='
gh pr view 112 --repo devantler-tech/agent-plugins \
  --json number,headRefOid,baseRefOid,title,files \
  --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'

printf '%s\n' '== Recent commits and exact-head diff =='
git log --oneline -8
git diff --no-ext-diff --unified=80 HEAD^ HEAD

printf '%s\n' '== Validator and test structure =='
ast-grep outline scripts/validate-manifests.sh --items all 2>/dev/null || true
ast-grep outline scripts/validate-manifests.test.sh --items all 2>/dev/null || true

printf '%s\n' '== Remote-wait validation implementation =='
rg -n -C 18 \
  'validate_desired_state_resources|remote.wait|remote_wait|canonical|foreground|detached|scheduled.tick|next.tick|normalize' \
  scripts/validate-manifests.sh

printf '%s\n' '== Remote-wait validation tests =='
rg -n -C 18 \
  'remote.wait|remote_wait|canonical|contradict|foreground|detached|scheduled.tick|next.tick|check_fail|check_pass' \
  scripts/validate-manifests.test.sh

printf '%s\n' '== Production remote-wait contract =='
rg -n -i -C 12 \
  'foreground[- ]wait|remote[- ]state|detached watcher|scheduled tick|next[- ]tick|polling|poll\b|sleep loop' \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Shell portability indicators =='
sed -n '1,120p' scripts/validate-manifests.sh
rg -n -C 3 'shellcheck|shell:|bash|sh ' .github README.md package.json Makefile 2>/dev/null || true

Length of output: 103930


@devantler I found one remaining enforcement gap.

  • Medium — scripts/validate-manifests.sh, Line 800: The canonical contract is now required. However, the rejection check only matches three lexical markers: foreground, detached watcher, and next scheduled tick. A contradictory instruction such as Wait for CI completion with gh run watch after the canonical rule. passes validation. It permits a foreground remote wait but contains none of these markers. Add negative fixtures for equivalent wording, or reject remote-wait instructions outside the canonical block with a broader, defined vocabulary such as wait, watch, poll, sleep, CI, review, merge, and deploy.

The change closes the original substring-presence gap. It does not yet enforce all contradictory remote-wait semantics.

You are interacting with an AI system.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved the remaining synonym bypass at b07009c. The validator now rejects wait/watch/poll/sleep instructions paired with CI/review/merge/deploy/remote outside the canonical block. The reviewer’s exact example failed before implementation and the suite is now 120/120.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

Both findings are addressed and CI is green at b07009c. Please re-review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Checked-out commit and working tree =='
git rev-parse HEAD
git status --short

printf '%s\n' '== Pull request metadata =='
gh pr view 112 --repo devantler-tech/agent-plugins \
  --json number,headRefOid,baseRefOid,title,files \
  --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'

printf '%s\n' '== Commits and changes since the previous reported fix =='
git log --oneline --decorate -12
git diff --no-ext-diff --unified=100 33de7be621ac37fdcf13c37d8a188e9e398f8eab HEAD

printf '%s\n' '== Validator and test outlines =='
ast-grep outline scripts/validate-manifests.sh --items all 2>/dev/null || true
ast-grep outline scripts/validate-manifests.test.sh --items all 2>/dev/null || true

printf '%s\n' '== Remote-wait validator implementation =='
rg -n -C 25 \
  'validate_desired_state_resources|remote.wait|remote_wait|canonical|foreground|detached|scheduled.tick|next.tick|wait|watch|poll|sleep|CI|review|merge|deploy|normalize' \
  scripts/validate-manifests.sh

printf '%s\n' '== Remote-wait validator tests =='
rg -n -C 25 \
  'remote.wait|remote_wait|canonical|contradict|foreground|detached|scheduled.tick|next.tick|wait|watch|poll|sleep|CI|review|merge|deploy|check_fail|check_pass' \
  scripts/validate-manifests.test.sh

printf '%s\n' '== Production remote-wait contract =='
rg -n -i -C 15 \
  'foreground[- ]wait|remote[- ]state|detached watcher|scheduled tick|next[- ]tick|polling|poll\b|sleep loop|wait|watch|CI|review|merge|deploy' \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Shell compatibility and CI invocation =='
sed -n '1,140p' scripts/validate-manifests.sh
rg -n -C 4 'shellcheck|validate-manifests\.sh|bash|sh ' \
  .github README.md package.json Makefile 2>/dev/null || true

Length of output: 130249


🏁 Script executed:

#!/bin/bash
set -euo pipefail

pattern='foreground|detached[[:space:]]+watcher|next[[:space:]]+scheduled[[:space:]]+tick|(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$).{0,160}(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$)|(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$).{0,160}(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$)'

printf '%s\n' '== Exact implementation and fixtures =='
nl -ba scripts/validate-manifests.sh | sed -n '777,812p'
nl -ba scripts/validate-manifests.test.sh | sed -n '967,990p'

printf '%s\n' '== Matcher results =='
within_window='Wait for CI completion after the canonical rule.'
beyond_window="Wait $(printf 'details %.0s' {1..30}) for CI completion after the canonical rule."
reverse_beyond_window="CI $(printf 'details %.0s' {1..30}) requires waiting after the canonical rule."

for name in within_window beyond_window reverse_beyond_window; do
  value=${!name}
  if printf '%s\n' "$value" | grep -Eiq "$pattern"; then
    printf '%s: MATCH (validator rejects)\n' "$name"
  else
    printf '%s: NO MATCH (validator accepts)\n' "$name"
  fi
  printf '  length=%s text=%s\n' "${`#value`}" "$value"
done

Length of output: 1571


🏁 Script executed:

#!/bin/bash
set -euo pipefail

pattern='foreground|detached[[:space:]]+watcher|next[[:space:]]+scheduled[[:space:]]+tick|(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$).{0,160}(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$)|(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$).{0,160}(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$)'

within_window='Wait for CI completion after the canonical rule.'
filler=''
i=0
while [ "$i" -lt 30 ]; do
  filler="${filler}details "
  i=$((i + 1))
done
beyond_window="Wait ${filler}for CI completion after the canonical rule."
reverse_beyond_window="CI ${filler}requires wait after the canonical rule."

printf '%s\n' '== Matcher results =='
for name in within_window beyond_window reverse_beyond_window; do
  value=${!name}
  if printf '%s\n' "$value" | grep -Eiq "$pattern"; then
    printf '%s: MATCH (validator rejects)\n' "$name"
  else
    printf '%s: NO MATCH (validator accepts)\n' "$name"
  fi
  printf '  length=%s\n' "${`#value`}"
done

printf '%s\n' '== Current relevant lines =='
sed -n '790,803p' scripts/validate-manifests.sh
sed -n '979,989p' scripts/validate-manifests.test.sh

Length of output: 3622


@devantler I found one remaining enforcement gap at the exact head b07009ce7668d43877258e5d5885bce59366b31d.

  • Medium — scripts/validate-manifests.sh, Line 800: The synonym check only detects a wait term and a remote-state term when they are at most 160 characters apart. A contradictory instruction can exceed this window and pass validation. For example: Wait [more than 160 characters of explanatory text] for CI completion after the canonical rule. The current self-test covers the short gh run watch example only. Remove the arbitrary distance limit, or add boundary and over-boundary negative fixtures that fail validation.

You are interacting with an AI system.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved the distance-cap bypass at a518dc9. The synonym matcher now spans the entire normalized remainder, and an over-160-character fixture fails before implementation and passes afterward. The suite is 121/121.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

All findings are addressed and CI is green at a518dc9. Please re-review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Checked-out commit and PR metadata =='
git rev-parse HEAD
git status --short
gh pr view 112 --repo devantler-tech/agent-plugins \
  --json number,headRefOid,baseRefOid,title,files \
  --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'

printf '%s\n' '== Changes since the prior exact head =='
git diff --no-ext-diff --unified=100 \
  b07009ce7668d43877258e5d5885bce59366b31d HEAD -- \
  scripts/validate-manifests.sh scripts/validate-manifests.test.sh \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Validator structure =='
ast-grep outline scripts/validate-manifests.sh --items all 2>/dev/null || true

printf '%s\n' '== Validator implementation =='
nl -ba scripts/validate-manifests.sh | sed -n '760,825p'

printf '%s\n' '== Validator fixtures =='
nl -ba scripts/validate-manifests.test.sh | sed -n '955,1025p'

printf '%s\n' '== Matcher-related expressions and remaining finite bounds =='
rg -n -C 6 \
  'remote_wait|remote.wait|canonical|contradict|foreground|detached|next[[:space:]]+scheduled|wait|watch|poll|sleep|\{0,[0-9]+\}' \
  scripts/validate-manifests.sh scripts/validate-manifests.test.sh

printf '%s\n' '== Production contract =='
rg -n -i -C 12 \
  'REMOTE WAIT CONTRACT|foreground|detached watcher|next scheduled tick|wait|watch|poll|sleep|CI|review|merge|deploy|remote' \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

Length of output: 20886


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Script interpreters and relevant source ranges =='
head -n 3 scripts/validate-manifests.sh
head -n 3 scripts/validate-manifests.test.sh
sed -n '770,815p' scripts/validate-manifests.sh
sed -n '965,1010p' scripts/validate-manifests.test.sh

printf '%s\n' '== Complete test helper definitions used by the fixture =='
grep -n -A35 -B5 -E '^(check_fail|make_desired_state|fresh)[[:space:]]*\(\)' \
  scripts/validate-manifests.test.sh || true

printf '%s\n' '== Exact matcher behavior without running repository code =='
pattern='foreground|detached[[:space:]]+watcher|next[[:space:]]+scheduled[[:space:]]+tick|(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$).*(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$)|(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$).*(^|[^[:alnum:]_])(wait|watch|poll|sleep)([^[:alnum:]_]|$)'
filler=''
i=0
while [ "$i" -lt 30 ]; do
  filler="${filler}details "
  i=$((i + 1))
done

for text in \
  "Wait ${filler}for CI completion after the canonical rule." \
  "CI ${filler}requires waiting after the canonical rule." \
  "Continue local work after the canonical rule."; do
  if printf '%s\n' "$text" | grep -Eiq "$pattern"; then
    printf 'REJECT: %s\n' "$text"
  else
    printf 'ACCEPT: %s\n' "$text"
  fi
done

printf '%s\n' '== Remaining finite matcher bounds in the changed files =='
grep -n -E '\{0,[0-9]+\}|\{[0-9]+,[0-9]+\}' \
  scripts/validate-manifests.sh scripts/validate-manifests.test.sh || true

Length of output: 13668


@devantler I found one remaining enforcement gap at a518dc9a8173b05e0a81203aca2554740b870d6c.

  • Medium — scripts/validate-manifests.sh, Line 800: The distance cap is removed, and the new over-160-character fixture fails as required. However, the synonym matcher accepts only the exact tokens wait, watch, poll, and sleep. It does not match ordinary inflected instructions. For example, CI requires waiting for completion after the canonical rule. passes validation. The same bypass applies to watching, polling, and sleeping. Extend the vocabulary to cover these forms, or match word stems with defined boundaries. Add negative fixtures for both term orders.

You are interacting with an AI system.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved the inflection bypass at 1cc0b8d. Action tokens are now bounded stems, with reverse-order fixtures for “CI … waiting” and “review … watched”; the only unrelated outside use was rewritten as “remains open” so remote-wait vocabulary stays centralized. The suite is 123/123.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

All findings are addressed and CI is green at 1cc0b8d. Please re-review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Exact checked-out head =='
git rev-parse HEAD
git status --short
printf '%s\n' '== Pull request metadata =='
gh pr view 112 --repo devantler-tech/agent-plugins \
  --json number,headRefOid,baseRefOid,title,files \
  --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'

printf '%s\n' '== Diff since prior reviewed head =='
git diff --no-ext-diff --unified=100 \
  a518dc9a8173b05e0a81203aca2554740b870d6c HEAD -- \
  scripts/validate-manifests.sh \
  scripts/validate-manifests.test.sh \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Validator and test outlines =='
ast-grep outline scripts/validate-manifests.sh --items all 2>/dev/null || true
ast-grep outline scripts/validate-manifests.test.sh --items all 2>/dev/null || true

printf '%s\n' '== Remote-wait validator implementation =='
nl -ba scripts/validate-manifests.sh | sed -n '750,830p'

printf '%s\n' '== Remote-wait fixtures =='
nl -ba scripts/validate-manifests.test.sh | sed -n '945,1035p'

printf '%s\n' '== Production remote-wait contract =='
rg -n -i -C 12 \
  'REMOTE WAIT CONTRACT|foreground|detached watcher|next scheduled tick|wait|watch|poll|sleep|CI|review|merge|deploy|remote' \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Other uses of remote-wait vocabulary outside validator and test =='
rg -n -i -C 3 \
  'foreground|detached[[:space:]]+watcher|next[[:space:]]+scheduled[[:space:]]+tick|wait(ing)?|watch(ed|ing)?|poll(ing)?|sleep(ing)?' \
  --glob '!scripts/validate-manifests.sh' \
  --glob '!scripts/validate-manifests.test.sh' \
  .

printf '%s\n' '== Shell portability indicators =='
head -n 3 scripts/validate-manifests.sh
head -n 3 scripts/validate-manifests.test.sh
rg -n -C 3 'shellcheck|validate-manifests\.sh|bash|sh ' \
  .github README.md package.json Makefile 2>/dev/null || true

Length of output: 36401


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Current validator source range =='
sed -n '750,825p' scripts/validate-manifests.sh

printf '%s\n' '== Current test source range =='
sed -n '945,1030p' scripts/validate-manifests.test.sh

printf '%s\n' '== Test helper definitions =='
grep -n -A55 -B5 -E '^(check_fail|make_desired_state|fresh)[[:space:]]*\(\)' \
  scripts/validate-manifests.test.sh || true

printf '%s\n' '== Matcher source =='
grep -n -A2 -B2 "remote-wait semantics must appear only" \
  scripts/validate-manifests.sh

pattern='foreground|detached[[:space:]]+watcher|next[[:space:]]+scheduled[[:space:]]+tick|(^|[^[:alnum:]_])(wait|watch|poll|sleep)[[:alpha:]]*([^[:alnum:]_]|$).*(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$)|(^|[^[:alnum:]_])(ci|review|merge|deploy|remote)([^[:alnum:]_]|$).*(^|[^[:alnum:]_])(wait|watch|poll|sleep)[[:alpha:]]*([^[:alnum:]_]|$)'
printf '%s\n' '== Static matcher probes =='
for text in \
  'CI requires waiting for completion after the canonical rule.' \
  'Review completion is watched after the canonical rule.' \
  'Deploy polling remains prohibited after the canonical rule.' \
  'Await CI completion after the canonical rule.' \
  'Monitor remote CI completion after the canonical rule.' \
  'Track merge completion after the canonical rule.' \
  'Remain blocked until the deploy completes after the canonical rule.'; do
  if printf '%s\n' "$text" | grep -Eiq "$pattern"; then
    printf 'REJECT: %s\n' "$text"
  else
    printf 'ACCEPT: %s\n' "$text"
  fi
done

printf '%s\n' '== ShellCheck and invocation references =='
rg -n -C 3 'shellcheck|validate-manifests\.sh|bash|sh ' \
  .github README.md package.json Makefile 2>/dev/null || true

printf '%s\n' '== Remote-wait wording outside validator fixtures =='
rg -n -i -C 2 \
  'await|monitor|track|remain blocked|wait(ing)?|watch(ed|ing)?|poll(ing)?|sleep(ing)?' \
  plugins/agentic-engineering .github .claude-plugin 2>/dev/null || true

Length of output: 42146


@devantler I reviewed exact head 1cc0b8d803b81760794d8f6f5504bceafece95a4.

  • Medium — scripts/validate-manifests.sh, Line 800: The inflection change rejects waiting, watched, polling, and sleeping. However, the validator still enforces a semantic prohibition with a limited verb list. It accepts Await CI completion after the canonical rule. This instruction permits the foreground remote wait that the canonical contract forbids. It also accepts equivalent wording such as Monitor remote CI completion and Track merge completion. Add negative fixtures for these terms and extend the defined vocabulary, or change the validation approach so it does not depend on an open-ended list of remote-wait synonyms.

The changed shell syntax remains compatible with the repository’s Bash and ShellCheck CI configuration.

You are interacting with an AI system.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved the open-ended synonym problem at 7ecc635 by changing the validation model. Provider-neutral desired state now pins the entire agentic-engineer file by SHA-256; arbitrary additions such as await, monitor, or track fail on content integrity without enumerating verbs. Missing/malformed/mismatched digest fixtures are covered, and the suite is 126/126.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai review

The open-ended synonym mechanism was replaced with full entrypoint content integrity, and CI is green at 7ecc635. Please re-review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Checked-out commit and PR metadata =='
git rev-parse HEAD
git status --short
gh pr view 112 --repo devantler-tech/agent-plugins \
  --json number,headRefOid,baseRefOid,title,files \
  --jq '{number,title,headRefOid,baseRefOid,files:[.files[].path]}'

printf '%s\n' '== Changes since the previous reviewed head =='
git diff --no-ext-diff --unified=100 \
  1cc0b8d803b81760794d8f6f5504bceafece95a4 HEAD -- \
  scripts/validate-manifests.sh \
  scripts/validate-manifests.test.sh \
  plugins/agentic-engineering/agents/agentic-engineer.agent.md

printf '%s\n' '== Validator and test structure =='
ast-grep outline scripts/validate-manifests.sh --items all 2>/dev/null || true
ast-grep outline scripts/validate-manifests.test.sh --items all 2>/dev/null || true

printf '%s\n' '== Integrity-validation implementation =='
rg -n -C 30 -i \
  'agentic-engineer|sha-?256|digest|checksum|desired.state|entrypoint|remote.wait|canonical' \
  scripts/validate-manifests.sh

printf '%s\n' '== Integrity-validation fixtures =='
rg -n -C 30 -i \
  'agentic-engineer|sha-?256|digest|checksum|malformed|missing|mismatch|await|monitor|track|check_fail|check_pass' \
  scripts/validate-manifests.test.sh

printf '%s\n' '== Desired-state resource declarations and production entrypoint =='
rg -n -C 15 -i \
  'agentic-engineer|sha-?256|digest|checksum|entrypoint|definitionFrom' \
  --glob '*.json' --glob '*.yaml' --glob '*.yml' --glob '*.md' \
  plugins/agentic-engineering .github .claude-plugin 2>/dev/null || true

printf '%s\n' '== Static SHA-256 values for candidate entrypoints =='
fd -t f -a 'agentic-engineer\.agent\.md|desired-state.*\.(json|ya?ml)' . \
  -x sh -c 'printf "%s  " "$1"; sha256sum "$1"' sh {}

printf '%s\n' '== Shell interpreter and CI references =='
head -n 4 scripts/validate-manifests.sh
head -n 4 scripts/validate-manifests.test.sh
rg -n -C 4 'shellcheck|validate-manifests\.sh|bash|sh ' \
  .github README.md package.json Makefile 2>/dev/null || true

Length of output: 245537


@devantler I reviewed exact head 7ecc63599c0241b69843561fe197fb5d395f7592.

I found no new findings.

The validator now requires a valid lowercase SHA-256 digest and compares it with the full bundled agentic-engineer.agent.md content. The declared digest matches the static SHA-256 result for the production entrypoint. The self-test covers missing and malformed digests. It also verifies that remote-wait contradiction additions, including Await CI completion, fail through digest mismatch. The sha256sum and shasum -a 256 fallback remains compatible with the repository’s Bash and ShellCheck CI configuration.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@devantler
devantler marked this pull request as ready for review August 3, 2026 18:08
@devantler
devantler marked this pull request as draft August 3, 2026 18:22
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

CRLF portability is fixed, the prior threads are resolved, and CI is green. Please review the exact current head.

@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: 68d30b2bfa

ℹ️ 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/validate-manifests.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai full review

All findings are addressed, every thread is resolved, and CI is green. Please review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

@devantler I will perform a full review of the current pull request head 7e51ec56178f4c9bdd95a26ea2a547d550691aa7.

✅ Action performed

Full review finished.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Resolved CodeRabbit's docstring-coverage error at 6c1ec3a. Each of the three new shell helpers now has a concise contract comment, restoring documented function coverage without changing behavior. Local validation remains 130/130.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@coderabbitai full review

The docstring-coverage error is fixed, every thread is resolved, and CI is green. Please review the exact current head.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

@devantler I will perform a full review of pull request #112 at exact head 6c1ec3aa9d540a5ea293a48a6dc563ba69ef2712.

✅ Action performed

Full review finished.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 54 minutes.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

CodeRabbit completed the exact-head request but explicitly rate-limited its review. The only change after its clean full review is documentation comments for three shell helpers. Please review the exact current head.

@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: 6c1ec3aa9d

ℹ️ 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/validate-manifests.sh Outdated
@devantler

devantler commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

The byte-preserving digest fix is complete, its regression is green, the prior finding is resolved, and local validation passes 131/131. Please review the exact current head.

@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: 464e7b9a72

ℹ️ 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/validate-manifests.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

Perl byte I/O is now pinned with -C0, PERL_UNICODE=S is covered, the prior thread is resolved, and local validation passes 132/132. Please review the exact current head.

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

ℹ️ 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/validate-manifests.sh Outdated
@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

The digest subprocess now clears inherited Perl controls and pins raw stdin/stdout, PERL5OPT/PERLIO regressions are green, the prior thread is resolved, and local validation passes 134/134. Please review the exact current head.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 9c8b31f8b6

ℹ️ 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".

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

@codex review

The exact raw-I/O implementation is unchanged; this head only makes empty inherited Perl controls explicit to satisfy the repository full-severity ShellCheck job. Local validation remains 134/134 and full ShellCheck is green. Please review the exact current head.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Swish!

Reviewed commit: e867587f29

ℹ️ 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".

@devantler
devantler marked this pull request as ready for review August 3, 2026 19:42
@devantler
devantler merged commit bb17f46 into main Aug 3, 2026
41 checks passed
@devantler
devantler deleted the codex/111-no-foreground-remote-poll branch August 3, 2026 19:43
@github-project-automation github-project-automation Bot moved this from 🫴 Ready to ✅ Done in 🌊 Project Board Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant