feat: ship hitridge-business-o1 v0.1.0 — signed depo package + toolchain

- package: manifest v1.0 (schema, package_id, layers: odoo_modules/agents/docs/config/brain)
- agents: 4 neutral cards + prompts (sellers-recruiter, test-operator, closer, compliance)
  no script.run in v0.1.0; odoo.* + file.* primitives only
- modules: aura_business_core + hitridge_venture_o1 stubs (menus, ACLs, models)
- docs: playbook, test-checklist, price-guide-starter, agreement-template.odt
- config: channels (olx-bg/forums-local), pricing-rules (BGN, A/B/C/reject, drop ladder)
- brain: empty-seed capability contract + seeds README (memories never ship)
- toolchain: depo-sign.sh (ed25519, PEM+raw), validate-depo.sh (schema/files/cards/tools/
  secrets/sig gates -> writes VALIDATE), tool-registry.json
- install.sh: target-side verify (hash + ed25519 + layer files); install is phase 2
- public-keys/depo-signing.pub committed (private key stays out of repo)
- VALIDATE: PASS (signed + verified, tamper-rejection tested)
This commit is contained in:
AG
2026-08-03 21:00:07 +03:00
parent e2f76e4027
commit cb5e5dacef
32 changed files with 918 additions and 0 deletions
@@ -0,0 +1,43 @@
#!/usr/bin/env python3
"""O1 brain — runtime/memory capability (ships as capability; memories are EMPTY seeds at install).
The brain.py here is the *capability contract* for the O1 package. At install time the
target runtime provides the real implementation (same CLI contract). Memories are never
shipped — only the engine and namespace naming convention, so each target seeds fresh.
CLI contract (per agent-card-spec v1.0, `memory` field):
brain.py store <namespace> <key> <value>
brain.py search <namespace> <query> [topk]
brain.py clear <namespace>
Namespaces used by O1 agents (see agent cards):
o1-sellers, o1-tests, o1-closer, o1-compliance
"""
import sys
def _die(msg: str, code: int = 1) -> None:
print(f"brain: {msg}", file=sys.stderr)
sys.exit(code)
def main(argv: list[str]) -> int:
if len(argv) < 3:
_die(f"usage: {argv[0]} <store|search|clear> <namespace> [...]")
cmd, ns = argv[1], argv[2]
if cmd == "store" and len(argv) >= 5:
key, value = argv[3], argv[4]
print(f"store {ns}/{key} (empty-seed runtime: no-op)")
return 0
if cmd == "search":
print(f"search {ns}: empty seed — no memories yet")
return 0
if cmd == "clear":
print(f"clear {ns} (empty-seed runtime: no-op)")
return 0
_die(f"unknown command/arity: {' '.join(argv[1:])}")
return 1
if __name__ == "__main__":
sys.exit(main(sys.argv))