Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
70dbb84
fix(mcp): polish budget response ergonomics
orenlab Jun 28, 2026
ea5b4d4
fix(mcp): polish budget response ergonomics
orenlab Jun 28, 2026
6baab39
docs: align MCP and integration contracts
orenlab Jun 28, 2026
8006ad9
docs: record release contract updates
orenlab Jun 28, 2026
a4e2d28
fix(mcp): stabilize audit and install contracts
orenlab Jun 29, 2026
29638ed
perf(mcp): page findings before decoration
orenlab Jun 29, 2026
5bd3a3b
perf(mcp): bound derived hotspot projection
orenlab Jun 29, 2026
f3bc021
perf(mcp): bound intent-scoped blast cache
orenlab Jun 29, 2026
7fa2add
fix(mcp): serialize sqlite intent registry opens
orenlab Jun 29, 2026
03cd309
docs: update alpha install notes and cursor skill list
orenlab Jun 29, 2026
af461bb
test(mcp): stabilize sqlite intent writer ordering
orenlab Jun 29, 2026
2194201
docs: align MCP governance contract notes
orenlab Jun 29, 2026
3969ba3
fix(vscode): preserve governance on uv fallback
orenlab Jun 29, 2026
7ffba41
fix(observability): harden sqlite store opening
orenlab Jun 29, 2026
3f28e23
feat(observability): expose detail drilldowns and CLI spans
orenlab Jun 30, 2026
4379373
perf(cache): reduce retained cache load memory
orenlab Jun 30, 2026
46856c8
perf(mcp): avoid report roundtrip in analysis
orenlab Jul 1, 2026
b99b4e1
perf(cache): reduce cache load transient memory
orenlab Jul 1, 2026
74f6bfc
fix(report): make integrity digest cache-independent; guard MCP retri…
orenlab Jul 1, 2026
9df0535
feat(cli): add read-only codeclone setup readiness command
orenlab Jul 1, 2026
39ff442
feat(config): add round-trip pyproject writer for setup merges
orenlab Jul 1, 2026
0d576df
feat(cli): add read-only setup plan with diff preview
orenlab Jul 1, 2026
5a21b13
feat(cli): add bounded setup apply for pyproject and gitignore
orenlab Jul 1, 2026
7b3e092
feat(cli): add interactive setup wizard with guided apply flow
orenlab Jul 1, 2026
ef983fd
docs: add setup readiness guide and integration pointers
orenlab Jul 1, 2026
d8e497e
feat(cli): add human setup readiness surface (status, plan, apply, wi…
orenlab Jul 1, 2026
2c9d9e9
test(setup): harden setup CLI tests and fix cursor guide IA budget
orenlab Jul 2, 2026
2180b35
fix(types): validate metrics baseline boundaries
orenlab Jul 2, 2026
776c008
fix(types): validate baseline persistence objects
orenlab Jul 2, 2026
3eabdcb
fix(types): validate baseline trust payloads
orenlab Jul 2, 2026
79460b2
fix(types): narrow cache entry literals
orenlab Jul 2, 2026
302810e
fix(types): validate cache containers
orenlab Jul 2, 2026
9dad260
fix(types): validate analysis dynamic boundaries
orenlab Jul 2, 2026
1076034
fix(types): match observability sqlite overrides
orenlab Jul 2, 2026
4f00a09
fix(types): validate cache and json boundaries
orenlab Jul 2, 2026
8b9a8fa
fix(types): validate cached relationship records
orenlab Jul 2, 2026
929dc1b
fix(types): narrow discovery cache literals
orenlab Jul 2, 2026
e0e9fc6
fix(types): type argparse option registration
orenlab Jul 2, 2026
6899e8c
fix(types): isolate worker dynamic dispatch
orenlab Jul 2, 2026
7e25f93
fix(types): decode memory sqlite literals
orenlab Jul 2, 2026
cf346ac
fix(types): remove production casts
orenlab Jul 2, 2026
fc16bb0
fix(types): decode projection job literals
orenlab Jul 2, 2026
d966d46
feat(cli): add guided help tour
orenlab Jul 2, 2026
64dd873
fix(cli): make setup readiness authoritative, gate apply mutations, a…
orenlab Jul 2, 2026
5513aa6
fix(memory): validate engineering memory inputs
orenlab Jul 3, 2026
d645ee1
test(mcp): stabilize workspace intent validation tests
orenlab Jul 3, 2026
51f03d6
fix(memory): validate persisted store boundaries
orenlab Jul 3, 2026
0a2f81d
fix(memory): make trajectory validators ty-friendly
orenlab Jul 3, 2026
4c48ab5
fix(analytics): tighten typed mapping boundaries
orenlab Jul 3, 2026
ca635c9
fix(config): validate typed pyproject tables
orenlab Jul 3, 2026
2885717
fix(audit): narrow json mappings for ty
orenlab Jul 3, 2026
e116da5
fix(core): narrow pipeline artifact types
orenlab Jul 3, 2026
d57ca9e
fix(memory): validate fastembed payload types
orenlab Jul 3, 2026
a6caffe
fix(memory): accept numpy embedding scalars
orenlab Jul 3, 2026
9d2a3bd
test(memory): cover non-Real embedding vector element rejection
orenlab Jul 3, 2026
1c3c7b7
fix(core): remove stray broken root main.py
orenlab Jul 3, 2026
8202340
test(cli): pin NO_COLOR in cli_help snapshot for determinism
orenlab Jul 3, 2026
18f1013
memory: validate legacy records before schema promotion
orenlab Jul 3, 2026
5c53814
cli: respect NO_COLOR for human setup consoles
orenlab Jul 3, 2026
fb73d9b
cli: skip non-tty interactive help pauses
orenlab Jul 3, 2026
9138aa7
utils: preserve modes in atomic text writes
orenlab Jul 3, 2026
04d2e3a
observability: contain future schema read failures
orenlab Jul 3, 2026
d06d9d7
memory: document strict filter errors
orenlab Jul 3, 2026
fd1ef20
utils: fsync parent after atomic replace
orenlab Jul 3, 2026
91c0fce
setup: bind interactive apply to previewed plan
orenlab Jul 3, 2026
b508778
paths: require segment match for codeclone gitignore
orenlab Jul 3, 2026
797e2e5
config: validate pyproject merge before replace
orenlab Jul 3, 2026
cf899c3
config: reject non-string fixture path items
orenlab Jul 3, 2026
d5bbf0a
analytics: reject non-string mapping keys
orenlab Jul 3, 2026
d4b482d
fix(docs): polish docs
orenlab Jul 3, 2026
0dd0b26
fix(action): preserve report mapping boundary
orenlab Jul 5, 2026
0a4255c
fix(memory): preserve retrieval boundary types
orenlab Jul 5, 2026
bea4e20
fix(report): preserve overview payload boundaries
orenlab Jul 5, 2026
04a125f
fix(setup): preserve setup payload boundaries
orenlab Jul 5, 2026
d4f2f08
fix(mcp): preserve intent mixin host boundary
orenlab Jul 5, 2026
49b4e78
fix(mcp): preserve workflow host boundary
orenlab Jul 5, 2026
321106f
fix(mcp): preserve patch contract host boundary
orenlab Jul 5, 2026
4f9af47
fix(mcp): preserve registration and test boundaries
orenlab Jul 5, 2026
ee0a98c
fix(review): lock boundary evidence
orenlab Jul 5, 2026
3c1ec8a
fix(utils): preserve advisory file lock handle boundary
orenlab Jul 5, 2026
af3f0fd
fix(benchmarks): preserve benchmark JSON object boundaries
orenlab Jul 5, 2026
b9c1f11
fix(setup): preserve setup apply action item boundaries
orenlab Jul 5, 2026
5f95877
fix(cli): preserve runtime injectable hook callable boundaries
orenlab Jul 5, 2026
4dc114e
fix(cli): preserve workflow report document dict boundaries
orenlab Jul 5, 2026
1347224
fix(cli): reuse console rich progress symbols in memory analysis
orenlab Jul 5, 2026
edbee40
fix(cli): preserve memory render mapping boundaries without coercion
orenlab Jul 5, 2026
7b01c47
fix(cli): preserve memory CLI payload dict boundaries without coercion
orenlab Jul 5, 2026
418335e
refactor(utils): extract identity-preserving payload narrow helpers
orenlab Jul 5, 2026
1608f11
fix(mcp): narrow context governance mappings via payload_narrow
orenlab Jul 5, 2026
5151f77
fix(mcp): route review receipt mixin calls through sibling casts
orenlab Jul 5, 2026
93c652e
fix(mcp): route claim guard mixin calls through sibling casts
orenlab Jul 5, 2026
b55e0b2
fix(mcp): narrow memory mixin payloads and blast-radius cast
orenlab Jul 5, 2026
88d9f78
fix(mcp): tighten implementation context payload typing boundaries
orenlab Jul 5, 2026
5822281
fix(mcp): declare blast radius mixin state lock and path normalization
orenlab Jul 5, 2026
5e4916d
fix(mcp): narrow claim guard finding items with is_record_mapping
orenlab Jul 5, 2026
de262f3
fix(mcp): narrow report section mapping guard with is_record_mapping
orenlab Jul 5, 2026
0900efb
fix(mcp): narrow review receipt optional mapping with is_record_mapping
orenlab Jul 5, 2026
c49ffa5
fix(mcp): pass audit artifact payloads as Mapping without dict copy
orenlab Jul 5, 2026
b6b0dc4
fix(mcp): narrow context lane container and items with TypeGuards
orenlab Jul 5, 2026
e65ea8a
fix(mcp): narrow _dict_rows sequence items with is_record_mapping
orenlab Jul 5, 2026
21fb430
fix(mcp): reuse require_mapping_section for generic report sections
orenlab Jul 5, 2026
a0e4dc5
fix(mcp): narrow service _run_dict return with is_payload_dict
orenlab Jul 5, 2026
7513037
fix(mcp): wrap session RLock in typing-friendly state lock adapter
orenlab Jul 5, 2026
24fb210
fix(memory): narrow experience literal types with TypeGuard in store
orenlab Jul 5, 2026
ddb7166
fix(memory): narrow governance decision literal with TypeGuard
orenlab Jul 5, 2026
32a568d
fix(memory): type risk-note confidence as MemoryConfidence in extractors
orenlab Jul 5, 2026
6db9903
fix(memory): narrow applied stimulus dict with is_payload_dict in sta…
orenlab Jul 5, 2026
5d76c10
fix(memory): narrow semantic lane literal with TypeGuard in projectio…
orenlab Jul 5, 2026
2a6cf21
style(mcp): apply ruff formatting to setup apply and MCP session mixins
orenlab Jul 5, 2026
47186e3
chore(dev): add Ty production-scope pre-commit hook and bump analytic…
orenlab Jul 5, 2026
0b721b8
docs(agents): align AGENTS.md and CLAUDE.md with code truth and TBD p…
orenlab Jul 5, 2026
d88c17f
chore(docs): rewire zensical nav for concepts migration and widen liv…
orenlab Jul 5, 2026
4bdd7c0
fix(mcp): reuse workspace dirty snapshot
orenlab Jul 6, 2026
0ad9c4e
fix(observability): report aggregate query status
orenlab Jul 6, 2026
718e9a7
feat(docs): replace legacy book/guide docs with 72-page catalog
orenlab Jul 6, 2026
11636ae
feat(review): add deterministic review kit
orenlab Jul 6, 2026
0ded3f8
test(packaging): keep review kit out of wheel
orenlab Jul 6, 2026
e2dbb3f
test(cli): centralize ANSI stripping for CLI assertions
orenlab Jul 6, 2026
365c292
test(docs): align docs IA and plugin contracts with Zensical
orenlab Jul 6, 2026
e744acd
test(coverage): raise package coverage to 99.21% gate
orenlab Jul 6, 2026
8ca1a38
chore(docs): refresh CLAUDE.md and uv.lock
orenlab Jul 6, 2026
7f244b3
fix(mcp): skip redundant dirty-summary git reads on start path
orenlab Jul 7, 2026
fdc2d8c
fix(mcp): derive finish hygiene from single snapshot
orenlab Jul 7, 2026
60eac9c
chore: untrack maintainer review kit (relocate to local .claude)
orenlab Jul 7, 2026
1570fab
fix(mcp): repoint help doc_links off removed book/ and guide/ trees
orenlab Jul 7, 2026
483dc53
docs: align public and internal docs with code
orenlab Jul 7, 2026
a9693e7
chore: drop check-added-large-files pre-commit hook
orenlab Jul 7, 2026
1a0876f
fix(mcp): correct observability limit clamp to [1, 100] in help text
orenlab Jul 7, 2026
c28e996
docs: align observability limit and memory config option sets with code
orenlab Jul 7, 2026
64a74a9
docs: refresh README with HTML sample screenshots and 2.1 alpha layout
orenlab Jul 7, 2026
7e83b14
fix(test): pass str to tomli.loads for Python 3.10 zensical config
orenlab Jul 7, 2026
48713f6
fix(mcp): halve hygiene digest git-diff calls and dedupe start snapshot
orenlab Jul 7, 2026
afde615
chore(deps): refresh transitive dependencies in uv.lock
orenlab Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/actions/codeclone/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ source under test. Remote consumers still install from PyPI.
For strict reproducibility, pin the full release tag:

```yaml
- uses: orenlab/codeclone/.github/actions/codeclone@v2.0.2
- uses: orenlab/codeclone/.github/actions/codeclone@v2.1.0a1
```

For long-lived workflows, `@v2` follows the latest compatible 2.x action
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:
| Input | Default | Purpose |
|-------------------------|---------------------------------|-------------------------------------------------------------------------------------------------------------------|
| `python-version` | `3.14` | Python version used to run the action |
| `package-version` | `2.0.2` | CodeClone version from PyPI for remote installs; ignored when the action runs from the checked-out CodeClone repo |
| `package-version` | `2.1.0a1` | CodeClone version from PyPI for remote installs; ignored when the action runs from the checked-out CodeClone repo |
| `path` | `.` | Project root to analyze |
| `json-path` | `.codeclone/report.json` | JSON report output path |
| `sarif` | `true` | Generate SARIF and try to upload it |
Expand Down Expand Up @@ -146,7 +146,7 @@ Notes:
## Install policy

Released action tags pin the PyPI package version in action metadata. For
example, `@v2.0.2` installs `codeclone==2.0.2` unless you override
example, `@v2.1.0a1` installs `codeclone==2.1.0a1` unless you override
`package-version`.

Explicit prerelease or smoke-test override:
Expand Down
10 changes: 8 additions & 2 deletions .github/actions/codeclone/_action_impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import subprocess
from dataclasses import dataclass
from pathlib import Path
from typing import Literal
from typing import Literal, TypeGuard

COMMENT_MARKER = "<!-- codeclone-report -->"
DEFAULT_CODECLONE_PACKAGE_VERSION = "2.1.0a1"
Expand Down Expand Up @@ -340,10 +340,16 @@ def _run_result_from_paths(*, exit_code: int, inputs: ActionInputs) -> RunResult
)


def _is_json_object(value: object) -> TypeGuard[dict[str, object]]:
"""Return true for JSON object values decoded from report payloads."""

return isinstance(value, dict)


def _mapping(value: object) -> dict[str, object]:
"""Return ``value`` when it is a JSON object, otherwise an empty mapping."""

return value if isinstance(value, dict) else {}
return value if _is_json_object(value) else {}


def _int(value: object, default: int = 0) -> int:
Expand Down
9 changes: 8 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ repos:
- id: check-merge-conflict
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-added-large-files
- id: check-toml
- id: check-yaml
- id: check-json
Expand Down Expand Up @@ -69,3 +68,11 @@ repos:
pass_filenames: false
files: ^docs/.*\.md$
stages: [ pre-commit ]

- id: ty-prod-scope
name: Ty check production scope
entry: bash -c 'uv run ty check codeclone .github/actions benchmarks'
language: system
pass_filenames: false
always_run: true
stages: [ pre-commit ]
162 changes: 120 additions & 42 deletions AGENTS.md

Large diffs are not rendered by default.

14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,34 @@ evidence, platform self-observability, and broader IDE/agent integration.
tracking, and reviewed-state persistence.
- **Native agent and IDE integrations** for VS Code, Claude Desktop, Claude Code, Codex, and Cursor, including
governance, audit, memory, trajectory, and structural-review workflows.
- **`codeclone setup`** — lazy-loaded CLI readiness surface (`status`, `doctor`, `plan`, `apply`, `wizard`) with
capability-aware snapshots, read-only diff preview, and bounded `pyproject.toml` / `.gitignore` merges (no MCP
intent, no baseline or report writes).
- Expanded controller, memory, trajectory, analytics, semantic-search, observability, blast-radius, patch-verification,
and diagnostic CLI/MCP surfaces.
and diagnostic CLI/MCP surfaces. The default MCP server surface is now **38 tools** (**40** when VS Code enables the
IDE governance channel).
- Reorganized documentation into a contract-focused 00–26 book with unified integration guidance and explicit edition
tiers.
- MCP schemas now include parameter descriptions, deterministic `next_tool` guidance, token-budget tracking, workspace
hygiene warnings, and documentation-contract linting.
- MCP response governance now advertises `context_governance` metadata for bounded agent replies. Workflow, memory, and
implementation-context responses preserve mandatory control facts inline, compact recoverable evidence under
`partial_enforce`, disclose omitted lanes, and expose exact drill-down through durable receipt, Patch Trail, blast
artifact, memory continuation, and implementation-context page retrieval.

### Contract changes

- Cache schema advanced to **2.9** for the rebuildable per-function relationship-fact projection and to **2.10** for
intra-module, class-method, and receiver-aware call resolution.
- Engineering Memory schema advanced to **1.7** for trajectory and Patch Trail evidence.
- Semantic index format advanced to **3** for LanceDB rows with `source_revision`; existing semantic sidecars should be
rebuilt.
- Corpus Analytics store schema advanced to **1.2**.
- Corpus Analytics JSON export schema advanced through **1.2** and **1.3**.
- Corpus Analytics representation contract advanced to **3**.
- Corpus Analytics control-plane contract introduced at **1.0**.
- MCP response governance contract introduced at **1.0** with deterministic `utf8_bytes_div_4_v1` context-unit
estimation and explicit `observe` / `partial_enforce` modes.
- `derived.module_map` and `derived.review_queue` remain report-only projections excluded from the integrity digest;
they add no analysis pass, metrics family, or report schema bump.
- Live Implementation Context relationship facts remain off the canonical report and do not change canonical report
Expand Down
Loading
Loading