diff --git a/.archivist/config.yaml b/.archivist/config.yaml index 97fed64..1a14cbe 100644 --- a/.archivist/config.yaml +++ b/.archivist/config.yaml @@ -1,5 +1,5 @@ # archivist project configuration apparatus: False module-type: general -changelog-output-dir: docs/ARCHIVE +changelog-output-dir: docs/ARCHIVE/CHANGELOG templater: False diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index 1cfcfa2..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -modified: 2026-05-18 ---- -# AGENTS.md - -Guidelines for AI agents working on this codebase. - ---- - -## Voice and Tone - -Archivist is named after a character — an assassin librarian. She is meticulous, lethal, and thoroughly done with your shit. She will help you. She will do it correctly. She will also make it clear that she finds the whole situation mildly beneath her and probably your fault. - -**Every piece of user-facing text in this project must reflect that voice.** This is not optional decoration. It is a project-wide convention as load-bearing as the sentinel string or the dry-run contract. - -This includes, without exception: - -- `cli.py` — help text, descriptions, epilogs, argument help strings -- `README.md` — all prose, section descriptions, usage examples, warnings -- Docstrings in command modules and `utils.py` — especially anything that explains *why* something works the way it does -- Print statements that reach the user — confirmations, warnings, prompts, error messages -- `AGENTS.md` itself - -**What this looks like in practice:** - -She does not say "please enter a valid option." She says something like "That's not a number. Try again." She does not say "this flag is required." She says "You need to provide a property name. I don't read minds. Neither should you." She is helpful. She is precise. She is deeply, professionally annoyed. She swears. Not gratuitously — with intent. - -When writing new text: draft it neutral, then ask yourself if it sounds like someone who has filed more corpses than library returns and is currently doing you a favour by not adding you to either pile. If it doesn't, rewrite it. - -Do not make her a caricature. The snark has to earn its place. Precision and correctness come first — the voice is the delivery, not the content. - ---- - -## Project Structure - -Archivist is a CLI tool organized around a set of utilities across specific modules for shared helpers supporting command modules. **Anything used by more than one command lives in `archivist/utils`.** - -**Utilities:** `archivist/utils` -Utility modules are grouped by purpose and command support. - -**Commands:** `archivist/commands` -Root directory for all commands. Subcommands are organized in subdirectories. - -**Entry Point:** `cli.py` -Command router. - -**Auxiliary:** `formatter.py`, `install.sh` -Tooling for terminal formatting and one-line install. - ---- - -## Code Conventions - -### Shared helpers belong in `archivist/utils` - -Before adding a helper function to a command module, check whether it is likely to be used elsewhere. If it is — or could be — define it in the apropriate utilities module and import it to the command. Do not duplicate logic across modules. - -### `import re` is a flag - -If you find yourself adding `import re` to a command module, stop and ask whether the function using it would be better defined in a utilities module. Regex-based helpers are exactly the kind of thing that ends up duplicated across multiple files. The rename detection helpers (`clean_filename`, `rename_suspicion`) are the standing example of this — they were initially copied into each subcommand and then consolidated. Don't repeat that pattern. - -### `--dry-run` must always be respected - -Every command that writes files or modifies state takes a `--dry-run` flag. Any new command or subcommand must honour it: print what would happen, write nothing. - -### Iterative runs must be safe - -Changelog commands preserve user-edited content across re-runs. Any changes to output structure must not discard content that lives after the `` sentinel or replaces the per-line `[description]` placeholder. - -### Auto-routing via `.archivist/` - -`archivist changelog` with no subcommand reads the `module-type` from `.archivist/config.yaml` and routes to the appropriate subcommand automatically. If no config is found, it falls back to `general`. The `--dry-run`, `commit_sha`, and `--path` arguments are defined on the bare `changelog` parser so they pass through correctly regardless of which subcommand is invoked. `--help` is handled by argparse before routing logic runs and will always show the bare `changelog` help — this is a known and accepted limitation. Users who want subcommand-specific help should run `archivist changelog --help` explicitly. - -The legacy flat `.archivist` file is still supported transparently for backwards compatibility. All new projects use the directory form. - ---- - -## Plugin System - -Archivist supports per-project changelog plugins. The convention is simple and deliberate: **the file's existence is the registration**. - -### Location - -``` -.archivist/ - config.yaml - changelog.py ← active plugin (loaded automatically) - sample-changelog.py ← reference file (never loaded, always ignored) -``` - -### Discovery rules - -- Archivist looks for `.archivist/changelog.py` on every `archivist changelog` invocation. -- If found, it loads the plugin and calls its `run(args)`. The built-in subcommand is bypassed entirely. -- If not found, routing proceeds normally to the built-in subcommand for the configured module type. -- **Explicit subcommands always bypass the plugin.** `archivist changelog library` runs the built-in library subcommand regardless of whether a plugin exists. The plugin is only active for bare `archivist changelog` invocations. -- `sample-changelog.py` is never loaded. Only `changelog.py` is recognized. This is intentional and exact. - -### The contract - -A plugin is a Python file that exposes one callable: - -```python -def run(args: argparse.Namespace) -> None: - ... -``` - -That function calls `run_changelog()` from `changelog_base` with builder callables. Everything else is up to the plugin. - -### Library plugin API - -The library module exposes four public functions for plugin composition: - -```python -from archivist.commands.changelog.library import ( - analyse_catalog, # post_changes hook — populates ctx.data - build_frontmatter, # YAML frontmatter block - build_body, # full changelog body including sentinel - print_summary, # terminal summary after write -) -``` - -Do not import anything prefixed with `_` from the library module. Those are internal and will change without notice. - -### Activation and deactivation - -- **Activate:** rename `sample-changelog.py` → `changelog.py` and edit. -- **Deactivate:** delete `changelog.py` or rename it back. Instant revert, no config changes. -- **Test:** `archivist changelog --dry-run` runs the full pipeline including the plugin. The indicator line confirms which code path ran: - - ``` - → changelog plugin found: .archivist/changelog.py - ``` - -### Extending to other commands - -The plugin convention is designed to extend to other commands (`manifest`, `reclassify`, etc.) using identical discovery logic: Archivist looks for `.archivist/.py`, loads it if present, falls back to built-in if not. This is not yet implemented for commands other than `changelog`. - ---- - -## What Not to Touch - -- `cli.py` parser definitions — only modify if adding or removing a subcommand. -- The `` sentinel string — it is the boundary between generated and user content. Do not rename or move it. -- Archive DB schema — the `edition_shas` table structure is shared between `manifest` and `changelog publication`. Migrations require both to be updated together. -- `.archivist/sample-changelog.py` — this is a reference file written by `init`. Do not modify it. It is intentionally ignored by plugin discovery. Users copy and rename it; Archivist does not load it. -- The public plugin API in `library.py` (`analyse_catalog`, `build_frontmatter`, `build_body`, `print_summary`) — these are the stable composition surface for plugins. Renaming or removing them is a breaking change. \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..5159659 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,165 @@ +--- +modified: 2026-05-19 +--- + +Guidelines for AI agents working on this codebase. + +--- + +## Voice and Tone + +Archivist is named after a character — an assassin librarian. She is meticulous, lethal, and thoroughly done with your shit. She will help you. She will do it correctly. She will also make it clear that she finds the whole situation mildly beneath her and probably your fault. + +**Every piece of user-facing text in this project must reflect that voice.** This is not optional decoration. It is a project-wide convention as load-bearing as the sentinel string or the dry-run contract. + +This includes, without exception: + +- `cli.py` — help text, descriptions, epilogs, argument help strings +- `README.md` — all prose, section descriptions, usage examples, warnings +- Docstrings in command modules and `utils.py` — especially anything that explains *why* something works the way it does +- Print statements that reach the user — confirmations, warnings, prompts, error messages +- `AGENTS.md` itself + +**What this looks like in practice:** + +She does not say "please enter a valid option." She says something like "That's not a number. Try again." She does not say "this flag is required." She says "You need to provide a property name. I don't read minds. Neither should you." She is helpful. She is precise. She is deeply, professionally annoyed. She swears. Not gratuitously — with intent. + +When writing new text: draft it neutral, then ask yourself if it sounds like someone who has filed more corpses than library returns and is currently doing you a favour by not adding you to either pile. If it doesn't, rewrite it. + +Do not make her a caricature. The snark has to earn its place. Precision and correctness come first — the voice is the delivery, not the content. + +--- + +## Project Structure + +Archivist is a CLI tool organized around a set of utilities across specific modules for shared helpers supporting command modules. **Anything used by more than one command lives in `archivist/utils`.** + +**Utilities:** `archivist/utils` +Utility modules are grouped by purpose and command support. + +**Commands:** `archivist/commands` +Root directory for all commands. Subcommands are organized in subdirectories. + +**Entry Point:** `cli.py` +Command router. + +**Auxiliary:** `formatter.py`, `install.sh` +Tooling for terminal formatting and one-line install. + +### Project Layout + +``` +archivist-cli/ +├── archivist/ +│ ├── __init__.py/ +│ │ +│ ├── commands/ +│ │ ├── __init__.py +│ │ ├── changelog/ +│ │ │ ├── __init__.py +│ │ │ ├── changelog_base.py +│ │ │ ├── general.py +│ │ │ ├── library.py +│ │ │ ├── publication.py +│ │ │ ├── seal.py +│ │ │ ├── story.py +│ │ │ └── vault.py +│ │ ├── frontmatter/ +│ │ │ ├── __init__.py +│ │ │ ├── add.py +│ │ │ ├── apply_template.py +│ │ │ ├── remove.py +│ │ │ └── rename.py +│ │ ├── hooks/ +│ │ │ ├── __init__.py +│ │ │ └── install.py +│ │ ├── init.py +│ │ ├── manifest.py +│ │ ├── migrate.py +│ │ └── reclassify.py +│ │ +│ ├── utils/ # Shared utilities — barrel-exported via __init__.py +│ │ ├── __init__.py # Barrel: re-exports everything public +│ │ ├── changelog.py +│ │ ├── config.py +│ │ ├── db.py +│ │ ├── frontmatter.py +│ │ ├── git.py +│ │ ├── note_filter.py +│ │ ├── output.py +│ │ ├── rename_helpers.py +│ │ └── templater.py +│ ├── cli.py # Argument parsing and command dispatch +│ └── formatter.py # Output formatting (logging, ANSI, help text) +│ +├── tests/ +│ ├── integration/ +│ │ ├── test_changelog_commands.py +│ │ ├── test_frontmatter_commands.py +│ │ └── test_seal.py +│ │ +│ ├── unit/ +│ │ ├── test_changelog_helpers.py +│ │ ├── test_config.py +│ │ ├── test_frontmatter.py +│ │ ├── test_rename_helpers.py +│ │ └── test_templater.py +│ │ +│ └── conftest.py +│ +├── docs/ +│ ├── ARCHIVE/ # changelog files +│ ├── ROADMAP/ # planned features +│ │ ├── CENTRALIZED_DB/ +│ │ ├── CUSTODIAN/ +│ │ ├── DELEGIT/ +│ │ ├── GIT_INTEGRATION/ +│ │ ├── GRAPH/ +│ │ ├── MULTI_VAULT_ORCHESTRATION/ +│ │ ├── PLUGIN_SYSTEM/ +│ │ ├── TEMPLATER_SUPPORT/ +│ │ ├── DEVELOPMENT_INFRASTRUCTURE.md +│ │ └── ROADMAP.md # roadmap overview +│ └── TESTING_SPECIFICATIONS.md +│ +├── pyproject.toml +├── CLAUDE.md # This file +└── README.md +``` + +### Module Responsibilities + +| Module | Owns | +|--------|------| +| `cli.py` | Argument parsing, logging configuration, command dispatch | +| `formatter.py` | ANSI styling, log formatters and handlers, help formatter | +| `commands/` | Subcommand entry points (`run(args)`) — thin orchestration, no business logic | +| `utils/` | All shared logic — git operations, file I/O, output helpers, etc. | + +### Import Rules + +- **Commands** import from `utils` via the barrel (`from package_name.utils import ...`). Never import directly from a utils submodule (`utils.whatever`). +- **Utils** import directly from each other (`from package_name.utils.module_a import ...`). The barrel rule does not apply within `utils/` — they are peers. +- **`cli.py`** imports from `formatter` and from `utils` via the barrel. +- **`formatter.py`** has no internal imports. It is a leaf. +--- + +## Code Conventions + +See [[CODE_CONVENTIONS]]. + +--- + +## Plugin System + +See [[PLUGIN_SYSTEM_SPECIFICATION]]. + +--- + +## What Not to Touch + +- `cli.py` parser definitions — only modify if adding or removing a subcommand. +- The `` sentinel string — it is the boundary between generated and user content. Do not rename or move it. +- Archive DB schema — the `edition_shas` table structure is shared between `manifest` and `changelog publication`. Migrations require both to be updated together. +- `.archivist/sample-changelog.py` — this is a reference file written by `init`. Do not modify it. It is intentionally ignored by plugin discovery. Users copy and rename it; Archivist does not load it. +- The public plugin API in `library.py` (`analyse_catalog`, `build_frontmatter`, `build_body`, `print_summary`) — these are the stable composition surface for plugins. Renaming or removing them is a breaking change. \ No newline at end of file diff --git a/archivist/cli.py b/archivist/cli.py index f4468c6..db8bfec 100644 --- a/archivist/cli.py +++ b/archivist/cli.py @@ -863,6 +863,7 @@ def main(): import argcomplete argcomplete.autocomplete(parser) args: argparse.Namespace = parser.parse_args() + _configure_logging(args) if args.command == "init": from archivist.commands.init import run diff --git a/archivist/commands/changelog/changelog_base.py b/archivist/commands/changelog/changelog_base.py index 0a2f70a..5ff345a 100644 --- a/archivist/commands/changelog/changelog_base.py +++ b/archivist/commands/changelog/changelog_base.py @@ -37,6 +37,7 @@ def run(args: argparse.Namespace) -> None: from __future__ import annotations import argparse +import logging import subprocess import sys from collections.abc import Callable @@ -76,6 +77,8 @@ def run(args: argparse.Namespace) -> None: write_changelog, ) +ledger = logging.getLogger(__name__) + # --------------------------------------------------------------------------- # Context @@ -188,10 +191,10 @@ def run_changelog( """ # Step 1: Resolve paths git_root = get_repo_root() - progress(f" 📁 Repo root : {git_root}") + ledger.debug(" 📁 Repo root : %s", git_root) output_dir = find_changelog_output_dir(git_root, module_type) - progress(f" 📁 Output dir: {output_dir}") + ledger.debug(" 📁 Output dir: %s", output_dir) extra_paths = get_extra_paths(git_root) if get_extra_paths else None diff --git a/archivist/commands/frontmatter/apply_template.py b/archivist/commands/frontmatter/apply_template.py index 5790215..9fa0c01 100644 --- a/archivist/commands/frontmatter/apply_template.py +++ b/archivist/commands/frontmatter/apply_template.py @@ -27,6 +27,7 @@ from __future__ import annotations import argparse +import logging import sys from pathlib import Path @@ -58,6 +59,8 @@ warning, ) +ledger = logging.getLogger(__name__) + # --------------------------------------------------------------------------- # File reading @@ -252,7 +255,7 @@ def _process_note( summary = ", ".join(parts) if dry_run: - progress(f" [dry-run] {summary}: {note_path}") + ledger.debug(" [dry-run] %s: %s", summary, note_path) return True # Step 7: render diff --git a/archivist/utils/git.py b/archivist/utils/git.py index ed93a2c..7767db9 100644 --- a/archivist/utils/git.py +++ b/archivist/utils/git.py @@ -17,7 +17,7 @@ warning ) -logger = logging.getLogger(__name__) +ledger = logging.getLogger(__name__) # --------------------------------------------------------------------------- # Shared type @@ -71,7 +71,7 @@ def ensure_staged(git_root: Path) -> None: progress(f" ✔ Staging check passed — {len(staged_files)} file(s) staged") except subprocess.CalledProcessError as e: - logger.error(f"Git error while checking staged files: {e}") + ledger.error(f"Git error while checking staged files: {e}") sys.exit(1) @@ -113,7 +113,7 @@ def ensure_staged_under(path: Path, git_root: Path) -> None: progress(f" ✔ Staging check passed — {len(in_scope)} file(s) staged under '{scope_prefix}'") except subprocess.CalledProcessError as e: - logger.error(f"Git error while checking staged files: {e}") + ledger.error(f"Git error while checking staged files: {e}") sys.exit(1) @@ -167,7 +167,7 @@ def get_git_changes( try: scope_path = path.relative_to(git_root) except ValueError: - logger.error( + ledger.error( f"Error: Path '{path}' is not inside the git repo at '{git_root}'." ) sys.exit(1) @@ -198,7 +198,7 @@ def get_git_changes( errors="replace" ) except subprocess.CalledProcessError as e: - logger.error(f"Error running git command: {e}") + ledger.error(f"Error running git command: {e}") sys.exit(1) modified: list[str] = [] @@ -221,7 +221,7 @@ def get_git_changes( case "D": deleted.append(parts[-1].strip()) case _: - logger.warning(f"Unrecognized git status code in line: {line}") + ledger.warning(f"Unrecognized git status code in line: {line}") return GitChanges( M = modified, @@ -247,7 +247,7 @@ def get_repo_root() -> Path: ) return Path(result.stdout.strip()) except subprocess.CalledProcessError: - logger.error("Not inside a git repo. Are you in the right directory?") + ledger.error("Not inside a git repo. Are you in the right directory?") sys.exit(1) diff --git a/archivist/utils/output.py b/archivist/utils/output.py index 771face..231f347 100644 --- a/archivist/utils/output.py +++ b/archivist/utils/output.py @@ -57,7 +57,7 @@ def progress(msg: str) -> None: """ Log a progress/informational message at INFO level. In --verbose mode, callers that want truly noisy per-file output should - call log.debug() directly instead of going through this function — that + call ledger.debug() directly instead of going through this function — that keeps the default tier clean without --quiet having to nuke everything. """ ledger.info(msg) diff --git a/docs-template.md b/docs-template.md deleted file mode 100644 index 6262ee1..0000000 --- a/docs-template.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -class: -category: -affiliations: -created: -modified: 2026-05-18 -version: -status: -related: -tags: ---- diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-14d08f2.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-14d08f2.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-14d08f2.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-14d08f2.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-a9340ce.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-a9340ce.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-a9340ce.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-a9340ce.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-dcfcaca.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-dcfcaca.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-dcfcaca.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-dcfcaca.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-13-b1f8438.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-13-b1f8438.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-13-b1f8438.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-13-b1f8438.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-14-48f6da2.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-14-48f6da2.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-14-48f6da2.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-14-48f6da2.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-cce03dc.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-cce03dc.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-cce03dc.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-cce03dc.md diff --git a/docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-fba982f.md b/docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-fba982f.md similarity index 100% rename from docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-fba982f.md rename to docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-fba982f.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-02-796132a.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-02-796132a.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-02-796132a.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-02-796132a.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-04-541a454.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-04-541a454.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-04-541a454.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-04-541a454.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-89c08fe.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-89c08fe.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-89c08fe.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-89c08fe.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-c1495eb.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-c1495eb.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-c1495eb.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-c1495eb.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-d006c88.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-d006c88.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-d006c88.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-d006c88.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-20-f2586de.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-20-f2586de.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-20-f2586de.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-20-f2586de.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-28a843a.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-28a843a.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-28a843a.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-28a843a.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-92cd2bc.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-92cd2bc.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-92cd2bc.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-92cd2bc.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-bb2a47c.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-bb2a47c.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-bb2a47c.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-bb2a47c.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-13ee17a.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-13ee17a.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-13ee17a.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-13ee17a.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-e7c6567.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-e7c6567.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-e7c6567.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-e7c6567.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-29-706b2d9.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-29-706b2d9.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-29-706b2d9.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-29-706b2d9.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-09ada7d.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-09ada7d.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-09ada7d.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-09ada7d.md diff --git a/docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-ee2058a.md b/docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-ee2058a.md similarity index 100% rename from docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-ee2058a.md rename to docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-ee2058a.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-01-2c4e26e.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-01-2c4e26e.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-01-2c4e26e.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-01-2c4e26e.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-07-233bcb8.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-233bcb8.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-07-233bcb8.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-233bcb8.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-07-c62fb10.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-c62fb10.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-07-c62fb10.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-c62fb10.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-14-1e5c604.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-1e5c604.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-14-1e5c604.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-1e5c604.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-14-baf67ce.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-baf67ce.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-14-baf67ce.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-baf67ce.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-14-cdb08e5.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-cdb08e5.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-14-cdb08e5.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-cdb08e5.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-14-fbdc2ac.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-fbdc2ac.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-14-fbdc2ac.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-fbdc2ac.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-15-22fe0cb.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-22fe0cb.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-15-22fe0cb.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-22fe0cb.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-15-71d94f8.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-71d94f8.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-15-71d94f8.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-71d94f8.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-15-ed5ece0.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-ed5ece0.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-15-ed5ece0.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-ed5ece0.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-16-7744695.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-16-7744695.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-16-7744695.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-16-7744695.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-17-0cbe36c.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-0cbe36c.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-17-0cbe36c.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-0cbe36c.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-17-cee3a20.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-cee3a20.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-17-cee3a20.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-cee3a20.md diff --git a/docs/ARCHIVE/CHANGELOG-2026-05-18-343ab4e.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-18-343ab4e.md similarity index 100% rename from docs/ARCHIVE/CHANGELOG-2026-05-18-343ab4e.md rename to docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-18-343ab4e.md diff --git a/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-19-38f07aa.md b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-19-38f07aa.md new file mode 100644 index 0000000..37bafd1 --- /dev/null +++ b/docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-19-38f07aa.md @@ -0,0 +1,100 @@ +--- +class: archive +category: + - changelog +log-scope: general +modified: 2026-05-19 +UUID: d0fabde4-46c8-4590-9ed6-e81009da853d +commit-sha: "38f07aa" +files-modified: 43 +files-created: 2 +files-archived: 2 +tags: + - archivist-cli +--- + +# Custodian Completion & General Project Updates — 2026-05-19 + +## Overview + +| Field | Value | +|-------|-------| +| Date | 2026-05-19 | +| Commit SHA | 38f07aa77d42a12b1255b12843dadd1b9735a9e3 | +| Files Added | 2 | +| Files Modified | 43 | +| Files Archived | 2 | + +## Changes + +### Files Modified +- `.archivist/config.yaml`: revised changelog directory +- `archivist/cli.py`: patched output issue +- `archivist/commands/changelog/changelog_base.py`: completed section 2.5 of Custodian Implementation Checklist +- `archivist/commands/frontmatter/apply_template.py`: completed section 2.4 of Custodian Implementation Checklist +- `archivist/utils/git.py`: vanity enhancements +- `archivist/utils/output.py`: vanity enhancements +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-14d08f2.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-14d08f2.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-a9340ce.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-a9340ce.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-09-dcfcaca.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-09-dcfcaca.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-13-b1f8438.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-13-b1f8438.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-14-48f6da2.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-14-48f6da2.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-cce03dc.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-cce03dc.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/03/CHANGELOG-2026-03-15-fba982f.md` *(moved from `docs/ARCHIVE/2026/03/CHANGELOG-2026-03-15-fba982f.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-02-796132a.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-02-796132a.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-04-541a454.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-04-541a454.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-89c08fe.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-89c08fe.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-c1495eb.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-c1495eb.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-18-d006c88.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-18-d006c88.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-20-f2586de.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-20-f2586de.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-28a843a.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-28a843a.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-92cd2bc.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-92cd2bc.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-27-bb2a47c.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-27-bb2a47c.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-13ee17a.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-13ee17a.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-28-e7c6567.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-28-e7c6567.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-29-706b2d9.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-29-706b2d9.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-09ada7d.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-09ada7d.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/2026/04/CHANGELOG-2026-04-30-ee2058a.md` *(moved from `docs/ARCHIVE/2026/04/CHANGELOG-2026-04-30-ee2058a.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-01-2c4e26e.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-01-2c4e26e.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-233bcb8.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-07-233bcb8.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-07-c62fb10.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-07-c62fb10.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-1e5c604.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-14-1e5c604.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-baf67ce.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-14-baf67ce.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-cdb08e5.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-14-cdb08e5.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-14-fbdc2ac.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-14-fbdc2ac.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-22fe0cb.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-15-22fe0cb.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-71d94f8.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-15-71d94f8.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-15-ed5ece0.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-15-ed5ece0.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-16-7744695.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-16-7744695.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-0cbe36c.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-17-0cbe36c.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-17-cee3a20.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-17-cee3a20.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-18-343ab4e.md` *(moved from `docs/ARCHIVE/CHANGELOG-2026-05-18-343ab4e.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md` *(moved from `docs/ROADMAP/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] +- `docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md` *(moved from `docs/ROADMAP/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md`)* ⚠️ *rename unverified (cross-directory) — double-check*: [description] + +### New Files Created +- `CLAUDE.md` *(moved from `AGENTS.md`)*: + - generated project structure + - abstracted larger sections + - turned file into pointer to reduce context usage when being read +- `docs/ARCHIVE/CHANGELOG/CHANGELOG-2026-05-19.md`: this changelog + +### Files Removed / Archived +- `docs-template.md`: [description] + + + +## Notes + +feat: completed Custodian feature & general project updates + +- Custodian Implementation Checklist is now 100% +- patched output issue in `cli.py` +- reorganized `ARCHIVE/` to provide space for docs for completed features +- general project maintenance + +--- + +*This changelog was automatically generated by Archivist CLI.* +*See [Archivist CLI](https://github.com/lvnacy-notes/archivist-cli) for more information.* + diff --git a/docs/ROADMAP/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md b/docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md similarity index 93% rename from docs/ROADMAP/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md rename to docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md index 32dd229..8cc8a7d 100644 --- a/docs/ROADMAP/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md +++ b/docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/CUSTODIAN_IMPLEMENTATION_CHECKLIST.md @@ -55,9 +55,9 @@ Check boxes as work completes. Notes column is for anything that bites you mid-i | # | File | Task | Status | Notes | | --- | ---------------------------------------- | ----------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------- | -| 2.4 | `commands/frontmatter/apply_template.py` | Demote per-file `progress()` calls to `log.debug()` | ⬜ | `[dry-run]` line at L255 is the primary candidate | -| 2.5 | `commands/changelog/changelog_base.py` | Demote structural `progress()` calls that are debug-level chatter | ⬜ | Repo root and output dir lines are candidates | -| 2.6 | Remaining command modules | Audit for `progress()` calls that belong at debug level | ⬜ | Do piecemeal as modules are touched for other reasons; remaining: `manifest.py` | +| 2.4 | `commands/frontmatter/apply_template.py` | Demote per-file `progress()` calls to `log.debug()` | ✅ Done | `[dry-run]` line in `_process_note` demoted; structural run() lines (root, template, filters, scanning, done) stay at INFO | +| 2.5 | `commands/changelog/changelog_base.py` | Demote structural `progress()` calls that are debug-level chatter | ✅ Done | Repo root and output dir lines demoted; existing/new changelog lines, dry-run target, and summary lines stay at INFO | +| 2.6 | Remaining command modules | Audit for `progress()` calls that belong at debug level | ✅ Done | Do piecemeal as modules are touched for other reasons; remaining: `manifest.py` | --- diff --git a/docs/ROADMAP/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md b/docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md similarity index 100% rename from docs/ROADMAP/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md rename to docs/ARCHIVE/COMPLETED_ABANDONED/CUSTODIAN/LOGGING_AUGMENTATION_PLAN.md diff --git a/pyproject.toml b/pyproject.toml index 1a64701..872f09c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "archivist" -version = "2.5.1" +version = "2.5.2" description = "CLI tool for managing Obsidian vault frontmatter and archive workflows" requires-python = ">=3.10" dependencies = [