RFC 0004: Optional actor attribution for decisions and universe selections - #56
Draft
BenjaminNavet wants to merge 3 commits into
Draft
RFC 0004: Optional actor attribution for decisions and universe selections#56BenjaminNavet wants to merge 3 commits into
BenjaminNavet wants to merge 3 commits into
Conversation
…tions Signed-off-by: BenjaminNavet <benjamin.navet@live.fr>
…anch Signed-off-by: BenjaminNavet <benjamin.navet@live.fr>
The RFC calls the rubric a companion that travels with it and cites it under References, but it was not in the PR. Add it at rfcs/0004-actor-attribution/attribution-rubric.md and repoint the two References entries that named files outside this repository. Signed-off-by: BenjaminNavet <benjamin.navet@live.fr>
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.
Tracking issue: #53
An
astra.yamlrecords what was decided and why, and a universe records whichoption was chosen. Neither records the who. This RFC adds a small optional actor
layer — a registry of the humans and agents on an analysis, plus fields naming who
proposed an option, who ruled one out (and when, and on what judgment), and who
selected or reviewed a pick in a universe. Every field is optional; nothing about how
decisions or selections are recorded changes.
It reuses CRediT and ORCID rather than inventing a vocabulary, and stays
capture-agnostic: any workflow that knows who proposed an option and who ruled on it
can fill the fields.
Settled in this draft
Roleenum, not two. The human/agent split is a per-role allow-tableenforced by astra-tools, because a slot's legal range cannot depend on another
object's
type. Two enums would express no constraint one does not — the agent listis a strict subset of the human list.
conceptualizationandsupervisionare human-only. A human frames the decisionand signs off; every other role, including the three extensions (
planner,executor,researcher), is open to both actor types.{actor, role}. No parallel*_roleslots.existing
excluded/excluded_reason, plusexcluded_by/excluded_at/exclusion_rationale. Nocorrections:object, no revision log.excluded_reasonandexclusion_rationalestay distinct: what was observedversus the judgment that made it dispositive. Collapsing them makes an exclusion
unauditable — the worked example shows a case where the observation alone reads as
the option outperforming its replacement.
Open — feedback wanted
How does a tool learn who the human is? This is the question the whole layer
lives or dies on. The agent half of the registry is automatic — a harness knows its
own
model,harnessandversion. The human half cannot be inferred, and recitingan ORCID mid-session is unnatural, so this is where the actor layer either gets
adopted or gets skipped. The RFC sketches two non-exclusive mechanisms — a user-level
config (
astra config set actor.orcid …, copied into the record at authoring time,git's model rather than a pointer to a machine-local file), and validation-as-prompt
(
astra validatenaming the missing field and stating the value must be asked ofthe user, never invented). Both are tooling, not schema, and astra-tools has no
config surface today. Should this be settled here, in a companion tooling RFC, or
as an astra-tools issue?
Does
reviewed_bypresuppose an agentselected_by? Human review is mostmeaningful over an agent's pick, but a human reviewing another human's pick is also
valid. Should the schema constrain the pairing, or is this a rubric matter?
ResearcherId: named slots or a generic scheme/value list? Named slots (orcid,arxiv,openalex,wikidata,google_scholar) are self-documenting and let eachid carry its own validation
pattern, but a new scheme means a schema edit. Anidentifiers: [{scheme, value}]list is open-ended and linked-data-native, at thecost of weaker per-scheme validation. The draft currently proposes named slots.
Reference implementation
A prototype lives on
mainof theFosowlforks: the closedRoleenum inastra-spec(src/astra/schema/actor.yaml), theROLE_ALLOWED_TYPESallow-table andsemantic enforcement in
astra-tools(src/astra/validation/semantic.py). Per the RFCprocess, this PR carries the document alone; implementation PRs follow acceptance,
one per repo.
Draft while the design stabilizes. Will mark ready for review — and flip the
frontmatter to
status: Active— once the questions above are settled.