Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"name": "read-between",
"version": "4.2.0",
"description": "Privacy-first, evidence-aware relationship clarity, communication, boundaries, safety routing, and next actions.",
"author": {
"name": "Roblis0n",
"url": "https://github.com/Roblis0n"
},
"homepage": "https://github.com/Roblis0n/Read-between",
"repository": "https://github.com/Roblis0n/Read-between",
"license": "MIT",
"keywords": [
"relationships",
"communication",
"boundaries",
"privacy",
"safety"
],
"skills": "./skills/",
"interface": {
"displayName": "Read Between",
"shortDescription": "Evidence-aware relationship clarity and next actions",
"longDescription": "Separate facts, interpretations, and unknowns; choose honest communication, event-bound next actions, boundaries, or safety routing without mind-reading or manipulation.",
"developerName": "Roblis0n",
"category": "Lifestyle",
"capabilities": [
"Interactive",
"Write"
],
"websiteURL": "https://github.com/Roblis0n/Read-between",
"defaultPrompt": [
"Use $read-between to separate facts from interpretations and choose one safe, honest next action."
],
"brandColor": "#FFB86B",
"composerIcon": "./assets/icon-small.png",
"logo": "./assets/icon-large.png",
"screenshots": [
"./assets/social-preview.png"
]
}
}
21 changes: 21 additions & 0 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Code of Conduct

## Our commitment

Read Between is a place to improve evidence-aware, privacy-first relationship support. Participants must be able to discuss difficult subjects without harassment, diagnosis, ridicule, exposure, or pressure.

## Expected behavior

- Discuss words, behavior, design choices, and evidence without attacking a person or identity.
- Respect gender, sexuality, relationship structure, culture, disability, and lived experience.
- Preserve consent and the right to disengage.
- Use synthetic or thoroughly redacted examples; protect everyone represented in a conversation.
- Treat safety, abuse, coercion, stalking, self-harm, and intimate-image threats with care.

## Unacceptable behavior

Harassment, threats, discrimination, sexualized targeting, manipulation coaching, victim blaming, doxxing, publishing private conversations, and attempts to diagnose or expose contributors are not accepted.

## Enforcement

Report conduct or privacy concerns privately through the repository's [security advisory form](https://github.com/Roblis0n/Read-between/security/advisories/new). Maintainers may remove content or restrict participation to protect affected people.
26 changes: 26 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Contributing to Read Between

Contributions should make relationship guidance clearer, safer, more evidence-aware, or easier to verify.

## Before opening a pull request

1. Use a synthetic case. Never commit raw private chats, real names, addresses, contact details, intimate media, credentials, or memory databases.
2. Preserve the five-step kernel: emotional acknowledgement, facts/interpretations/unknowns, user-interest judgment, a clear recommendation with costs, and one event-bound next action.
3. Preserve safety routing, consent, privacy, uncertainty labels, and the user's ability to exit.
4. Add a real behavior regression test for validator or runtime changes.
5. Run:

```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/validate_contract.ps1
python -X utf8 scripts/validate_skill.py
python -X utf8 scripts/validate_skill.py --runtime
python -X utf8 -m unittest discover -s scripts/tests -p "test_*.py" -v
```

## Review checklist

- Facts, interpretations, and unknowns remain visibly distinct.
- Relationship decisions use observable events and stop conditions, not universal day or attempt quotas.
- Drafted messages serve one honest purpose and preserve refusal space.
- High-risk situations override ordinary dating strategy.
- No personal data, copyrighted chat dump, manipulation tactic, personality diagnosis, or fabricated precision was added.
65 changes: 65 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Bug report
description: Report a reproducible defect in Read Between's routing, validators, privacy, or safety contract.
title: "bug: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Use only synthetic or thoroughly redacted examples. Never include names, handles, contact details, addresses, intimate media, credentials, chat archives, or memory databases. Report vulnerabilities privately through Security.
- type: textarea
id: summary
attributes:
label: What happened?
description: State the defect and its user impact.
validations:
required: true
- type: dropdown
id: route
attributes:
label: Affected route
options:
- Chat evidence analysis
- Message drafting
- Pursuit / investment / exit
- Conflict / breakup / reconciliation
- Safety / crisis
- Privacy / memory
- Validator / packaging
- Other
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Minimal synthetic reproduction
description: Provide the exact prompt or command and a fictional/redacted fixture.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior and complete non-sensitive output
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
placeholder: Codex Desktop; Python 3.12; Windows 11
validations:
required: true
- type: checkboxes
id: privacy
attributes:
label: Privacy check
options:
- label: I confirm this report contains no real private conversation or identifying information.
required: true
44 changes: 44 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Feature request
description: Propose a safer or more useful relationship-support capability.
title: "feature: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Describe the user problem with synthetic examples only. Proposals for manipulation, covert surveillance, diagnosis, or guaranteed outcomes are out of scope.
- type: textarea
id: problem
attributes:
label: User problem
description: What real decision or communication problem is not handled well today?
validations:
required: true
- type: textarea
id: proposed
attributes:
label: Proposed behavior
description: Explain the desired result, evidence basis, uncertainty handling, and exit path.
validations:
required: true
- type: textarea
id: safety
attributes:
label: Safety, consent, and privacy considerations
description: How should the feature avoid coercion, exposure, fabricated certainty, or unsafe escalation?
validations:
required: true
- type: textarea
id: example
attributes:
label: Minimal synthetic example
validations:
required: true
- type: checkboxes
id: privacy
attributes:
label: Privacy check
options:
- label: I confirm this proposal contains no real private conversation or identifying information.
required: true
13 changes: 13 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Security Policy

