audit: evidence is complete-STAR stories only — align with the shared evidence definition - #101
Merged
Merged
Conversation
… evidence definition skill.unsupported_strength (and skill.stale_evidence's freshness set) now count only stories with all four STAR sections as evidence — the same retrievable set find_story serves, and the definition the hosted scanner shares (traitprint-cloud _evidence.ts). A strong skill whose only linked story is an incomplete draft was silently passing; it now flags. The finding names traitprint-mine-story-gaps as its fix_skill and its message reads "no complete STAR story demonstrates it". dispute-v1 gains a normative "Evidence gaps are NOT disputes" section: both servers keep this rule off the dispute surface (local: audit finding; cloud: advisory "unsupported" trait_flags rows excluded from the MCP reshape) — recording the cloud scanner's reclassification of its proficiency check away from contradiction self-pairs, which the local server never emitted. Cloud coordination: paired with the traitprint-cloud branch of the same name (scanner reclassification + dispute-surface exclusion). No behavior change to proposals.py/coherence.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdYoLHB9CWNAdf8gZVjShZ
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a29dcf852d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…view) search_skills counted every linked story while the audit (and the newly documented contract) count only complete-STAR stories — a strong skill backed solely by a draft reported evidence_count 1 with top_evidence while find_story returned nothing and the audit flagged it unsupported. The predicate now lives once as StorySchema.is_complete_star() and is used by _story_evidence_by_skill, find_story's retrievable-set filter, and both audit sites. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdYoLHB9CWNAdf8gZVjShZ
Agents connected over MCP could only tell the user to run 'traitprint sync'. The local server now exposes vault_sync, wrapping the same sync-v1 engine (gitsync + stored credentials, shared with the CLI via the new credentials.resolve_credentials). Sync transports already-committed git history only — vault writes still go through the audited CLI/proposals channel — so push/pull need no per-run confirmation (decision 2026-07-26). Recoverable protocol outcomes return as structured data the agent can act on: push non_fast_forward (pull first, then push), schema_violation with per-file violations, pull conflicts with a resolution hint. Auth/transport failures are tool errors. Docs: AGENTS.md tool registry (nine tools) + local↔hosted delta, README counts, GEMINI.md hosted list gains vault_sync_status (shipping in the paired traitprint-cloud branch) with vault_sync marked local-only, serving note. CHANGELOG under Unreleased. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdYoLHB9CWNAdf8gZVjShZ
The hosted MCP server now exposes scan_profile (traitprint-cloud#1735) alongside vault_sync_status — record both in GEMINI.md's hosted tool groups and AGENTS.md's local↔hosted delta. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RdYoLHB9CWNAdf8gZVjShZ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
skill.unsupported_strengthcounts only complete-STAR stories as evidence (all four sections present) — the same retrievable setfind_storyserves, and the definition the hosted scanner now shares (_evidence.tsin traitprint-cloud). Previously any linked story counted, so a strong skill whose only "evidence" was an incomplete draft silently passed whilefind_story(skill)returned nothing.skill.stale_evidenceuses the same set for its freshness timestamps.traitprint-mine-story-gapsas itsfix_skill(it's the remedy) and its message reads "no complete STAR story demonstrates it. Strong claims read as more credible with a story behind them." — the wording the cloud scanner's reclassified evidence-gap flags share.unsupportedtrait_flags rows excluded from the MCP reshape). This records the correction of cloud's pre-2026-07 behavior, where these were emitted as contradiction self-pairs (entities: [id, id]) and wrongly surfaced as disputes; the local server never emitted them, so the exclusion is also a cross-server parity fix.Cloud coordination
Paired with the traitprint-cloud branch of the same name (scanner reclassification to one-sided
unsupportedflags + dispute-surface exclusion + grouped web UI). Flagging per the drift constraint: no behavior change toproposals.pyorcoherence.py— this aligns the audit's evidence definition with the already-shared story-evidence semantics.Testing
pytest -q: 1079 passed (2 new: incomplete-STAR draft does not silence the finding; complete story clears it; fix_skill pinned).ruff check src/ tests/: clean.mypy src/: the two pre-existingmining.pyunused-ignore errors are the known local-venv artifact ([import]extras installed locally; CI installs[dev]only and passes).🤖 Generated with Claude Code
https://claude.ai/code/session_01RdYoLHB9CWNAdf8gZVjShZ
Generated by Claude Code