beads_rust epistemic report

Type: agentic-system-analyses/types/agentic-system-epistemic-report.md

Source-and-claim boundary

This report asks what licenses reliance on retained issue assertions and derived workflow results. Scope and exclusions are those of boundary; source identity and evidence layers are in its Source register. SRC-1 supplies implementation and doctrine/design, not execution evidence. The tracker admits external assertions and makes deterministic workflow decisions. Neither storing an assertion nor calling an issue closed establishes its truth.

Coverage below distinguishes direct source inspection in this job from supplied runtime evidence. The whole-system functional boundary is unchanged, but this is a bounded material-route assessment, not an exhaustive negative about every shipped operation. No source access gap was encountered. Uninspected available implementations remain possible additional routes.

Entry point or operation SRC-1 source path Coverage and records, or limit and conclusion prevented
CLI dispatch and write classification src/main.rs Direct dispatch/classification search; create, update, close, ready, import and instruction paths supported by supplied runtime records below.
Create, update/claim, close, JSONL import src/cli/commands/create.rs, src/cli/commands/update.rs, src/cli/commands/close.rs, src/sync/mod.rs Supplied RT-RTE-create-issue, RT-RTE-claim-issue, RT-RTE-close-issue, RT-RTE-jsonl-import. Not re-audited here.
Gate report and storage transition checks src/cli/commands/gate.rs, src/storage/sqlite.rs, src/close_policy.rs Direct report, effective-history query, evaluator and enforcing consumer reads; EPI-RTE-gate-report, EPI-RTE-gate-check, EPI-RTE-gate-admission. Material addition to runtime's selected routes.
Lint src/cli/commands/lint.rs Direct parser, classification and output reads; EPI-RTE-lint-check.
Delete src/cli/commands/delete.rs Direct selected deletion loop and flush read; EPI-RTE-delete-state. Full cascade and purge internals uninspected; prevents complete withdrawal/recovery guarantee.
Ready src/cli/commands/ready.rs Supplied RT-RTE-ready-query; snapshot policy result, not task-value evaluation.
MCP registrations and mutation wrapper src/mcp/mod.rs Direct registration search confirms seven tools, twelve resources, four prompts; wrapper supported by RT-RTE-mcp-request. Registration is not an exhaustive handler audit.
MCP triage src/mcp/prompts.rs Supplied RT-RTE-triage-prompt and RT-BAP-triage-guidance.
MCP status report, plan-next-work, polish-backlog; graph health/bottlenecks src/mcp/prompts.rs, src/mcp/resources.rs Registered alternatives identified. Polish instruction construction directly read, but upstream completeness/dependency analysis and other prompt/resource computations uninspected. Prevents complete classification of derived propositions and advisory judgments.
Agents update and binary upgrade src/cli/commands/agents.rs, src/cli/commands/upgrade.rs Supplied RT-RTE-agents-update, RT-RTE-upgrade-binary. Version/checksum admission is not semantic verification.
Gate-independent close checks src/close_policy.rs Direct acceptance-checkbox evaluator read; consequences and bypass limits supplied by RT-RTE-close-issue. Checks recorded markup, not fulfillment.
Remaining CLI/library operations src/main.rs, src/cli/commands/, src/storage/, src/sync/ Dispatch exposes comments, dependencies, epic closure, scheduler, audit, capacity, history restore/prune, doctor/repair, merge/reconcile, query/config and diagnostics. Bodies not fully inspected. These prevent system-complete negatives about evaluators, cleanup, recovery, adaptation or derivation.
Instructions, hooks and evaluators src/main.rs, .claude/skills/br/SKILL.md, scripts/, tests/, docs/ Runtime supplies startup auto-import/flush and shipped instruction evidence. Development Git hooks excluded by boundary; no additional executable runtime-hook survey completed. Scripts/tests and maintenance qualifications not audited here; no test-pass, deployment-activation or causal-benefit conclusion.

Knowledge/warrant claims assessed are EPI-CLM-issue-tracking, RT-CLM-work-cycle, and the narrower sync claim RT-CLM-explicit-sync. No claim that br autonomously discovers true project facts is established by these passages. That is a statement about the cited claims, not a repository-wide absence.

Missing evidence matters separately: no supplied host/model trace establishes recommendations, compliance or learning; no source-linked execution establishes exercised gate acceptance; no intervention/comparison establishes productivity, correctness improvement or component effects. External evaluator methods behind provider strings are unspecified, preventing a task-correctness license from their pass reports. Distributed-parametric state belongs to an external host, not the inspected symbolic component RT-CMP-beads-rust; its weights, endpoint identity and mutability are not determinable here.

Epistemic-object inventory

object ID candidate truth-apt content or none claimed role evidence source ID and local anchor gap/limit
EPI-OBJ-issue-text Caller assertions about defects, requirements, implementation and completion; some text is imperative rather than truth-apt Issue body and rationale SRC-1 src/close_policy.rs; see record Actual propositions and their external truth are not determinable without particular authored content and project evidence.
EPI-OBJ-issue-state Assignment, status and dependency assertions over tracker state Workflow state and readiness inputs SRC-1 src/storage/sqlite.rs; see record A stored status is authoritative tracker state, not proof of corresponding real-world work.
EPI-OBJ-gate-result Provider's pass/fail assertion for an issue transition attempt External evaluation report SRC-1 src/cli/commands/gate.rs, src/storage/sqlite.rs; see record Gate-specific external criterion, evaluator identity and assessment method unknown.
RT-OBJ-agent-blurb Workflow prescriptions; no independent task-truth verdict Installed instructions See record See RT-BAP-agent-instructions.
EPI-RTE-lint-check output Missing-template-section propositions under a fixed parser Diagnostic warning SRC-1 src/cli/commands/lint.rs Output is transient; semantics limited to parser predicate.
RT-RTE-triage-prompt output Selected backlog fields plus requests for judgment Model-visible context See record Selection omits issues/fields; no resulting model judgments supplied.

Authority-route ledger

Rows are separate consequential functions, including linked rows for checks and their dispositions. Repeated record references reuse the declaring record rather than duplicate it. All observed-operation fields below remain uninspected; possible results are source deductions.

