Skip to content

Formulate first slice: map t0011/t0013 tip residuals (v9fs/test#28) #1

Description

@ericvh

Human Goal

Map t0011 allsquash and t0013 ACL tip residuals as two independent claims with pinned kernel, diod, and harness versions so an implementer can start either residual without reconstructing this diagnosis from chat.

Product tracker: v9fs/test#28
Mapping PR (draft): #2
Plan: docs/plans/1-map-tip-xfails.md

Evidence Anchor

  • Source of truth: v9fs/linux + v9fs/test + chaos/diod + Actions artifacts
  • Semantic unit: one observable 9P/v9fs behavior (kernel path, harness assertion, or both)
  • Pins:
    • linux v7.2 = 8d3ae59288f1e7d58d76558a6ee96d533bc5019f (Image kernel-latest / kernel-v7.2)
    • harness at run = 94b2182f54b30a073d893990db8f64e69f0d911a (PR #26); XFAIL list unchanged on main cce75243
    • Actions 32929975795 (2026-08-26), eval unexpected: 0
    • diod de51d1ee1bd5ccf1d8c16b96227c8bb03ec50106 (chaos/diod master since 2026-06-23)
  • Publish config: TMPFS_POSIX_ACL on; TMPFS_XATTR not set
  • Ledger rows: E0003, E0004, E0005, E0006, P0002
  • Combined-repo rule: D0002

Target Change

  • Component: this forge's evidence map (no product code in this slice)
  • Behavioral contract: t0011 and t0013 are independent; later slices must not mix them
  • Invariants: linux stays mirror-only; all CI stays in v9fs/test; keep XFAIL until a slice PASSes

Proof Promotion

Complete this sentence:

The proof would fail if t0011 and t0013 were one harness bug, because the same run shows squash working (export uid 65534) while ACL walks return EOPNOTSUPP 95 with no Txattrcreate. A squashuser-only change cannot make t0013 PASS.

t0011 (later slice)

--allsquash squashes to nobody. The test stats exp/ and expects $(id -u):$(id -g). Discriminator: --squashuser=$(id -un) vs assert 65534. "v9fs dropped squash" is rejected by Rgetattr uid 65534 and green t0012.

t0013 (later slice)

Mount -o posixacl succeeds. Every Txattrwalk of system.posix_acl_* returns EOPNOTSUPP. Discriminator: in-guest setfacl on local /tmp (not 9p). EOPNOTSUPP ⇒ TMPFS_XATTR / export fs; PASS ⇒ 9p/diod xattr path.

Review Focus

  • Highest-risk semantics: treating two residuals as one fix
  • What could pass broad tests while still being wrong: changing squashuser and calling ACL "fixed"
  • Rollback: leave diod/xfail.txt until PASS

Boundaries

  • In scope: pins, split, proof plan, named next slices
  • Explicitly not claimed: kernel/diod/harness code; XFAIL as integration proof; floating ghcr.io/v9fs/docker:latest
  • Deferred: implementation issues opened only after this mapping lands

Backlog Position

  • Rank in planned horizon: 1
  • Predecessor: none (M0)
  • Unblocks: t0011 implementation slice; t0013 implementation slice
  • Dependency boundary: combined forge vs product repos (D0002)
  • Proof boundary: Unmapped → Mapped
  • Parallel lane: none
  • Integration order: merge mapping PR after independent review; then open two issues
  • Next issue: do not open until Formulate first slice: map t0011/t0013 tip residuals (v9fs/test#28) #1 is landed

Ownership and Authority

  • Authority level/exceptions: A2; no merge to v9fs/linux; no .github on linux
  • Orchestrator: ericvh
  • Evidence mapper: this slice
  • Implementer/write scope: this forge (docs/ledgers/, docs/plans/)
  • Independent reviewer: distinct from mapper (PR Map t0011/t0013 tip residuals (M0 evidence) #2)
  • CI/proof owner: v9fs/test workflows (historical run already landed)
  • State closer: after independent review

Durable State

  • Evidence-map rows: E0003–E0006
  • Proof-ledger rows: P0002 Mapped
  • Decision/experiment/risk rows: D0002
  • Methodology trigger: none (first slice)

Done

  • Evidence source is pinned.
  • Target component and behavioral contract are named.
  • Positive and negative proof plan is explicit.
  • Predecessor, unblocks, owner, and write scope are recorded.
  • Independent review of PR Map t0011/t0013 tip residuals (M0 evidence) #2
  • The next implementation issues can be created from the work-slice template.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:cross-cutWrite scope spans linux and testkind:scaffoldProject scaffold and control surfaceproof:mappedEvidence and dependencies mappedreview:approvedIndependent review gate passedstatus:landedMerged and durable state synchronized

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions