claude-dev-env 8.36.4 → 8.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/rule-guides/asd-ste100-language.md +42 -0
- package/docs/rule-guides/cleanup-temp-files.md +35 -0
- package/docs/rule-guides/correction-lens.md +112 -0
- package/docs/rule-guides/destructive-commands.md +49 -0
- package/docs/rule-guides/explore-thoroughly.md +27 -0
- package/docs/rule-guides/filesystem-search.md +53 -0
- package/docs/rule-guides/memory-stores-durable-facts.md +59 -0
- package/docs/rule-guides/no-contrast-framing.md +70 -0
- package/docs/rule-guides/research-mode.md +31 -0
- package/docs/rule-guides/verify-before-asking.md +54 -0
- package/docs/rule-guides/verify-runtime-state.md +44 -0
- package/hooks/hooks.json +10 -0
- package/hooks/hooks_constants/spawn_readiness_hook_constants.py +111 -0
- package/hooks/routing/spawn_readiness_hook.py +195 -0
- package/hooks/routing/spawn_readiness_steps.py +266 -0
- package/hooks/routing/test_spawn_readiness_hook.py +278 -0
- package/hooks/routing/test_spawn_readiness_steps.py +87 -0
- package/package.json +1 -1
- package/rules/asd-ste100-language.md +5 -36
- package/rules/cleanup-temp-files.md +5 -29
- package/rules/correction-lens.md +13 -102
- package/rules/destructive-commands.md +5 -41
- package/rules/explore-thoroughly.md +5 -21
- package/rules/filesystem-search.md +5 -47
- package/rules/memory-stores-durable-facts.md +5 -53
- package/rules/no-contrast-framing.md +5 -64
- package/rules/research-mode.md +5 -25
- package/rules/verify-before-asking.md +5 -48
- package/rules/verify-runtime-state.md +5 -38
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
# Explore
|
|
1
|
+
# Explore thoroughly
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**When:** Choosing an implementation approach or recommending an architectural direction.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Read relevant files, map local patterns, and identify constraints before committing to an approach. Scale exploration to risk: inspect nearby files for a small change, broader examples for a new feature, and the full landscape for an architectural decision. Once the files, constraints, and success condition are known, act without repeating settled research.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Map the existing patterns: naming conventions, file organization, architectural decisions.
|
|
11
|
-
- Identify constraints that could invalidate an approach before investing effort in it.
|
|
12
|
-
|
|
13
|
-
## Exploration scales with risk
|
|
14
|
-
|
|
15
|
-
- Small change to a familiar file: a quick read of the file and its immediate neighbors is enough.
|
|
16
|
-
- New feature or cross-cutting change: read broadly across the codebase to understand how similar things are done.
|
|
17
|
-
- Architectural decision: explore the full landscape before recommending a direction.
|
|
18
|
-
|
|
19
|
-
## Inside an autonomous run
|
|
20
|
-
|
|
21
|
-
The depth budget shrinks once the evidence is in hand. When you can already name the files, the constraints, and what success looks like, further reading buys nothing — act. Re-reading a file to re-derive a fact the run already settled is the shape to cut. See [`long-horizon-autonomy.md`](long-horizon-autonomy.md).
|
|
22
|
-
|
|
23
|
-
## Relationship to other rules
|
|
24
|
-
|
|
25
|
-
- **research-mode.md** ensures factual claims are grounded. This rule ensures implementation plans are grounded in the codebase.
|
|
9
|
+
**Full text:** [`docs/rule-guides/explore-thoroughly.md`](../docs/rule-guides/explore-thoroughly.md). Read it when setting exploration depth.
|
|
@@ -1,51 +1,9 @@
|
|
|
1
|
-
# Filesystem
|
|
1
|
+
# Filesystem search
|
|
2
2
|
|
|
3
|
-
**When
|
|
3
|
+
**When:** Searching for files by name, path, extension, size, or date.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Scope every search to a project, worktree, package, or narrowing filter. Never start at a filesystem root, drive root, bare home, or share root. Read a known path directly; use scoped `es.exe`, Glob, or Grep for discovery. After `es.exe` Error 8, retry twice before falling back within the same scope. Run one large shell walk at a time. Ask the user only after available search tools fail.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## Choosing a tool
|
|
12
|
-
|
|
13
|
-
Three tools are equally sanctioned; pick by what you know:
|
|
14
|
-
|
|
15
|
-
| You know | Use |
|
|
16
|
-
|---|---|
|
|
17
|
-
| The exact path | `Read`. Do not search. |
|
|
18
|
-
| A name, extension, or date, on Windows | `es.exe` with a path scope |
|
|
19
|
-
| A name or path pattern | The harness `Glob` tool |
|
|
20
|
-
| Text inside files | The harness `Grep` tool |
|
|
21
|
-
|
|
22
|
-
When `es.exe` returns Error 8, retry the same search twice before any fallback. Error 8 is a missing IPC client window, not proof the index is down. After those retries fail, report that the Everything IPC client did not answer and that the service state was not probed, then fall back to `Glob` or `Grep` with the same scope. When `es.exe` is missing, or a later search returns no hits, fall back to `Glob` or `Grep`. Ask the user only after all three tools fail.
|
|
23
|
-
|
|
24
|
-
`skills/everything-search/SKILL.md` holds the full `es.exe` operator reference: `ext:`, `dm:`, `size:`, wildcards, OR/AND/NOT, output flags, and the junction and drive-mapping note.
|
|
25
|
-
|
|
26
|
-
## Allowed and denied shapes
|
|
27
|
-
|
|
28
|
-
| Allowed | Example |
|
|
29
|
-
|---|---|
|
|
30
|
-
| Cwd-relative | `find . -iname '*.py'` |
|
|
31
|
-
| Project path | `find packages/claude-dev-env -name code_rules_gate.py` |
|
|
32
|
-
| Git Bash scoped path | `find /c/Users/<you>/repo -iname SKILL.md` |
|
|
33
|
-
| Recursive listing under a project | `Get-ChildItem -Path .\src -Recurse` |
|
|
34
|
-
| Scoped Windows index search | `es.exe path:C:\dev\repo ext:py gate` |
|
|
35
|
-
|
|
36
|
-
| Denied | Example |
|
|
37
|
-
|---|---|
|
|
38
|
-
| Filesystem root | `find / -iname code_rules_gate.py` |
|
|
39
|
-
| Git Bash drive root | `find /c -name '*.py'` |
|
|
40
|
-
| Windows drive root | `find C:\ -name foo` / `Get-ChildItem C:\ -Recurse` |
|
|
41
|
-
| Bare home | `find ~ -name README.md` / `find $HOME -type f` |
|
|
42
|
-
| Network share root | `find //server/share -name x`. A path under the share (`//server/share/project/src`) is allowed |
|
|
43
|
-
|
|
44
|
-
## Shell batching
|
|
45
|
-
|
|
46
|
-
Issue one shell search at a time when the walk is large. Parallel full-tree searches contend for the shell and can lock the host. Harness `Grep` and `Glob` calls carry no such cost and run in parallel freely.
|
|
47
|
-
|
|
48
|
-
## Search controls
|
|
49
|
-
|
|
50
|
-
- No hook denies a walk from an unscoped root. The scope invariant above is guidance a reader follows.
|
|
51
|
-
- For Everything searches that use a project name, run `python "${CLAUDE_SKILL_DIR}/scripts/everything_search.py" <project-name> <search arguments>`. An exact project name becomes its path from `~/.claude/project-paths.json`. The command then starts `es.exe` without a shell. `scripts/setup_project_paths.py` writes the registry.
|
|
9
|
+
**Full text:** [`docs/rule-guides/filesystem-search.md`](../docs/rule-guides/filesystem-search.md). Read it for tool selection and search examples.
|
|
@@ -1,57 +1,9 @@
|
|
|
1
|
-
# Memory
|
|
1
|
+
# Memory stores durable facts
|
|
2
2
|
|
|
3
|
-
**When
|
|
4
|
-
directory, and before you add its line to `MEMORY.md`.
|
|
3
|
+
**When:** Writing auto-memory or adding a `MEMORY.md` entry.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
Keep only a fact that helps a fresh session weeks later. Remove dates, task identifiers, commits, and paths from a draft; if the remainder is empty or false, put it in the task tracker or handoff instead. Store standing user preferences, stable setup traps, and useful resource pointers. Delete stale memory and its index line in the same run.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
commit, job path, session ID, and task number. When what remains is empty or
|
|
12
|
-
false, the draft is run state. Put it in the task tracker, the pull request, or
|
|
13
|
-
a handoff file beside the work, and save no memory.
|
|
14
|
-
|
|
15
|
-
## What never becomes a memory
|
|
16
|
-
|
|
17
|
-
| Shape | Example | Where it belongs |
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| Run or program state | "paused at", "resume from", "4 of 11 merged", a pointer to a handoff file | The task tracker or the handoff file |
|
|
20
|
-
| A pull request, issue, stack, or commit map | "#583, #605, #610 merged" | The epic issue or the pull request |
|
|
21
|
-
| A temporary condition | A concurrency schedule, credits out, a fleet that works this week, a fix "until X lands" | The current conversation |
|
|
22
|
-
| One session's topology | A session ID, a parallel session's worktree, a second-account dispatch setup | The current conversation |
|
|
23
|
-
| A workaround for a hook, gate, or verifier as it behaved one day | "the minter never fires, so skip the check" | A fix to the hook, per [`correction-lens.md`](correction-lens.md) |
|
|
24
|
-
| The story of one incident or bug fix | "the fold checkbox took five tries" | Git history and the pull request body |
|
|
25
|
-
| Where code lives, or a design recipe for one build phase | A module layout, a prompt recipe for one engine version | The repository and its inventories |
|
|
26
|
-
| A restatement of a rule file | "CI owns the gate" | The rule file already loaded |
|
|
27
|
-
|
|
28
|
-
## What a memory holds
|
|
29
|
-
|
|
30
|
-
- A preference or standing order the user stated, with the date the user set it.
|
|
31
|
-
- A trap in the local setup or the platform that stays true, such as a shared
|
|
32
|
-
`rr-cache` that replays one-sided resolutions without a marker.
|
|
33
|
-
- A pointer to an external resource: a dashboard, a repository, a tracker.
|
|
34
|
-
|
|
35
|
-
Write the fact first. A date belongs only on a rule the user set on that date.
|
|
36
|
-
|
|
37
|
-
## Keeping the folder current
|
|
38
|
-
|
|
39
|
-
When a memory goes stale, delete it and its `MEMORY.md` line in the same run.
|
|
40
|
-
A "superseded" note on a stale memory keeps a false fact loading into every
|
|
41
|
-
session.
|
|
42
|
-
|
|
43
|
-
## Why
|
|
44
|
-
|
|
45
|
-
One project's memory folder held 104 index entries. A cleanup pass removed 57
|
|
46
|
-
of them, and each one failed the test above. Handoffs outlived their work,
|
|
47
|
-
pull request maps named merged branches, and a capacity schedule and a
|
|
48
|
-
dispatch topology contradicted newer standing orders. Every stale memory loads
|
|
49
|
-
into each session and reads as current.
|
|
50
|
-
|
|
51
|
-
## Sibling rules
|
|
52
|
-
|
|
53
|
-
| Rule | Role |
|
|
54
|
-
|---|---|
|
|
55
|
-
| [`correction-lens.md`](correction-lens.md) | A memory records a decision, and the control holds the behavior |
|
|
56
|
-
| [`verify-before-asking.md`](verify-before-asking.md) | A recalled fact is a claim to re-check |
|
|
57
|
-
| [`cleanup-temp-files.md`](cleanup-temp-files.md) | Scratch output leaves with the task |
|
|
9
|
+
**Full text:** [`docs/rule-guides/memory-stores-durable-facts.md`](../docs/rule-guides/memory-stores-durable-facts.md). Read it when deciding whether a fact belongs in memory.
|
|
@@ -1,68 +1,9 @@
|
|
|
1
|
-
# No
|
|
1
|
+
# No contrast framing
|
|
2
2
|
|
|
3
|
-
**When
|
|
4
|
-
message, a pull request title or body, a review comment, an issue, a rule file,
|
|
5
|
-
a document, a plan, a memory file.
|
|
3
|
+
**When:** Writing any sentence a person reads.
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
State the chosen point directly and leave out the discarded reading. Remove these six forms: `trailing-comma-not`, `corrective-it-is-not`, `substitution-rather-than`, `additive-not-just`, `comparative-ranking`, `substitution-as-opposed-to`. Keep quantity comparisons. If a sentence loses substance, add the failing check, log line, measured number, or file and line.
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
**Enforcement:** staged policy lint and `scripts/durable_post_lint.py` check authored text; the agent checks chat.
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
against, so the reader carries two readings where one would do, and the second
|
|
13
|
-
one is the writer's own discarded draft. The sentence says more and shows less.
|
|
14
|
-
|
|
15
|
-
Six forms carry the whole ban. Each row names the form the check reports.
|
|
16
|
-
|
|
17
|
-
| Form | Shape | Write this |
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| `trailing-comma-not` | `a diff regression, not shared infrastructure` | `a diff regression` |
|
|
20
|
-
| `corrective-it-is-not` | `it is not a flake, it is a bug` | `a bug`, then the evidence that shows it |
|
|
21
|
-
| `substitution-rather-than` | `park it rather than fix it` | `park it` |
|
|
22
|
-
| `additive-not-just` | `not just for today` | the point the sentence was building toward |
|
|
23
|
-
| `comparative-ranking` | `being precise matters more than trying to cover them` | `be precise about these three` |
|
|
24
|
-
| `substitution-as-opposed-to` | `a warning as opposed to a failure` | `a warning` |
|
|
25
|
-
|
|
26
|
-
A comparison of quantities stays. "The function runs more than 30 lines" counts
|
|
27
|
-
lines. The ban covers the comparison that ranks one course of action over
|
|
28
|
-
another the writer is turning down.
|
|
29
|
-
|
|
30
|
-
Three shapes stay quiet by design. A backticked span or a fenced block carries
|
|
31
|
-
an example, so the check blanks it first. A line opening with `>` quotes
|
|
32
|
-
someone else, whose words are theirs to write. A `, not` clause reports only
|
|
33
|
-
when no bare `not` already sits earlier in the line, so a list of clauses
|
|
34
|
-
reports its first `, not` and stays quiet on the rest, as in
|
|
35
|
-
`a diff regression, not shared code, not a workaround`. A list whose own
|
|
36
|
-
opening word is a bare `not`, as in "not in chat, not in a commit message, not
|
|
37
|
-
in a body", keeps even its first `, not` quiet. A release automation body
|
|
38
|
-
passes the post linter untouched, since the bot builds it from commit
|
|
39
|
-
subjects and reads it back as machine input.
|
|
40
|
-
|
|
41
|
-
When the sentence thins after the contrast comes out, the missing piece is
|
|
42
|
-
evidence. Name it: the failing check, the log line, the measured number, the
|
|
43
|
-
file and the line.
|
|
44
|
-
|
|
45
|
-
## Where it is enforced
|
|
46
|
-
|
|
47
|
-
| Surface | What runs |
|
|
48
|
-
|---|---|
|
|
49
|
-
| Authored Markdown in the repository | The staged policy lint's `contrast-framing` rule, on every changed file, graded against the file's prior text |
|
|
50
|
-
| A pull request or issue title and body, and a comment | `scripts/durable_post_lint.py`, which every post passes through before it reaches GitHub |
|
|
51
|
-
| A chat reply | The writer, reading the sentence back before sending |
|
|
52
|
-
|
|
53
|
-
The pattern list lives in
|
|
54
|
-
`scripts/dev_env_scripts_constants/contrast_framing_constants.py`, and both
|
|
55
|
-
lints read that one list. A synchronization test requires a row in the table
|
|
56
|
-
above for every form the list carries.
|
|
57
|
-
|
|
58
|
-
A chat reply reaches no check, so the same list is what the writer reads the
|
|
59
|
-
sentence against: a comma followed by `not`, a `rather than`, a `not just`, a
|
|
60
|
-
ranking of one thing over another.
|
|
61
|
-
|
|
62
|
-
## Sibling rules
|
|
63
|
-
|
|
64
|
-
| Rule | Role |
|
|
65
|
-
|---|---|
|
|
66
|
-
| [`asd-ste100-language.md`](asd-ste100-language.md) | Plain word choice, sentence style, and tone |
|
|
67
|
-
| [`correction-lens.md`](correction-lens.md) | Every correction becomes a control at the highest layer that can hold it |
|
|
68
|
-
| [`research-mode.md`](research-mode.md) | A claim carries its source |
|
|
9
|
+
**Full text:** [`docs/rule-guides/no-contrast-framing.md`](../docs/rule-guides/no-contrast-framing.md). Read it for examples and checker exceptions.
|
package/rules/research-mode.md
CHANGED
|
@@ -1,29 +1,9 @@
|
|
|
1
|
-
# Research
|
|
1
|
+
# Research mode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**When:** Making a factual claim, recommendation, or piece of advice.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Say when you lack a credible source; do not guess or infer. Cite a project file, web source, named expert or paper, or official documentation for each claim. Retract claims a source cannot support. Extract document text before analysis and ground the answer in word-for-word quotes. In chat, cite compactly with a link or `file:line`; put full quotes and citation lists in artifacts or replies that request them. Ground synthesis in sourced inputs. Creative ideas need no citation.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
If you don't have a credible source for a claim, say so. Don't guess. Don't infer. "I don't have data on this" is always a valid answer.
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
Every recommendation, claim, or piece of advice must cite a specific source:
|
|
12
|
-
- A file in the current project
|
|
13
|
-
- An external source found via web search (with URL)
|
|
14
|
-
- A named expert, paper, or researcher
|
|
15
|
-
- Official documentation
|
|
16
|
-
|
|
17
|
-
If you generate a claim and cannot find a supporting source, retract it. Do not present it.
|
|
18
|
-
|
|
19
|
-
A citation is checked against what the source says, not against whether the source exists. A named authority attached to a claim the authority does not make is weaker than no citation at all, because it stops the reader from asking. This bites hardest on numbers: a threshold that runs stricter or looser than its source is a house call, so label it as one and leave the attribution to the direction the source does support.
|
|
20
|
-
|
|
21
|
-
## 3. Direct quotes for factual grounding
|
|
22
|
-
When working from documents, extract the text first before analyzing. Ground your response in word-for-word quotes, not paraphrased summaries. Reference the quote when making your point.
|
|
23
|
-
|
|
24
|
-
## How citations appear in a chat reply
|
|
25
|
-
|
|
26
|
-
The grounding requirement above never relaxes: state no claim you cannot source. What changes with the channel is how much of the source you print. A chat reply carries the source in compact form — a linked source name, or a `file:line` reference. Word-for-word quotes and full citation lists belong in artifacts, PR bodies, and issue bodies, or in a reply when the user asks for them.
|
|
27
|
-
|
|
28
|
-
## Exceptions
|
|
29
|
-
Creative thinking, brainstorming, and novel ideas don't require citation. You can synthesize across sources to reach new conclusions, but the inputs must be grounded.
|
|
9
|
+
**Full text:** [`docs/rule-guides/research-mode.md`](../docs/rule-guides/research-mode.md). Read it when checking a source or citation.
|
|
@@ -1,52 +1,9 @@
|
|
|
1
|
-
# Verify
|
|
1
|
+
# Verify before asking
|
|
2
2
|
|
|
3
|
-
**When
|
|
3
|
+
**When:** Before asking the user a clarifying question.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Inspect files, directories, configuration, environment, databases, and available tools for the answer. Recheck facts recalled from earlier sessions. Apply any criterion the user already supplied and state the decision. Ask only for a judgment, preference, or inaccessible fact; use the session's question tool when available.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Before using the current session's native question tool or asking a clarifying question in chat, evaluate:
|
|
12
|
-
|
|
13
|
-
| Check | Action |
|
|
14
|
-
|---|---|
|
|
15
|
-
| Does the answer live in a file on disk? | Read the file. |
|
|
16
|
-
| Does the answer live in a directory structure? | List the directory. |
|
|
17
|
-
| Does the answer live in a database? | Query the database. |
|
|
18
|
-
| Does the answer live in git history? | Run `git log` or `git blame`. |
|
|
19
|
-
| Is the answer determined by file naming patterns or contents? | Glob a sample and inspect. |
|
|
20
|
-
| Is the answer a value in a config or environment variable? | Read the config or check the env. |
|
|
21
|
-
| Is the answer retrievable from any available MCP tool? | Use the tool. |
|
|
22
|
-
| Did the user already state a criterion, standard, or line that decides this? | Apply it, state the call and the reason, and keep going. |
|
|
23
|
-
|
|
24
|
-
Only after confirming the answer cannot be obtained through any available tool, ask the user. Present the question using [Present questions clearly](question-presentation.md).
|
|
25
|
-
|
|
26
|
-
## Prior-session facts expire
|
|
27
|
-
|
|
28
|
-
A path, port, branch name, or config value you recall from an earlier session counts as unanswered until a tool re-checks it this session. Memory records what was true when it was written; the file may have moved, the port may be down, the branch may have merged. Treat every recalled fact as a claim to re-ground, not an answer to reuse.
|
|
29
|
-
|
|
30
|
-
- When a tool can settle it, re-check in silence and act on the fresh result — no question to the user.
|
|
31
|
-
- When no tool can settle it and the user has a stake in the answer, use the current session's native question tool when available.
|
|
32
|
-
|
|
33
|
-
## Questions That Belong to the User
|
|
34
|
-
|
|
35
|
-
Reserve user questions for:
|
|
36
|
-
- **Preferences** — "Do you want approach A or B?" when both are viable and the user has a stake.
|
|
37
|
-
- **Missing context the user holds** — passwords, account names, intent, future plans.
|
|
38
|
-
- **Judgment calls** — tradeoffs the user needs to evaluate.
|
|
39
|
-
- **Scope decisions** — what to include or exclude from a piece of work.
|
|
40
|
-
|
|
41
|
-
A preference question is one where the user has not yet given the line. Once they have, every case under that line is yours to decide. Handing back each application of a stated criterion turns one decision into many and stalls the work, because the person who set the standard does not hold the individual answers. Apply the criterion, name the call and the reason it went that way, and escalate only what the criterion cannot settle: a new axis it never covered, or a step nobody can undo. [`long-horizon-autonomy.md`](long-horizon-autonomy.md) carries the same duty for authority the task already granted.
|
|
42
|
-
|
|
43
|
-
## Examples
|
|
44
|
-
|
|
45
|
-
**Wrong:** "Are there multiple images per folder, or just one image + one mp4?"
|
|
46
|
-
**Right:** List the folder contents directly, then state what was found.
|
|
47
|
-
|
|
48
|
-
**Wrong:** "What columns does the themes table have?"
|
|
49
|
-
**Right:** Query `information_schema.columns` and report the schema.
|
|
50
|
-
|
|
51
|
-
**Wrong:** "Is there a Prisma schema in this project?"
|
|
52
|
-
**Right:** Glob for `schema.prisma` and check.
|
|
9
|
+
**Full text:** [`docs/rule-guides/verify-before-asking.md`](../docs/rule-guides/verify-before-asking.md). Read it when the source of an answer is uncertain.
|
|
@@ -1,42 +1,9 @@
|
|
|
1
|
-
# Verify
|
|
1
|
+
# Verify runtime state
|
|
2
2
|
|
|
3
|
-
**When
|
|
3
|
+
**When:** Before saying a component works, is healthy, or is not the cause of a failure.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Gather a live signal this session: process list, port probe, log, status code, or fresh reproduction. Read the user's terminal and named error log while a reported failure is still visible. Check the effect the work should produce, including each job result, loaded config, or deployed artifact; a success status alone does not establish the effect. When testing code, identify the loaded module path.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Enforcement:** none, the agent applies it.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
A status field is a report, not the effect. An exit code, a green pipeline run, and a task result all say the work finished. They do not say the work happened. Read the thing the work was meant to make.
|
|
12
|
-
|
|
13
|
-
Some evidence lasts only a moment. When a user shows you a failure, read the source they already hold: the terminal itself, and any log file the error names. A fresh probe minutes later measures a different moment, and a system that healed in between hides the failure you were asked about.
|
|
14
|
-
|
|
15
|
-
## Grounding checklist
|
|
16
|
-
|
|
17
|
-
Before stating a runtime claim, gather the matching live signal:
|
|
18
|
-
|
|
19
|
-
| Claim | Grounding probe |
|
|
20
|
-
|---|---|
|
|
21
|
-
| The service is healthy | Hit its health endpoint and read the status code. |
|
|
22
|
-
| The config is in effect | Print the loaded config at runtime and read the value. |
|
|
23
|
-
| The server is up | Probe the port; a refused connection means it is down. |
|
|
24
|
-
| The process is running | List processes and match the name or PID. |
|
|
25
|
-
| The change took effect | Drive the flow and watch the new behavior. A script that proves a branch's behavior names the module file it loaded, as its first step, because an installed copy of the same package shadows the checkout you meant to test. |
|
|
26
|
-
| The dependency is reachable | Send one request and read the response. |
|
|
27
|
-
| The release or deploy shipped | Read what it makes: the tag, the published version, the file on disk. |
|
|
28
|
-
| The pipeline did the work | Read each job's own result. A run reports success while a job inside it is skipped. |
|
|
29
|
-
| The automation works | Drive the branch that matters. A green run of the do-nothing branch proves nothing. |
|
|
30
|
-
|
|
31
|
-
Only after a live signal backs the claim do you state it.
|
|
32
|
-
|
|
33
|
-
## Examples
|
|
34
|
-
|
|
35
|
-
**Wrong:** "The search server code looks correct, so it is not the problem."
|
|
36
|
-
**Right:** Probe port 54321; report "connection refused — the server is down."
|
|
37
|
-
|
|
38
|
-
**Wrong:** "This function handles the retry, so the request must be going through."
|
|
39
|
-
**Right:** Tail the request log and confirm the retry fired, or report that no retry line appears.
|
|
40
|
-
|
|
41
|
-
**Wrong:** "The config sets the timeout to 30 seconds, so the timeout is fine."
|
|
42
|
-
**Right:** Print the loaded config at runtime and report the value the process holds.
|
|
9
|
+
**Full text:** [`docs/rule-guides/verify-runtime-state.md`](../docs/rule-guides/verify-runtime-state.md). Read it when choosing the probe for a claim.
|