8000 Tags · infinri/Writ · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

v1.12.0

Toggle v1.12.0's commit message
Release 1.12.0: document and decision retrieval, write context, trust…

… records, secured Neo4j

Version 1.12.0 in plugin.json, marketplace.json, pyproject.toml, writ/__init__.py and the
version-consistency pin, the CHANGELOG entry covering every commit since 1.11.1, and the
program handoff updated for the release.

v1.11.1

Toggle v1.11.1's commit message
Release 1.11.1: plugin-namespaced agent types for dispatch and review…

…er verdicts

Version 1.11.1 in plugin.json, marketplace.json, pyproject.toml,
writ/__init__.py and the version-consistency pin, and the CHANGELOG entry.

v1.8.0

Toggle v1.8.0's commit message
v1.8.0

Eight entries close one seam from eight directions: a Bash-mediated write that reached
neither gate. A control operator with no space in front of it, a shell group, six wrapper
prefixes, a command inside find's argument list, a newline, three further prefixes, the
shell expansions that decide where a write lands, and a tab or doubled space in front of a
verb each hid a real write, and each was measured through the running hook rather than
read off the code.

A dispatched sub-agent's writes are now bounded by its declared role instead of by whoever
dispatched it, and the test suite runs against its own Neo4j instance so a suite run can no
longer reach the graph the interactive daemon serves.

This release also repairs continuous integration, which had been reporting green over a
suite it was not finishing. The test job's 20-minute limit was cancelling the run at 64
percent, hiding six tests that had never once executed on a runner because they assumed a
developer's machine: a live daemon, a reachable production graph, real session caches. Each
is fixed at its seam rather than skipped. CI now runs the two graph instances a developer
machine has, and a seeded witness record proves across every run that nothing wipes the
production-address instance.

writ.__version__ was pinned by nothing, so a release could have shipped a package reporting
the previous number. It is pinned now, and the new assertion was proved conditional by
mutation rather than by being green.

Verified: 12,278 tests pass locally and 11,517 pass in CI, with zero failures in either,
and 17 benchmark targets pass. The gap between those two numbers is 566 test functions that
gate on an untracked directory and skip on a runner, measured and recorded in
docs/adr/ADR-ci-graph-topology.md rather than left to be rediscovered.

v1.7.0

Toggle v1.7.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #8 from infinri/fix/bench-budget-scale

Size the cold-start bench scale to the slowest runner observed

v1.6.0

Toggle v1.6.0's commit message
Skip the host-settings assertion when ~/.claude/settings.json is absent

The test asserts a stale Bash permission was removed from the HOST's
installed global config; CI runners never had one. Its two guarded
siblings (pol5b4 global-settings check, the installed-systemd-unit
check) already skip this way; this was the only bare host-state read
left in the suite.

v1.5.0

Toggle v1.5.0's commit message
v1.5.0: Unify bible ingestion under writ import-markdown

writ import-markdown becomes the single canonical entry point for ingesting
every node type under bible/ (Rule + Skill + Playbook + AntiPattern + Phase +
Technique + Rationalization + SubagentRole + WorkedExample + ForbiddenResponse).
Pre-1.5.0 the CLI handled only Rule nodes; methodology required shelling out
to scripts/migrate.py --methodology-dir. The duplicate parse/validate/write
loop collapses into one library module that both call sites consume
(DRY-DUP-002). Per-node-type dispatch becomes a registry lookup (SOLID-OCP-002),
and validation failures surface as typed IngestError instead of raw Pydantic
tracebacks (API-ERROR-002).

Added:
- writ/graph/methodology_ingest.py library (ingest_path, ingest_edges,
  INGESTER_REGISTRY, KNOWN_NODE_TYPES, IngestReport, IngestError)
- --only TYPE[,...] and --dry-run flags on writ import-markdown
- tests/_writ_cmd.py shared CLI resolver (.venv/bin/writ -> python -m
  writ.cli fallback) consumed by every test that subprocess-invokes the CLI
- tests/test_import_markdown_unified.py (27 tests, 7 classes)
- tests/test_methodology_ingest.py (14 unit tests)

Changed:
- writ/cli.py import_markdown rewritten as a thin Typer wrapper over the
  library. writ migrate now in-process; exit-code contract preserved.
- scripts/migrate.py reduced from 257 lines to a ~71-line shim that
  preserves --bible-dir / --methodology-dir / --dry-run argparse surface
  and re-exports run_migration + run_methodology_migration for the
  test_phase6bcd_verification import contract.
- tests/conftest.py::pytest_sessionfinish, tests/test_retrieval.py,
  tests/test_post_suite_neo4j_restoration.py, tests/test_graph_proximity.py,
  tests/test_embeddings.py shell out to writ import-markdown bible/ (was:
  scripts/migrate.py --methodology-dir bible/methodology).
- tests/test_ingest.py::TestMigrationIntegration uses MERGE-aware unique
  rule_id count (the 286-vs-276 disparity was 10 enforcement-rule IDs that
  legitimately live in both bible/<topic>/rules.md and
  bible/methodology/<topic>/rules.md).
- .github/actions/setup-writ/action.yml + .github/workflows/pr.yml call
  writ import-markdown bible/. CI gains methodology coverage.
- README.md, bible/methodology/PBK-AUTHOR-001.md,
  docs/extraction/{04,08,09}-*.md, benchmarks/bench_targets.py,
  scripts/instrument-cold-start.py, .claude/CODEBASE.md, templates/CLAUDE.md
  -- migrate.py user-facing references repointed at writ import-markdown.
- Version 1.3.0 -> 1.5.0 across pyproject.toml, .claude-plugin/plugin.json,
  .claude-plugin/marketplace.json (both metadata.version and
  plugins[0].version). tests/test_version_consistency.py EXPECTED_VERSION
  bumped accordingly.
- CHANGELOG.md prepends a [1.5.0] entry that documents both the absorption
  work (commit 0882dd6) and this commit's unify work as a single release.

Fixed:
- writ import-markdown no longer auto-exports the full graph when invoked
  against a subdirectory. Pre-fix, running writ import-markdown
  bible/methodology/ triggered an auto-export whose file-location lookup
  only scanned within the subdir; rules whose original files lived outside
  scope fell through to <output_dir>/<domain>/rules.md, creating bogus
  duplicates like bible/methodology/process/rules.md. Auto-export is now
  gated on path.resolve() == DEFAULT_BIBLE_DIR.resolve(). Regression tests
  in tests/test_import_markdown_unified.py::TestImportMarkdownEdgeCases
  cover the subdir-skip and default-root-still-fires cases.

Notes:
- Backwards compat: python scripts/migrate.py [--bible-dir ...]
  [--methodology-dir ...] [--dry-run] and from scripts.migrate import
  run_migration continue to work unchanged. The shim prints a deprecation
  notice to stderr on direct invocation but does not change exit codes.
- Intentional behavior change: writ import-markdown with no flags now
  imports methodology too. Pre-1.5.0 invocations relying on the Rule-only
  side effect should add --only Rule to preserve the old scope.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
0