[0.5.0] — 2026-06-12 — Author attribution, ADR mirroring, identity hardening
Three additive, spec-driven features (specs 008/010 + the #69 hardening) plus
Dependabot. extension.id stays linear; the command surface is unchanged;
every existing install behaves identically until it opts in. All safety
guarantees (idempotency, drift-awareness, fail-closed writes) hold.
Author-based attribution — spec 010
- The board shows who authored each spec. Opt-in (
linear.attribution.*,
default OFF). When enabled, each spec Issue gets an account-independent
author:<handle>label and — for authors who are Linear members — is assigned
to that author on creation. A non-member or unresolved author is labelled but
left unassigned (never the operator). Disabled/absent ⇒ byte-for-byte today's
behaviour (operator assignee per FR-034, no author label). - Author resolution is filesystem-derived. A
**Owner:**/**Author:**
line inspec.mdwins; otherwise the first git author to add the spec
directory; otherwise unknown (a graceful no-op — no label, no assignee, no
failure). - Members match automatically; the override map is optional. Linear's member
roster is read at runtime, so a git email that matches a Linear email resolves
with no configuration. An optional, gitignoredlinear-authors.local.yml
(only a.sampleis committed) aliases git≠Linear emails and pins handles for
non-members — no real email or user id ever lands in a tracked file (the
identity-leak guard covers it). - Idempotent + never-clobber. The author label is strip-and-set (zero churn
on re-run; one swap on author change); the author assignee is written on create
only, so a manual reassignment in Linear always survives. Sub-issues optionally
inherit the author label (subissue_label, default off) but never the author
assignee. Parity-locked with the spec-kit-jira author-attribution feature at the
user-visible level. No new command;extension.idstayslinear.
ADR / decision-record mirroring — spec 008
- Your decisions now reach the tracker. The
Decision / Rationale / Alternativesblocks in each spec'sresearch.mdare mirrored as ADR comments
on that spec's Linear Issue — one comment per decision, in an ADR layout (id,
title, status, decision, rationale, alternatives, source). It rides the
existingafter_*hooks; no new command, no config. Works for any spec that
has aresearch.md; a spec without one is a graceful no-op. - Idempotent + update-in-place. Each ADR is keyed by a hidden
<!-- spec-kit-linear: adr <NNN>-<key> -->marker (heading idD<N>/R<N>,
else a title slug); an unchanged corpus is zero-churn, a revised decision
updates its one comment in place, a new decision adds one comment. (Update-in-
place is Principle I — the filesystem is canonical; it is the sole behavioural
delta from the clarify-comment path, and the one new mutation,commentUpdate.) - Parity with the spec-kit-jira ADR feature: the user-visible comment shape
matches across both sinks. No config/schema change;extension.idstays
linear.
Consumer identity-leak hardening (#69)
- Install refuses to let your identity reach a tracked file. A new install-
time guard (install::assert_no_identity_leak) scans the consumer's tracked
tree for operator-identity leaks —operator.*keys, email-shaped strings, and
a force-tracked operator-local / authors-override file — and surfaces a loud,
named warning with remediation (Principle VIII). Export
SPECKIT_LINEAR_STRICT_IDENTITY=1to make a detected leak fail the install.
Reinforces the spec-004 config/identity split: identity stays in the gitignored
operator-local file, never in committed config.