route ID route function architectural status object/candidate ID content/update relation transition or check target evaluator/condition and domain activation and timing possible or observed result implemented force epistemic authority and scope operational authority: behavior permitted, blocked, or changed behavioral-authority path: consumer, channel, force, horizon evidence source ID and local anchor claim IDs or none mismatch marker or none gap/limit
RT-RTE-create-issue, RT-RTE-jsonl-import content transformation implemented EPI-OBJ-issue-text truth-apt transformation: acquisition/import External issue content enters tracker Caller authorship; structural/workflow admission, not truth evaluator Request or configured import Stored candidate or rejection Admits fields Source warrant unknown; no independent task truth license Later queries can expose admitted assertions Storage to CLI/MCP readers; informational, later invocations See records EPI-CLM-issue-tracking none Imported state bypasses some interactive checks.
RT-RTE-create-issue, RT-RTE-jsonl-import retention implemented EPI-OBJ-issue-text, EPI-OBJ-issue-state no content change Admitted fields retained Storage transaction/import writer After admission SQLite state; separate JSONL export lifecycle Persistence Retention alone licenses no semantic endorsement Makes fields available to later readers Persistent store to query/import consumers; informational and workflow inputs, across invocations See records EPI-CLM-issue-tracking none Export need not be committed with mutation.
RT-RTE-ready-query operational admission/selection/consumption implemented EPI-OBJ-issue-state truth-apt transformation: entailed derivation Eligibility under stored statuses, blockers, filters Deterministic policy over current tracker inputs Query snapshot Eligible projected work list Selection/ranking Conditional readiness in represented graph, not objective priority or successful work Offers candidates; reserves none CLI/MCP result to caller, advisory selection, current snapshot See record RT-CLM-work-cycle none No warranted external dependency truth or future lease.
EPI-RTE-gate-report retention implemented EPI-OBJ-gate-result truth-apt transformation: acquisition/import Caller-supplied verdict for scoped transition Caller supplies status/provider; storage validates scope Report request before transition Append history and mirror latest verdict Stores report Source warrant unknown; records a report, not an independently established pass Makes report eligible for gate checking Scoped history to transition evaluator, permissive input, same attempt/revision SRC-1 src/cli/commands/gate.rs, src/storage/sqlite.rs none none Provider string does not establish authenticated independent reviewer.
EPI-RTE-gate-check check/evidence production implemented EPI-OBJ-gate-result truth-apt transformation: entailed derivation Required gate/report predicate for transition Fixed named-gate or reviewer-count rule over effective scoped results During guarded transition preflight Violations or no violations Supplies policy verdict Report-set sufficiency only No mutation force until disposition consumer Evaluator vector to storage preflight, enforcing input, current attempted update SRC-1 src/close_policy.rs, src/storage/sqlite.rs none none Named pass can coexist with another provider's fail; no universal veto.
EPI-RTE-gate-admission disposition/acceptance implemented EPI-OBJ-issue-state no content change Status transition against configured workflow Storage consumes violations; see record Non-bypass guarded update Reject or permit continuation Enforcing, conditional on path/policy Acceptance of report sufficiency for transition; not acceptance of task explanation or code correctness Blocks update with violations; otherwise permits downstream write checks PolicyViolation or continuation within storage transaction, current mutation SRC-1 src/storage/sqlite.rs none none Other checks can still reject; bypass/import limits in runtime.
EPI-RTE-gate-check lineage/freshness/recovery implemented EPI-OBJ-gate-result truth-apt transformation: non-ampliative reshaping Effective report set Scope/revision selection; last report per case-folded gate/provider On subsequent transition attempt Old revision excluded; later same-provider fail replaces pass in effective set Withdraws report's eligibility Scope freshness, not refreshed external truth Can prevent reuse of prior passing result History query to gate evaluator, enforcing selection, current status revision SRC-1 src/storage/sqlite.rs none none Not a content-hash binding to all task evidence.
RT-RTE-close-issue check/evidence production implemented EPI-OBJ-issue-text truth-apt transformation: entailed derivation Supplied closure evidence and configured gates Markup/reason/field checks; checkbox evaluator scans body fields Close request Violations or no violations Supplies admission input Syntactic/represented completion only See record for close consumer CLI/MCP gate result to close admission, enforcing except allowed bypass, request horizon SRC-1 src/close_policy.rs; see runtime record RT-CLM-work-cycle none Checked box is not verification of fulfilled criterion.
RT-RTE-close-issue disposition/acceptance implemented EPI-OBJ-issue-state non-truth-apt policy/content update: closes workflow item Closure admission See record Caller request and policy/bypass conditions Closed/skipped/error Workflow enforcement with explicit exceptions Close is operational acceptance, not necessarily evidence-consuming acceptance of an ampliative claim Removes item from ordinary active-work flow Stored status to later queries, enforcing selection, until reopened/edited See record RT-CLM-work-cycle none Auxiliary metadata may fail after close.
EPI-RTE-lint-check check/evidence production implemented EPI-OBJ-issue-text truth-apt transformation: entailed derivation Template-section presence Fixed issue-type/Markdown predicate Lint request Missing sections and hints Advisory output; human/quiet nonzero exit with warnings Template presence only Changes CLI diagnostic status, not issue state Renderer to caller, advisory text/status, invocation SRC-1 src/cli/commands/lint.rs none none JSON/TOON return diagnostic data without warning exit; content correctness unchecked.
RT-RTE-triage-prompt content transformation implemented EPI-OBJ-issue-text, EPI-OBJ-issue-state truth-apt transformation: non-ampliative reshaping Selected context plus static guidance Focus filters/projections/caps Host prompt request Two user-role messages Advisory No new warrant from delivery Requests review/recommendation, not automatic edits See RT-BAP-triage-guidance See record none none Any later conjecture/check/acceptance by host not determinable.
EPI-RTE-delete-state retention implemented EPI-OBJ-issue-state, EPI-OBJ-issue-text non-truth-apt policy/content update: remove retained issue/dependency state Caller-selected deletion set Delete command dispatches tombstone or purge Admitted delete operation Removed links; tombstone or physical deletion Alters retained state Deletion is not epistemic refutation Changes later graph/retrieval inputs Store and export to later readers, enforcing retention change, subsequent invocations SRC-1 src/cli/commands/delete.rs none none Cascade policy and storage internals not fully inspected.
RT-RTE-agents-update, RT-RTE-upgrade-binary behavior/policy adaptation implemented RT-OBJ-agent-blurb, RT-CMP-beads-rust non-truth-apt policy/content update: replace shipped instructions or executable Version/checksum/confirmation predicates See records Explicit maintenance request Replacement, abort or error Installation Compatibility/integrity checks, not improvement warrant Changes future instructions/machinery See records and RT-BAP-agent-instructions See records RT-CLM-explicit-sync sync wording conflict, not an update-quality judgment No task-evidence-driven revision or exercised improvement established.

