From 2c1105ff90e918dee760777ec4b82ff07a8ce093 Mon Sep 17 00:00:00 2001 From: Jonathan Oh Date: Thu, 12 Feb 2026 16:55:27 -0500 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20add=203=20new=20link-check=20FP=20fi?= =?UTF-8?q?lters=20=E2=80=94=20short=20labels,=20ALL=5FCAPS,=20version-adj?= =?UTF-8?q?acent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reduce link-check false positives from ~92 → 45 by adding three new pattern exclusions to _looks_like_doc_id() in the generic body scan: 1. Short label pattern (^[A-Z]{1,2}-?[A-Z]?\d{1,2}$) Rejects track/finding labels: A1, B2, X-H1, NB-1, L0, M-2, etc. ~18 unique values, the largest remaining FP category. 2. ALL_CAPS token pattern (^[A-Z][A-Z_]+[A-Z]$) Rejects SCREAMING_SNAKE_CASE config constants: AUTO_CONSOLIDATE. 3. Version-adjacent patterns: - Extended _VERSION_RE to catch trailing letters (v3.2.1b) - Added _VERSION_WILDCARD_RE for .x wildcards (v2.x, v3.2.x) Safety: All filters only affect Pass 2 (generic unknown-ID scan). Pass 1 (known-ID scan) always finds existing doc IDs regardless of naming pattern, so no false negatives are introduced. 24 new tests added (14 short label, 3 ALL_CAPS, 4 version-adjacent, 3 integration scan tests). Full suite: 916 passed. Co-Authored-By: Claude Opus 4.6 --- ontos/core/body_refs.py | 14 +++++++++++++- tests/core/test_body_refs.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ontos/core/body_refs.py b/ontos/core/body_refs.py index 390fec8..273bbc5 100644 --- a/ontos/core/body_refs.py +++ b/ontos/core/body_refs.py @@ -58,7 +58,7 @@ class BodyReferenceScan: _WINDOWS_ABS_RE = re.compile(r"^[A-Za-z]:[\\/]") # False-positive filters for generic (no known_ids) scanning mode. -_VERSION_RE = re.compile(r"^v?\d+(\.\d+)+$", re.IGNORECASE) +_VERSION_RE = re.compile(r"^v?\d+(\.\d+)+[a-z]?$", re.IGNORECASE) _BARE_NUMBER_RE = re.compile(r"^\d{1,3}$") _FILE_EXTENSION_RE = re.compile( r"\.(md|py|toml|yaml|yml|json|js|ts|tsx|jsx|css|html|txt|cfg|ini|sh|bash|rs|go|rb)$", @@ -69,6 +69,9 @@ class BodyReferenceScan: "describes", "describes_verified", "pending_curation", "update_policy", "aliases", "scope", "rejected_reason", "rejected_date", }) +_SHORT_LABEL_RE = re.compile(r"^[A-Z]{1,2}-?[A-Z]?\d{1,2}$") +_ALL_CAPS_RE = re.compile(r"^[A-Z][A-Z_]+[A-Z]$") +_VERSION_WILDCARD_RE = re.compile(r"^v?\d+(\.\d+)*\.x$", re.IGNORECASE) _REFERENCE_DEF_RE = re.compile(r"^\s*\[[^\]]+\]:") _REFERENCE_STYLE_RE = re.compile(r"\[[^\]]+\]\[[^\]]+\]") _WIKILINK_RE = re.compile(r"\[\[[^\]]+\]\]") @@ -670,6 +673,15 @@ def _looks_like_doc_id(token: str) -> bool: # Reject tokens that look like filenames with extensions if _FILE_EXTENSION_RE.search(token): return False + # Reject short alphanumeric labels (e.g. "A1", "B2", "X-H1", "NB-1", "L0") + if _SHORT_LABEL_RE.match(token): + return False + # Reject ALL_CAPS config constants (e.g. "AUTO_CONSOLIDATE") + if _ALL_CAPS_RE.match(token): + return False + # Reject version wildcards (e.g. "v2.x", "v3.2.x") + if _VERSION_WILDCARD_RE.match(token): + return False if "_" in token or "." in token: return True return any(ch.isdigit() for ch in token) diff --git a/tests/core/test_body_refs.py b/tests/core/test_body_refs.py index a7d1de9..b11a3b9 100644 --- a/tests/core/test_body_refs.py +++ b/tests/core/test_body_refs.py @@ -183,6 +183,25 @@ def test_known_field_names_rejected(self, token): def test_filenames_with_extensions_rejected(self, token): assert _looks_like_doc_id(token) is False + @pytest.mark.parametrize("token", [ + "A1", "A3", "B2", "L0", "L1", "L2", "L3", + "M-2", "B-2", "NB-1", "NB-2", "NB-3", "X-H1", "X-H2", + ]) + def test_short_labels_rejected(self, token): + assert _looks_like_doc_id(token) is False + + @pytest.mark.parametrize("token", [ + "AUTO_CONSOLIDATE", "MY_CONFIG", "SOME_SETTING", + ]) + def test_all_caps_constants_rejected(self, token): + assert _looks_like_doc_id(token) is False + + @pytest.mark.parametrize("token", [ + "v3.2.1b", "v2.x", "v3.2.x", "3.2.1a", + ]) + def test_version_adjacent_rejected(self, token): + assert _looks_like_doc_id(token) is False + def test_underscore_id_without_digits_accepted(self): assert _looks_like_doc_id("auth_flow") is True @@ -215,6 +234,23 @@ def test_filenames_not_in_scan(self): ids = {m.normalized_id for m in scan.matches} assert "AGENTS.md" not in ids + def test_short_labels_not_in_scan(self): + scan = _scan("Finding A1 and issue NB-1 resolved.") + ids = {m.normalized_id for m in scan.matches} + assert "A1" not in ids + assert "NB-1" not in ids + + def test_all_caps_constants_not_in_scan(self): + scan = _scan("Set AUTO_CONSOLIDATE to true.") + ids = {m.normalized_id for m in scan.matches} + assert "AUTO_CONSOLIDATE" not in ids + + def test_version_wildcards_not_in_scan(self): + scan = _scan("Supports v2.x and v3.2.1b releases.") + ids = {m.normalized_id for m in scan.matches} + assert "v2.x" not in ids + assert "v3.2.1b" not in ids + def test_real_doc_ids_still_detected(self): scan = _scan("See v3_2_4_proposal and auth_flow for details.") ids = {m.normalized_id for m in scan.matches} From ab0e92a1c3ffeaae3d050eb574e81b613d2c842e Mon Sep 17 00:00:00 2001 From: Jonathan Oh Date: Thu, 12 Feb 2026 19:23:32 -0500 Subject: [PATCH 2/3] test: add integration tests documenting filtered-pattern tradeoff Two new tests for PR #77 adversarial review response: - Known gap: broken ref matching filtered pattern not detected in generic scan - Happy path: short-label doc ID detected by known-ID scan when it exists Co-Authored-By: Claude Opus 4.6 --- tests/commands/test_link_check.py | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/commands/test_link_check.py b/tests/commands/test_link_check.py index d96fae0..5513981 100644 --- a/tests/commands/test_link_check.py +++ b/tests/commands/test_link_check.py @@ -249,3 +249,36 @@ def test_link_check_version_like_doc_id_not_broken_with_body_ref(tmp_path: Path) assert result.returncode == 0 assert payload["summary"]["broken_references"] == 0 + + +def test_link_check_broken_ref_matching_filtered_pattern_not_detected_in_generic_scan(tmp_path: Path): + """Known tradeoff: a broken bare-token reference whose ID matches a + filtered pattern (e.g., short label 'A2') is NOT detected by the generic + scan. This is intentional — these patterns overwhelmingly match non-doc + content (audit labels, curation levels, config constants). The known-ID + scan (Pass 1) still detects all references to *existing* docs with + filtered-pattern names. See PR #77 for the precision/recall rationale.""" + _init_repo(tmp_path) + _write_doc(tmp_path / "docs" / "doc_a1.md", "A1", body="Roadmap references A2.") + + result = _run_ontos(tmp_path, "--json", "link-check") + payload = json.loads(result.stdout) + + # A2 is not detected as broken because _SHORT_LABEL_RE filters it + # in the generic scan. This is the accepted tradeoff for eliminating + # ~60+ false positives from short labels in audit/curation content. + assert payload["summary"]["broken_references"] == 0 + + +def test_link_check_short_label_doc_id_detected_when_exists(tmp_path: Path): + """Short-label doc IDs (e.g., 'A1') are detected by the known-ID scan + (Pass 1) even though _looks_like_doc_id would reject them in Pass 2.""" + _init_repo(tmp_path) + _write_doc(tmp_path / "docs" / "doc_a1.md", "A1") + _write_doc(tmp_path / "docs" / "referrer.md", "referrer", body="See A1 for details.") + + result = _run_ontos(tmp_path, "--json", "link-check") + payload = json.loads(result.stdout) + + assert result.returncode == 0 + assert payload["summary"]["broken_references"] == 0 From 47ff9ac2a99c24f93fdc009c1e1ee6e43656030d Mon Sep 17 00:00:00 2001 From: Jonathan Oh Date: Thu, 12 Feb 2026 19:50:40 -0500 Subject: [PATCH 3/3] docs: archive Ontos session logs and context map Co-Authored-By: Claude Opus 4.6 --- .ontos-internal/logs/2026-02-12_init.md | 21 ++ .ontos-internal/reference/decision_history.md | 11 +- .../strategy/proposals/v3.3.1/plan.md | 203 ++++++++++++++++++ Ontos_Context_Map.md | 35 ++- ...w-link-check-fp-filters-short-labels-al.md | 21 ++ ...tion-tests-documenting-filtered-pattern.md | 21 ++ ...view-remediation-implemented-9-point-v3.md | 25 +++ ...rnal-review-remediation-complete-merged.md | 25 +++ 8 files changed, 350 insertions(+), 12 deletions(-) create mode 100644 .ontos-internal/logs/2026-02-12_init.md create mode 100644 .ontos-internal/strategy/proposals/v3.3.1/plan.md create mode 100644 docs/logs/2026-02-12_add-3-new-link-check-fp-filters-short-labels-al.md create mode 100644 docs/logs/2026-02-12_add-integration-tests-documenting-filtered-pattern.md create mode 100644 docs/logs/2026-02-12_external-review-remediation-implemented-9-point-v3.md create mode 100644 docs/logs/2026-02-12_v3-3-1-external-review-remediation-complete-merged.md diff --git a/.ontos-internal/logs/2026-02-12_init.md b/.ontos-internal/logs/2026-02-12_init.md new file mode 100644 index 0000000..2de04ce --- /dev/null +++ b/.ontos-internal/logs/2026-02-12_init.md @@ -0,0 +1,21 @@ +--- +id: log_20260212_init +type: log +status: active +event_type: chore +source: cli +branch: main +created: 2026-02-12 +--- + +# init + +## Summary + + + +## Changes Made + + + +## Testing \ No newline at end of file diff --git a/.ontos-internal/reference/decision_history.md b/.ontos-internal/reference/decision_history.md index b227f96..441e591 100644 --- a/.ontos-internal/reference/decision_history.md +++ b/.ontos-internal/reference/decision_history.md @@ -2,8 +2,8 @@ GENERATED FILE - DO NOT EDIT MANUALLY Regenerated by: ontos_generate_context_map.py Source: /Users/jonathanoh/Dev/Ontos-dev/.ontos-internal/logs, /Users/jonathanoh/Dev/Ontos-dev/.ontos-internal/archive/logs -Last generated: 2026-02-11T23:52:40 -Log count: 16 active, 77 archived, 0 skipped +Last generated: 2026-02-12T19:20:06 +Log count: 17 active, 77 archived, 0 skipped --> --- @@ -19,6 +19,13 @@ This file is auto-generated from session logs. Do not edit directly. To regenerate: `python3 .ontos/scripts/ontos_generate_context_map.py` +## 2026-02-12 + +### [chore] 20260212 Init +- **Log:** `log_20260212_init` + +> + ## 2026-02-11 ### [chore] 20260211 Init diff --git a/.ontos-internal/strategy/proposals/v3.3.1/plan.md b/.ontos-internal/strategy/proposals/v3.3.1/plan.md new file mode 100644 index 0000000..f3cf40c --- /dev/null +++ b/.ontos-internal/strategy/proposals/v3.3.1/plan.md @@ -0,0 +1,203 @@ +# v3.3.1 — External Review Remediation Plan + +**PR:** [#76](https://github.com/ohjonathan/Project-Ontos/pull/76) +**Branch:** `fix/v3.3.1-external-review-remediation` +**Date:** 2026-02-12 + +--- + +## Origin + +An external LLM adversarial review of Ontos v3.3.0 raised 9 numbered issues plus "quick wins." This plan documents the point-by-point triage — each issue received a **Yes**, **No**, or **Partial yes** verdict with evidence from the actual codebase — followed by the implementation. + +--- + +## Preamble + +The reviewer clearly ran the tool, read the code, and checked public-facing artifacts. Several claims were verified against the live codebase (e.g., running `ontos link-check`, reading every file mentioned). Below is the point-by-point assessment. + +--- + +## Issue 1: link-check is shipping 408 false positives + +**Verdict: Yes — accept. This is the v3.3.1 priority.** + +Running `ontos link-check` against the repo produced: + +``` +broken_references: 408 +``` + +The top offenders: +- **Bare numbers:** `1` (50 hits), `2` (46), `3` (36), `4` (19), `5` (10), `6` (7), `0` (6) +- **Version strings:** `v3.0` (18), `v3.2` (10), `v3.2.3` (7), `v3.2.1` (7), `v3.3` (6), `v2.x` (6) +- **Field names in prose:** `depends_on` (7), `pending_curation` (5) +- **Filenames:** `AGENTS.md` (5) +- **Track codes:** `A1` (6), `A3` (4) + +**Root cause:** `_looks_like_doc_id()` in `ontos/core/body_refs.py` (line ~647) accepts ANY token containing a digit, dot, or underscore. In generic scan mode (no `known_ids` provided), every such token that doesn't match an existing doc ID is classified as "broken." This means bare list numbers, version strings, YAML field names, and filenames all get flagged. + +The zone-aware tokenizer correctly skips code fences and inline code, but has no heuristic filtering for version patterns, bare numbers, known field names, or filename patterns. + +The two-tier boundary model from the v3.3.0 adversarial review solved false *negatives* (missing punctuation-adjacent IDs); this is a separate false *positive* problem in the `_looks_like_doc_id` heuristic. + +**Fix implemented:** Added 4 pre-classification filters in `_looks_like_doc_id()`: + +| Filter | Pattern | Rejects | +|--------|---------|---------| +| Bare numbers | `^\d{1,3}$` | `1`, `42`, `100` (but not 4+ digit numbers) | +| Version strings | `^v?\d+(\.\d+)+$` | `v3.2`, `3.2.1`, `v3.3.0` | +| Known field names | Frozenset of 14 entries | `depends_on`, `status`, `pending_curation`, etc. | +| File extensions | 20 common extensions | `AGENTS.md`, `config.toml`, `body_refs.py` | + +**Result:** 408 → 92 broken references. Remaining 92 are genuinely ambiguous tokens (track codes like `A1`, variable-like names like `logs_dir`). + +--- + +## Issue 2: Three generated files are stale and contradictory + +**Verdict: Yes — accept with correction. Two of three are stale.** + +| File | Claim | Actual | +|------|-------|--------| +| `.cursorrules` | v3.2.0, doc count 91 | **Confirmed.** Generated by v3.2.0 on 2026-02-09. Shows "Doc Count: 91" vs actual 43. Severely stale. | +| `AGENTS.md` | v3.2.3, doc count 42 | **Outdated claim.** AGENTS.md was regenerated today (2026-02-12) by v3.3.0 and now shows 43 docs. The reviewer likely saw an earlier state. | +| `Ontos_Manual.md` | Title says "v3.2" | **Confirmed.** Header reads `# Ontos Manual v3.2` despite v3.3.0 being released. Manual doesn't document `link-check` or `rename`. | + +**Deeper issue:** `ontos map --sync-agents` regenerates AGENTS.md but does NOT regenerate `.cursorrules`. The `ontos agents --all` command generates both. Design gap — standard activation flow would leave .cursorrules stale. + +**Fix implemented:** +- Ran `ontos agents --all --force` to sync both files +- Bumped manual title to v3.3 +- Added link-check and rename to Section 10 command reference (subsections 10.2 and 10.3) + +--- + +## Issue 3: SECURITY.md is from a different era + +**Verdict: Yes — accept. Severely outdated.** + +The file referenced: +- **Supported version:** `0.4.x` — the current version is `3.3.0` +- **Security scope scripts:** `.ontos/scripts/ontos_generate_context_map.py`, `.ontos/scripts/ontos_migrate_frontmatter.py`, `.ontos/scripts/ontos_end_session.py` — all legacy paths +- No mention of the `ontos` Python package, CLI entry point, or any post-v3.0 architecture + +**Fix implemented:** Rewrote SECURITY.md to reference v3.x, the `ontos` package as the security-relevant surface, updated supported versions (3.3.x, 3.2.x), and scope (references `ontos/io/yaml.py`, `ontos/io/scan.py`, `ontos/cli.py`). + +--- + +## Issue 4: README roadmap is outdated + +**Verdict: Yes — accept.** + +The roadmap table listed v3.2.0 as "Current" and v3.3 as "Next" with aspirational features ("Decision capture, typed dependencies, import capability") that were NOT shipped. v3.3.0 actually shipped as "Full Spectrum Hardening." + +**Fix implemented:** +- v3.3.0 is now "Current" with accurate highlights +- v3.4 defined as "Next" +- Added summary paragraph for v3.3 + +--- + +## Issue 5: The minimal example is empty + +**Verdict: Yes — accept.** + +`examples/minimal/` contained only a `README.md` with inline code blocks. The 3 referenced files (`docs/kernel/mission.md`, `docs/strategy/audience.md`, `docs/atom/data_model.md`) did not exist on disk. Running `ontos map` would find nothing. + +**Fix implemented:** Created the 3 actual doc files with proper Ontos frontmatter so the example is runnable. + +--- + +## Issue 6: Legacy scripts are still in the repo and still running + +**Verdict: Partial yes — the coupling concern is valid; the "FutureWarning" claim was not verified.** + +Confirmed: +- `.ontos/scripts/` contains 22 Python scripts from the pre-v3.0 era +- `pyproject.toml` included `.ontos/scripts/tests/` in `testpaths`, so legacy tests ran in every CI pass +- 6 test files with ~150 test functions under `.ontos/scripts/tests/` + +Not confirmed: +- The claim that "the test suite emits a FutureWarning about `ontos_config.py`" specifically — the conftest.py configures warning filters, but no test emits this warning. Reviewer may have seen warnings on a different Python version. + +**Fix implemented:** Isolated, not removed: +- Removed `.ontos/scripts/tests/` from default `testpaths` in `pyproject.toml` +- Added `legacy` pytest marker via conftest `pytest_collection_modifyitems` auto-marking +- Legacy tests still runnable explicitly: `pytest .ontos/scripts/tests/` (152 pass) +- Kept tests because they catch regressions in the compatibility layer + +--- + +## Issue 7: Two CHANGELOGs is confusing + +**Verdict: Yes — accept the observation, but the fix is a note, not consolidation.** + +The split is intentional: +- `CHANGELOG.md` — user-facing, starts at v3.0.2, clean markdown +- `Ontos_CHANGELOG.md` — tooling-internal, full history from v0.1.0, has Ontos frontmatter + +**Fix implemented:** Added a one-line cross-reference at the top of `CHANGELOG.md`: +> For the full historical changelog with Ontos frontmatter (from v0.1.0), see `Ontos_CHANGELOG.md`. + +Lightest possible fix. Consolidating would either lose the frontmatter/metadata value of `Ontos_CHANGELOG.md` or force tooling metadata into the user-facing file. + +--- + +## Issue 8: ontos doctor shows git hooks warning but hooks aren't critical + +**Verdict: No — decline.** + +Running `ontos doctor` produces: +``` +OK: git_hooks: pre-push, pre-commit installed +``` + +The only warning is about AGENTS.md staleness, not hooks. The reviewer likely tested in a clean environment where hooks weren't installed via `ontos hook --install`. The behavior is correct: +- Hooks not installed → WARN (actionable: run `ontos hook --install`) +- Hooks installed → OK + +This is standard diagnostic behavior. Could be revisited if adoption feedback confirms it's noisy for most users. + +--- + +## Issue 9: "Development Status :: 3 - Alpha" classifier + +**Verdict: Yes — accept. Bump to Beta.** + +`pyproject.toml` line 17: `"Development Status :: 3 - Alpha"` + +With 19 public commands, 888+ tests, CI across Python 3.9–3.12, 13 tagged releases, multiple adversarial reviews, and structured release processes, Alpha is underselling it. + +**Fix implemented:** Changed to `"Development Status :: 4 - Beta"` — signals "feature-complete for the core use case, API may still evolve." + +--- + +## Implementation Summary + +### Phase 1: Quick Wins +1. `ontos agents --all --force` → fixed .cursorrules and AGENTS.md +2. Rewrote `SECURITY.md` → v3.x scope +3. Updated `README.md` → v3.3.0 roadmap +4. Bumped `pyproject.toml` → Alpha to Beta +5. Added cross-reference note in `CHANGELOG.md` +6. Updated `docs/reference/Ontos_Manual.md` → v3.3 title, link-check/rename in Section 10 + +### Phase 2: v3.3.1 Hotfix +7. Fixed `ontos/core/body_refs.py` `_looks_like_doc_id()` — 4 false positive filters +8. Added 43 tests in `tests/core/test_body_refs.py` + +### Phase 3: Lower Priority +9. Populated `examples/minimal/docs/` with 3 runnable doc files +10. Isolated `.ontos/scripts/tests/` from default pytest (legacy marker) + +### Verification + +| Check | Result | +|-------|--------| +| `pytest tests/` | 888 passed, 2 skipped, 0 failures | +| `pytest tests/core/test_body_refs.py` | 61 passed (43 new) | +| `pytest .ontos/scripts/tests/` | 152 passed (legacy, isolated) | +| `ontos link-check` | 92 broken refs (down from 408) | +| `ontos doctor` | 8 passed, 0 failed, 1 warning | +| `ontos map --quiet` | Clean generation, exit 0 | diff --git a/Ontos_Context_Map.md b/Ontos_Context_Map.md index 9b6e8ec..fef2daf 100644 --- a/Ontos_Context_Map.md +++ b/Ontos_Context_Map.md @@ -4,13 +4,13 @@ type: reference status: generated ontos_map_version: 2 generated_by: ontos map -generated_at: 2026-02-12 11:19:50 +generated_at: 2026-02-12 19:23:23 --- # Ontos-dev Tiered Context Map > Auto-generated by Ontos 3.0 -> Last updated: 2026-02-12 11:19:50 +> Last updated: 2026-02-12 19:23:23 This document provides a tiered index of the knowledge graph for AI orientation. - **Tier 1: Essential Context**: (~2k tokens) Project summary, recent work, and architecture. @@ -21,16 +21,16 @@ This document provides a tiered index of the knowledge graph for AI orientation. ### Project Summary - **Name:** Ontos-dev -- **Doc Count:** 43 -- **Last Updated:** 2026-02-12 16:19:50 UTC +- **Doc Count:** 46 +- **Last Updated:** 2026-02-13 00:23:23 UTC ### Recent Activity | Log | Status | Summary | |-----|--------|---------| | v330 | active | No summary | | v300 | scaffold | No summary | -| log_20260211_v3-3b-track-b-complete | active | No summary | -| ... and 26 more logs | | | +| log_20260212_v3-3-1-external-review-remediation-complete-merged | active | No summary | +| ... and 29 more logs | | | ### Key Documents - `ontos_manual` (2 dependents) — docs/reference/Ontos_Manual.md @@ -78,6 +78,9 @@ This document provides a tiered index of the knowledge graph for AI orientation. | docs/logs/2026-02-11_v3-3a-v3-3b-folder-split-and-track-b-kickoff.md | `log_20260211_v3-3a-v3-3b-folder-split-and-track-b-kickoff` | log | active | | docs/logs/2026-02-11_v3-3b-pr2-ready-to-merge.md | `log_20260211_v3-3b-pr2-ready-to-merge` | log | active | | docs/logs/2026-02-11_v3-3b-track-b-complete.md | `log_20260211_v3-3b-track-b-complete` | log | active | +| docs/logs/2026-02-12_add-3-new-link-check-fp-filters-short-labels-al.md | `log_20260212_add-3-new-link-check-fp-filters-short-labels-al` | log | active | +| docs/logs/2026-02-12_external-review-remediation-implemented-9-point-v3.md | `log_20260212_external-review-remediation-implemented-9-point-v3` | log | active | +| docs/logs/2026-02-12_v3-3-1-external-review-remediation-complete-merged.md | `log_20260212_v3-3-1-external-review-remediation-complete-merged` | log | active | | docs/reference/Migration_v2_to_v3.md | `migration_v2_to_v3` | reference | active | | docs/reference/Ontos_Agent_Instructions.md | `ontos_agent_instructions` | kernel | active | | docs/reference/Ontos_Manual.md | `ontos_manual` | kernel | active | @@ -158,6 +161,12 @@ This document provides a tiered index of the knowledge graph for AI orientation. Add this document to another document's depends_on - ⚠️ **log_20260211_v3-3b-track-b-complete**: Document has no incoming dependencies Add this document to another document's depends_on +- ⚠️ **log_20260212_add-3-new-link-check-fp-filters-short-labels-al**: Document has no incoming dependencies + Add this document to another document's depends_on +- ⚠️ **log_20260212_external-review-remediation-implemented-9-point-v3**: Document has no incoming dependencies + Add this document to another document's depends_on +- ⚠️ **log_20260212_v3-3-1-external-review-remediation-complete-merged**: Document has no incoming dependencies + Add this document to another document's depends_on - ⚠️ **migration_v2_to_v3**: Document has no incoming dependencies Add this document to another document's depends_on - ⚠️ **ontos_agent_instructions**: Document has no incoming dependencies @@ -248,6 +257,12 @@ This document provides a tiered index of the knowledge graph for AI orientation. Add a concepts: list to the frontmatter - ⚠️ **log_20260211_v3-3b-track-b-complete**: Log document missing 'concepts' field (required at L2) Add a concepts: list to the frontmatter +- ⚠️ **log_20260212_add-3-new-link-check-fp-filters-short-labels-al**: Log document missing 'concepts' field (required at L2) + Add a concepts: list to the frontmatter +- ⚠️ **log_20260212_external-review-remediation-implemented-9-point-v3**: Log document missing 'concepts' field (required at L2) + Add a concepts: list to the frontmatter +- ⚠️ **log_20260212_v3-3-1-external-review-remediation-complete-merged**: Log document missing 'concepts' field (required at L2) + Add a concepts: list to the frontmatter - ⚠️ **v300**: Log document missing 'concepts' field (required at L2) Add a concepts: list to the frontmatter - ⚠️ **v330**: Unknown concept: 'v3.3' @@ -280,11 +295,11 @@ This document provides a tiered index of the knowledge graph for AI orientation. - `v330` - `v300` +- `log_20260212_v3-3-1-external-review-remediation-complete-merged` +- `log_20260212_external-review-remediation-implemented-9-point-v3` +- `log_20260212_add-3-new-link-check-fp-filters-short-labels-al` - `log_20260211_v3-3b-track-b-complete` - `log_20260211_v3-3b-pr2-ready-to-merge` - `log_20260211_v3-3a-v3-3b-folder-split-and-track-b-kickoff` - `log_20260211_v3-3a-merge-cleanup-and-v3-3b-setup-wrap` -- `log_20260211_v3-3-track-a4-docs-tests-dead-code-cleanup-and-def` -- `log_20260211_v3-3-track-a3-merge-closeout` -- `log_20260211_v3-3-track-a2-command-safety-hardening-closure` -- `log_20260211_v3-3-a1-hardening-tail-cherry-picked-into-main` \ No newline at end of file +- `log_20260211_v3-3-track-a4-docs-tests-dead-code-cleanup-and-def` \ No newline at end of file diff --git a/docs/logs/2026-02-12_add-3-new-link-check-fp-filters-short-labels-al.md b/docs/logs/2026-02-12_add-3-new-link-check-fp-filters-short-labels-al.md new file mode 100644 index 0000000..daf70bc --- /dev/null +++ b/docs/logs/2026-02-12_add-3-new-link-check-fp-filters-short-labels-al.md @@ -0,0 +1,21 @@ +--- +id: log_20260212_add-3-new-link-check-fp-filters-short-labels-al +type: log +status: active +event_type: chore +source: cli +branch: fix/link-check-fp-reduction-round2 +created: 2026-02-12 +--- + +# add 3 new link-check FP filters — short labels, AL + +## Summary + + + +## Changes Made + + + +## Testing \ No newline at end of file diff --git a/docs/logs/2026-02-12_add-integration-tests-documenting-filtered-pattern.md b/docs/logs/2026-02-12_add-integration-tests-documenting-filtered-pattern.md new file mode 100644 index 0000000..e3d9245 --- /dev/null +++ b/docs/logs/2026-02-12_add-integration-tests-documenting-filtered-pattern.md @@ -0,0 +1,21 @@ +--- +id: log_20260212_add-integration-tests-documenting-filtered-pattern +type: log +status: active +event_type: chore +source: cli +branch: fix/link-check-fp-reduction-round2 +created: 2026-02-12 +--- + +# add integration tests documenting filtered-pattern + +## Summary + + + +## Changes Made + + + +## Testing \ No newline at end of file diff --git a/docs/logs/2026-02-12_external-review-remediation-implemented-9-point-v3.md b/docs/logs/2026-02-12_external-review-remediation-implemented-9-point-v3.md new file mode 100644 index 0000000..350a6a0 --- /dev/null +++ b/docs/logs/2026-02-12_external-review-remediation-implemented-9-point-v3.md @@ -0,0 +1,25 @@ +--- +id: log_20260212_external-review-remediation-implemented-9-point-v3 +type: log +status: active +event_type: fix +source: cli +branch: fix/v3.3.1-external-review-remediation +created: 2026-02-12 +--- + +# External review remediation: implemented 9-point v3.3.0 review response across 3 phases — quick wins (SECURITY.md, README roadmap, classifier bump, manual update, CHANGELOG cross-ref, agents regen), link-check false positive hotfix (408→92 via 4 filters in _looks_like_doc_id), and lower priority items (minimal example files, legacy test isolation). PR #76. + +## Summary + + + +## Root Cause + + + +## Fix Applied + + + +## Testing \ No newline at end of file diff --git a/docs/logs/2026-02-12_v3-3-1-external-review-remediation-complete-merged.md b/docs/logs/2026-02-12_v3-3-1-external-review-remediation-complete-merged.md new file mode 100644 index 0000000..967331e --- /dev/null +++ b/docs/logs/2026-02-12_v3-3-1-external-review-remediation-complete-merged.md @@ -0,0 +1,25 @@ +--- +id: log_20260212_v3-3-1-external-review-remediation-complete-merged +type: log +status: active +event_type: fix +source: cli +branch: main +created: 2026-02-12 +--- + +# v3.3.1 external review remediation complete: merged PR #76 with two commits — (1) 9-point review response (FP filters in body_refs.py 408→92, SECURITY.md rewrite, README roadmap, Beta classifier, manual v3.3, CHANGELOG cross-ref, minimal example, legacy test isolation) and (2) review board findings (two-pass body scanning fixing false-negative class, exit code docs correction). 892 tests, CI green on 3.9-3.12. + +## Summary + + + +## Root Cause + + + +## Fix Applied + + + +## Testing \ No newline at end of file