Skip to content
Closed
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
2 changes: 0 additions & 2 deletions .claude/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Claude writes the code; Codex audits it independently. Cross-model verification
├── agents/ # Subagent definitions for /feature-workflow
├── hooks/ # UserPromptSubmit hook (>>-prefix prompt refinement)
├── docs-guardian/ # (currently empty — see Notes below)
├── tdd-guardian/ # TDD Guardian config (xcodebuild test command)
└── loc-guardian.local.md # Per-file LOC limit + Swift extraction patterns
```

Expand Down Expand Up @@ -92,7 +91,6 @@ orchestrating session + the rules they duplicated.

## Guardian Configs

- **`tdd-guardian/config.json`** — drives the TDD Guardian agents. Configured with vreader's `xcodebuild build-for-testing && xcodebuild test-without-building` flow.
- **`docs-guardian/`** — directory exists but the config has been removed; vreader has no website docs that need automated audit.
- **`loc-guardian.local.md`** — 300-line cap per file, with Swift-aware extraction patterns (PersistenceActor extensions, ReaderContainerView+Concern.swift, etc.).

Expand Down
2 changes: 0 additions & 2 deletions .claude/rules/10-tdd.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,6 @@ DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild test \
... -only-testing:vreaderTests/MyClassTests/test_specificThing
```

The TDD Guardian config at `.claude/tdd-guardian/config.json` invokes the same `xcodebuild test` flow.

## Android / Kotlin TDD (feature #107 — the workflow can drive Android)

The RED→GREEN→REFACTOR discipline is platform-neutral; only the framework + run
Expand Down
4 changes: 3 additions & 1 deletion .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,7 @@
}
]
},
"enabledPlugins": {}
"enabledPlugins": {
"tdd-guardian@xiaolai": false
}
}
13 changes: 0 additions & 13 deletions .claude/tdd-guardian/config.json

This file was deleted.

1 change: 0 additions & 1 deletion .claude/tdd-guardian/state.json

This file was deleted.

2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,12 @@ test-books/
# - settings.local.json: per-user permission allowlist
# - *.local.{md,json,yaml,yml}: any file that opts in to local-only via the
# `.local.` infix (Claude Code convention)
# - tdd-guardian/state.json: per-run TDD state, regenerated on each invocation
.claude/settings.local.json
.claude/*.local.json
.claude/*.local.md
.claude/*.local.yaml
.claude/*.local.yml
.claude/state.json
.claude/tdd-guardian/state.json
# Cron / loop runtime locks (per-session)
.claude/scheduled_tasks.lock
# Feature #130 — tracker row-ID reservation state (local, never tracked;
Expand Down
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ cross-platform rewrite. **Source of truth for the Android strategy:
- **Test / verify**: Android runs through **`scripts/run-android-tests.sh`** /
**`scripts/run-android-verify.sh`** (rule 49/52/53 watchdogs — never a bare
`./gradlew`; rule 52 "Cause D" covers the Gradle-daemon/emulator ghost
classes, swept by `scripts/sweep-ghosts.sh`). The TDD Guardian routes through
`scripts/tdd-guardian-test.sh` so a Kotlin change can't false-green on the iOS
command. `check_audit_debt.sh` now classifies `android/`/`*.kt`/`contracts/`
as code at Stop time too.
classes, swept by `scripts/sweep-ghosts.sh`). A Kotlin change is gated by the
platform-aware `code_paths_platform` classifier + `run-android-tests.sh`, so
it can't false-green on the iOS command. `check_audit_debt.sh` now classifies
`android/`/`*.kt`/`contracts/` as code at Stop time too.
- **SKIP-Android-until-ready**: the app shell is **#106**. Until it lands the
only Android target is the `spikes/` harness, so an `android-app` change can't
reach Gate-5 — the crons skip auto-starting it and the verify skill marks it
Expand Down
2 changes: 1 addition & 1 deletion docs/decisions/0001-android-port-strategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ library/CLI harnesses first — an empty `android/` directory is low-value).
vectors into `contracts/`.
- **Spike B — CJK WebView reader, INSTRUMENTATION-first.** The cron's ability to
drive an Android emulator/device is **UNVERIFIED** — the verification stack
(rule 47, `cron-prompts/verify.md`, `tdd-guardian/config.json`) is iOS-specific.
(rule 47, `cron-prompts/verify.md`) is iOS-specific.
Make Spike B benchmark/instrumentation-driven (scroll / memory / CFI / selection
metrics on a real 1000+-spine CJK novel via Readium-Kotlin), **not**
UI-automation-dependent. Standing up a *minimally-automatable* Android
Expand Down
4 changes: 2 additions & 2 deletions project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ targets:
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.vreader.app
CURRENT_PROJECT_VERSION: 1049
MARKETING_VERSION: 3.67.7
CURRENT_PROJECT_VERSION: 1051
MARKETING_VERSION: 3.67.9
# Feature #42 Phase-2 WI-1b: compile + link the vendored libmobi C.
# USE_LIBXML2 turns on libmobi's OPF/XML writer (KF8→EPUB needs it);
# the iOS SDK ships libxml2 headers at $(SDKROOT)/usr/include/libxml2
Expand Down
54 changes: 0 additions & 54 deletions scripts/__tests__/tdd-guardian-test.test.sh

This file was deleted.

65 changes: 0 additions & 65 deletions scripts/tdd-guardian-test.sh

This file was deleted.

8 changes: 4 additions & 4 deletions vreader.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -8113,15 +8113,15 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1049;
CURRENT_PROJECT_VERSION = 1051;
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited) USE_LIBXML2=1";
HEADER_SEARCH_PATHS = "$(inherited) $(SDKROOT)/usr/include/libxml2 $(SRCROOT)/vreader/Services/Libmobi/src";
INFOPLIST_FILE = vreader/SupportingFiles/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3.67.7;
MARKETING_VERSION = 3.67.9;
OTHER_LDFLAGS = "$(inherited) -lxml2";
PRODUCT_BUNDLE_IDENTIFIER = com.vreader.app;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -8267,15 +8267,15 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1049;
CURRENT_PROJECT_VERSION = 1051;
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited) USE_LIBXML2=1";
HEADER_SEARCH_PATHS = "$(inherited) $(SDKROOT)/usr/include/libxml2 $(SRCROOT)/vreader/Services/Libmobi/src";
INFOPLIST_FILE = vreader/SupportingFiles/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3.67.7;
MARKETING_VERSION = 3.67.9;
OTHER_LDFLAGS = "$(inherited) -lxml2";
PRODUCT_BUNDLE_IDENTIFIER = com.vreader.app;
SDKROOT = iphoneos;
Expand Down