Lifecycle integration of accepted ampliative knowledge is not established by the inspected admission/retention paths. No separate lifecycle-integration route is inferred from retention, close status or later retrieval. Broader uninspected routes in the coverage table prevent a system-complete absence conclusion.

System-claim versus route comparison

claim ID claimed operation or warrant claim source ID/anchor and evidence layer doctrine/design support implemented route IDs observed-run support causal support and design limits supported conclusion mismatch/unknown
EPI-CLM-issue-tracking Local-first, dependency-aware issue tracking and agent-friendly workflows SRC-1 README.md, doctrine/design See record and boundary RT-RTE-create-issue, RT-RTE-ready-query, RT-RTE-jsonl-import None supplied No outcome comparison Mechanisms support retained work state and conditional graph-based selection Agent friendliness and workflow benefit not measured; no truth-oracle claim follows.
RT-CLM-work-cycle Retrieve, claim, work, close, sync See record, doctrine/design Shipped instructions RT-RTE-claim-issue, RT-RTE-close-issue, EPI-RTE-gate-admission None supplied No compliance or success experiment Work/status coordination exists; external work remains external Ordinary status change is weaker than exclusive claim; closure not independent verification.
RT-CLM-explicit-sync Sync never automatic See record, doctrine/design Official skill wording RT-RTE-create-issue, RT-RTE-mcp-request None supplied Source-level counterexample, not causal evidence Explicit sync remains useful operator advice Universal wording contradicted by implemented automatic export.

Bounded conclusion

The inspected tracker acquires caller-authored assertions and workflow state, persists them, retrieves selected projections and computes conditional workflow predicates. External source warrant is unknown: structural validation, import consistency and a status field do not establish project truth. Ready results derive from represented state under policy; their deduction is conditional on those inputs, not independent proof that work is valuable or actually unblocked in the world.

A material evaluator omitted from the runtime's selected account is transition-scoped gate reporting. It retains externally supplied verdicts, derives report sufficiency and uses that result to permit or reject guarded status updates. Its criterion is named-gate pass or configured reviewer-count sufficiency; intended use and scope are a particular issue's current source-status revision and target transition. The storage consumer has enforcing force on non-bypass guarded updates. This operational acceptance must not be promoted to acceptance of the report's underlying correctness claim. A provider name and Boolean do not reveal the provider's test, authenticate independence or demonstrate evidence-consuming semantic acceptance.

Withdrawal is concrete but bounded: later same-provider reports replace earlier effective verdicts within scope, old status revisions cannot authorize a new attempt, and caller deletion removes issue/dependency state or leaves a tombstone. A different provider's fail does not universally cancel a named gate's pass. These countercases constrain claims about universal rejection, stale-pass safety and independent review. Imports and explicit policy bypass are separate admission routes. No universal evidence-enforcing gate is inferred.

Lint derives template-presence warnings; closure checks can detect unchecked criteria. Both assess recorded structure rather than whether implementation satisfies the criteria. Prompt delivery requests triage and revision but supplies neither exercised conjecture generation nor successful semantic checking. Particular host-produced propositions, their non-entailment and their acceptance are not determinable without host evidence. The report therefore does not classify unseen judgments as ampliative conjectures merely because reasoning was requested.

Instruction/executable replacement supplies direct future-behavior change without demonstrated truth-apt learning. The inspected evidence does not establish improved capacity, an evidence-responsive self-improvement cycle, exercised reflection, autonomy of external work or iterative content-directed theory criticism. Those are independent unestablished properties of the assessed routes, not one negative system verdict. Available but uninspected maintenance, diagnostic and prompt implementations prevent stronger completeness claims. No supplied execution or comparison establishes benefit or causal attribution.

Shared records

Operative objects

EPI-OBJ-issue-text

Label: Issue body fields

Source-native identity: issue description, design, notes, acceptance_criteria. Natural-language assertions and prescriptions; SQLite fields and JSONL serialization are substrates, not their representational form. Evidence: SRC-1 src/close_policy.rs; storage/admission supplied by RT-RTE-create-issue and RT-RTE-jsonl-import. No counterpart object is declared in runtime: its issue routes operate on this material, while RT-OBJ-agent-blurb is different installed guidance. This is not a part of that blurb.

let candidates = [
    evidence.acceptance_criteria,
    evidence.description,
    evidence.design,
    evidence.notes,
];

--- src/close_policy.rs

EPI-OBJ-issue-state

Label: Issue workflow state

Source-native identity: issue status, assignment and dependency state. Symbolic fields consumed by fixed query/transition rules, retained in SQLite and exported JSONL. Distinct from EPI-OBJ-issue-text: different consumers and authority. Closest supplied records are RT-RTE-claim-issue, RT-RTE-ready-query and RT-RTE-close-issue, which describe operations rather than declare this object. SRC-1 src/storage/sqlite.rs; their passages support persistence and consumers.

        workflow.validate_transition(Some(from), to, Some(prospective_type.as_str()))?;

--- src/storage/sqlite.rs

EPI-OBJ-gate-result

Label: Scoped gate result

Source-native identity: gate_result_history records and effective GateResult verdict fields; the gate_results mirror is a separate current-state view, not the enforcing source. Symbolic scope/verdict/provider fields plus optional natural-language note, stored in SQLite. Notes accompany reports but the inspected sufficiency evaluator consumes names and Booleans rather than interpreting note truth. SRC-1 src/storage/sqlite.rs, src/close_policy.rs. No counterpart object in runtime; closest RT-RTE-close-issue covers closure, not this reusable transition-scoped auxiliary store. Its persistence and authority are supported by the following route passages.

Routes

EPI-RTE-gate-report

Label: Scoped gate reporting

Caller gate-report arguments → issue/status revision resolution → scope-checked history append and current-view mirror. Caller proposes and decides the external verdict; code can veto malformed names, missing issue, ambiguous target or changed scope. Human authorship/approval is unresolved. Operating mode is an open report request, not an experiment. No external answer oracle is specified by the provider string. SRC-1 src/cli/commands/gate.rs, src/storage/sqlite.rs. Distinct addition to RT-RTE-close-issue: reporting precedes and can serve non-close transitions; not a part of exactly that route.

  • Immediate return: Serialized or human report confirmation, or error.
  • Later read-back: History is read by transition checks and gate listing; latest mirror is available for current-state queries.
  • Delegated visibility: No worker launched; caller receives reported scope and verdict.
  • Selection predicate: Resolved issue, source status/revision, target, gate/provider and caller pass/fail.
  • Invalidation or expiry: Later reports supersede effective same-provider verdicts; status revision changes exclude earlier scope.
  • Activation or effect: Writes auxiliary report state, not the issue transition itself.
  • Evidence limits: External assessment method and veracity uninspected; no observed invocation.
  • implementation conclusion status: wired
  • operation conclusion status: uninspected

The proposed change is a report with optional note. Scope mismatch rejects before insertion; successful reports persist history rather than rolling back earlier reports. Later reports can change reliance. Mirror failure belongs to the same connection transaction; no general filesystem recovery guarantee is inferred.

let passed = matches!(args.status, GateStatus::Pass);

--- src/cli/commands/gate.rs

            "INSERT INTO gate_result_history (
                issue_id, from_status, to_status, status_revision, gate,
                provider, passed, note, recorded_by, recorded_at
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)",

--- src/storage/sqlite.rs

        // enforcement never reads this table (it consults the scoped
        // history above); the mirror keeps the documented current-state
        // view populated for external queries. Runs after the

--- src/storage/sqlite.rs

EPI-RTE-gate-check

Label: Effective gate checking