## Private reporting

Do not disclose vulnerabilities, private conversations, identifying information, intimate media, credentials, or exploitable memory-store details in public issues or discussions. Use the repository's [private security advisory form](https://github.com/Roblis0n/Read-between/security/advisories/new).

Include the affected file or command, impact, minimal reproduction, and a synthetic or redacted fixture. Never upload a real person's chat archive or local `read-between-data` directory.

## Scope

The skill routing and safety contract, validators, chat-import tools, redaction and timestamp utilities, local structured-memory store, workflow files, and plugin package are in scope.

Ordinary usage questions and relationship scenarios belong in Discussions after removing personal data. Read Between is not an emergency service; immediate real-world danger requires local emergency or trusted in-person support.
12 changes: 12 additions & 0 deletions .github/SUPPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Support

Use GitHub Discussions for installation help, routing questions, validator output, privacy-safe example design, or uncertainty about which Read Between capability applies.

Include:

- the goal and the exact `$read-between` prompt or command;
- operating system and Python version when relevant;
- complete non-sensitive output; and
- a minimal synthetic or redacted case.

Do not post real names, account handles, addresses, workplaces, phone numbers, intimate media, private chat exports, credentials, or memory databases. Use Issues for confirmed reproducible defects, and the private security advisory form for vulnerabilities or accidental exposure.
30 changes: 30 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Summary

Describe the user problem and the focused change.

## Relationship-support contract

- Route affected:
- Evidence or rationale:
- How facts, interpretations, and unknowns remain distinct:
- Event-bound observation and stop condition:
- Safety, consent, privacy, and exit implications:

## Validation

- [ ] Added or updated real behavior tests
- [ ] Ran the PowerShell contract
- [ ] Ran full and runtime Python validators
- [ ] Ran unit-test discovery
- [ ] Checked local Markdown links and `git diff --check`

Paste relevant non-sensitive output:

```text

```

## Privacy

- [ ] All scenarios and fixtures are synthetic or thoroughly redacted.
- [ ] This pull request contains no private chat archive, identifying information, intimate media, credentials, or local memory database.
13 changes: 11 additions & 2 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,33 @@ on:
jobs:
validate:
runs-on: ${{ matrix.os }}
env:
PYTHONIOENCODING: utf-8
PYTHONUTF8: '1'
strategy:
matrix:
os: [ubuntu-latest, windows-latest]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.10'

- name: Test validator CLI encoding
run: python -B -m unittest discover -s scripts/tests -v

- name: Validate Skill (runtime)
run: python scripts/validate_skill.py --runtime

- name: Validate Skill (full)
run: python scripts/validate_skill.py

- name: Parse and smoke-test all PowerShell entry points
run: python scripts/validate_powershell_compat.py --skill-root .

- name: Validate Contract (PowerShell - Windows)
if: runner.os == 'Windows'
shell: pwsh
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ __pycache__/
# Test artifacts
tests/tmp/
*.tmp
dist/

# OS
.DS_Store
Expand Down
6 changes: 3 additions & 3 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ read-between 采用了与 journal-auditor、master-writing 等现有 skill 一
- **scripts/ 是确定性验证工具**:PowerShell 脚本负责格式检查、时间标准化、去标识化等不需要模型推理的机械任务。

这样设计的好处:
1. **上下文效率**:不需要每次都把24个参考文件全部载入模型上下文
1. **上下文效率**:不需要每次都把全部参考文件载入模型上下文
2. **可维护性**:修改某个领域(如星座模块)不影响其他部分
3. **可测试性**:每个参考文件和脚本可以独立验证
4. **一致性**:与项目中其他 Tier 2 skill 的组织方式一致
Expand Down Expand Up @@ -268,7 +268,7 @@ research-report.md 审计了42个 GitHub 仓库。read-between 的差异化不
| SKILL.md(核心路由) | 1 | ~270 |
| agents(界面定义) | 1 | 5 |
| references(参考文件) | 57 | ~5,500 |
| references/practical(话术库) | 24 | ~200,000 |
| references/practical(23 份场景指南 + 1 份伦理使用边界) | 24 | ~200,000 |
| scripts(验证脚本) | 10 | ~2,200 |
| config(配置) | 1 | 1 |
| **总计(不含古典语料)** | **93** | **~210,000** |
Expand All @@ -279,7 +279,7 @@ research-report.md 审计了42个 GitHub 仓库。read-between 的差异化不

- 基础层(3):output-contracts, source-registry, lifecycle-routing
- 追求核心层(6):intent-insight, pursue-or-not, pursuit-strategy, early-dating, social-skill-translation, investment-calibration
- 聊天功能层(6 + 24 话术库):emotional-containment, chat-ingestion-contract, chat-evidence-and-uncertainty, reply-drafting, dialogue-practice, chatlab-adapter, practical/(24份场景指南
- 聊天功能层(6 + 24 文件话术库):emotional-containment, chat-ingestion-contract, chat-evidence-and-uncertainty, reply-drafting, dialogue-practice, chatlab-adapter, practical/(23 份场景指南 + 1 份伦理使用边界
- 关系深度层(5):relationship-education, conflict-and-repair, partnership-family, breakup-betrayal-reconciliation, inclusive-relationships
- 守护层(4):safety-abuse-and-crisis, privacy-threat-model, memory-protocol, structured-memory
- 古典层(5):classical-interpretation, classical-catalog, classical-voices, assets/classical-corpus/(11文件), search_classics.ps1
Expand Down
30 changes: 29 additions & 1 deletion CHANGELOG-v2.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,33 @@
# Read Between v4 迭代报告

## v4.2.0 — 2026-08-13

### 关系合同与跨平台可靠性

- 修复 Windows 非 UTF-8 控制台在输出中文诊断时触发的 `UnicodeEncodeError`,并加入 CP1252 子进程回归测试。
- 将 GitHub Actions 升级并固定到官方 `actions/checkout@v6` 与 `actions/setup-python@v6`,在 Windows 和 Ubuntu 上统一使用 UTF-8。
- 清除验证器扫描自身检测字面量产生的噪音,同时保留对真实文档占位符的检测。
- 将关系决策从固定天数与次数改为事件结果、证据变化、降级信号和停止条件;保留稳定情绪、练习等非关系配额时长。
- 增加真实行为回归测试,覆盖多行检测器、标题上下文、同一行多个数值、活动时长与关系阈值的逐项判定。

### GitHub 产品化

- 重写中英文首页,统一公开版本为 `4.2.0`,并准确说明 24 文件实用库由 23 份场景指南和 1 份伦理使用边界组成。
- 增加 Windows、macOS、Linux 与项目范围的精确安装命令、显式 `$read-between` 调用、紧凑输出预览、限制与验证说明。
- 增加三个不含真实个人数据的合成示例,覆盖暧昧证据、边界退出与高风险安全/隐私分流。
- 增加项目专属贡献、安全、支持、Issue 与 PR 模板,以及 Codex 插件元数据、图标和社交预览图。
- 扩展自动验证范围,使 README、示例、插件包和视觉资产都能在发布前被检查。

### 发布安全加固

- 结构化记忆的所有对象数据写入都执行 active 状态门禁;暂停后拒绝 event、fact 与 hypothesis 写入,恢复后才重新接受。
- `undo-last` 现在在单个事务内删除最近一条仍可逆的数据记录、标记原审计并写入不复制敏感内容的撤回审计;旧库审计会清除重复的正文副本并安全迁移为不可逆,避免猜测目标。
- 每次 SQLite 连接都启用外键;迁移会清理由旧版忘记行为遗留的孤儿记录;`forget-object` 在单个事务内级联清除对象数据及相关审计,任一步失败都会回滚;`destroy` 继续硬删除整个数据库与同意文件。
- 全部 PowerShell 脚本采用 Windows PowerShell 5.1 可识别的 UTF-8 BOM,并加入全量解析、脱敏与记忆验证 smoke;CI 执行同一检查。
- 插件构建器只接收 basename 为 `read-between` 的外部目标,从 Git index 构建并在 staging 内完成严格 manifest、full/runtime、PowerShell 及可选官方验证;目录元数据与 zip 固定化,两次构建可得到相同哈希。

---

## v4.0 — 能力级融合(2026-08-11)

基于 goutoujunshi 项目审计(advice/3)的 Route B 能力级 clean-room 融合。保留 read-between 的安全分流、真实意图检测、自我欺骗分类、聊天证据协议、隐私威胁模型、古典语料层等核心差异化的前提下,独立实现流程增强和全生命周期覆盖。
Expand All @@ -20,7 +48,7 @@
- `chatlab-adapter.md`:可选的聊天分析工具零依赖降级适配
- `structured-memory.md`:Mode 2 有界结构化记忆规范
- `self-deception-index.md` + `self-deception-patterns/`:从 1208 行单文件拆分为索引 + 模式文件
- `practical/` 目录:24 份场景化聊天话术指南 + 伦理转译使用守则
- `practical/` 目录:24 文件,包括 23 份场景化聊天话术指南和 1 份伦理转译使用守则

### 新增工具(4 文件)

Expand Down
Loading