@antoneeo/agentic-sdlc-skill 1.8.0 → 1.8.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 CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  Tutte le modifiche significative a questa skill saranno documentate in questo file.
4
4
 
5
+ ## [1.8.1] - 2026-07-02
6
+ ### Fixed
7
+ - **Guide freshness hash is now line-ending independent**: `sha256_file` in `sdlc_check.py` normalizes CRLF → LF before hashing. Previously the raw-byte hash made a fresh Windows checkout with `core.autocrlf=true` rewrite `.sources/` snapshots and flag every guide `[stale]` (false positive). Backward compatible: recorded hashes were computed on LF content, and normalization maps CRLF copies back to the same digest. (Edge case: a hash recorded pre-1.8.1 on a snapshot that genuinely contained CRLF bytes will flag `[stale]` once — regenerate the hash.)
8
+ - `guides.md` step 3 now states the hash is computed over LF-normalized content and recommends the `ai_docs/reference/.sources/** -text` `.gitattributes` rule to consumer projects (defense in depth: keeps snapshots byte-verbatim).
9
+
10
+ ### Test battery addition
11
+ - Scenario 10 (extends the unit-1 battery): snapshot checked out with CRLF endings + guide recording the LF-normalized hash → `stale` must NOT flag it; a genuine content edit must still flag `[stale]`.
12
+
5
13
  ## [1.8.0] - 2026-07-02 (Feature B unit 1: operative guides, project scope)
6
14
  ### Added
7
15
  - **Operative guides** (`ai_docs/reference/GUIDE_[topic].md`): a durable, source-faithful layer distilled from USER-PROVIDED indications — the capability neither agentic-sdlc nor superpowers had. New support file `guides.md` (pipeline: topic decomposition → user confirmation → verbatim snapshot in `reference/.sources/` with SHA-256 → source-anchored extraction → per-section fidelity markers `[source: …]` / `[not covered by source]`); guide template with provenance frontmatter (`source`, `source_version`, `distilled_from`, `source_hash`) in `templates.md`; short "Operative Guides" section in `SKILL.md`.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-sdlc-skill",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "Documentation-First SDLC protocol with triage, Vision governance and optional devPNT integration.",
5
5
  "author": "Antonio Pinto (https://github.com/Antoneeo)"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antoneeo/agentic-sdlc-skill",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "Documentation-First SDLC protocol for Claude Code, Gemini CLI and Codex with risk triage, Vision governance, installed support files and optional devPNT integration.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -83,6 +83,13 @@ guide with no `distilled_from` is not this pipeline's output.
83
83
  - `hash8` = first 8 hex chars of the snapshot file's own SHA-256 (compute
84
84
  the snapshot first, hash it, then name it — the hash is of the file you
85
85
  just wrote, not of the original source).
86
+ - The hash is computed over LF-normalized content (CRLF → LF), exactly as
87
+ `sdlc_check.py` does in `sha256_file` — so recorded hashes survive
88
+ checkouts that rewrite line endings (e.g. Windows `core.autocrlf=true`).
89
+ - Recommended for consumer projects: add
90
+ `ai_docs/reference/.sources/** -text` to `.gitattributes` so git never
91
+ rewrites snapshot bytes at all (keeps snapshots byte-verbatim; the
92
+ normalized hash stays stable either way).
86
93
  - The snapshot is verbatim: no paraphrasing, no reformatting beyond what is
87
94
  needed to save it as markdown.
88
95
  4. **Source-anchored SYNTHESIS (not restatement).** Select and compress what
@@ -109,8 +109,12 @@ def read_text(path):
109
109
 
110
110
 
111
111
  def sha256_file(path):
112
+ # CRLF->LF before hashing: a Windows checkout with core.autocrlf=true
113
+ # rewrites snapshot files, and a raw-byte hash would flag every guide
114
+ # [stale] on a fresh clone. Recorded hashes are LF-based, so normalizing
115
+ # maps CRLF copies back to the same digest.
112
116
  h = hashlib.sha256()
113
- h.update(path.read_bytes())
117
+ h.update(path.read_bytes().replace(b"\r\n", b"\n"))
114
118
  return h.hexdigest()
115
119
 
116
120