Development record
`origin: researcher-authored` states that a person invoked the verb. It is
origin: researcher-authored states that a person invoked the verb. It is
stamped on the quoted-text route unconditionally, so a record an agent captured
carries a claim that a person captured it.
This record is an instance of itself. Its own frontmatter says
researcher-authored, and no person invoked the verb that wrote it.
The claim and the write
internal/core/provenance/provenance.go:41 states the meaning outright:
// KindResearcherAuthored is the default for a verb a person invoked.
KindResearcherAuthored Kind = "researcher-authored"
The other two kinds are honest about their route and are derived from which
command ran: extracted-from-record is stamped only by capture.Promote, and
contributed-by-reading <rdg-N>/<rdi-N> only by capture promote <rdi-N>. Both
name something structural that the command genuinely knows.
researcher-authored is the default that catches everything else, and the thing
it asserts — that a person invoked it — is the one thing the command does not
know.
Why this is not pedantry
Disclosure is the whole point of the field. The surface page says the two
provenance keys "are disclosure at field granularity, on the same footing as the
Assisted-by: trailer at commit granularity."
The two footings disagree. At commit granularity the convention is strict, and
deliberately so: Assisted-by: is required, Assisted-by: None is the positive
declaration for human-only work, and a free-text escape was refused on the
grounds that it would reopen the omission it closes. At field granularity the
same project stamps "a person invoked this" onto records no person invoked, by
default, silently.
Measured today, without looking far: six records captured in this session and
eleven captured by a peer session in another repository all carry
researcher-authored. Twenty-three including this record's own family. None was
invoked by a person.
What the fix is not
Not a new flag. origin is "derived from which command ran and has no flag at
all", and that is the property worth keeping — a caller-supplied provenance field
is a field that gets guessed, which is exactly the failure recorded next door in
iss-2609120452071388, where two sessions guessed --source values that do not
exist in one day.
So the value has to come from something the process knows about itself, not from something it is told. Candidates, none obviously right:
- A fourth kind (
agent-invoked, or similar) selected by the same signal the harness already uses to know it is an agent session. - Narrowing
researcher-authoredto mean what it can actually support — filed from quoted text, as opposed to derived from another record — and moving the who to a separate key or dropping the who entirely. - Leaving the value and correcting the comment, if the maintainer's reading is
that the kind names the ROUTE and the comment overstates it. That is the
cheapest fix and it should be considered honestly rather than dismissed: the
surface page's own gloss is "a draft filed from quoted text is
researcher-authored", which says nothing about who typed it.
The third option is the one to rule on first, because if the comment is simply wrong then there is no defect in the data and this record collapses to a one-line correction.
Scope note
Population is forward-only and nothing backfills a provenance stamp, so whatever is decided applies to records written afterwards. The existing corpus keeps what it carries, which is the right behaviour and also the reason the decision should not sit long: every record filed meanwhile inherits the ambiguity.
Acceptance
- Given the
originvocabulary, when a reader asks whatresearcher-authoredasserts, then the code comment, the surface page and the stamped data agree. - Given a record captured by an agent, when its
originis read, then it does not claim a person invoked the verb.
Grounds
- pursued: the three statements of what researcher-authored means now agree with the stamped data, since none claims a person invoked the verb; shown wrong if any committed text still reads researcher-authored as a claim about who ran the command
Frontmatter
| id | iss-2609120505141653 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | major |
.abcd/work/issues/resolved/iss-2609120505141653-the-origin-field-claims-a-person-invoked.md
open on GitHub ↗ · commit history ↗
mentions3
- dcn-26092300000000012026-09-23 — The product thinker ruled on the owed items of the autonomous run of 2026-09-23 in one interview, one question at a time (07:51Z to 09:32Z, while the run was paused): two release blockers, two intents, the 35 major captures routed to the product thinker, and two older owed rulings. The release waits for two things: version-stamped plugin payloads (iss-2609230733497536, built by a run lane, with no criterion amended and no deferral) and a release press release composed at the cut from the shipped intents' press releases, which is a new capability and gets an intent and its planning interview before any lane builds it. The run may approve the release environment itself once every gate is green; that agenda line is written in the release commit, not here. itd-4's AC3 is built as written, the `--issue-drift` check and the rename of the back-links to `related_issues` / `related_intents` together, and spc-6 closes only when both land (the 2026-07-17 ruling stands). itd-43's third criterion is moot and dropped, so spc-8 closes. The guard contract is extended to read a host-supplied per-call working directory (iss-2609212142557657, option A), after a probe of what the host does when none is supplied. Four majors are ruled to a build (iss-2608231120121681 write-path smoke, iss-2608290810036869 preflight before the push connects, iss-2609090828371674 per-agent staging locks, iss-2609120505141653 the provenance comment) and do not hold the tag. The rulings that set a rule each have their own entry below; every other routed major is deferred past v0.9.0 with its ruling as the `deferral_reason`, and the 168 routed minor and nitpick captures take the run's default deferral. The product thinker also asked that the interview be kept as autonomous-run experiment data, towards making a run transparent to the person it serves; the observations feed the run's end-of-run research note. Rejected, as the frame: the run taking any of these rulings itself.
- iss-2609120452071388Reported from a downstream repository using abcd, where `abcd capture` (bare,
- iss-2609120511058115Nine findings about abcd's own installer are sitting in a teaching-materials