mirror of
https://github.com/boshu2/agentops.git
synced 2026-09-14 15:08:13 +08:00
cfee2b078a
## What Establishes a first-class **`docs/convergence/`** section: the record of the industry independently arriving at the structure AgentOps already runs — kept distinct from the competitor map. Three surfaces: 1. **`the-reading.md`** — the *living thesis*. The argument (with mechanism, firm-vs-forming consensus table, honest moat-risk, and a "how to read a new signal" rubric) that the industry is converging and **why**. 2. **`ledger.md`** — the dated *receipts* table (who/when/which invariant). Seeded with Google SRE 2026. 3. **`google-sre.md`** — the per-party *encoding map*: 11 convergence points → real AgentOps loci (8 encoded · 2 partial · 1 gap). 4. **`index.md`** — section hub framing the three. ## Why first-class, not under comparisons/ A vindication record is the *inverse* of a competitor grid — wrong to parent it under "vs the competition." Radar = competitors in our lane; Convergence = independents arriving from outside it. Promoted to its own top-level nav section (`git mv`, history preserved; permalinks updated; cross-links rewired both ways). ## Gaps surfaced (filed as beads) | Bead | Point | Work | |---|---|---| | `ag-fjbu` | #3 | Adopt Bronze/Silver/Gold eval-tiering + True-vs-Observed-Precision naming | | `ag-wrom` | #8 | Formalize an L0–L4-style autonomy ladder for AgentOps dispatch | | `ag-7278` | #11 | Council: does coherent-arc need a fix-forward escape hatch? (Google is ahead) | ## Verification - All relative links across the convergence section + comparisons pointers resolve. - mkdocs nav + documentation-index updated; renames preserve history. Closes-scenario: ag-4hf7#google-sre-convergence Bounded-context: BC1-Corpus Evidence: docs/convergence/the-reading.md
50 lines
1.7 KiB
Python
Executable File
50 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Extract the marker-bounded triangulated kernel; validate markers + minimum counts.
|
|
|
|
Prints the kernel body to stdout on success. Exit non-zero if markers absent or counts below minimum.
|
|
"""
|
|
from __future__ import annotations
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
KERNEL = ROOT / "corpus" / "specs" / "triangulated_kernel.md"
|
|
MIN_AXIOMS = 10
|
|
MIN_OPERATORS = 8
|
|
|
|
|
|
def main() -> int:
|
|
if not KERNEL.is_file():
|
|
print("FAIL: missing triangulated_kernel.md", file=sys.stderr)
|
|
return 1
|
|
text = KERNEL.read_text(encoding="utf-8")
|
|
m = re.search(
|
|
r"<!--\s*TRIANGULATED_KERNEL_START\s+(v\d+\.\d+)\s*-->(.*?)<!--\s*TRIANGULATED_KERNEL_END\s+(v\d+\.\d+)\s*-->",
|
|
text, re.S,
|
|
)
|
|
if not m:
|
|
print("FAIL: kernel START/END markers absent or malformed", file=sys.stderr)
|
|
return 1
|
|
vstart, body, vend = m.group(1), m.group(2), m.group(3)
|
|
if vstart != vend:
|
|
print(f"FAIL: version mismatch {vstart} != {vend}", file=sys.stderr)
|
|
return 1
|
|
|
|
axioms = re.findall(r"^\s*-\s*\*\*A\d+\s*—", body, re.M)
|
|
operators = re.findall(r"`[A-Z][A-Za-z-]+`\s*\(A", body)
|
|
if len(axioms) < MIN_AXIOMS:
|
|
print(f"FAIL: only {len(axioms)} axioms (min {MIN_AXIOMS})", file=sys.stderr)
|
|
return 1
|
|
if len(operators) < MIN_OPERATORS:
|
|
print(f"FAIL: only {len(operators)} operators (min {MIN_OPERATORS})", file=sys.stderr)
|
|
return 1
|
|
|
|
sys.stderr.write(f"OK kernel {vstart}: {len(axioms)} axioms, {len(operators)} operators\n")
|
|
sys.stdout.write(body.strip() + "\n")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|