You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The surveyor forge-guard adapter is declared unconditionally required but documented as conditionally installed #161
The agentic-engineering provider-neutral desired state declares scripts/surveyor-forge-readonly.sh as an unconditional entry in spec.source.requiredRuntimeAssets, while the onboarding text in the same document instructs a consumer to install that adapter conditionally — quoting it:
plus scripts/surveyor-forge-readonly.shonly where the runtime presents a candidate command as structured JSON on standard input rather than as an argument
Measured at 439f4eee (plugin 4.4.12), resources/provider-neutral.desired-state.json:
Entry
Declared
scripts/classify-default-branch-ci-runs.sh
required, executable
scripts/forge-readonly-guard.sh
required, executable
scripts/surveyor-forge-readonly.sh
required, executable — unconditionally
Problem and who it affects
A consuming deployment reads that array as an allow-list and requires every entry to be present in the installed copy. So a runtime without full plugin support that presents candidate commands as arguments — exactly the case the onboarding text tells to omit the adapter — is instructed to omit a file that the manifest simultaneously declares mandatory.
Such a deployment is then permanently unable to report its definitions as current, no matter how correctly it is configured: the omission the text asked for is the drift the manifest reports. The two remedies are mutually exclusive as written, so a consumer cannot satisfy both.
This was surfaced by a Codex review (P2) on the consuming rollout PR devantler-tech/monorepo#3040 and independently confirmed against the consumer's own currency checker, which enumerates spec.source.requiredRuntimeAssets and requires each entry in every non-Cursor installed copy.
Why it belongs here rather than in the consumer
The consumer copy is byte-identical to this document (sha256 1d561af23c622da23044548c2d439226d754738e23e38eee4484911b7cef9db1), and the consumer's delivery-contract test hashes that copy against the pinned submodule. Editing the copy to resolve the contradiction would both fail that test and silently fork a verbatim artifact from its source, so the contradiction has to be resolved at the authoring end.
Expected behaviour
The manifest and the onboarding text agree: either the adapter is unconditionally required for every runtime, or the manifest represents the condition explicitly so a consumer can evaluate it and a currency check can honour it.
Acceptance criteria
The declaration and the onboarding text state the same requirement for scripts/surveyor-forge-readonly.sh.
A conditional asset, if that is the chosen shape, is machine-readable rather than described only in prose.
A correctly configured argument-passing fallback deployment can report CURRENT.
Existing full-plugin consumers are unaffected — a negative control, since they install all three today.
Size
Small — a manifest/prose reconciliation, plus whatever conditional representation is chosen.
Activity
chore: agent-claim #161 nonce=06a4af5e3ed6d53ddf8f88585803d735
test(agentic-engineering): assert onboarding installs every surveyor …