Skip to content

canon(constraint): A Link Is a Tap, Not a String — deliver actionable…#256

Merged
klappy merged 1 commit into
mainfrom
docs/canon-actionable-output-in-actionable-form
Jun 14, 2026
Merged

canon(constraint): A Link Is a Tap, Not a String — deliver actionable…#256
klappy merged 1 commit into
mainfrom
docs/canon-actionable-output-in-actionable-form

Conversation

@klappy

@klappy klappy commented Jun 14, 2026

Copy link
Copy Markdown
Owner

… output in actionable form

New tier-1 constraint born from the 2026-06-14 bee-ai-auth-mcp debrief: actionable outputs (links, commands, paths) must be delivered in their lowest-friction actionable form for the operator's surface; the requested artifact must never be displaced by process narration. Smell tests, failure modes, MUST-rules, exclusions.

epoch/tier/stability set provisionally — operator to confirm on review.


Note

Low Risk
Documentation-only canon addition with no runtime or auth changes; only affects agent behavior guidance once adopted.

Overview
Introduces canon/constraints/actionable-output-in-actionable-form.md — a new tier-1, semi_stable constraint that governs how agents deliver anything the operator will act on (links, commands, paths, addresses).

The doc frames undelivered actionable output as debt (parallel to “a claim is a debt”) and requires lowest-friction form for the current surface, with mobile as the default (e.g. markdown links instead of raw URLs in prose, copy-ready code blocks for shell). It defines smell tests and failure modes (raw URL in prose, process-as-substitute, surface-blindness, repeat-deafness), five MUST rules (lead with the artifact, change form on repeat requests), and exclusions (raw value when requested, no actionable surface, safety over one-tap for secrets).

Frontmatter links it to magical-first-run, the model operating contract, and axioms; it complements release-validation-gate. Origin is documented as a 2026-06-14 bee-ai-auth-mcp debrief (iOS operator repeatedly asked for a tappable link). Epoch E0008.5 is marked provisional for operator confirmation on review.

Reviewed by Cursor Bugbot for commit e18128a. Bugbot is set up for automated code reviews on this repo. Configure here.

… output in actionable form

New tier-1 constraint born from the 2026-06-14 bee-ai-auth-mcp debrief: actionable
outputs (links, commands, paths) must be delivered in their lowest-friction
actionable form for the operator's surface; the requested artifact must never be
displaced by process narration. Smell tests, failure modes, MUST-rules, exclusions.

epoch/tier/stability set provisionally — operator to confirm on review.
@github-actions

Copy link
Copy Markdown

Canon Quality — oddkit_audit ⚠️

8 finding(s) in writings/ (39 files scanned). Mode: soft.

writings/agentic-software-development.md — 1 finding(s)
Line Rule Occurrence Message
242 dead-reference klappy://writings/nothing-new-even-ai URI does not resolve
writings/choosing-faith-not-fear.md — 1 finding(s)
Line Rule Occurrence Message
203 dead-reference klappy://writings/four-questions-that-change-everything URI does not resolve
writings/getting-started-with-odd-and-oddkit.md — 4 finding(s)
Line Rule Occurrence Message
69 legacy-link-pattern /page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows Use a klappy:// URI instead of /page/ path
202 legacy-link-pattern /page/docs/oddkit/proactive/proactive-bootstrap Use a klappy:// URI instead of /page/ path
204 legacy-link-pattern /page/docs/examples/project-instructions-template Use a klappy:// URI instead of /page/ path
260 legacy-link-pattern /page/writings/the-journey-from-ai-tasks-to-ai-augmented-workflows Use a klappy:// URI instead of /page/ path
writings/the-broken-wall-and-the-buried-talent.md — 1 finding(s)
Line Rule Occurrence Message
332 dead-reference klappy://draft-zeros/appendix-a-the-biblical-roots URI does not resolve
writings/the-voice-came-first.md — 1 finding(s)
Line Rule Occurrence Message
244 dead-reference klappy://writings/four-questions-that-change-everything URI does not resolve

Soft-block mode — this status is informational; the job will not fail. Hard-block ships in PR-3.2 after the observation cycle.

What to do for each finding:

  • Fix the slug if the target now lives at a different klappy:// URI.
  • Remove the link if it is no longer needed.
  • Allowlist with a reason if the rot is intentional (e.g. forward-ref to an upcoming article): place <!-- audit-allow: dead-reference reason="..." --> on the line above the offending link. The directive is line-level and scopes to the next markdown link.

Spec: klappy://docs/oddkit/specs/oddkit-audit · Workflow: .github/workflows/canon-quality.yml · Run: #282

@github-actions

Copy link
Copy Markdown

Canon Quality — P0010 Retrieval-Readiness ⚠️

Soft report for klappy://canon/constraints/retrieval-disclosure-contract. 676 files scanned. Never blocks — informational until the corpus is ready to enforce.

  • Blocking-class findings: 15 (structural fields the contract would filter on)
  • Warnings: 0 (kind resolves to unknown)
  • Informational: 13 (exempt templates/archive/drafts)

Kind distribution: {'essays': 50, 'canon': 226, 'apocrypha': 38, 'docs': 297, 'journals': 59, 'unknown': 6}
Kind source: {'path': 547, 'frontmatter': 123, 'none': 6} (frontmatter-primary, path-secondary)
Default-include visibility: 573 visible, 103 hidden (journals/apocrypha/unknown)

By rule: {'audience-invalid': 2, 'exposure-missing': 5, 'tier-missing': 5, 'tier-invalid': 7, 'fm-missing': 3, 'kind-unresolvable': 6}

These are not schema violations (see the Frontmatter Schema job for those on writings/). They are corpus-readiness signals for the retrieval contract: invalid/missing audience, exposure, tier, and docs whose kind cannot be resolved. Fix in a corpus-cleanup PR before the contract flips to enforcing. See the retrieval-readiness-findings artifact for the full list.

Validator: scripts/audit-retrieval-readiness.py · Constraint: klappy://canon/constraints/retrieval-disclosure-contract · Run: #282

@github-actions

Copy link
Copy Markdown

Canon Quality — Homepage Surfacing ✅

48 essay(s) scanned. Soft report — never blocks; the hard field gate is the Frontmatter Schema job.

All published essays resolve to the homepage feed.

Report: scripts/surfacing-report.py · Canon: klappy://canon/constraints/frontmatter-validation-before-merge

@github-actions

Copy link
Copy Markdown

Canon Quality — Frontmatter Schema ✅

All 48 file(s) in writings/ conform to klappy://canon/meta/frontmatter-schema.

Validator: scripts/validate-frontmatter.py · Canon: klappy://canon/constraints/frontmatter-validation-before-merge · Run: #282

@klappy klappy merged commit a024191 into main Jun 14, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant