Skip to content

Phanes v3.0

Choose a tag to compare

@Aloim Aloim released this 20 Jul 21:28
· 10 commits to main since this release

v3.0 (2026-07-20)

Major version. It adds a consent layer over capability discovery, renames the close-time verifier to match its real duties, makes the CLI reachable from any shell, and re-grounds the model rubric on a tier-first policy with forward-compatible effort control. All changes are to phanes.md and the template library; deployed projects adopt them on their next update run.

Added

  • Capability Census & Consent Gate (Phase 0). The installed-capability pre-flight is now a census that additionally probes each MCP server's auth/health, and a mandate may exist only for a capability the census verified reachable, closing the failure mode where a "use semble first" mandate coexisted with an unauthenticated semble for a whole session. On a setup run it asks one per-item AskUserQuestion (multiSelect) listing every detected capability by name: the Phanes-standard set (context7, deepwiki, serena, semble, frontend-design) pre-selected and marked recommended, every other detected capability listed unchecked by its detected name only. The selection persists to .phanes/config.json (capabilities.selection[]). Update runs re-census and diff: no change is silent, a delta asks only about the delta, a removed-but-mandated capability has its mandates stripped and recorded. Non-interactive runs default to the standard set and never block.
  • Cross-shell CLI entry point (cli.js). A small Node launcher installed on every platform; agents invoke node .phanes/scripts/cli.js <cmd>, which resolves identically in PowerShell, cmd, and Git Bash and forwards to the platform dispatcher. This fixes the failure where a bare phanes was "command not found" in a sub-agent shell. A generated project cannot know which of the three shells Claude Code will use on Windows, and each rejects a different platform launcher. phanes <cmd> stays shorthand in the document; the invocation is stated once and carried in the agent template.
  • effort: frontmatter in the generated agent template. Forward-compatible: honored on CLI dispatch, ignored on the in-session Task-tool spawn path until anthropics/claude-code #43083 lands (thinking directives remain the in-session depth lever). Omitted for haiku, which exposes no effort dial.
  • mcpServers: per-agent allowlist in the agent template, gated by the consent selection and Phase 3 matching. When an agent is granted more than ~3 non-standard capabilities, their usage rules move into one generated capability-map skill (progressive disclosure) instead of bloating the always-loaded persona.
  • No Inline Secrets (§III). Agents never inline a connection string, key, or token on a command line; command lines are logged verbatim by transcripts, OTel, and console captures, and credentials are read instead from the environment or a gitignored file. Carried in the operating-protocol template.
  • Companion Tool Detection. The census recognizes a /metis command; when present, update runs invoke the Metis session-audit companion (harvest, ledger verification, adherence audit) and consume its report. No hard dependency in either direction.

Changed

  • api-monitor renamed to close-verifier across the chain rules, archetype table, roster requirement, tier tables, and report template, with a rewritten duty list reflecting its real role: the independent close-time verifier that re-derives the API baseline, independently re-runs the build/typecheck (never trusting a producer's self-report), reconciles applied-vs-approved, and observes the hot-file budget. Its independence from the architect/designer is now a stated non-merge invariant. Deployed projects keep the old agent name until their next update run regenerates the roster.
  • Model & Effort rubric re-grounded, re-stamped 2026-07-20. Selection is tier-first, effort-second: a stronger model at moderate effort beats a weaker model at its ceiling, and past ~4 to 8 agent steps does so for fewer tokens. The anti-pattern is recorded explicitly: maxing effort on a smaller model is not a substitute for a tier bump.
  • Living-document budget discipline generalized. The register's demote-on-close rule now extends to any living document carrying a running log/status/amendment section: closed entries collapse to one-line pointers in the same change set, running lists are capped, doc-check flags growth. A Single-Writer corollary keeps close-time summaries with the agent that already holds the content, rather than paying to re-inject context into a fresh writer.
  • T1/MCP boundary clarified. A task whose verification inherently requires a service MCP (querying live external state) is not a T1; it promotes to T2, removing the contradiction of a T1-labelled agent making heavy MCP calls.
  • Template library re-stamped to v3.0 (manifest version, sanity stamp, every template stamp, CHECKLIST), and cli.js registered in the manifest, so the fetch-time version check stays satisfied.