devrites 7.0.13 → 7.0.15

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 CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [7.0.15](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.14...v7.0.15) (2026-10-25)
6
+
7
+ ### Fixed
8
+
9
+ * **devrites:** keep duplicate reviews read-only ([#173](https://github.com/ViktorsBaikers/DevRites/issues/173)) ([602da4b](https://github.com/ViktorsBaikers/DevRites/commit/602da4bba7d020a1abdbc71a563c870ea4287141))
10
+
11
+ ## [7.0.14](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.13...v7.0.14) (2026-10-25)
12
+
13
+ ### Fixed
14
+
15
+ * **devrites:** preserve standard line citations ([#172](https://github.com/ViktorsBaikers/DevRites/issues/172)) ([bfaa009](https://github.com/ViktorsBaikers/DevRites/commit/bfaa0093061845ab66abd84cee0e4102519d5209))
16
+
5
17
  ## [7.0.13](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.12...v7.0.13) (2026-10-25)
6
18
 
7
19
  ### Fixed
package/README.md CHANGED
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
31
31
  the feature to another engineer, the next session reads the same plan,
32
32
  decisions, and evidence before it continues.
33
33
 
34
- **Status:** [`v7.0.13`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.13): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v7.0.15`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.15): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
35
35
 
36
36
  This is the latest published release; `main` may contain unreleased work.
37
37
 
@@ -40,8 +40,9 @@ import (
40
40
  const AnchorsUsage = "usage: devrites-engine check anchors <slug> <return-file> [--skills-root <dir>]"
41
41
 
42
42
  var (
43
- anchorSiteRE = regexp.MustCompile(`^(\S+?)(?::([0-9]+)(?::[0-9]+)?(?:[-–]([0-9]+))?)?$`)
44
- anchorSeverityRE = regexp.MustCompile(`(?i)^\W*(critical|important)\b`)
43
+ anchorSiteRE = regexp.MustCompile(`^(\S+?)(?::([0-9]+)(?::[0-9]+)?(?:[-–]([0-9]+))?)?$`)
44
+ anchorSeverityRE = regexp.MustCompile(`(?i)^\W*(critical|important)\b`)
45
+ anchorLineSuffixRE = regexp.MustCompile(`:[0-9]+(?:[-–][0-9]+)?$`)
45
46
  )
46
47
 
47
48
  type anchorer struct{ root, project, workspace, skillsRoot string }
@@ -303,7 +304,8 @@ func mdName(name string) string {
303
304
  fields = []string{part}
304
305
  }
305
306
  for _, field := range fields {
306
- if field = strings.TrimRight(field, ",;:"); strings.HasSuffix(field, ".md") {
307
+ field = anchorLineSuffixRE.ReplaceAllString(strings.TrimRight(field, ",;:"), "")
308
+ if strings.HasSuffix(field, ".md") {
307
309
  return field
308
310
  }
309
311
  }
@@ -87,10 +87,9 @@ from your side.
87
87
  cast, or silent fallback that hides an unclear invariant?
88
88
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
89
89
  shared resources, and sync/async consistency boundaries preserved without a cycle?
90
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
91
- mode that matches the packet's diff: `--base <ref>` when the feature's work
92
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
93
- reported cluster per
90
+ - Run `devrites-engine check dup` without a feature slug, following the
91
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
92
+ Triage each reported cluster per
94
93
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
95
94
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
96
95
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -93,10 +93,9 @@ from your side.
93
93
  cast, or silent fallback that hides an unclear invariant?
94
94
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
95
95
  shared resources, and sync/async consistency boundaries preserved without a cycle?
96
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
97
- mode that matches the packet's diff: `--base <ref>` when the feature's work
98
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
99
- reported cluster per
96
+ - Run `devrites-engine check dup` without a feature slug, following the
97
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
98
+ Triage each reported cluster per
100
99
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
101
100
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
102
101
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -91,10 +91,9 @@ from your side.
91
91
  cast, or silent fallback that hides an unclear invariant?
92
92
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
93
93
  shared resources, and sync/async consistency boundaries preserved without a cycle?
94
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
95
- mode that matches the packet's diff: `--base <ref>` when the feature's work
96
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
97
- reported cluster per
94
+ - Run `devrites-engine check dup` without a feature slug, following the
95
+ [read-only scan rule](.agents/skills/devrites-lib/reference/standards/code-review.md).
96
+ Triage each reported cluster per
98
97
  [`duplicate-code.md`](.agents/skills/devrites-lib/reference/standards/duplicate-code.md)
99
98
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
100
99
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -95,10 +95,9 @@ from your side.
95
95
  cast, or silent fallback that hides an unclear invariant?
96
96
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
97
97
  shared resources, and sync/async consistency boundaries preserved without a cycle?
98
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
99
- mode that matches the packet's diff: `--base <ref>` when the feature's work
100
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
101
- reported cluster per
98
+ - Run `devrites-engine check dup` without a feature slug, following the
99
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
100
+ Triage each reported cluster per
102
101
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
103
102
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
104
103
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -91,10 +91,9 @@ from your side.
91
91
  cast, or silent fallback that hides an unclear invariant?
92
92
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
93
93
  shared resources, and sync/async consistency boundaries preserved without a cycle?
94
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
95
- mode that matches the packet's diff: `--base <ref>` when the feature's work
96
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
97
- reported cluster per
94
+ - Run `devrites-engine check dup` without a feature slug, following the
95
+ [read-only scan rule](skill://devrites-lib/reference/standards/code-review.md).
96
+ Triage each reported cluster per
98
97
  [`duplicate-code.md`](skill://devrites-lib/reference/standards/duplicate-code.md)
99
98
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
100
99
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
@@ -92,10 +92,9 @@ from your side.
92
92
  cast, or silent fallback that hides an unclear invariant?
93
93
  - Are repository/deployable roots, canonical contract and mutable-state ownership,
94
94
  shared resources, and sync/async consistency boundaries preserved without a cycle?
95
- - Run `devrites-engine check dup <slug>` for near-duplicate leads, using the
96
- mode that matches the packet's diff: `--base <ref>` when the feature's work
97
- is committed, `--staged`/`--worktree` for uncommitted diffs. Triage each
98
- reported cluster per
95
+ - Run `devrites-engine check dup` without a feature slug, following the
96
+ [read-only scan rule](../skills/devrites-lib/reference/standards/code-review.md).
97
+ Triage each reported cluster per
99
98
  [`duplicate-code.md`](../skills/devrites-lib/reference/standards/duplicate-code.md)
100
99
  — merge, keep-with-reason, or watch. A `*`-marked unit the diff added needs a
101
100
  verdict, not suppression.
@@ -40,9 +40,9 @@ If it does not, do not merge it.
40
40
  Search for a **reimplemented-elsewhere** twin: a new function/module that
41
41
  semantically duplicates an existing one (renamed, reshaped, or vendored) is an
42
42
  architecture finding; reuse the canonical implementation or justify the fork.
43
- Run `devrites-engine check dup` in the mode matching the diff (`--base <ref>`
44
- for committed work, `--staged`/`--worktree` for uncommitted) for leads and
45
- triage each cluster per [`duplicate-code.md`](duplicate-code.md).
43
+ Run read-only advisory `devrites-engine check dup` without a slug (no metrics):
44
+ `--base <ref>` committed; `--staged`/`--worktree` uncommitted. Triage each
45
+ cluster. Caller bans apply; unavailable scans remain gaps.
46
46
  6. **Security:** trust boundaries, input validation, authz, secrets.
47
47
  7. **Risk:** migrations, destructive changes, rollback.
48
48
  8. **Read depth matches risk:** the review's `Basis` names **full reads of the largest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "7.0.13",
3
+ "version": "7.0.15",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",