Skip to content

canon: universal — working state is per-actor and self-owned (DRAFT)#296

Draft
git-repo-auth[bot] wants to merge 2 commits into
mainfrom
canon/working-state-per-actor-self-owned
Draft

canon: universal — working state is per-actor and self-owned (DRAFT)#296
git-repo-auth[bot] wants to merge 2 commits into
mainfrom
canon/working-state-per-actor-self-owned

Conversation

@git-repo-auth

@git-repo-auth git-repo-auth Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Universal kernel of the sandbox-hygiene split (DRAFT — do not merge)

Per the operator ruling on the hygiene split: "Abstracted universal approach lives upstream. ARS-specific derives from that." This PR places the universal, stack-independent law in canon so the ARS mechanism can derive from it, rather than re-stating it.

What it adds

canon/principles/working-state-is-per-actor-and-self-owned.md — a Tier-1, neutral-voice principle stating the two-clause law:

  1. Working state must be per-actor and self-owned.
  2. Shared mutable residue is indistinguishable from signal, so a dirty workspace invalidates the conclusions drawn from it.

Why a new principle, not a re-use of repo-truth/D0004

docs/decisions/D0004-repo-truth-cleanup-mandatory.md and docs/appendices/repo-truth.md already carry clause 2 — nearly verbatim — but only for the git-repository substrate, and they do not carry clause 1 (per-actor self-ownership). The per-flight sandbox instance surfaced the missing half (residue owned by another actor, nobody:nogroup). This principle generalizes repo-truth/D0004 to any actor/substrate and states both clauses. It is a generalization with credit, not a duplicate — generalizes: points back at D0004/repo-truth.

Abstraction matches scope

The law is falsified only by something reaching every actor and substrate at once — not by any one stack changing. That substrate-invariance is why it belongs in canon while every substrate-specific enforcer (git cleanup; ARS per-flight mktemp -d scratch) stays in its own repo and derives from this.

Companion

The ARS substrate-specific mechanism (klappy://ars/policy/sandbox-hygiene-per-flight-scratch) is updated in klappy/agent-role-service#83 to set derives_from at this principle (+ D0004/repo-truth) and to frame itself as the ARS instance of this law.

Supersedes the intent of the closed, unmerged #292 (which had placed the whole mixed-scope doc in canon). Nothing here is merged; opened DRAFT for captain review of the exact text.

Abstract, stack-independent law extracted from the sandbox-hygiene split.
Generalizes repo-truth/D0004 (git-substrate epistemic-hygiene clause) and
adds the per-actor self-ownership clause the per-flight sandbox instance
surfaced. Substrate-specific mechanisms (e.g. ARS per-flight scratch) derive
from this. Passes abstraction-matches-scope: falsified only by something
reaching every actor/substrate, not by one stack changing.

DRAFT for captain review. Do not merge.
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Canon Quality — P0010 Retrieval-Readiness ⚠️

Soft report for klappy://canon/constraints/retrieval-disclosure-contract. 700 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': 51, 'canon': 241, 'apocrypha': 38, 'docs': 304, 'journals': 60, 'unknown': 6}
Kind source: {'path': 565, 'frontmatter': 129, 'none': 6} (frontmatter-primary, path-secondary)
Default-include visibility: 596 visible, 104 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: #378

@github-actions

Copy link
Copy Markdown

Canon Quality — Homepage Surfacing ✅

49 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

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Canon Quality — oddkit_audit

No dead klappy:// references or legacy link patterns found in writings/. 51 files scanned.

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

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Canon Quality — Frontmatter Schema ✅

All 49 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: #378

Add complementary third clause to working-state-is-per-actor-and-self-owned:
carryover (resume/continue from prior state) is a deliberate, named, opt-in
act, never assumed or default. Turns the "What This Does Not Require" handoff
carve-out into the positive rule. Additive only; existing two clauses
unchanged. Marked low-resolution, may spin into its own principle later.
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