Scoped history → effective latest report set → required gate evaluation → violation vector. Code owns selection and fixed rule evaluation. Its target is report sufficiency for the requested issue transition, not the work product. SRC-1 src/storage/sqlite.rs, src/close_policy.rs. Distinct from RT-RTE-close-issue, which covers close as a whole rather than this arbitrary-edge check; paired with EPI-RTE-gate-admission, its separate consumer.

  • Immediate return: Policy violation vector or empty vector to storage preflight.
  • Later read-back: Reads accumulated gate history; no separate retained check result established here.
  • Delegated visibility: Violations can propagate to caller; no delegation.
  • Selection predicate: Same issue/from/to/status revision; ordered history folded by case-insensitive gate/provider; requirements depend on edge, labels and priority.
  • Invalidation or expiry: Different status revision excludes prior reports; later reports replace effective earlier same-key verdicts.
  • Activation or effect: Produces sufficiency and stale-revision diagnostics consumed by admission.
  • Evidence limits: Validity of supplied report content remains unknown; no runtime trace.
  • implementation conclusion status: wired
  • operation conclusion status: uninspected

Caller proposes a transition; policy selects requirements and code judges report-set compliance. No human veto or independent oracle is demonstrated inside the evaluator. Recovery is fresh reporting/retry, not an automatic external retest.

Concrete deduction, not target execution: for a named gate tests, same scoped provider ci reports pass then fail. The ascending-ID fold replaces the pass with fail, so that provider no longer supplies a satisfying pass. Add another provider's pass for tests in the same scope: the named-gate any predicate succeeds despite ci's fail. Move both reports to an older status revision: neither enters the selected effective set for the current attempt. This demonstrates implemented conditional derivation and limits rejection semantics without asserting that tests actually ran or passed.

           AND status_revision = ?
         ORDER BY id ASC",

--- src/storage/sqlite.rs

        effective.insert(
            (gate.to_ascii_lowercase(), provider.to_ascii_lowercase()),
            result,
        );

--- src/storage/sqlite.rs

    GateSpec::Named(name) => results
        .iter()
        .any(|result| result.gate.eq_ignore_ascii_case(name) && result.passed),

--- src/close_policy.rs

EPI-RTE-gate-admission

Label: Guarded transition admission

Status update → configured gate check → violation rejection or continuation toward storage write. Storage owns disposition. SRC-1 src/storage/sqlite.rs. Closest supplied RT-RTE-close-issue describes closure and bypasses; this route spans configured status edges rather than being identical to close. It consumes EPI-RTE-gate-check, whose result alone has no mutation effect.

  • Immediate return: PolicyViolation error or continuation of storage preflight; success here is not final mutation success.
  • Later read-back: Admitted downstream mutation persists issue status; this admission branch alone retains no separate knowledge decision.
  • Delegated visibility: Caller sees error or later update result; no worker launch.
  • Selection predicate: Non-bypass update, gates enforced, matching transition rule and prospective labels/priority.
  • Invalidation or expiry: Each attempted guarded transition checks current scope again; future edits or reopen change workflow state.
  • Activation or effect: Nonempty violations reject update; empty gate violations permit further checks/write progression.
  • Evidence limits: Bypass and import routes do not inherit a universal gate guarantee; no observed transition.
  • implementation conclusion status: wired
  • operation conclusion status: uninspected

