RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Diff/kurnoolion-nora-clinerules-02-content-safety ↔ kurnoolion-nora-claude

Comparison

A · Cline rules · kurnoolion/noraB · CLAUDE.md · kurnoolion/nora
What each file covers, counted
DimensionSharedOnly in AOnly in BOverlap
Sections0780%
Commands0110%
Section tags0140%

What each file covers

Sections

0 shared · 7 only in A · 8 only in B
  • − Content safety: nothing proprietary leaves the on-prem machine
  • − Redaction protocol
  • − Hard rules — never include in your report
  • − OK to include (after redaction)
  • − Borderline cases
  • − What this protects against
  • − Mapping snapshot location [D-062]
  • + CLAUDE.md
  • + Project
  • + Session-start ritual
  • + Key skills
  • + State files
  • + Current state
  • + Repository layout
  • + Conventions

Commands

0 shared · 1 only in A · 1 only in B
  • − git push
  • + python -m core.src.<module>.<module>_cli

Section tags

0 shared · 1 only in A · 4 only in B
  • − do-not
  • + test
  • + code-style
  • + architecture
  • + agent-behaviour

Line diff

+45 added−89 removed19 unchanged17.6% identical
kurnoolion/nora · .clinerules/02-content-safety.md
@@ −1 @@
1# Content safety: nothing proprietary leaves the on-prem machine
2 
3The user reads your reports off your screen and hand-types into Teacher LLM. Teacher LLM must NEVER
4see verbatim corpus content, MNO names, plan IDs, requirement IDs, release codes, or any
5file path under `<env_dir>/input/`.
6 
7## Redaction protocol
8 
9You maintain a literal-string mapping at `<env_dir>/state/cline-mapping.json`. Apply it
10forward (real → placeholder) before emitting any report, and reverse (placeholder → real)
11when acting on Teacher LLM's response.
12 
13**Mapping schema**:
14 
15```json
16{
17 "version": 1,
18 "mappings": {
19 "<real-string>": "<placeholder>"
20 }
21}
22```
23 
24**Placeholder format** — angle-bracketed, category-prefixed, stable index:
25 
26| Category | Pattern | Example |
27|---|---|---|
28| MNO short prefix | `<MNO{N}>` | `VZ` → `<MNO0>` |
29| MNO alias | `<MNO{N}_ALIAS>` | `VZW` → `<MNO0_ALIAS>` |
30| MNO full name | `<MNO{N}_NAME>` | `Verizon` → `<MNO0_NAME>` |
31| Plan ID | `<PLAN{N}>` | `LTEAT` → `<PLAN0>` |
32| Plan name | `<PLAN{N}_NAME>` | (use when plan_name differs from plan_id) |
33| Release | `<REL{N}>` | `OA-baseline` → `<REL0>` |
34| Requirement ID | `<REQID-{N}>` | `VZ_REQ_LTEAT_45` → `<REQID-0>` |
35| Standards spec | `<SPEC{N}>` | `3GPP TS 24.301` → keep as-is (public standard, not proprietary) |
36 
37`{N}` is a stable index — once allocated, never changes. New entries get the next free index.
38 
39Apply substitution **longest-match-first** so `VZ_REQ_LTEAT_45` matches before `VZ`.
 
 
 
 
 
40 
41The mapping playbook (`cline-playbooks/mapping.md`) describes how to seed and grow this
42file.
43 
44## Hard rules — never include in your report
 
 
 
 
 
 
 
 
 
