Skip to content

docs(agents): write agent docs in ASD-STE100 and remove misleading docs - #3723

Open
thymikee wants to merge 27 commits into
mainfrom
docs/agent-docs-ste100
Open

thymikee wants to merge 27 commits into
mainfrom
docs/agent-docs-ste100

Conversation

@thymikee

@thymikee thymikee commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Summary

Agent docs now use ASD-STE100 Simplified Technical English. Material that misled agents with small context windows is removed.

  • AGENTS.md and all docs/agents/*.md: rewritten in STE, one commit per file. Eight rules that were stated in two places are deleted; each deletion has a git grep proof in its commit. AGENTS.md now requires STE for agent docs. It also routes new shared constraints to task docs, not private agent memory, and warns that all worktrees share git stash.
  • issue-tracker.md: post Decision: comments when a decision or the scope changes. Post a Current state: comment on an umbrella issue after each merge.
  • review.md: read an ADR's Status and "Rules at a glance" first. A bulk rewrite of prose needs a review by another model provider that compares each changed sentence with the base.
  • docs/agents/domain.md is merged into CONTEXT.md.
  • cli-flags.md and code-ownership.md: the owner paths are corrected.
  • device-foldable.md: the Xcode 27.1 availability notes are removed.
  • The three tracked files in the ignored .device-evidence/ folder are untracked. They held task-scoped coordinator instructions.
  • Three old notes in docs/ are deleted. The code now contradicts each one.
  • CONTRIBUTING.md now says to commit first and then run check:affected --run --head <commit>.

Byte budgets stay inside their limits: AGENTS.md is 3,961 of 4,000, CONTEXT.md is 10,997 of 11,000, and docs/agents is 39,874 of 40,000. The ADR and help rewrites are in separate PRs: #3729, #3730, #3731, and one help PR to come.

Validation

  • Tested SHA: 27473b1aee.
  • pnpm check:affected --run --head 27473b1aee passed with exactCommit=true: format, lint, typecheck, layering, fallow, build, vitest-related, and agent-guidance.
  • An independent Claude Opus review found 8 issues (2 medium, 6 low). All 8 are fixed in the last three commits.
  • The code changes are comments only, in a test fixture and in command-result.ts. No device run is required.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

5 issues found across 4 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/agents/issue-tracker.md">

<violation number="1" location="docs/agents/issue-tracker.md:22">
P2: `Decision:` comments do not identify their topic, but the next rule requires choosing the newest comment per topic. Require a topic after the fixed prefix so agents can reliably determine which decision supersedes another.</violation>

<violation number="2" location="docs/agents/issue-tracker.md:24">
P2: The unconditional `Current state:` requirement can block work on issues that have no such comment. Read that comment only for umbrella issues, and only when one exists.</violation>

<violation number="3" location="docs/agents/issue-tracker.md:31">
P2: This dependent-PR instruction no longer prevents merge-readiness while prerequisite semantics remain unresolved. Keep the publication permission, but explicitly defer merge-readiness until the prerequisites are resolved.</violation>
</file>

<file name="docs/agents/device-verification.md">

<violation number="1" location="docs/agents/device-verification.md:31">
P3: This cleanup instruction is ambiguous because `also failed attempts` is not clearly an object of `Close`; an agent can miss that failed session attempts require cleanup. Use `including failed attempts` to preserve the required scope.</violation>
</file>

<file name="AGENTS.md">

<violation number="1" location="AGENTS.md:50">
P2: This wording no longer guarantees non-overlapping file ownership for parallel workers. Keep the explicit `disjoint files` rule so concurrent agents do not edit the same file and create conflicts.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic


## Current state

When you change a decision or the scope of your issue, post a comment that starts with `Decision:`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: Decision: comments do not identify their topic, but the next rule requires choosing the newest comment per topic. Require a topic after the fixed prefix so agents can reliably determine which decision supersedes another.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/issue-tracker.md, line 22:

<comment>`Decision:` comments do not identify their topic, but the next rule requires choosing the newest comment per topic. Require a topic after the fixed prefix so agents can reliably determine which decision supersedes another.</comment>

<file context>
@@ -1,31 +1,34 @@
 
+## Current state
+
+When you change a decision or the scope of your issue, post a comment that starts with `Decision:`.
+After a PR merges on your umbrella issue, post a `Current state:` comment: merged PRs, open PRs, and the next step.
+Before you continue work, read all `Decision:` comments (newest wins per topic) and the newest `Current state:` comment.
</file context>
Suggested change
When you change a decision or the scope of your issue, post a comment that starts with `Decision:`.
When you change a decision or the scope of your issue, post `Decision: <topic> — <decision and reason>`.

Comment thread AGENTS.md
- In a new worktree, run `pnpm install --frozen-lockfile && pnpm build` before you test.
- Do not change other worktrees, devices, sessions, dirty files, or experiments. Do not use `git stash`; all worktrees share it.
- Do not copy `.env` into a worktree. For host credentials, source the main checkout's file by its absolute path.
- Give each parallel worker different files and a different device. `pnpm check:affected --run` and `pnpm check` run one at a time automatically.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This wording no longer guarantees non-overlapping file ownership for parallel workers. Keep the explicit disjoint files rule so concurrent agents do not edit the same file and create conflicts.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At AGENTS.md, line 50:

<comment>This wording no longer guarantees non-overlapping file ownership for parallel workers. Keep the explicit `disjoint files` rule so concurrent agents do not edit the same file and create conflicts.</comment>

<file context>
@@ -1,61 +1,62 @@
+- In a new worktree, run `pnpm install --frozen-lockfile && pnpm build` before you test.
+- Do not change other worktrees, devices, sessions, dirty files, or experiments. Do not use `git stash`; all worktrees share it.
+- Do not copy `.env` into a worktree. For host credentials, source the main checkout's file by its absolute path.
+- Give each parallel worker different files and a different device. `pnpm check:affected --run` and `pnpm check` run one at a time automatically.
+- The layering scan reads only tracked files. Stage new modules before you trust its result.
+- When you rename a file, move its Fallow baseline entry. Do not regenerate unrelated baselines.
</file context>
Suggested change
- Give each parallel worker different files and a different device. `pnpm check:affected --run` and `pnpm check` run one at a time automatically.
- Give parallel workers disjoint files and distinct devices. `pnpm check:affected --run` and `pnpm check` run one at a time automatically.


When you change a decision or the scope of your issue, post a comment that starts with `Decision:`.
After a PR merges on your umbrella issue, post a `Current state:` comment: merged PRs, open PRs, and the next step.
Before you continue work, read all `Decision:` comments (newest wins per topic) and the newest `Current state:` comment.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: The unconditional Current state: requirement can block work on issues that have no such comment. Read that comment only for umbrella issues, and only when one exists.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/issue-tracker.md, line 24:

<comment>The unconditional `Current state:` requirement can block work on issues that have no such comment. Read that comment only for umbrella issues, and only when one exists.</comment>

<file context>
@@ -1,31 +1,34 @@
+
+When you change a decision or the scope of your issue, post a comment that starts with `Decision:`.
+After a PR merges on your umbrella issue, post a `Current state:` comment: merged PRs, open PRs, and the next step.
+Before you continue work, read all `Decision:` comments (newest wins per topic) and the newest `Current state:` comment.
+
 ## Dependencies and sequencing
</file context>
Suggested change
Before you continue work, read all `Decision:` comments (newest wins per topic) and the newest `Current state:` comment.
Before you continue work, read all `Decision:` comments (newest wins per topic). On an umbrella issue, read the newest `Current state:` comment, if one exists.

- `Blocked by: ...` lines, linked prerequisite issues, and branch-base notes are part of the issue contract.
- Before you schedule or review work, examine the blockers. If one is open, decide: wait, stack on its branch, or rescope explicitly.
- If the prerequisite semantics are not resolved, do not mark the issue as ready for implementation.
You can publish a dependent PR with its base and blockers explicit.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This dependent-PR instruction no longer prevents merge-readiness while prerequisite semantics remain unresolved. Keep the publication permission, but explicitly defer merge-readiness until the prerequisites are resolved.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/issue-tracker.md, line 31:

<comment>This dependent-PR instruction no longer prevents merge-readiness while prerequisite semantics remain unresolved. Keep the publication permission, but explicitly defer merge-readiness until the prerequisites are resolved.</comment>

<file context>
@@ -1,31 +1,34 @@
+- `Blocked by: ...` lines, linked prerequisite issues, and branch-base notes are part of the issue contract.
+- Before you schedule or review work, examine the blockers. If one is open, decide: wait, stack on its branch, or rescope explicitly.
+- If the prerequisite semantics are not resolved, do not mark the issue as ready for implementation.
+  You can publish a dependent PR with its base and blockers explicit.
+- Before you close an umbrella issue, verify child issue states and key implementation PRs, not only checked boxes.
 
</file context>
Suggested change
You can publish a dependent PR with its base and blockers explicit.
You can publish a dependent PR with its base and blockers explicit. Do not mark it merge-ready until prerequisite semantics are resolved; see `docs/agents/pull-requests.md`.

Use purpose-specific sessions. For extra isolation, use a separate `--state-dir` under `/private/tmp`.
Close every manually opened session, including failed attempts, with its original session, platform, UDID, and state directory.
Use one session for each purpose. For more isolation, use a separate `--state-dir` under `/private/tmp`.
Close each session that you opened manually, also failed attempts, with its original session, platform, UDID, and state directory.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: This cleanup instruction is ambiguous because also failed attempts is not clearly an object of Close; an agent can miss that failed session attempts require cleanup. Use including failed attempts to preserve the required scope.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-verification.md, line 31:

<comment>This cleanup instruction is ambiguous because `also failed attempts` is not clearly an object of `Close`; an agent can miss that failed session attempts require cleanup. Use `including failed attempts` to preserve the required scope.</comment>

<file context>
@@ -4,59 +4,59 @@ Use this for Apple runner changes or manual device runs. For foldables, also rea
-Use purpose-specific sessions. For extra isolation, use a separate `--state-dir` under `/private/tmp`.
-Close every manually opened session, including failed attempts, with its original session, platform, UDID, and state directory.
+Use one session for each purpose. For more isolation, use a separate `--state-dir` under `/private/tmp`.
+Close each session that you opened manually, also failed attempts, with its original session, platform, UDID, and state directory.
 
 For `DEVICE_IN_USE`:
</file context>
Suggested change
Close each session that you opened manually, also failed attempts, with its original session, platform, UDID, and state directory.
Close each session that you opened manually, including failed attempts, with its original session, platform, UDID, and state directory.

@thymikee

Copy link
Copy Markdown
Member Author

The docs change in 8cec04a reads well and CI is green (9 checks, none failing), but it drops two rules that still need to apply. I did not check every hunk of the four files, and I did not search for other readers of the Decision: prefix.

The disjoint-files rule is gone from Worktree setup in AGENTS.md. Parallel workers can again get overlapping files. The merge-readiness pointer to docs/agents/pull-requests.md is gone from issue-tracker.md. Please restore both rules, and make Decision: carry a topic key so "newest wins per topic" has something to match on. The next step before merge is those three changes.

Not blocking: you can take or leave these. In AGENTS.md the old note that check:affected and check serialize also vanished, so the replacement could also name the rule of distinct devices. In issue-tracker.md, Current state: could be read only on umbrella issues, when present. In device-verification.md, "also failed attempts" could read "Close each session you opened manually, including failed attempts."

The open inline threads on the topic key (#3723 (comment)), the disjoint-files rule (#3723 (comment)), the unconditional Current state read (#3723 (comment)), and the dropped pull-requests.md pointer (#3723 (comment)) still stand. The lower-priority thread on the failed-attempts clause also still applies (#3723 (comment)).

…ns in comments

- Require ASD-STE100 for agent docs; rewrite AGENTS.md, issue-tracker,
  device-verification, and test-experiments in it.
- Record issue decisions as `Decision:` comments and umbrella progress as
  `Current state:` comments; read them before resuming work.
- Route new shared constraints to task docs, not private agent memory.
- Warn that all worktrees share `git stash`.
- Delete duplicated rules to stay inside the guidance byte budgets.
The three files under the ignored .device-evidence/ folder held task-scoped
coordinator instructions for #2680 and #2682. The fixture provenance comment
no longer points at them; captured entries carry their own command, Xcode
version, and note.
- ios-runner-protocol-optimizations.md said status recovery was in progress;
  runner-command-recovery.ts implements it and ADR 0005 owns the policy.
- usbmux-runner-transport-experiment.md recorded #1403 evidence and an
  override it also declared removed; #1517 shipped the decision.
- node-client-result-types.md called the interaction family untyped;
  CommandResultMap now types it.

No file links to any of them.
CONTRIBUTING.md told contributors to run `check:affected --run` on the dirty
tree as pre-push validation. docs/agents/testing.md requires a committed head
and an `exactCommit: true` receipt. Align the guide and drop the gate internals
that testing.md owns.
…d ADR reading

- Move the five test-harness terms from docs/agents/domain.md into the
  CONTEXT.md "Providers and tests" section and delete domain.md; review.md
  already owns the ADR-conflict rule. Trim CONTEXT.md wording to fit its budget.
- review.md: read an ADR's Status and "Rules at a glance" first, and other
  sections only for the rules a change touches.
- cli-flags.md: flag definitions live in packages/command-registry; help
  rendering lives in src/commands/schema, not src/cli/parser.
`src/commands/*-command-contracts.ts` stopped existing in #772. Command input
schemas live in the `inputSchema` of each command family's metadata.
@thymikee
thymikee force-pushed the docs/agent-docs-ste100 branch from 8cec04a to f51b806 Compare October 16, 2026 15:24
@thymikee thymikee changed the title docs(agents): write agent docs in ASD-STE100 and anchor issue decisions in comments docs(agents): write agent docs in ASD-STE100 and remove misleading docs Oct 16, 2026
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Size Report

Metric Base Current Diff
Installed (including dependencies) 5.30 MB 5.30 MB +192 B
Package (unpacked) 5.30 MB 5.30 MB +192 B
Package (download) 1.59 MB 1.59 MB +74 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 21.4 ms 21.0 ms -0.4 ms
CLI --help 56.2 ms 56.6 ms +0.4 ms

…rification

Xcode 27.1 is now the selected toolchain on the maintainer's hosts, so plain
`xcrun devicectl` reaches the hinge and display commands. The beta-only
device-type note no longer applies.
…results

Commit 927c02d deleted docs/node-client-result-types.md and said the
interaction family was typed. That was wrong: 14 interaction methods and all
observability methods still return CommandRequestResult. Keep the note's one
still-true rule beside CommandResult instead.
- CONTRIBUTING.md: keep the fail-open rule, what `pnpm check` covers, and the
  Windows fallback.
- device-verification.md: keep the physical-iOS measurement pitfalls from the
  deleted usbmux note.
- cli-flags.md: add a field to the field map; defineFieldCommandMetadata
  generates inputSchema and the audience.
- review.md: read the Decision section of an ADR with no "Rules at a glance".
- code-ownership.md: point CLI flag owners at cli-flags.md.
- test-authoring.md: split a test file only with its source module.
- pull-requests.md: name the receipt to record.
- test-audit.md: "put" a batch in a PR, not "merge" it.
- Fixture comments: drop the undefined "Phase B" and point at the capture
  commands in git history.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

4 issues found across 11 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/agents/device-verification.md">

<violation number="1" location="docs/agents/device-verification.md:28">
P2: This line does not say what to check, so an agent cannot act on it. Name the check: the exit status and output of each command must show success before its time is recorded.</violation>
</file>

<file name="CONTRIBUTING.md">

<violation number="1" location="CONTRIBUTING.md:215">
P3: The restored `pnpm check` list drops dependency-graph parity and bundle ownership, which the previous version named. It also omits the package checks (`check:package`) and the docs checks that `check:tooling` runs. Add the two dropped items back, and name the package check.</violation>
</file>

<file name="docs/agents/device-foldable.md">

<violation number="1" location="docs/agents/device-foldable.md:4">
P2: The removed bullet still applies: the repo still calls 27.1 a beta and points to Xcode-27.1.0-Beta. Agents may try a non-Duo device on 27.1 and fail without this warning. Restore the device-type restriction, or show that the restriction no longer holds.</violation>

<violation number="2" location="docs/agents/device-foldable.md:4">
P1: Removing the `DEVELOPER_DIR` pin leaves agents on hosts whose `xcode-select` points to an older Xcode without a working command. The repo's own Duo harness and README still require that pin and fail without it. Restore the toolchain instruction for these commands, or keep the note that `xcode-select` may select an older Xcode.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

toolchain per command:
`DEVELOPER_DIR=<Xcode-27.1>/Contents/Developer xcrun devicectl device info displays --device <udid>`.
Before you change capture behavior on a multi-panel device, read ADR 0025.
To list the panels, run `xcrun devicectl device info displays --device <udid>`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1: Removing the DEVELOPER_DIR pin leaves agents on hosts whose xcode-select points to an older Xcode without a working command. The repo's own Duo harness and README still require that pin and fail without it. Restore the toolchain instruction for these commands, or keep the note that xcode-select may select an older Xcode.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-foldable.md, line 4:

<comment>Removing the `DEVELOPER_DIR` pin leaves agents on hosts whose `xcode-select` points to an older Xcode without a working command. The repo's own Duo harness and README still require that pin and fail without it. Restore the toolchain instruction for these commands, or keep the note that `xcode-select` may select an older Xcode.</comment>

<file context>
@@ -1,9 +1,7 @@
-The iOS 27.1 runtime comes only with its Xcode. `xcode-select` can select an older Xcode.
-For each command, set the toolchain explicitly:
-`DEVELOPER_DIR=<Xcode-27.1>/Contents/Developer xcrun devicectl device info displays --device <udid>`.
+To list the panels, run `xcrun devicectl device info displays --device <udid>`.
 
 - Panels: the command lists each integrated panel with `backlightState`. Only the lit panel permits capture.
</file context>
Suggested change
To list the panels, run `xcrun devicectl device info displays --device <udid>`.
To list the panels, run `DEVELOPER_DIR=<Xcode-27.1>/Contents/Developer xcrun devicectl device info displays --device <udid>`. The `xcode-select` default may point to an older Xcode, so set the toolchain explicitly.

Keep the transport below session and client behavior. Keep xctestrun preparation outside request execution.
After signing, run `node -e 0` before you measure Gatekeeper-sensitive startup.
Before you measure on a physical iOS device, set Auto-Lock to Never.
A failed command can look like a fast success. Examine each result before you record its time.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This line does not say what to check, so an agent cannot act on it. Name the check: the exit status and output of each command must show success before its time is recorded.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-verification.md, line 28:

<comment>This line does not say what to check, so an agent cannot act on it. Name the check: the exit status and output of each command must show success before its time is recorded.</comment>

<file context>
@@ -24,6 +24,8 @@ For Apple connection failures, start at `packages/platform-apple/src/runner/runn
 Keep the transport below session and client behavior. Keep xctestrun preparation outside request execution.
 After signing, run `node -e 0` before you measure Gatekeeper-sensitive startup.
+Before you measure on a physical iOS device, set Auto-Lock to Never.
+A failed command can look like a fast success. Examine each result before you record its time.
 
 ## Ownership and cleanup
</file context>
Suggested change
A failed command can look like a fast success. Examine each result before you record its time.
A failed command can still print a fast time. Check the exit status and output of each command before you record its time.

@@ -1,24 +1,28 @@
# Foldable Apple verification

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: The removed bullet still applies: the repo still calls 27.1 a beta and points to Xcode-27.1.0-Beta. Agents may try a non-Duo device on 27.1 and fail without this warning. Restore the device-type restriction, or show that the restriction no longer holds.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-foldable.md, line 4:

<comment>The removed bullet still applies: the repo still calls 27.1 a beta and points to Xcode-27.1.0-Beta. Agents may try a non-Duo device on 27.1 and fail without this warning. Restore the device-type restriction, or show that the restriction no longer holds.</comment>

<file context>
@@ -1,9 +1,7 @@
-The iOS 27.1 runtime comes only with its Xcode. `xcode-select` can select an older Xcode.
-For each command, set the toolchain explicitly:
-`DEVELOPER_DIR=<Xcode-27.1>/Contents/Developer xcrun devicectl device info displays --device <udid>`.
+To list the panels, run `xcrun devicectl device info displays --device <udid>`.
 
 - Panels: the command lists each integrated panel with `backlightState`. Only the lit panel permits capture.
</file context>

Comment thread CONTRIBUTING.md
the run also includes staged, unstaged, and untracked files; treat that result as local feedback.
Unknown, workflow, lockfile, and selector-owning changes fail open to the full local set. For broad
refactors or when explicitly requested, run `pnpm check`: formatting, lint, typechecking, layering,
production exports, MCP metadata, the build, Fallow, unit tests, and local smoke tests. Both commands

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P3: The restored pnpm check list drops dependency-graph parity and bundle ownership, which the previous version named. It also omits the package checks (check:package) and the docs checks that check:tooling runs. Add the two dropped items back, and name the package check.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At CONTRIBUTING.md, line 215:

<comment>The restored `pnpm check` list drops dependency-graph parity and bundle ownership, which the previous version named. It also omits the package checks (`check:package`) and the docs checks that `check:tooling` runs. Add the two dropped items back, and name the package check.</comment>

<file context>
@@ -210,9 +210,12 @@ pnpm check:affected --run --head "$(git rev-parse HEAD)"
-specialized toolchains, and live device lanes.
+Unknown, workflow, lockfile, and selector-owning changes fail open to the full local set. For broad
+refactors or when explicitly requested, run `pnpm check`: formatting, lint, typechecking, layering,
+production exports, MCP metadata, the build, Fallow, unit tests, and local smoke tests. Both commands
+share one host lock and need macOS or Linux; on Windows, use the affected plan and direct focused
+checks. GitHub CI stays authoritative for coverage, provider integration, specialized toolchains,
</file context>

The ASD-STE100 rewrites of ADRs and help passed their authors' self-reviews,
then failed independent reviews from another model provider with high and
medium meaning changes in every PR. Record the rule in review.md and fold two
one-word lists into sentences to stay inside the byte budget.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/agents/review.md">

<violation number="1" location="docs/agents/review.md:32">
P2: This wording drops control-flow narration from the review targets: a comment can narrate visible execution without repeating the code. Keep `narrating comments` in this rule so such comments remain actionable.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread docs/agents/review.md
Unreleased shapes have no external compatibility obligation.
- Require each new test to detect a credible production failure.
Test doubles must fail at the same seam as production.
- Find dead code, redundant guards, casts, comments that repeat the code, and competing owners.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This wording drops control-flow narration from the review targets: a comment can narrate visible execution without repeating the code. Keep narrating comments in this rule so such comments remain actionable.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/review.md, line 32:

<comment>This wording drops control-flow narration from the review targets: a comment can narrate visible execution without repeating the code. Keep `narrating comments` in this rule so such comments remain actionable.</comment>

<file context>
@@ -35,34 +29,20 @@ For mutations or base comparisons, use [isolated experiments](test-experiments.m
-  - Casts.
-  - Comments that repeat the code.
-  - Competing owners.
+- Find dead code, redundant guards, casts, comments that repeat the code, and competing owners.
   Fix the owning rule, not only named sites.
+- For a bulk rewrite of prose (docs, ADRs, help), get a review from another model provider.
</file context>
Suggested change
- Find dead code, redundant guards, casts, comments that repeat the code, and competing owners.
- Find dead code, redundant guards, casts, narrating comments, and competing owners.

Daemon route and request-policy traits are declared in the `daemon` facet of
packages/command-registry/src/registry.ts. daemon-command-registry.ts derives
its table from the descriptors (#906, #907) and only exposes the predicates.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/agents/code-ownership.md">

<violation number="1" location="docs/agents/code-ownership.md:13">
P2: This row removes the only pointer to `daemon-command-registry.ts`, which still owns request-policy decisions such as `resolveProviderDeviceResolutionIntent` and `shouldSkipSessionlessProviderDevice`. Keep the trait owner, and restore a row for the daemon predicates so agents do not miss that logic.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

| Command names | `packages/command-registry/src/catalog.ts` |
| Surface, runtime, batch, timeout traits | `packages/command-registry/src/registry.ts` |
| Daemon routes and request policy | `packages/daemon/src/core/daemon-command-registry.ts` |
| Surface, runtime, batch, timeout, daemon route and policy traits | `packages/command-registry/src/registry.ts` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This row removes the only pointer to daemon-command-registry.ts, which still owns request-policy decisions such as resolveProviderDeviceResolutionIntent and shouldSkipSessionlessProviderDevice. Keep the trait owner, and restore a row for the daemon predicates so agents do not miss that logic.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/code-ownership.md, line 13:

<comment>This row removes the only pointer to `daemon-command-registry.ts`, which still owns request-policy decisions such as `resolveProviderDeviceResolutionIntent` and `shouldSkipSessionlessProviderDevice`. Keep the trait owner, and restore a row for the daemon predicates so agents do not miss that logic.</comment>

<file context>
@@ -10,8 +10,7 @@ Read the owner. Do not copy its policy into consumers.
 | Command names | `packages/command-registry/src/catalog.ts` |
-| Surface, runtime, batch, timeout traits | `packages/command-registry/src/registry.ts` |
-| Daemon routes and request policy | `packages/daemon/src/core/daemon-command-registry.ts` |
+| Surface, runtime, batch, timeout, daemon route and policy traits | `packages/command-registry/src/registry.ts` |
 | Interaction guarantees | `packages/contracts/src/interaction-guarantees.ts` |
 | Runtime-fact admission | `packages/daemon/src/core/runtime-admission.ts`, `src/platform-runtime-gateway.ts` |
</file context>
Suggested change
| Surface, runtime, batch, timeout, daemon route and policy traits | `packages/command-registry/src/registry.ts` |
| Surface, runtime, batch, timeout, daemon route traits | `packages/command-registry/src/registry.ts` |
| Daemon request-policy predicates | `packages/daemon/src/core/daemon-command-registry.ts` |

@thymikee

Copy link
Copy Markdown
Member Author

The two earlier findings are still open at 01e5eb2, and the code change itself is fine. I fixed nothing myself. The AGENTS.md ownership wording now keeps the rule, so that part is done. No conflicts. Only Smoke Tests are still queued or running, and this docs-only change does not touch the device smoke routes, so I read that as unrelated.

The new text at docs/agents/issue-tracker.md:31 says a dependent PR can be published, but it gives no merge condition. The old text sent merge-readiness to docs/agents/pull-requests.md. Without it, a reader can treat a dependent PR as ready while its prerequisite is open. Please restore "merge-readiness follows docs/agents/pull-requests.md".

docs/agents/device-foldable.md:3 drops the DEVELOPER_DIR=<Xcode-27.1> pin from the devicectl commands. It also drops the bullet that the beta accepts only the iPhone Duo device type. If xcode-select points at an older Xcode, foldable verification fails or picks the wrong device type. Please restore both, or show that 27.1 is no longer beta. Does the repo still treat 27.1 as beta?

Not blocking: the "newest wins per topic" rule at docs/agents/issue-tracker.md:22 has no topic key, so a newer decision on one topic overrides unrelated ones, and requiring "Decision: : ..." and matching on the topic would fix it. You can take or leave it.

On the open inline threads, four of them still apply: no topic key for Decision, merge-readiness pointer missing, DEVELOPER_DIR pin missing, and Duo-only bullet dropped. Three more P2 threads still apply: Current state read unconditionally, the unnamed check in "Examine each result", and one P3 on ambiguous "also failed attempts". The AGENTS.md:50 thread no longer applies, because each worker now gets different files and a different device, which keeps the ownership rule, so you can resolve it. I did not check the CONTRIBUTING.md and review.md threads.

I read only the diffs of AGENTS.md, device-verification, device-foldable and issue-tracker. I did not check the other rewritten docs for dropped conditions, and I did not search for links to the deleted docs. Before merge, restore the merge-readiness pointer and the Xcode pin or Duo-only note, add a topic key to Decision:, and answer the open threads above.

This review covers 01e5eb2. The newer head 27473b1 only edits one row in docs/agents/code-ownership.md, which does not touch these findings.

@thymikee

Copy link
Copy Markdown
Member Author

The earlier docs fixes look good, but one change still needs a fix before merge. At 27473b1 the rule in docs/agents/issue-tracker.md#L31 says only "You can publish a dependent PR with its base and blockers explicit." The old text also said that merge-readiness follows docs/agents/pull-requests.md, and that pointer is gone. An agent can now read this line as permission to merge while the prerequisites are still open. Please restore the pointer, for example by appending "Merge-readiness follows docs/agents/pull-requests.md." https://github.com/callstack/agent-device/blob/27473b1/docs/agents/issue-tracker.md#L31

I read only issue-tracker.md and AGENTS.md at this commit. I did not compare the other rewritten docs rule by rule, and I did not check every inline thread. The open thread on the same missing pointer still applies: #3723 (comment). Two more still apply: the "Decision:" topic rule at #3723 (comment) and the "Current state:" read rule at #3723 (comment). The thread on AGENTS.md:50 no longer applies, because that line now says different files and a different device per worker, so please resolve it: #3723 (comment). Seven lower-priority threads are still open and I did not verify them.

Only the Smoke Tests check is still queued or running. This change touches docs and type comments, not the device smoke routes, so that check is likely unrelated. There are no conflicts. Before merge, the pointer to docs/agents/pull-requests.md must be back at issue-tracker.md line 31.

…otion

devicectl is the system CoreDevice tool (/usr/bin/devicectl; the Xcode shim
reports the same 651.13.5), so DEVELOPER_DIR does not select it. Version
651.13.5 (Xcode 27.1, 27A9275) has no `device motion` subcommand (#3581), and
fold reports fold-pose-dispatched-unverified there (#3587). Point agents at the
lit panel from `devicectl device info displays` instead.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

2 issues found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="docs/agents/device-foldable.md">

<violation number="1" location="docs/agents/device-foldable.md:22">
P2: This new exception conflicts with the preceding instruction that `fold` reads the hinge through the unavailable `device motion` command. Update the Pose instructions together so they describe the attempted read and the no-sample refusal consistently.</violation>

<violation number="2" location="docs/agents/device-foldable.md:23">
P2: The panel list identifies a lit screen but does not determine the hinge pose: it cannot distinguish `half-open` from `open`, and no `screen` evidence exists when no panel is lit. Say that panel power is conditional evidence rather than pose verification.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

- An app interaction.
Until GHA supports the runtime, Duo coverage remains local.
devicectl 651.13.5 has no `device motion`. There, `fold` reports `fold-pose-dispatched-unverified`.
To examine the pose, compare the lit panel from the panel list.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: The panel list identifies a lit screen but does not determine the hinge pose: it cannot distinguish half-open from open, and no screen evidence exists when no panel is lit. Say that panel power is conditional evidence rather than pose verification.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-foldable.md, line 23:

<comment>The panel list identifies a lit screen but does not determine the hinge pose: it cannot distinguish `half-open` from `open`, and no `screen` evidence exists when no panel is lit. Say that panel power is conditional evidence rather than pose verification.</comment>

<file context>
@@ -19,8 +19,8 @@ To list the panels, run `xcrun devicectl device info displays --device <udid>`.
-  To examine the angle separately, run:
-  `xcrun devicectl device motion hinge-angle --device <udid> --session-timeout 1 --timeout 5`.
+  devicectl 651.13.5 has no `device motion`. There, `fold` reports `fold-pose-dispatched-unverified`.
+  To examine the pose, compare the lit panel from the panel list.
 - Touch overlays export at the captured track size.
   The compositor checks its output size and non-black content against the raw capture.
</file context>
Suggested change
To examine the pose, compare the lit panel from the panel list.
When panel power reports one lit panel, compare it with the panel list as evidence; it does not distinguish `half-open` from `open`.

- Capture of the active panel.
- An app interaction.
Until GHA supports the runtime, Duo coverage remains local.
devicectl 651.13.5 has no `device motion`. There, `fold` reports `fold-pose-dispatched-unverified`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2: This new exception conflicts with the preceding instruction that fold reads the hinge through the unavailable device motion command. Update the Pose instructions together so they describe the attempted read and the no-sample refusal consistently.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At docs/agents/device-foldable.md, line 22:

<comment>This new exception conflicts with the preceding instruction that `fold` reads the hinge through the unavailable `device motion` command. Update the Pose instructions together so they describe the attempted read and the no-sample refusal consistently.</comment>

<file context>
@@ -19,8 +19,8 @@ To list the panels, run `xcrun devicectl device info displays --device <udid>`.
   Until GHA supports the runtime, Duo coverage remains local.
-  To examine the angle separately, run:
-  `xcrun devicectl device motion hinge-angle --device <udid> --session-timeout 1 --timeout 5`.
+  devicectl 651.13.5 has no `device motion`. There, `fold` reports `fold-pose-dispatched-unverified`.
+  To examine the pose, compare the lit panel from the panel list.
 - Touch overlays export at the captured track size.
</file context>

@thymikee

Copy link
Copy Markdown
Member Author

The earlier finding on docs/agents/issue-tracker.md is still open at 0be63cd. The line at https://github.com/callstack/agent-device/blob/0be63cd/docs/agents/issue-tracker.md#L31 reads only "You can publish a dependent PR with its base and blockers explicit." The old pointer to docs/agents/pull-requests.md is gone, and this update did not touch the file. An agent can read that line as permission to merge while prerequisites are open. Please append "Merge-readiness follows docs/agents/pull-requests.md." to it.

Not blocking, and you can take or leave it: the Declarations table in docs/agents/code-ownership.md and AGENTS.md no longer name packages/daemon/src/core/daemon-command-registry.ts, which AGENTS.md used to route daemon route ownership and request-policy traits to, so a row for it would restore that.

The open inline threads on the code-ownership row, the merge-readiness line, "Decision:" (#3723 (comment)), the weakened ownership rule in AGENTS.md (#3723 (comment)) and the unconditional "Current state:" read (#3723 (comment)) still apply, as do the ones on the DEVELOPER_DIR pin removal (#3723 (comment)), the device-verification line with no check (#3723 (comment)), the 27.1 beta bullet (#3723 (comment)), the dropped narration review target (#3723 (comment)) and the half-open panel list (#3723 (comment)). Three lower-priority threads still apply. The thread at device-foldable.md:22 (#3723 (comment)) no longer applies, because 0be63cd rewrote that hinge-angle instruction, so please resolve it.

The failing Repo Guards and Lint/Typecheck checks match main (the linux.gap error) and #3740 is pending for them. This PR changes only docs, so I see no link to the Smoke and Integration failures either. I did not read every rewritten file for changed meaning, and I did not check the Duo Xcode, DEVELOPER_DIR or devicectl claims on a host. Before merge, please restore the pointer and resolve or dismiss the open threads.

This branch has not been deployed

No deployments
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