agents: document git archive export-subst, precondition, and daemon rules (#4277)

Agents recently broke release archives by passing raw tree SHAs to
`git archive` (skipping `.gitattributes` `export-subst` expansion),
masked broken CLI invocations with silent directory/file guards, and
terminated background CI monitors prematurely by appending `&` in
`run_command`.

Record these invariants in the workflow, Python, and CI monitoring
instructions so future sessions preserve `export-subst` expansion,
trust caller preconditions, and launch long-running monitors with
`IsDaemon: true`.
diff --git a/.agents/rules/github_actions_workflows.md b/.agents/rules/github_actions_workflows.md
index b5b0d6e..f53c695 100644
--- a/.agents/rules/github_actions_workflows.md
+++ b/.agents/rules/github_actions_workflows.md
@@ -15,6 +15,10 @@
 * **Event Payload Resolution**: For steps that are a single Python script,
   loading event details directly from `$GITHUB_EVENT_PATH` is required (strong
   suggestion otherwise) rather than passing fields via env vars or CLI flags.
+* **Preserve `export-subst` in `git archive`**: Always pass a commit or tag ref
+  (never a raw `git write-tree` SHA) to `git archive` so `.gitattributes`
+  `export-subst` placeholders (such as `$Format:...$` in `python/features.bzl`)
+  expand. Use `--add-file` to include generated files.
 
 ## Workflow Python Scripts & Testing
 * **Executable Permissions**: Workflow step scripts must have `chmod +x` (mode
diff --git a/.agents/rules/python.md b/.agents/rules/python.md
index f2545ab..dbc1340 100644
--- a/.agents/rules/python.md
+++ b/.agents/rules/python.md
@@ -8,6 +8,9 @@
 ## CLI & Arguments
 * Use direct attribute access (e.g. `args.foo`) on `argparse.Namespace` with
   well-defined shapes. Avoid defensive `getattr()`.
+* Assume caller-guaranteed preconditions hold (e.g., input directories exist
+  and contain files). Do not add silent no-op guards (`if path.is_dir():` or
+  `if not path.is_file(): continue`) that mask broken invocations.
 
 ## Interface & ABC Docstrings
 * In abstract base class / interface methods, always document `Args:`,
diff --git a/.agents/skills/monitor-ci-results/SKILL.md b/.agents/skills/monitor-ci-results/SKILL.md
index 2c30533..b5a0af7 100644
--- a/.agents/skills/monitor-ci-results/SKILL.md
+++ b/.agents/skills/monitor-ci-results/SKILL.md
@@ -20,10 +20,12 @@
    with `|| ... monitor_remote_ci.py <pr_number>` in a single shell invocation,
    as `pgrep -af` will match the parent `bash -c` command string and exit `0`.
 2. **Launch Monitoring Script**: If no monitor process is active for
-   `<pr_number>`, launch the script in the background:
+   `<pr_number>`, launch the script via `run_command` with `IsDaemon: true` and
+   `WaitMsBeforeAsync: 500` (do NOT append a trailing `&`, which causes the
+   shell to exit immediately and kills the background process):
 ```bash
 ./.agents/skills/monitor-ci-results/scripts/monitor_remote_ci.py \
-  <pr_number> "<your_conversation_id>" &
+  <pr_number> "<your_conversation_id>"
 ```
 
 ### ✨ Autonomous Subagent Orchestration