Caller proposes; installed workflow and storage decide; explicit bypass may override ordinary rejection as supplied by runtime. Intended use is workflow admission, criterion is required-report sufficiency, scope is current transition attempt. This is not a semantic task acceptance oracle. Recovery is reporting missing/fresh results or changing request/policy; rollback of later external work is not part of admission.

        if workflow.gates_enforced() && workflow.gate_rule_for(from, to).is_some() {

--- src/storage/sqlite.rs

            return Err(BeadsError::PolicyViolation {
                issue_id: id.clone(),
                summary,
                violations,
            });

--- src/storage/sqlite.rs:7630-7649

EPI-RTE-lint-check

Label: Issue template lint

Selected issues → type-specific required sections → missing-section suggestions → output and diagnostic exit handling. Code owns the parser/evaluator, caller chooses query. SRC-1 src/cli/commands/lint.rs. No counterpart after comparison with supplied RT-RTE-ready-query: lint diagnoses template presence rather than eligibility.

  • Immediate return: Missing section warnings/hints or no warnings, rendered as structured or human output.
  • Later read-back: Reads retained issue fields; no persistent lint judgment written by inspected evaluator/output code.
  • Delegated visibility: Output may reach an external host; no worker launched.
  • Selection predicate: Caller IDs/filters, issue type, nonblank acceptance field or recognized named section with body.
  • Invalidation or expiry: Subsequent issue edits require a fresh lint invocation.
  • Activation or effect: Human/quiet warnings record nonzero diagnostic exit; JSON/TOON branches emit data and return before warning status handling.
  • Evidence limits: No observed invocation; no claim about external automation's response to output.
  • implementation conclusion status: wired
  • operation conclusion status: uninspected

Target: template completeness under the parser, not truth or adequacy. No answer oracle for task success. Concrete deduction: a Task with no description and nonblank acceptance text do something has its sole required section satisfied by field_present; the evaluator returns no lint warning even though no project evidence accompanies the text. An empty acceptance field and missing description yields the missing Acceptance Criteria section. This is an implementation deduction, not evidence of good criteria. Parser recognition also excludes a bare prose mention from standing in for a Markdown heading.

let missing = missing_sections(issue, required);
if missing.is_empty() {
    return None;
}

--- src/cli/commands/lint.rs

                .is_some_and(|criteria| !criteria.trim().is_empty());
        !field_present
            && !description_has_section(description, strip_heading_prefix(section.heading))

--- src/cli/commands/lint.rs

    ctx.json_pretty(&output);
    return;

--- src/cli/commands/lint.rs:168-176

EPI-RTE-delete-state

Label: Delete retained state

Admitted deletion set → remove dependencies → tombstone or hard-purge dispatch → flush handling. Caller requests deletion and chooses flags; command/storage perform changes. SRC-1 src/cli/commands/delete.rs. Distinct from RT-RTE-close-issue: deletion/purge changes retained content and links, not merely completion status.

  • Immediate return: Deletion result or error; selected code accumulates affected IDs and removed-link counts.
  • Later read-back: Later queries and exports consume changed issue/dependency state; hard deletion is intended to prune JSONL.
  • Delegated visibility: Cooperating readers can observe state after persistence/export; no worker launched.
  • Selection predicate: Final deletion set produced by earlier command logic, then hard versus ordinary deletion flag.
  • Invalidation or expiry: Tombstones or physical removal change future retention; complete merge/resurrection behavior uninspected.
  • Activation or effect: Removes dependency links and invokes delete_issue or purge_issue; flush handling follows.
  • Evidence limits: Earlier confirmation/cascade logic and lower-level purge implementation not fully inspected; no batch atomicity or permanent-erasure guarantee.
  • implementation conclusion status: wired
  • operation conclusion status: uninspected

This is operational withdrawal, not evidence-consuming rejection of a false claim. Human versus programmatic initiation is unresolved. No truth oracle; operating mode is an explicit maintenance request. Dry-run, refusal, undo and recovery guarantees cannot be established from this selected loop; no universal rollback inferred.

    // Delete each issue (create tombstone, then purge if --hard)

--- src/cli/commands/delete.rs

                |storage| storage.purge_issue(id, &actor),

--- src/cli/commands/delete.rs:310-319

                |storage| storage.delete_issue(id, &actor, &args.reason, None),

--- src/cli/commands/delete.rs:320-328

Claims

EPI-CLM-issue-tracking

Label: Local-first issue tracking

Claimed operation: local-first persisted issue tracking with dependency-aware selection, machine-readable output, recovery and agent workflows. SRC-1 README.md, doctrine/design. Distinct from RT-CLM-work-cycle, a specific prescribed lifecycle, and RT-CLM-explicit-sync, a narrower synchronization assertion. The claim does not by itself promise autonomous knowledge production.

br is a local-first issue tracker that stores issues in SQLite with JSONL export for git-friendly collaboration. It provides dependency-aware issue tracking, machine-readable output, sync/recovery tooling, and agent-friendly workflows without leaving your repository. --- README.md