jonah-fleet 1.36.0 → 1.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/CHANGELOG.md +20 -10
- package/dist/lib/memory.d.ts +61 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/package.json +1 -1
- package/templates/docs/AGENTS.template.md +7 -0
- package/templates/docs/LESSONS.template.md +2 -0
- package/templates/prompts/ORCHESTRATION.md +2 -2
- package/templates/prompts/autowork.md +6 -4
- package/templates/prompts/peer-review.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@ All notable changes to `jonah-fleet` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.37.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.37.0...v1.37.1) (2026-10-12)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **prompts:** prevent autowork repetition polling loops on in-flight peer-review PRs ([#713](https://github.com/Jonah-Projects/jonah-fleet/issues/713)) ([ceb76f8](https://github.com/Jonah-Projects/jonah-fleet/commit/ceb76f84c78b16d9075b1b4e453c6ae8696c1d88))
|
|
14
|
+
|
|
15
|
+
## [Unreleased]
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **prompts:** prevent autowork repetition polling loops on in-flight peer-review PRs, define the Active Peer Review & Non-Draft Awaiting Review Invariant in `autowork.md`, and protect `Starting review (round N)` claim windows in `ORCHESTRATION.md`
|
|
20
|
+
|
|
21
|
+
## [1.37.0](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.36.0...v1.37.0) (2026-10-11)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **prompts,memory:** partition LESSONS.md ingestion by routine role ([#700](https://github.com/Jonah-Projects/jonah-fleet/issues/700)) ([21fe1b2](https://github.com/Jonah-Projects/jonah-fleet/commit/21fe1b21669ee0d7dc470c601732fb395efa0126))
|
|
27
|
+
|
|
8
28
|
## [1.36.0](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.35.2...v1.36.0) (2026-10-11)
|
|
9
29
|
|
|
10
30
|
|
|
@@ -19,16 +39,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
19
39
|
|
|
20
40
|
* **terminal-card:** refine backlog triage hints for radar digests and needs-attention issues ([#692](https://github.com/Jonah-Projects/jonah-fleet/issues/692)) ([935ef75](https://github.com/Jonah-Projects/jonah-fleet/commit/935ef75a5e4cbd607bc75f0767901f6f6d7927a8))
|
|
21
41
|
|
|
22
|
-
## [Unreleased] - 2026-10-11
|
|
23
|
-
|
|
24
|
-
### Added
|
|
25
|
-
|
|
26
|
-
- **runner:** add head-tail streaming truncation circuit breaker (`DEFAULT_MAX_LINES = 500`, `DEFAULT_MAX_BYTES = 64KB`) for command execution and large tool outputs to prevent context overflow and worker stalls
|
|
27
|
-
|
|
28
|
-
### Fixed
|
|
29
|
-
|
|
30
|
-
- **terminal-card:** refine backlog triage hints to provide targeted unblock advice for radar digests and `needs-attention` issues instead of generic `needs-human` prompts
|
|
31
|
-
|
|
32
42
|
## [1.35.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.35.0...v1.35.1) (2026-10-10)
|
|
33
43
|
|
|
34
44
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operational Memory (LESSONS.md) Partitioning and Filtering
|
|
3
|
+
*
|
|
4
|
+
* Implements role-filtered memory recall inspired by huggingface/funes v1.6.0 (PR #214),
|
|
5
|
+
* allowing autonomous routines (autowork, peer-review, optimizer, etc.) to ingest
|
|
6
|
+
* only role-relevant and general lessons rather than the unbounded file.
|
|
7
|
+
*/
|
|
8
|
+
export declare const KNOWN_ROUTINE_ROLES: Set<string>;
|
|
9
|
+
export interface LessonEntry {
|
|
10
|
+
raw: string;
|
|
11
|
+
role: string;
|
|
12
|
+
tag: string;
|
|
13
|
+
title: string;
|
|
14
|
+
symptom?: string;
|
|
15
|
+
rootCause?: string;
|
|
16
|
+
rule?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface LessonEntryInput {
|
|
19
|
+
role?: string;
|
|
20
|
+
tag?: string;
|
|
21
|
+
title: string;
|
|
22
|
+
symptom: string;
|
|
23
|
+
rootCause: string;
|
|
24
|
+
rule: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parses raw LESSONS.md content into header preamble and array of structured entries.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseLessonsFile(content: string): {
|
|
30
|
+
preamble: string;
|
|
31
|
+
entries: LessonEntry[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Parses structured lesson entries from LESSONS.md body or full file content.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseLessonEntries(content: string): LessonEntry[];
|
|
37
|
+
/**
|
|
38
|
+
* Checks whether a lesson entry matches a given routine role.
|
|
39
|
+
* Includes:
|
|
40
|
+
* - Direct matches (e.g. entry tagged 'autowork' when role is 'autowork')
|
|
41
|
+
* - Composite matches (e.g. entry tagged 'autowork:git')
|
|
42
|
+
* - 'general' entries
|
|
43
|
+
* - General/legacy subsystem entries not claimed by another known routine role
|
|
44
|
+
*/
|
|
45
|
+
export declare function isLessonRelevantForRole(entry: LessonEntry, role: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Filters LESSONS.md content to only entries relevant for the active routine role.
|
|
48
|
+
*/
|
|
49
|
+
export declare function filterLessonsByRole(content: string, role: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Formats a structured 3-line lesson entry under the active routine tag.
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatLessonEntry(input: LessonEntryInput): string;
|
|
54
|
+
/**
|
|
55
|
+
* Appends a new structured lesson entry to LESSONS.md, enforcing the 25-entry hard cap.
|
|
56
|
+
* If adding the entry exceeds maxEntries, the oldest entries are evicted.
|
|
57
|
+
*/
|
|
58
|
+
export declare function appendLessonEntry(content: string, input: LessonEntryInput, options?: {
|
|
59
|
+
maxEntries?: number;
|
|
60
|
+
}): string;
|
|
61
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/lib/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,mBAAmB,aAS9B,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAc9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA4DjE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAuBjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAczE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAGjE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,MAAM,CAoBR"}
|
package/package.json
CHANGED
|
@@ -98,3 +98,10 @@ To trigger the Autowork routine manually on any specific issue, use the GitHub A
|
|
|
98
98
|
- Auth boundaries required for all sensitive mutations.
|
|
99
99
|
- Never commit credentials, tokens, or secret keys to version control.
|
|
100
100
|
- Validate request inputs and sanitize outputs.
|
|
101
|
+
|
|
102
|
+
## Operational Memory (LESSONS.md)
|
|
103
|
+
|
|
104
|
+
- **Role-Partitioned Memory**: Standardize lesson entries in `LESSONS.md` using routine role tags: `[autowork]`, `[peer-review]`, `[optimizer]`, or `[general]` (e.g. `### [autowork] Title`, `### [peer-review] Title`, `### [general] Title`). Subsystem composite tags are also supported (e.g. `### [autowork:subsystem] Title`).
|
|
105
|
+
- **Targeted Routine Ingestion**: Autonomous routines ingest general lessons plus routine-specific lessons, omitting unrelated entries to prevent unbounded token expansion while maintaining high-signal operational memory.
|
|
106
|
+
- **Post-Run Recording**: When capturing new non-obvious gotchas or quirks on PR branches, always tag the entry with the active routine's role (or `[general]`) and adhere strictly to the 25-entry hard cap.
|
|
107
|
+
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Operational Lessons & Repository Heuristics
|
|
2
2
|
<!-- Invariants: Max 25 entries. Hard cap. Older entries graduate or demote to LESSONS_ARCHIVE.md -->
|
|
3
|
+
<!-- Tagging Syntax: Standardize entries with routine role tags [autowork], [peer-review], [optimizer], or [general] (e.g. ### [autowork] Title, ### [peer-review] Title, ### [general] Title). Subsystem suffixes are supported: ### [autowork:subsystem] Title. Each routine ingests only its own role-tagged entries plus [general] and legacy entries. -->
|
|
3
4
|
|
|
4
5
|
### [subsystem] Title
|
|
6
|
+
<!-- Example role-tagged entry: ### [general] Title or ### [autowork] Title -->
|
|
5
7
|
- **Symptom:** <Symptom description or error message>
|
|
6
8
|
- **Root Cause:** <Brief explanation of the underlying cause>
|
|
7
9
|
- **Rule:** <Actionable rule or constraint to follow>
|
|
@@ -28,7 +28,7 @@ Autowork triggers pass the target issue via environment variables (`TARGET_ISSUE
|
|
|
28
28
|
|
|
29
29
|
Invariants deliberately upheld from this spec:
|
|
30
30
|
|
|
31
|
-
- **Single-flight per issue and PR convergence** — at most one run works an issue or pull request at a time, enforced by the autowork claim protocol (assign → read-back → earliest-timestamp tiebreak). For **umbrella** issues, single-flight is maintained at the _child-issue_ level so slices progress cleanly.
|
|
31
|
+
- **Single-flight per issue and PR convergence** — at most one run works an issue or pull request at a time, enforced by the autowork claim protocol (assign → read-back → earliest-timestamp tiebreak). For **umbrella** issues, single-flight is maintained at the _child-issue_ level so slices progress cleanly. Pull requests actively claimed by peer review (`Starting review (round N)` within 2 hours) or awaiting review are strictly protected from concurrent autowork convergence and repetitive polling loops.
|
|
32
32
|
- **Recover dead-run claims** — a crashed run's orphaned claim is released back to the pool rather than starving the issue or PR, both opportunistically during candidate selection and periodically via issues housekeeping.
|
|
33
33
|
- **Reader/writer separation** — the routine that authors a PR never merges it; the Peer Review routine is the sole merge authority for pull requests.
|
|
34
34
|
- **Warm-Context Review Synchronization** — Autowork maintains an active warm session during implementation, polling for Peer Review's verdict. When Peer Review bounces a PR to draft with findings, Autowork immediately detects the draft state in-session, applies fixes directly to its warm working tree, and re-marks the PR ready—re-firing Peer Review for Round N+1 without cold-start overhead.
|
|
@@ -54,7 +54,7 @@ Single source of truth for both autowork candidate reclamation and housekeeping
|
|
|
54
54
|
|
|
55
55
|
Single source of truth for Autowork Phase 1 pull request convergence. An assigned pull request or draft PR with unaddressed review comments is a _stale claim_ (safe to reclaim and reassign by another runner) only when **all** of these hold:
|
|
56
56
|
|
|
57
|
-
1. **It carries an autowork claim comment**: The PR thread contains `🔒 Addressing review findings by autowork run
|
|
57
|
+
1. **It carries an autowork claim comment or peer-review marker**: The PR thread contains `🔒 Addressing review findings by autowork run …`, `🔒 Addressing review findings by local autowork session …`, or `Starting review (round N) …`.
|
|
58
58
|
2. **The claim is old**: The most recent claim comment's `created_at` is **more than 2 hours** ago. (2 hours instead of 6 hours because PR review convergence is a rapid turnaround loop).
|
|
59
59
|
3. **No active commits or review activity**: No new commit has been pushed to the PR branch within the last 2 hours.
|
|
60
60
|
|
|
@@ -61,6 +61,7 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
|
|
|
61
61
|
- Do not fall into the **Telemetry Rabbit Hole**: do not spend cycles instrumenting elaborate fallback telemetry or defensive error handling for features that suffer from lack of user intent rather than software bugs.
|
|
62
62
|
- Do not guess or invent arbitrary specifications for ambiguous issues — post the 4-part escalation card ('Why I believe this'), label `needs-info`, and release the claim instead of blindly writing code.
|
|
63
63
|
- Do not call `schedule` or yield the turn with plain text while waiting for background verification tasks — stay in the tool loop until the Definition of Done is met.
|
|
64
|
+
- Do not busy-poll external routine issues, PRs under review, or background tasks in a repetitive tool loop; never poll in a loop with identical commands (e.g. repeated `gh issue view <peer_review_run>` or `gh run view`) without making progress.
|
|
64
65
|
- Do not write implementation code before proving that the reproduction test or verifier fails (the Red Gate).
|
|
65
66
|
- Do not pause or prompt rhetorical questions ("Shall I continue?", "Should I start implementing?")—proceed autonomously.
|
|
66
67
|
- Do not use bare `git commit` or blind `git add .` without scoping specific paths (`git commit -m "..." -- <paths>`).
|
|
@@ -92,9 +93,10 @@ b. **Eligible → claim, then implement.** Call `get_me` once to learn your own
|
|
|
92
93
|
### Phase 1: Converge on open work (Scan mode; skipped in Targeted mode)
|
|
93
94
|
|
|
94
95
|
1. List all open PRs needing attention (specifically draft PRs bounced back by peer review or open PRs with review comments: `gh pr list --state open --json number,title,isDraft,headRefName,assignees,labels,author`, excluding automated release PRs `release-please--*` / `chore(main): release*`).
|
|
96
|
+
- **Active Peer Review & Non-Draft Awaiting Review Invariant**: In Phase 1, only PRs that have been **bounced to draft** with actionable review findings, or PRs with **unaddressed review comments** (threads from peer review requiring code changes), require convergence. If a PR is ready for review (`isDraft: false`), or carries an active peer-review claim comment (`Starting review (round N)` posted within the last 2 hours), or has no unaddressed review comments / changes requested, you DO NOT OWN THIS PR. You MUST NOT attempt to address it, MUST NOT block, and MUST NEVER poll its review run issue (e.g. `gh issue view <peer_review_run>`). Skip this PR immediately and evaluate the next PR or proceed directly to Phase 2.
|
|
95
97
|
1a. **PR Claim Protocol (Single-Flight PR Convergence)**:
|
|
96
98
|
- For each open PR needing attention (bounced to draft with actionable findings, or open with unaddressed review comments):
|
|
97
|
-
- **Check eligibility**: re-read candidate PR (`gh pr view <PR> --json assignees,comments`). Skip PRs currently assigned to another live runner or carrying an active claim comment posted within the last 2 hours (unless stale claim per `ORCHESTRATION.md`).
|
|
99
|
+
- **Check eligibility**: re-read candidate PR (`gh pr view <PR> --json assignees,comments`). Skip PRs currently assigned to another live runner or carrying an active claim comment posted within the last 2 hours per the invariant above (unless stale claim per `ORCHESTRATION.md`).
|
|
98
100
|
- Call `get_me` once to learn your own login if not already known.
|
|
99
101
|
- **Claim atomically**: assign yourself to the PR (`gh pr edit <PR> --add-assignee <login>`) AND post a claim comment on the PR:
|
|
100
102
|
- In **Cloud Actions**: `🔒 Addressing review findings by autowork run {run_url} {timestamp}`
|
|
@@ -220,7 +222,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
|
|
|
220
222
|
`- **Prior Failure Context**: <summary of past error/crash and strategy to avoid repeating it>`
|
|
221
223
|
- If bug: use `/diagnosing-bugs` to establish reproduction test before fixing.
|
|
222
224
|
- If large/complex: use `/domain-modeling` and `/codebase-design`.
|
|
223
|
-
- **Pre-Flight Memory Scan**: If `LESSONS.md` exists, grep matching subsystem tags (`grep -E "^### \[(subsystem)\]" LESSONS.md -A 4`) to incorporate known landmines into implementation plans before writing code.
|
|
225
|
+
- **Pre-Flight Memory Scan**: If `LESSONS.md` exists, grep matching subsystem tags (`grep -E "^### \[(subsystem)\]" LESSONS.md -A 4`) or filter entries tagged for `[autowork]` or `[general]` (e.g. `grep -E "^### \[(autowork|general)\]" LESSONS.md -A 4`), omitting unrelated routine roles to incorporate known landmines into implementation plans before writing code without token bloat.
|
|
224
226
|
- **The Red Gate Protocol (Pre-Implementation Verifier Check)**: Before writing ANY production implementation code, define the verifier or write a reproduction test, and execute it:
|
|
225
227
|
- **The check MUST fail** (red). If the verifier passes before you touch production code, the subsequent work proves nothing.
|
|
226
228
|
- **Already Green Check**: If the verifier passes *before* code changes, stop immediately and evaluate:
|
|
@@ -268,7 +270,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
|
|
|
268
270
|
- **Diagnostic Reflex**: On unexpected test/build failure during TDD, grep symptom text in `LESSONS.md` before making speculative code edits.
|
|
269
271
|
- Run repository tests and verification.
|
|
270
272
|
- **Disk Read-Back Verification**: Verify written configs, schemas, and generated files by reading values directly back from disk files (`cat`, `jq`, test assertions), never from shell variables or memory.
|
|
271
|
-
- **Pre-PR Lessons Capture Gate**: If solving the issue required overcoming a non-obvious quirk not caught by tests/linters, append a 3-line structured entry on the active PR branch adhering to the 25-entry hard cap. Never write to `LESSONS.md` directly on `main`.
|
|
273
|
+
- **Pre-PR Lessons Capture Gate**: If solving the issue required overcoming a non-obvious quirk not caught by tests/linters, append a 3-line structured entry tagged under the active routine role (`### [autowork] <Title>` or `### [general] <Title>`) on the active PR branch adhering to the 25-entry hard cap. Never write to `LESSONS.md` directly on `main`.
|
|
272
274
|
- **Milestone 2 (Verification & Tests)**: Once implementation passes tests and type checks, emit milestone card if `$ROUTINE_ISSUE_NUMBER` is set:
|
|
273
275
|
```bash
|
|
274
276
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🧪 Milestone: Verification & Tests
|
|
@@ -365,7 +367,7 @@ Cacheable across consecutive runs within the same repository.
|
|
|
365
367
|
In this tier, Autowork ingests semi-stable repository conventions, operational memory, and configuration rules that change infrequently across consecutive runs in the same repository:
|
|
366
368
|
|
|
367
369
|
1. **Repository Conventions (`AGENTS.md`)**: Read `AGENTS.md` (or `CLAUDE.md` / `GEMINI.md`) for build/test/lint commands, code formatting rules, architectural guidelines, and design system tokens.
|
|
368
|
-
2. **Operational Memory (`LESSONS.md`)**: If `LESSONS.md` exists, ingest
|
|
370
|
+
2. **Operational Memory (`LESSONS.md`)**: If `LESSONS.md` exists, ingest role-relevant operational gotchas (`grep -E "^### \[(subsystem)\]" LESSONS.md -A 4`) filtered for the active routine role (`[autowork]` or `[general]`), omitting entries from other routine roles to avoid known pitfalls and regression patterns while minimizing token consumption (enforcing the 25-entry hard cap).
|
|
369
371
|
3. **Fleet Manifest (`agents-manifest.json`)**: Ingest configured presets, model family assignments, and timeout/iteration ceilings.
|
|
370
372
|
4. **Engineering Skills (`.agents/skills/`)**: Leverage domain skills (`code-review`, `codebase-design`, `diagnosing-bugs`, `domain-modeling`, `grill-me`, `resolving-merge-conflicts`, `tdd`, `triage`, `writing-for-agents`).
|
|
371
373
|
|
|
@@ -142,7 +142,7 @@ Check if `$PR_NUMBER` is set:
|
|
|
142
142
|
1. Run `/code-review` over the diff (or delta commits if re-review) evaluating:
|
|
143
143
|
- **Standards**: Conformance to `AGENTS.md` (or `CLAUDE.md`/`GEMINI.md`), conventions, and architecture.
|
|
144
144
|
- **Spec Compliance**: Verification against the linked issue's deliverables (`## Tasks`), or against the PR description's summary/changes if no tracking issue is linked.
|
|
145
|
-
- **Operational Memory & Lessons Invariant**: Inspect `LESSONS.md` diffs in PRs to verify the lesson is accurate, non-trivial, follows the 3-line structured schema, and the file adheres to the 25-entry hard cap.
|
|
145
|
+
- **Operational Memory & Lessons Invariant**: Inspect `LESSONS.md` diffs in PRs to verify the lesson is accurate, non-trivial, follows the 3-line structured schema, tags the originating routine role (e.g. `### [autowork] ...`, `### [peer-review] ...`, or `### [general] ...`), and the file adheres to the 25-entry hard cap. If reviewing code that solves a non-obvious gotcha or recurring architectural trap, ensure a structured 3-line entry tagged with the originating routine role (`### [peer-review] ...` or `### [general] ...`) is appended to `LESSONS.md`.
|
|
146
146
|
2. Run Security Pass: auth gates, permission checks, injection risks, sensitive credentials.
|
|
147
147
|
3. **Design System & Viewport Density Pass** (if PR modifies frontend/rendered UI):
|
|
148
148
|
- **Token Purity**: Check for arbitrary CSS/Tailwind sizing overrides (e.g. `text-[...px]`, `w-[...px]`) or bespoke button styling bypassing standard design system tokens.
|
|
@@ -298,7 +298,7 @@ Cacheable across consecutive runs within the same repository.
|
|
|
298
298
|
In this tier, Peer Review ingests semi-stable repository conventions, operational memory, and configuration rules that change infrequently across consecutive runs in the same repository:
|
|
299
299
|
|
|
300
300
|
1. **Repository Conventions (`AGENTS.md`)**: Read `AGENTS.md` (or `CLAUDE.md` / `GEMINI.md`) for coding standards, architectural patterns, design system token purity, and required CI / test commands.
|
|
301
|
-
2. **Operational Memory (`LESSONS.md`)**:
|
|
301
|
+
2. **Operational Memory (`LESSONS.md`)**: If `LESSONS.md` exists, ingest role-relevant operational gotchas filtered for the active routine role (`grep -E "^### \[(peer-review|general)\]" LESSONS.md -A 4`), omitting unrelated routine roles, and verify that any non-obvious quirks or gotchas captured on the active PR branch adhere to the 25-entry hard cap.
|
|
302
302
|
3. **Fleet Manifest (`agents-manifest.json`)**: Ingest configured review models, round caps, and iteration ceilings.
|
|
303
303
|
4. **Engineering Skills (`.agents/skills/`)**: Leverage `code-review`, `design-critique`, and `writing-for-agents` for structured evaluation.
|
|
304
304
|
|