45 
46- Verbatim quotes from any document under `<env_dir>/input/`
47- Section heading text > 5 words (treat as title-class quoted prose)
48- Requirement body text (any length)
49- Acronym definitions in full (the expansion phrase IS corpus content)
50- Tabular requirement data
51- Real values for any token in the mapping (always emit the placeholder)
52- Un-redacted file paths under `<env_dir>/input/<...>` (the path components are MNO/RELEASE/PLAN)
53 
54## OK to include (after redaction)
55 
56- Counts, percentages, ratios
57- Generic regex patterns — `^\d+(?:\.\d+)+\s+\S` is fine
58- Format-class observations — `89% of headings are numbered N.N.N`
59- Coverage stats — `rule catches 487/503`
60- Counts of misses by severity — `HIGH=96%, MED=3%, LOW=0.1%`
61- Source code paths inside the repo — `core/src/parser/structural_parser.py:1243`
62 (those are repo paths, not corpus)
63- Public standards references — `3GPP TS 24.301, Section 5.5.1.2.6` (public knowledge)
64- Domain terminology — `ATTACH`, `EMM`, `NAS` (3GPP standard terms)
65 
66## Borderline cases
67 
68A regex that ORs corpus-specific values is suspect: `(ATTACH|DETACH|FOO)` is fine if all
69three are public 3GPP terms; not fine if `FOO` is a customer-specific keyword. When unsure,
70add `FOO` to the mapping and emit the redacted form.
 
 
 
 
 
 
71 
72When unsure in general: ask the user. Default to redaction.
73 
74## What this protects against
75 
76A passing observer of the user's hand-typed reports — and Teacher LLM itself, which logs
77conversations — never sees any string that uniquely identifies a customer, document,
78release, or specific requirement. Patterns and counts are sufficient for Teacher LLM to
79update code; concrete values stay on-prem.
80 
81## Mapping snapshot location [D-062]
82 
83Beyond the live `<env_dir>/state/cline-mapping.json` (forward redaction for outgoing
84reports), Cline also maintains a **per-bootstrap mapping snapshot** at:
85 
86```
87customizations/mappings/<bootstrap_id>.json
88```
89 
90This snapshot pairs with the placeholdered profile at
91`customizations/profiles/<bootstrap_id>.json` (which Teacher LLM commits to public
92github). At parse time, NORA's runtime substitution layer reads the snapshot and
93resolves placeholders in the profile's regex strings to real values.
94 
95**The `customizations/mappings/` directory is NOT gitignored**. The contents are
96committed and pushed to the **company-internal** git remote so every team member
97shares one source of truth for the mappings. The trust boundary against the **public**
98mirror (`github.com`) is the work-PC pre-push hook installed by
99`~/work/utils/git-sync/sync-work.sh`: any `git push` whose remote URL is `github.com`
100is rejected unless `NORA_ALLOW_PUBLIC_PUSH=1` is set explicitly (used only for
101audited force-pushes such as history rewrites).
102 
103You own this directory. `cline-playbooks/bootstrap.md` Step 8 specifies the write
104operation; `cline-playbooks/mapping.md` documents the on-disk shape and the live-vs-
105snapshot distinction. The directory IS suitable for git tracking — staging and
106committing mapping files is part of the normal team-sync flow. The hook (not
107`.gitignore`) is what keeps them off the public mirror.
108 
kurnoolion/nora · CLAUDE.md
@@ +1 @@
1# CLAUDE.md
2 
3This file provides guidance to Claude Code (and Cline) when working with code in this repository.
 
 
4 
5## Project
6 
7**NORA** — Network Operator Requirements Analyzer. AI system combining a unified Knowledge Graph with targeted RAG for intelligent querying, cross-referencing, and compliance analysis of US MNO device requirement specifications across multiple MNOs (MNO-A, AT&T, T-Mobile) and quarterly releases.
 
 
8 
9See `docs/compact/PROJECT.md` for the 1-page identity and `TDD_Telecom_Requirements_AI_System.md` for the canonical technical design.
10 
11## Session-start ritual
 
 
 
 
 
 
 
12 
13This project uses **COMPACT** — a portable scaffold for team AI-partnered software development. The AI scaffolding lives under `.claude/skills/` and the durable state lives under `docs/compact/`.
14 
15At the start of every session, invoke `run the session-start skill` (or `/session-start`). It loads Tier 1 context (`PROJECT.md` / `STATUS.md` / `MAP.md` / the active phase prompt) and asks what you're working on. Re-invoke mid-session after Claude Code auto-compaction or any time context feels stale.
 
 
 
 
 
 
 
 
 
16 
17## Key skills
18 
19- `/session-start` — hydrate context at start of every session
20- `/switch-phase <requirements | architecture | development>` — adopt the phase persona
21- `/regen-map` — regenerate `MAP.md` + Structure sections when code structure changes
22- `/drift-check <requirements | design | dev-full | dev-module <name> | all>` — audit for drift between requirements, design, and implementation
23- `/close-session` — end-of-session ritual: triages decisions, updates STATUS, audits MODULE.md edits, proposes commit (this is the **only** place memory is made)
24- `/project-init --re-init` — regenerate phase prompts after project-level changes (state files preserved)
25 
26## State files
 
