Mark a record nobody read, and stop it directing an agent - #437
Merged
Conversation
ADR-0030 is approved, and this is the guarantee the rest of it depends on. It lands alone and first: nothing about capture changes until the trust axis can express what unattended capture produces. `Provenance: drafted` marks a record the capture pipeline staged without a person reading it. Such a record is real -- every quote in it was machine-checked against the transcript and the diff it was drafted from. What it lacks is someone who stood behind the wording, and standing behind the wording is exactly what `directive` claims. Grading caps it at `claim`, the treatment `reconstructed` already gets for the same reason. The cap is in `grade.ts` and not in the pipeline that writes the trailer. Consumer routes ask grading, and a rule the writer could decline to apply is not a rule. Additive on purpose. An implementation that predates the value reads it as `unknown`, which also grades `claim`, so an older reader is safe rather than wrong. That property is the reason this is a `Provenance:` value and not a new key, and it is pinned by a test rather than assumed. Limit: a commit message is immutable, so a drafted record is never upgraded in place -- promotion is a later record that Supersedes it, and that half is not in this change Ruled-out: capping unattended records in the capture pipeline | the writer would own a rule the readers depend on, and any other host staging a record could simply not apply it Ruled-out: an `X-` extension trailer to carry the unread signal | SPEC §3 defines those as never interpreted by the core, so a grading rule reading one would license every reader to invent grading keys Warn: this ships the trust axis only; capture still asks before staging, and the skill's prompt stays until decisions 1, 3 and 5 land Blast: system Undo: easy Certainty: firm Verified: five cases -- the value is in the vocabulary, a drafted record grades claim for a trusted author of an active record, the byte-identical record marked authored grades directive as the control, the drafted record reaches `buildInjection` tagged `[claim]` and delivered rather than withheld, and an unrecognised value falls to unknown and also claims; conformance suite 27 fixtures, full suite 93 files and 2174 tests Provenance: authored Record-Id: r-drafted30
CommitLore — record lintTrailers: clean — 1 commit in Active constraints for the paths this PR touchesLimits (103)
Ruled out (238)
Truncated: 87 lines omitted — the comment hit GitHub's 65000 character limit. Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
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.
Part of #426. ADR-0030 is approved; this lands decision 2 alone.
Why this piece first
It is the guarantee the rest depends on. Nothing about capture changes until the trust axis can express what unattended capture produces — so
draftedand its grading cap ship first, and decisions 1, 3 and 5 (unattended staging, promotion by supersession, the off switch) follow separately.What it is
Provenance: draftedmarks a record the capture pipeline staged without a person reading it.Such a record is real: every quote in it was machine-checked against the transcript and the diff it was drafted from. What it lacks is someone who stood behind the wording — and standing behind the wording is exactly what
directiveclaims. Grading caps it atclaim, the treatmentreconstructedalready gets for the same reason.Four declarations move together: SPEC §3's vocabulary row, §7's trust axis,
spec/schema/record.schema.json, andtypes.ts.The cap is in grading, not in the writer
Consumer routes ask
grade.ts. A rule the writer could decline to apply is not a rule — and any other host staging a record could simply not apply it.Additive by design, and pinned as such
An implementation that predates the value reads it as
unknown, which also gradesclaim. An older reader is therefore safe rather than wrong, and that property is the reason this is aProvenance:value and not a new key. It is asserted by a test rather than assumed.Tests
Five, and the second is the one that makes the first mean anything:
draftedis in the vocabularyclaimfor a trusted author of an active recordauthoredgradesdirectivebuildInjectiontagged[claim], delivered not withheldunknownand also claimsConformance: 27 fixtures (one added, valid —
draftedis well-formed and capped, not rejected).Full suite: 93 files, 2174 passed, 1 skipped.
test/dogfood.test.tsre-run after committing: 9 passed.Not in this PR
Capture still asks before staging, and the skill's step 4 stays. This changes what a
draftedrecord means, not who writes one.