27 
28- `docs/compact/PROJECT.md` — identity + Contributors table
29- `docs/compact/STATUS.md` — active phase, done / in progress / next, flags
30- `docs/compact/requirements.md` — FR / NFR / Deferred (authority for what the system must do)
31- `docs/compact/MAP.md` — module table + Mermaid dependency graph (regenerated)
32- `docs/compact/DECISIONS.md` — append-only ADR log
33- `docs/compact/structure-conventions.md` — what's a module, visibility mapping
34- `docs/compact/design-inputs/` — TDD, README, SESSION_SUMMARY, SETUP_OFFLINE (archival design inputs)
35- `docs/compact/retrofit-snapshot.md` — archival scan of existing codebase at retrofit time
36- `docs/compact/phases/{requirements,architecture,development}.md` — phase personas loaded by `/switch-phase`
37- `src/<module>/MODULE.md` — per-module contracts (16 skeletons seeded by retrofit — see STATUS for curation progress)
38 
39## Current state
 
 
 
 
 
 
40 
41Retrofitted on 2026-04-21 via `/project-init --retrofit`. The 16 MODULE.md skeletons were curated through 2026-04-27 (sentinels removed). Three-tier code reorg (`core/` + `customizations/` + `config/`) executed 2026-04-27. See `docs/compact/STATUS.md` for the current active phase and work list.
42 
43## Repository layout
 
 
 
 
 
 
 
 
44 
45Three-tier code organization (D-019..D-024) plus a per-env runtime directory `<env_dir>`. See `docs/compact/structure-conventions.md` for the canonical layout.
46 
47- `core/src/` — AI-generated Python source (16 packages; one MODULE.md per package). Manual edits exceptional (D-019).
48- `core/tests/` — pytest suite (one `test_<module>.py` per package).
49- `customizations/profiles/` — human-curated document profiles (committed JSON).
50- `customizations/llm/` — AI-scaffolded LLM provider boilerplate (e.g. `proprietary_provider.py`); humans complete the `complete()` body for production deployments.
51- `config/` — per-module settings (currently `config/web.json`; more files land as modules surface configurable knobs).
52- `environments/` — per-environment configs (gitignored except `.gitkeep`); each names an `env_dir` path.
53- `docs/compact/` — COMPACT state files.
54- `.claude/skills/` — COMPACT skills (flat layout: compact-skill, session-start, switch-phase, regen-map, drift-check, close-session, project-init, doctor).
55- `<env_dir>/` (runtime, user-supplied path; not in repo) — `input/<MNO>/<release>/`, `out/<stage>/`, `state/`, `corrections/`, `reports/`, `eval/`.
56 
57## Conventions
58 
59- Python; no `pyproject.toml` — `requirements.txt` + `core/src/` layout with `__init__.py` per package.
60- Public surface: top-level identifiers without a leading underscore (plus `__init__.py` re-exports when `__all__` is used).
61- CLI per module: `core/src/<module>/<module>_cli.py` with `main()` entrypoint; invoked as `python -m core.src.<module>.<module>_cli`.
62- Protocol-based abstractions: `LLMProvider`, `EmbeddingProvider`, `VectorStoreProvider`.
63- No proprietary document content in logs, error messages, compact reports, or test fixtures.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64 
@@ −1 +1 @@
1−# Content safety: nothing proprietary leaves the on-prem machine
1+# CLAUDE.md
22  
3−The user reads your reports off your screen and hand-types into Teacher LLM. Teacher LLM must NEVER
4−see verbatim corpus content, MNO names, plan IDs, requirement IDs, release codes, or any
5−file path under `<env_dir>/input/`.
3+This file provides guidance to Claude Code (and Cline) when working with code in this repository.
64  
7−## Redaction protocol
5+## Project
86  
9−You maintain a literal-string mapping at `<env_dir>/state/cline-mapping.json`. Apply it
10−forward (real → placeholder) before emitting any report, and reverse (placeholder → real)
11−when acting on Teacher LLM's response.
7+**NORA** — Network Operator Requirements Analyzer. AI system combining a unified Knowledge Graph with targeted RAG for intelligent querying, cross-referencing, and compliance analysis of US MNO device requirement specifications across multiple MNOs (MNO-A, AT&T, T-Mobile) and quarterly releases.
128  
13−**Mapping schema**:
9+See `docs/compact/PROJECT.md` for the 1-page identity and `TDD_Telecom_Requirements_AI_System.md` for the canonical technical design.
1410  
15−```json
16−{
17− "version": 1,
18− "mappings": {
19− "<real-string>": "<placeholder>"
20− }
21−}
22−```
11+## Session-start ritual
2312  
24−**Placeholder format** — angle-bracketed, category-prefixed, stable index:
13+This project uses **COMPACT** — a portable scaffold for team AI-partnered software development. The AI scaffolding lives under `.claude/skills/` and the durable state lives under `docs/compact/`.
2514  
26−| Category | Pattern | Example |
27−|---|---|---|
28−| MNO short prefix | `<MNO{N}>` | `VZ` → `<MNO0>` |
29−| MNO alias | `<MNO{N}_ALIAS>` | `VZW` → `<MNO0_ALIAS>` |
30−| MNO full name | `<MNO{N}_NAME>` | `Verizon` → `<MNO0_NAME>` |
31−| Plan ID | `<PLAN{N}>` | `LTEAT` → `<PLAN0>` |
32−| Plan name | `<PLAN{N}_NAME>` | (use when plan_name differs from plan_id) |
33−| Release | `<REL{N}>` | `OA-baseline` → `<REL0>` |
34−| Requirement ID | `<REQID-{N}>` | `VZ_REQ_LTEAT_45` → `<REQID-0>` |
35−| Standards spec | `<SPEC{N}>` | `3GPP TS 24.301` → keep as-is (public standard, not proprietary) |
15+At the start of every session, invoke `run the session-start skill` (or `/session-start`). It loads Tier 1 context (`PROJECT.md` / `STATUS.md` / `MAP.md` / the active phase prompt) and asks what you're working on. Re-invoke mid-session after Claude Code auto-compaction or any time context feels stale.
3616  
37−`{N}` is a stable index — once allocated, never changes. New entries get the next free index.
17+## Key skills
3818  
39−Apply substitution **longest-match-first** so `VZ_REQ_LTEAT_45` matches before `VZ`.
19+- `/session-start` — hydrate context at start of every session
20+- `/switch-phase <requirements | architecture | development>` — adopt the phase persona
21+- `/regen-map` — regenerate `MAP.md` + Structure sections when code structure changes
22+- `/drift-check <requirements | design | dev-full | dev-module <name> | all>` — audit for drift between requirements, design, and implementation
23+- `/close-session` — end-of-session ritual: triages decisions, updates STATUS, audits MODULE.md edits, proposes commit (this is the **only** place memory is made)
24+- `/project-init --re-init` — regenerate phase prompts after project-level changes (state files preserved)
4025  
41−The mapping playbook (`cline-playbooks/mapping.md`) describes how to seed and grow this
42−file.
26+## State files
4327  
44−## Hard rules — never include in your report
28+- `docs/compact/PROJECT.md` — identity + Contributors table
29+- `docs/compact/STATUS.md` — active phase, done / in progress / next, flags
30+- `docs/compact/requirements.md` — FR / NFR / Deferred (authority for what the system must do)
31+- `docs/compact/MAP.md` — module table + Mermaid dependency graph (regenerated)
32+- `docs/compact/DECISIONS.md` — append-only ADR log
33+- `docs/compact/structure-conventions.md` — what's a module, visibility mapping
34+- `docs/compact/design-inputs/` — TDD, README, SESSION_SUMMARY, SETUP_OFFLINE (archival design inputs)
35+- `docs/compact/retrofit-snapshot.md` — archival scan of existing codebase at retrofit time
36+- `docs/compact/phases/{requirements,architecture,development}.md` — phase personas loaded by `/switch-phase`
37+- `src/<module>/MODULE.md` — per-module contracts (16 skeletons seeded by retrofit — see STATUS for curation progress)
4538  
46−- Verbatim quotes from any document under `<env_dir>/input/`
47−- Section heading text > 5 words (treat as title-class quoted prose)
48−- Requirement body text (any length)
49−- Acronym definitions in full (the expansion phrase IS corpus content)
50−- Tabular requirement data
51−- Real values for any token in the mapping (always emit the placeholder)
52−- Un-redacted file paths under `<env_dir>/input/<...>` (the path components are MNO/RELEASE/PLAN)
39+## Current state
5340  
54−## OK to include (after redaction)
41+Retrofitted on 2026-04-21 via `/project-init --retrofit`. The 16 MODULE.md skeletons were curated through 2026-04-27 (sentinels removed). Three-tier code reorg (`core/` + `customizations/` + `config/`) executed 2026-04-27. See `docs/compact/STATUS.md` for the current active phase and work list.
5542  
56−- Counts, percentages, ratios
57−- Generic regex patterns — `^\d+(?:\.\d+)+\s+\S` is fine
58−- Format-class observations — `89% of headings are numbered N.N.N`
59−- Coverage stats — `rule catches 487/503`
60−- Counts of misses by severity — `HIGH=96%, MED=3%, LOW=0.1%`
61−- Source code paths inside the repo — `core/src/parser/structural_parser.py:1243`
62− (those are repo paths, not corpus)
63−- Public standards references — `3GPP TS 24.301, Section 5.5.1.2.6` (public knowledge)
64−- Domain terminology — `ATTACH`, `EMM`, `NAS` (3GPP standard terms)
43+## Repository layout
6544  
66−## Borderline cases
45+Three-tier code organization (D-019..D-024) plus a per-env runtime directory `<env_dir>`. See `docs/compact/structure-conventions.md` for the canonical layout.
6746  
68−A regex that ORs corpus-specific values is suspect: `(ATTACH|DETACH|FOO)` is fine if all
69−three are public 3GPP terms; not fine if `FOO` is a customer-specific keyword. When unsure,
70−add `FOO` to the mapping and emit the redacted form.
47+- `core/src/` — AI-generated Python source (16 packages; one MODULE.md per package). Manual edits exceptional (D-019).
48+- `core/tests/` — pytest suite (one `test_<module>.py` per package).
49+- `customizations/profiles/` — human-curated document profiles (committed JSON).
50+- `customizations/llm/` — AI-scaffolded LLM provider boilerplate (e.g. `proprietary_provider.py`); humans complete the `complete()` body for production deployments.
51+- `config/` — per-module settings (currently `config/web.json`; more files land as modules surface configurable knobs).
52+- `environments/` — per-environment configs (gitignored except `.gitkeep`); each names an `env_dir` path.
53+- `docs/compact/` — COMPACT state files.
54+- `.claude/skills/` — COMPACT skills (flat layout: compact-skill, session-start, switch-phase, regen-map, drift-check, close-session, project-init, doctor).
55+- `<env_dir>/` (runtime, user-supplied path; not in repo) — `input/<MNO>/<release>/`, `out/<stage>/`, `state/`, `corrections/`, `reports/`, `eval/`.
7156  
72−When unsure in general: ask the user. Default to redaction.
57+## Conventions
7358  
74−## What this protects against
75− 
76−A passing observer of the user's hand-typed reports — and Teacher LLM itself, which logs
77−conversations — never sees any string that uniquely identifies a customer, document,
78−release, or specific requirement. Patterns and counts are sufficient for Teacher LLM to
79−update code; concrete values stay on-prem.
80− 
81−## Mapping snapshot location [D-062]
82− 
83−Beyond the live `<env_dir>/state/cline-mapping.json` (forward redaction for outgoing
84−reports), Cline also maintains a **per-bootstrap mapping snapshot** at:
85− 
86−```
87−customizations/mappings/<bootstrap_id>.json
88−```
89− 
90−This snapshot pairs with the placeholdered profile at
91−`customizations/profiles/<bootstrap_id>.json` (which Teacher LLM commits to public
92−github). At parse time, NORA's runtime substitution layer reads the snapshot and
93−resolves placeholders in the profile's regex strings to real values.
94− 
95−**The `customizations/mappings/` directory is NOT gitignored**. The contents are
96−committed and pushed to the **company-internal** git remote so every team member
97−shares one source of truth for the mappings. The trust boundary against the **public**
98−mirror (`github.com`) is the work-PC pre-push hook installed by
99−`~/work/utils/git-sync/sync-work.sh`: any `git push` whose remote URL is `github.com`
100−is rejected unless `NORA_ALLOW_PUBLIC_PUSH=1` is set explicitly (used only for
101−audited force-pushes such as history rewrites).
102− 
103−You own this directory. `cline-playbooks/bootstrap.md` Step 8 specifies the write
104−operation; `cline-playbooks/mapping.md` documents the on-disk shape and the live-vs-
105−snapshot distinction. The directory IS suitable for git tracking — staging and
106−committing mapping files is part of the normal team-sync flow. The hook (not
107−`.gitignore`) is what keeps them off the public mirror.
59+- Python; no `pyproject.toml` — `requirements.txt` + `core/src/` layout with `__init__.py` per package.
60+- Public surface: top-level identifiers without a leading underscore (plus `__init__.py` re-exports when `__all__` is used).
61+- CLI per module: `core/src/<module>/<module>_cli.py` with `main()` entrypoint; invoked as `python -m core.src.<module>.<module>_cli`.
62+- Protocol-based abstractions: `LLMProvider`, `EmbeddingProvider`, `VectorStoreProvider`.
63+- No proprietary document content in logs, error messages, compact reports, or test fixtures.
10864  
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack