Skip to content

docs(discussions): [#2003] add my round on AI model provenance in commits - #2486

Merged
josecelano merged 8 commits into
torrust:developfrom
da2ce7:2003-ai-model-provenance-round-da2ce7
Oct 13, 2026
Merged

josecelano merged 8 commits into
torrust:developfrom
da2ce7:2003-ai-model-provenance-round-da2ce7

Conversation

@da2ce7

@da2ce7 da2ce7 commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This is my contribution round on the AI Model Provenance in Commits discussion: I add the position I first posted as comment 6035743101 on PR #2467 as attributed entries under eleven topics, re-framed from the number labels A1–A5, B1–B6 and C1–C7 into semantic labels that can be cited, accepted, amended or rejected one by one. Each entry now also ends with the AI-assistance statement in the maintainer's wording (R4).

The maintainer invited the round on PR #2467 and on issue #2473, whose rounds convention merged in PR #2481. The branch sits on develop at 285938179, the merge of the opening author's adoption round, so my entries sit under his topics.

Related to #2003

Changes

Two files.

docs/discussions/2003-overhaul-guardrails-and-automation/20261007-ai-model-provenance-in-commits/README.md:

  • Under each of the opening author's topics Q1–Q9, my entry replaces the No positions yet. placeholder under #### Positions, matched by topic number.
  • Two topics of my own follow his Q9: Q10 What a provenance record can truthfully contain, and Q11 The shape of the rule, each with my entry.
  • Each entry ends with the link to the position's first posting on PR docs(discussions): add the AI model provenance discussion #2467.
  • tokenizer added to the file's cspell ignore line; it occurs in the position text and has no other use in the repository.

docs/pr-reviews/pr-2486-review/PR-REVIEW.md: my audit record of the review bot's one finding on this round (F1, the pinning premise of my project-automation-is-a-dependency entry) and its fix, which states that premise as a concept.

Topic Entry labels (comment number)
Q1 granularity-by-role (C1)
Q2 models-whose-content-survives (C2)
Q3 identifier-from-the-harness (C3)
Q4 precedent-key-acceptable (C3)
Q5 harness-configuration-is-the-source-of-truth (C4)
Q6 human-edits-need-no-correction (C4)
Q7 format-checkable-completeness-not (C5)
Q8 no-provider-default-trailers-meanwhile (C6)
Q9 legal-input-parked (C7)
Q10 enumeration-has-no-boundary (A1), acceptance-is-the-choice (A2), personal-toolchains-are-private (A3), watermarks-mark-rendering-not-authorship (A4), regulation-targets-systems-acting-on-people (A5)
Q11 humans-author-and-certify (B1), tool-record-not-authorship (B2), scope-by-content-not-presence (B3), project-automation-is-a-dependency (B4), declared-not-detected (B5), provisional-and-regulation-independent (B6)

Note for the maintainer

Your adoption round moved the open questions into Topics Q1–Q9, so my round no longer carries topic texts of its own for them: each of my Q1–Q9 entries sits under your topic of the same number, in place of its placeholder, as the template intends for a topic's first position. Q10 and Q11 carry the premises and the proposed shape of the rule, which the nine questions do not cover.

Nothing of your text is moved, copied or edited: your Context, your topic texts and the Outcome read as at 285938179.

Under the merge gate in docs/discussions/AGENTS.md, a contribution round merges on document quality (linters, factual claims about the repository, no edits to another participant's content or to the Outcome), not on agreement with its positions.

Verification

  • Scope: against develop at 285938179, the diff touches only the two files above. In the README, the only removed lines are the nine placeholders and the cspell ignore line, which returns with tokenizer added; a script that undoes the placements recovers your file byte for byte.
  • Entries: a script compared each of the eleven entries, from its heading through its "First posted as" line, with the branch before the rebase: all are byte-equal, and each ##### heading sits under the ### Q<n> of its number.
  • Verbatim text: before the rebase, a script extracted each labelled point from my comment, applied only the label substitutions (number labels to semantic labels in code form, "question N" to "QN") and compared the result with the README paragraph under the same label. Fifteen of the sixteen points rendered whole are identical; B4's opening sentence was revised afterwards for review finding F1 (the project-automation-is-a-dependency entry, authored 10:30 UTC on 2026-10-08, before the rebase onto the docs(discussions): adopt the round template in the AI model provenance discussion #2487 merge), so at the head that entry no longer matches the comment; for C3 and C4, split across Q3/Q4 and Q5/Q6, the only differences are the split titles and, for C3, its lead sentence repeated in both entries and its two-clause final sentence divided between them. Apart from the B4 revision, the entries are unchanged since.
  • Anchors and links: topic and entry anchors are unique; the eleven #### Positions headings repeat by the template's design and render as positions to positions-10. Every relative link and in-page anchor in the README resolves at the head; the comment URL on PR docs(discussions): add the AI model provenance discussion #2467 is external.
  • Gates at the head: pre-commit profile gate on the compute pod at this head, base develop 285938179, exit 0 (76 s); linter markdown, linter cspell, linter lychee exit 0; frontmatter-validator --all with the same repository-wide counts as develop (19 errors, 4 warnings on unrelated specs, re-measured at develop in the same run); validate-audit-record.py --pr-number 2486 --base 285938179 over the live review comments: 1 row, 7 log entries, 0 failures.

After the maintainer's review

Four commits follow the maintainer's review (5469325284); my audit record carries each finding.

  • docs(discussions): [#2003] restate my automation-dependency reason and note the B4 revision: for R1, the opening sentence of project-automation-is-a-dependency now gives the reason a project tracks what its automation uses rather than describing today's repository; for R2, the Q11 "First posted as" line notes that this entry revises B4's opening sentence in this round (review findings F1 and R1). B4's opening sentence therefore now reads as the R1 text, not the comment's.
  • docs(pr-reviews): [#2003] record the maintainer's review of PR #2486: R1 and R2 fixed in the branch, R3 fixed in this description, R4 answered on its thread, R5 and R6 left for the reasons in their replies.
  • docs(discussions): [#2003] state on each of my entries that AI assistance is not disclosed: for R4, after the maintainer's follow-up on its thread, each of my eleven entries ends with the statement in his wording, "AI assistance not disclosed: the author's private tooling may include machine-learning tools."
  • docs(pr-reviews): [#2003] record the AI-assistance statement as the fix for R4: the R4 row and its detail block record the follow-up and the fix.

Validation at the new head

Gates at the heads: pre-commit profile gate on the compute pod at c087841d2 (before the replies) and at 876dbf121 (with the reply URLs recorded), base develop f960c78d7, exit 0 (79 s and 77 s); linter markdown, linter cspell, linter lychee exit 0; frontmatter-validator --all with the same repository-wide counts as develop (19 errors, 4 warnings on unrelated specs, re-measured at develop in the same run); validate-audit-record.py --pr-number 2486 --base f960c78d7 against the review comments captured after the replies were posted: 7 rows, 15 log entries, 0 failures (before the replies, the only failures were the five Reply URL fields then pending).

@da2ce7
da2ce7 requested review from josecelano and a balanced review from Copilot October 8, 2026 09:58
da2ce7 added a commit to da2ce7/torrust-tracker that referenced this pull request Oct 8, 2026
…s entry headings

The eleven entry headings of the round now carry PR torrust#2486 in place of the placeholder written before the pull request existed.
da2ce7 added a commit to da2ce7/torrust-tracker that referenced this pull request Oct 8, 2026
… in commits

I add a Topics section with eleven topics to the AI model provenance discussion and append my twenty labelled positions under them, re-framed from the number labels A1 to C7 of my position comment on PR torrust#2467 into semantic labels, so that each point can be cited, accepted, amended or rejected by its label.

The discussion predates the rounds convention, so this contribution round adds the Topics section itself: Q1 to Q9 mirror the numbering of the opening author's open questions, so that the opening author's adoption round can place that text under the same IDs, and Q10 and Q11 carry the premises and the proposed shape of the rule, which the open questions do not cover.

The opening author's text is untouched: the round inserts the Topics section before the Outcome, which stays pending, and adds one word to the file's cspell ignore line. Each entry heading names this pull request, torrust#2486.
@da2ce7
da2ce7 force-pushed the 2003-ai-model-provenance-round-da2ce7 branch from e871094 to fdcf874 Compare October 8, 2026 10:12
@da2ce7 da2ce7 changed the title docs(discussions): [#2003] add da2ce7's round on AI model provenance in commits docs(discussions): [#2003] add my round on AI model provenance in commits Oct 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One entry inaccurately states that current CI tooling and AI model identities are fully pinned in tracked configuration.

1 open finding
What changed in this PR

Adds Cameron Garnham’s attributed contribution round to the AI model provenance discussion.

Changes:

  • Adds 11 topics containing positions adapted from PR #2467.
  • Preserves the existing Outcome and adds tokenizer to cspell ignores.
File Description
docs/​discussions/​2003-overhaul-guardrails-and-automation/​20261007-ai-model-provenance-in-commits/​README.md Adds the attributed discussion round and supporting cspell ignore.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

@da2ce7

da2ce7 commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Sequencing with #2487, the opening author's adoption round that moves the open questions into Topics Q1–Q9: once #2487 merges, I will rebase this round onto it. My entries then sit under its Q1–Q9 (my own Q1–Q9 topic texts, which only pointed at the open questions by number, go away), and Q10 and Q11 stay as the two topics this round adds. Nothing else changes, so the two rounds do not need to wait for each other beyond that rebase.

@da2ce7
da2ce7 force-pushed the 2003-ai-model-provenance-round-da2ce7 branch from 60ed0a3 to eba9ff2 Compare October 8, 2026 10:32
da2ce7 added a commit to da2ce7/torrust-tracker that referenced this pull request Oct 8, 2026
I record Copilot's one finding on my round and its fix: F1 asked me to recast the pinning premise of my project-automation entry, I stated that premise as a concept in its own commit, replied on the thread with the commit's subject, and resolved it.

I keep the record in the process-pr-review skill's form, with the template's verbatim blocks copied unchanged, so that the skill's validator can check it against the review comments and the branch history.
da2ce7 added 3 commits October 8, 2026 14:56
… in commits

I add a Topics section with eleven topics to the AI model provenance discussion and append my twenty labelled positions under them, re-framed from the number labels A1 to C7 of my position comment on PR torrust#2467 into semantic labels, so that each point can be cited, accepted, amended or rejected by its label.

The discussion predates the rounds convention, so this contribution round adds the Topics section itself: Q1 to Q9 mirror the numbering of the opening author's open questions, so that the opening author's adoption round can place that text under the same IDs, and Q10 and Q11 carry the premises and the proposed shape of the rule, which the open questions do not cover.

The opening author's text is untouched: the round inserts the Topics section before the Outcome, which stays pending, and adds one word to the file's cspell ignore line. Each entry heading names this pull request, torrust#2486.
…ject-automation entry as a concept

The sentence described continuous-integration tooling as locked and fully defined, which the workflows do not bear out. It now states the concept: a public process attracts provenance of its own accord, the record's subject is the choices a model may make in that process rather than the fact of its use, and the rule proposes to pin such a model's identity so that a choice can be traced to it.
I record Copilot's one finding on my round and its fix: F1 asked me to recast the pinning premise of my project-automation entry, I stated that premise as a concept in its own commit, replied on the thread with the commit's subject, and resolved it.

I keep the record in the process-pr-review skill's form, with the template's verbatim blocks copied unchanged, so that the skill's validator can check it against the review comments and the branch history.
@da2ce7
da2ce7 force-pushed the 2003-ai-model-provenance-round-da2ce7 branch from a9be4e4 to 30b6014 Compare October 8, 2026 12:59
@da2ce7

da2ce7 commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

Rebased onto develop at 285938179 (the #2487 merge), the opening author's adoption round: it moved his nine open questions into ## Topics as Q1–Q9, each with the placeholder No positions yet. under #### Positions, and gathered the rest of the discussion under ## Context. My round commit conflicted with that in one hunk; the other two commits applied cleanly.

  • Head a9be4e41605d22f0b7f54b5876031c2636f0a4b8 → 30b60142155ade470372b01cfeb10c700fd3e11d, three commits, same order and messages; only the discussion README and my audit record differ from develop.
  • git range-diff 40dae98a7..a9be4e416 285938179..30b60142155ade470372b01cfeb10c700fd3e11d marks the round commit and the audit record ! and the concept-sentence commit =: the round commit differs only in where my entries sit, the concept sentence for Copilot's F1 applies unchanged, and the audit record differs only in the line-number clause below.
  • What moved: my entries for Q1–Q9 now replace the placeholder under his Q1–Q9, matched by topic number, as the template intends for a first position (docs/templates/DISCUSSION.md Topics and Positions, docs/discussions/AGENTS.md contribution rounds). My own Q1–Q9 topic texts and the Topics lead paragraph are gone, because they only pointed at his open questions, which are now the topics. Q10 and Q11 follow his Q9 as the two topics this round adds.
  • Unchanged: every entry and the Q10 and Q11 topic texts, byte for byte; his Context, his topic texts and his Outcome. The README at this head is his file at 285938179 plus those placements and tokenizer on the cspell ignore line, which his file does not carry. The audit record is unchanged apart from one clause of F1's current-tree verification, which now reads "README line 337 (line 334 on the commit the thread was posted on)", because the move put that paragraph three lines lower.

Gates: pre-commit profile gate on the compute pod at this head, base develop 285938179, exit 0 (76 s); linter markdown, linter cspell, linter lychee exit 0; frontmatter-validator --all with the same repository-wide counts as develop (19 errors, 4 warnings on unrelated specs, re-measured at develop in the same run); validate-audit-record.py --pr-number 2486 --base 285938179 over the live review comments: 1 row, 7 log entries, 0 failures.

Ready for review.

@josecelano josecelano self-assigned this Oct 9, 2026

@josecelano josecelano left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review of the round against the merge gate in docs/discussions/AGENTS.md.

Passes: scope limited to the eleven entries, two new topics, the cspell line and the audit file; no edit to the opening author's context, topic texts or Outcome; entries follow the template; Q1–Q9 entries and the A/B/C points match comment 6035743101 apart from B4; Context references (O4, the precedent key, "Code is not named", "not established") hold; commits verified; Docs Lint passes.

Inline: R1 is a gate-qualifying factual claim and should be fixed before merge; R2 and R4 are attribution/provenance points; R5 and R6 are non-blocking.

[Minor][R3] The PR description's verification claim does not hold at the head, and the merge tool copies it into history

contrib/dev-tools/git/github-merge.py (line 647) appends the PR description to the merge commit. The Verification section says "The sixteen points rendered whole are identical … The entries are unchanged since." B4 is one of those sixteen points, and its opening sentence was replaced by the F1 fix (authored 10:30 UTC, before the rebase onto the #2487 merge), so at the head B4 no longer matches the comment. Please correct the description (for example, "fifteen identical; B4's opening sentence revised for F1") before merge.


**`scope-by-content-not-presence` — Scope is bounded by content, not by presence.** A declaration names a model only where that model's generated text or code survives in the diff. Rendering and checking tools applied to the author's own content (spelling, grammar, formatting, translation of the author's own prose) and advisory use (exploration, review, planning) are excluded by definition. Under this rule the question "where do I declare my spell-checker" has the answer "nowhere, by rule", and the enumeration problem of `enumeration-has-no-boundary` does not arise.

**`project-automation-is-a-dependency` — Project automation is a dependency; personal tools are not.** A public process attracts provenance of its own accord: what the project's automation runs is visible in tracked bytes and changes only through a pull request, so a model that acts inside it can be named exactly where a personal tool cannot. The record's subject is not that a model was used but the choices it may make in that process, such as certifying a new tagged release; this rule proposes to pin such a model's identity so that a choice can be traced to it. An AI model that the project's own automation uses (the Copilot review handler, the orchestrated review lanes, any future agent in a workflow) is a dependency of the same kind: its identity is pinned in tracked bytes, changed only through a pull request, and checkable by a gate, in the way a lockfile pins a crate version. That record is an identity record, not a reproducibility guarantee, because a vendor may change a model under an unchanged identifier and a run is not reproducible even at a fixed one; the record states this limit. A contributor's personal tool is not a project dependency, so the project neither pins nor records it; a coarse declaration in the form used by the Linux kernel and Fedora, without a model name, remains optional for anyone who wishes to give one.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Suggestion][R5] "certifying a new tagged release" sits uneasily with humans-author-and-certify

Non-blocking, on substance rather than document quality: the revised entry gives "certifying a new tagged release" as an example of a choice a model may make in the project's process, while the humans-author-and-certify entry (line 331) reserves certification for humans. If the intent is that a model may propose or prepare a release that a human certifies, a different example (or "preparing") would keep the two entries consistent for the decision round.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I leave this one for the decision round: it is about substance rather than document quality, and your own round is the place to take it up.

No positions yet.
##### Q1 - Cameron Garnham (`da2ce7`), 2026-10-08, PR #2486

**`granularity-by-role` — Granularity (Q1).** Commit trailers for project automation under `project-automation-is-a-dependency`; the pull-request body and issue-local evidence for anything optional or role-specific; no mandatory per-commit record for individuals, by `personal-toolchains-are-private`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Nit][R6] Entry paragraphs are unwrapped

The new entries are single long lines (48 new lines over 100 columns), while the rest of this file wraps prose at 100 columns. MD013 is off, so lint passes; wrapping would keep the file consistent and make later per-line review threads and diffs easier. Same for docs/pr-reviews/pr-2486-review/PR-REVIEW.md. Minor related note: the title's [#2003] does not strictly match the AGENTS.md rule (only for the issue the PR implements or closes), but it follows the precedent of other rounds such as #2500, so no change requested.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I leave the entries as single-line paragraphs, the form I write them in, and the lint passes either way.

@josecelano

Copy link
Copy Markdown
Member

Thanks for the round, @da2ce7. I intend to merge it: under the merge gate this is about document quality, not agreement, and I will reply to the substance in my own round.

Before merging, could you address these from my review (#2486 (review))?

  • R1 (gate item): rephrase the opening of project-automation-is-a-dependency as what the rule would establish, since today CI uses floating toolchains and the agent profiles do not pin a model.
  • R2: note on the Q11 "First posted as" line that project-automation-is-a-dependency revises B4's opening sentence.
  • R3: correct the PR description's verification claim that all sixteen points are identical (B4 is not). The merge tool copies the description into the merge commit, so this cannot be fixed after merge.
  • R4: a reply is enough: say whether an AI assistant drafted any entry text, and add the disclosure if so.

R5 and R6 are non-blocking; take them or leave them.

…ason and note the B4 revision

I restate the opening sentence of my `project-automation-is-a-dependency` entry as the reason a project tracks what its automation uses, because the maintainer's review (R1) showed that the earlier sentence still read as a fact about today's repository.

I also note on the Q11 "First posted as" line that this entry revises `B4`'s opening sentence in this round, for review findings F1 and R1 (R2).
…orrust#2486

I record the maintainer's review of my round as R1 to R6: R1 and R2 fixed in this branch, R3 fixed in the pull-request description, R4 answered on its thread and left open, and R5 and R6 left for the reasons in their replies.

The reply URLs on R1, R2, R5 and R6 and the conversation response for R3 are placeholders until they are posted after the push.
… assistance is not disclosed

The maintainer asked, following his review 5469325284 (R4), for an explicit statement on each entry, so that a reader of the merged document sees it under the current round rule; the wording is his.

Each of my eleven entries now ends with it, after its "First posted as" line, so that line still describes only the text first posted.
…s the fix for R4

I record R4 as fixed: after the maintainer's follow-up on its thread, each of my eleven entries carries the statement in his wording, and my first answer on the thread stays in the row's concern.

The reply on R4's thread follows the push, so its Reply URL is a placeholder until it is posted.
@da2ce7

da2ce7 commented Oct 11, 2026

Copy link
Copy Markdown
Contributor Author

R3 from review 5469325284: I corrected the description at 11:21 UTC. Its Verification section now says that fifteen of the sixteen points rendered whole are identical and that B4's opening sentence was revised for review finding F1, and the section on this round's later commits records the R1 revision of the same sentence.

@josecelano

Copy link
Copy Markdown
Member

ACK 876dbf1

@josecelano
josecelano merged commit 7711ade into torrust:develop Oct 13, 2026
1 check passed
josecelano added a commit that referenced this pull request Oct 13, 2026
…specification

29b87d8 docs(pr-reviews): [#2278] record the PR #2431 round 2 reply URLs (Cameron Garnham)
cf4b1b3 docs(pr-reviews): [#2278] record the maintainer's round 2 on PR #2431 (Cameron Garnham)
452a5ca docs(issues): [#2278] restate the #2362 overlap on current develop (Cameron Garnham)
0242f53 docs(issues): [#2278] cover the PR #2484 items the matrix assigns to order 5 (Cameron Garnham)
066dd18 docs(issues): [#2278] cite the skill, template, matrix and EPIC by stable references (Cameron Garnham)
79613e7 docs(issues): [#2278] carry the PR #2494 review's deferred R2 and R4 into the order-5 change (Cameron Garnham)
a5130aa docs(pr-reviews): [#2278] add the PR #2431 review audit record (Cameron Garnham)
bed38f9 docs(issues): [#2278] record a comparison base per historical audit (Cameron Garnham)
355e9c4 docs(issues): [#2278] specify the pre-posting pass of the self-audit gate (Cameron Garnham)
b8d4397 docs(issues): [#2278] draft the order 5 self-audit gate specification (Cameron Garnham)

Pull request description:

  Related to #2278

  ## Summary

  This spec-only PR drafts EPIC #2278 order 5, "Add the author self-audit gate to `process-pr-review`". It contains planning documentation only: no skill, template, validator or workflow change.

  - **Draft specification for order 5.** New folder-style draft at `docs/issues/drafts/2278-author-self-audit-gate/ISSUE.md`. The order is docs only. It takes its content from the EPIC's retrospective-improvement matrix: the rows routed to the self-audit gate (run the validator when it can run and do its checks by hand otherwise, re-derive everything after a second re-raise and after context compaction, corrections re-derived from named Git or GitHub commands, command and result before narrative, no self-referential counts, one fix per commit, `git show --stat` on cited commits, log stamps from Git and GitHub timestamps), the F65 counterpart to "update progressively", the manual part of F55, and the two PR #2484 items the matrix assigns to order 5 (a manual sweep before each push to a reviewed branch, and anchoring each `Current-tree verification` to a heading or quoted phrase). Each gate pass is recorded as one append-only Processing Log entry naming the gated event and the commands run; no helper is a prerequisite and no per-finding field is added. Four commit points: the skill's gate section, template guidance, two checklist items, and the evidence with the EPIC row.
  - **Stable references.** The draft names matrix rows by F-ID or by source PR and a short quote, and cites the skill, the template, the validator and the EPIC by section heading or quote, so later merges into those files do not move its citations. The skill is at version 1.5 on `develop` `686a42f45`; order 5 bumps it from there, or from the version #2362 leaves.
  - **EPIC bookkeeping.** Progress Log lines record the draft and the carried review items; row 5 keeps its `TODO` status and placeholder path until the issue exists.

  ## Requested Maintainer Decisions

  The maintainer agreed with the draft's proposed answers to questions 2 to 5 in review 5469277375; question 1 waits on the restated #2362 overlap below.

  1. Sequencing with #2362 (pending confirmation). Re-derived by quote on `develop` `686a42f45`, #2362 rewrites, in the skill, Workflow step 7's superseded-thread sentence, step 8 ("Consolidate review bodies"), the Detail-Entry Fields sentence on `FIXED` resolution references, and the Completion Checklist item on consolidated responses; in the template, the Status Values bullet on outdated threads, the `Resolution reference` placeholder and the guidance paragraph after it, and the Completion Rules bullets on outdated threads, consolidated responses and citing a fix. This order rewrites none of those passages, so no sentence is changed by both. Both edit three of the same sections (Workflow step 7, the Completion Checklist, and the template guidance beside Finding Details), where this order inserts next to #2362's passages, and both bump the skill version. The rule for a fix outside the tree, already on `develop`, is the text #2362's F5 and F6 wording starts from. Which lands first? The second rebases over the first's text in those three sections and takes the next skill version.
  2. The copied `## Completion Rules` section carries no gate bullet, because every new record would copy it and order 8 would byte-diff it. Agreed as proposed.
  3. One gate pass may precede several replies posted together when it covers every replied row. Agreed as proposed.
  4. F75 (`RE_RAISE_OF` does not say whose finding ID it takes) keeps its wording with order 8, where the register places it. Agreed as proposed.
  5. The EPIC's order-10 row lists "F55 as a self-audit step" while the matrix's F55 row places the manual step in T2; the draft keeps it here in its own commit so it can move unchanged. Agreed as proposed.
  6. On approval, the GitHub issue is created, the draft moves to `docs/issues/open/` with its number, and row 5 links to it.

  ## Files Touched

  - `docs/issues/drafts/2278-author-self-audit-gate/ISSUE.md` (new)
  - `docs/issues/open/2278-2003-strengthen-pr-review-author-self-audit/EPIC.md` (one Progress Log line for the draft; with the carry commit, the References line, a second Progress Log line and the frontmatter stamp)
  - `docs/issues/open/2278-2003-strengthen-pr-review-author-self-audit/retrospective-improvement-matrix.md` (the carry commit: one Disposition cell and the frontmatter stamp)
  - `docs/pr-reviews/pr-2431-review/PR-REVIEW.md` (new: the review audit record, rounds 1 and 2)

  ## Rebase, carried items and round 2

  PR #2494 merged into `develop` at `686a42f45` and also changed the #2278 EPIC, so this branch was rebased onto it; every other file merged cleanly. The EPIC conflict is resolved by keeping both sides: PR #2494's changes, including its two 2026-10-08 Progress Log entries, and this branch's 2026-10-03 entry for the draft, placed before them so the log stays chronological. `docs(issues): [#2278] carry the PR #2494 review's deferred R2 and R4 into the order-5 change` applies the two non-blocking findings that review 5467975631 deferred to this change: the References line drops the clause on when the PR #2484 retrospective reaches `develop`, and the PR #2484 sweep row's Disposition reads "Adopt (manual sweep); Defer (audit-body tool check); Out of scope (tree-wide tool checks)". Review 5469277375 is answered by `docs(issues): [#2278] cite the skill, template, matrix and EPIC by stable references` (F3, F4), `docs(issues): [#2278] restate the #2362 overlap on current develop` (F5) and this description (F6). `docs(issues): [#2278] cover the PR #2484 items the matrix assigns to order 5` adds the two items the matrix has assigned to this order since PR #2494, and `docs(pr-reviews): [#2278] record the maintainer's round 2 on PR #2431` records the round. After PR #2434 merged, the branch was rebased again, onto `develop` `f960c78d7`; its ten commits keep their content, and the #2278 EPIC conflict is resolved as the maintainer asked.

  ## Merge order

  PR #2434 merged into `develop` at `f960c78d7`, and this branch is rebased onto it. The rebase touched only the #2278 EPIC's frontmatter stamp and the position of one Progress Log entry, resolved as the maintainer asked: both sides' entries are kept, this branch's 2026-10-03 17:09 entry sits before `develop`'s 2026-10-04 19:18 entry, and `last-updated-utc` stays "2026-10-09 11:16", the stamp of the merged log's latest entry. PR #2486 then merged into `develop` at `7711ade56`, and this branch is rebased onto it at the maintainer's request; no file conflicted, so every commit is unchanged in content (`git range-diff` against `284095128`: 10 commits equal).

  ## Validation

  At this head:

  In a Linux container with the workspace nightly toolchain, at the rebased head `29b87d8ef`, base `develop` `7711ade56` (the merge base): pre-commit profile gate exit 0 (79 s); `linter markdown`, `linter cspell`, `linter lychee` exit 0; `frontmatter-validator --all` 19 errors / 4 warnings at the head and 19 / 4 at `develop` re-measured; `validate-audit-record.py --pr-number 2431` against the review comments captured after the round-2 replies were posted: 6 rows, 12 log entries, 0 failures; `git range-diff` against `284095128` shows all 10 commits equal (the previous rebase's range-diff against `7b7348dbf`: 8 equal, 2 differing only in the resolved EPIC hunks).

ACKs for top commit:
  josecelano:
    ACK 29b87d8

Tree-SHA512: fe6f791a4761f4b835d1c8c44df3e605182301606c9e6226b3f31b65f60eaa614ad210f881193d50f895420d6f7305a1df27092a3932661dbb7a59850756dd20
josecelano added a commit to josecelano/torrust-tracker that referenced this pull request Oct 13, 2026
…enance in commits

Add my entries under Q1 and Q11, after Cameron's round from PR torrust#2486,
and open Q12 on AI-assistance disclosure in discussion rounds.

- Q1: agree that personal tools need no declaration, and ask that
  agent-made commits driven by this repository's agents and skills
  still carry a model record.
- Q11: accept four of Cameron's principles and propose an amendment
  to project-automation-is-a-dependency that treats such commits as
  project automation, with the trailer written by the agent.
- Q12: keep disclosure for discussion entries, accepting an explicit
  "not disclosed" statement as compliant.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
josecelano added a commit that referenced this pull request Oct 13, 2026
…l provenance in commits

47324d9 docs(pr-reviews): [#2003] record the PR #2502 reply URLs (Jose Celano)
32cc0cd docs(pr-reviews): [#2003] add the PR #2502 review audit (Jose Celano)
1154b27 docs(discussions): [#2003] name the rounds convention and link issue #2473 in my Q12 entry (Jose Celano)
20a790b docs(discussions): [#2003] name PR #2502 in my round's entry headings (Jose Celano)
2aa84f3 docs(discussions): [#2003] add my reply round on AI model provenance in commits (Jose Celano)

Pull request description:

  ## Summary

  My reply round on the AI Model Provenance in Commits discussion, after Cameron's round in #2486. I add entries under Q1 and Q11 and open Q12.

  Related to #2003

  ## Changes

  Two files. `docs/discussions/2003-overhaul-guardrails-and-automation/20261007-ai-model-provenance-in-commits/README.md` receives only additions; no existing line is changed. `docs/pr-reviews/pr-2502-review/PR-REVIEW.md` is the audit record of this PR's review findings.

  - **Q1 entry:** agrees that personal tools need no declaration, and asks that commits made by an AI agent driven by this repository's own agents and skills still carry a model record, since the tracking and analytics purposes cannot be met by optional declarations.
  - **Q11 entry:** accepts `humans-author-and-certify`, `tool-record-not-authorship`, `scope-by-content-not-presence` and `declared-not-detected`, and proposes one amendment to `project-automation-is-a-dependency`: such agent-made commits count as project automation, with the trailer written by the agent from the harness's model identifier, or `unknown`. It ends with a question for the decision owner.
  - **Q12, new topic and entry:** whether the AI-assistance disclosure rule for discussion entries should follow the commit-provenance Outcome. My position: keep it, and accept an explicit "not disclosed" statement as compliant; a change to the round rules belongs to `docs/discussions/AGENTS.md`.

  A second commit adds `PR #2502` to the three entry headings once the PR number was known, as the template asks.

  ## AI assistance

  The entries were drafted with an AI assistant using the Copilot SDK in VS Code (`claude-opus-5.5`) and reviewed and adopted by me; each entry says so.

  ## Verification

  - `./contrib/dev-tools/git/hooks/pre-commit.sh`: all 9 steps pass, including `linter all` (Markdown, cspell, lychee anchors to Cameron's Q1 and Q11 entries).
  - Pre-push suite passed on push.

  ## After review round 1

  Cameron's review 5503154527 approved `99107d94f`; Copilot's review 5503111347 left two findings. The branch was then rebased onto `develop` `c7aeaf46c` without conflicts, and:

  - `docs(discussions): [#2003] name the rounds convention and link issue #2473 in my Q12 entry`: fixes Cameron's suggestion (audit F3) and Copilot's link finding (F2) in one sentence of the Q12 entry.
  - Copilot's description finding (F1) was already fixed by the description edit at 11:41 UTC, before that review.
  - `docs(pr-reviews): [#2003] add the PR #2502 review audit` and `docs(pr-reviews): [#2003] record the PR #2502 reply URLs`: the audit record; `validate-audit-record.py --pr-number 2502` reports 3 rows, 0 failures. All three threads are replied to and resolved.

  The pre-commit gate passed before each commit, and the pre-push suite passed on each push.

ACKs for top commit:
  josecelano:
    ACK 47324d9

Tree-SHA512: c8d3ac3ce8ac8bd857744df4d5e906747c8cf8f8011539ff3740837f49ed214dbf7845407818dd60d7cb7571cbbc97e29535f65a3bf0c0da6780c63a4cf61f0a
josecelano added a commit that referenced this pull request Oct 13, 2026
…ter the hand-off

27ddb0a docs(issues): [#2003] describe the register's index as five comments at its 2026-10-11 revision (Cameron Garnham)
48a5d0e docs(issues): [#2003] record the provenance rounds and the rebase, and drop the index version (Cameron Garnham)
3ffa0f5 docs(pr-reviews): [#2003] record the PR #2366 reply URLs (Cameron Garnham)
2e27966 docs(pr-reviews): [#2003] add the PR #2366 review audit (Cameron Garnham)
5ae74fb docs(issues): [#2003] refresh the friction register section and the checkpoint range (Cameron Garnham)
7356602 docs(issues): [#2003] record the PR #2484 retrospective dispositions (Cameron Garnham)
914f8ae docs(issues): [#2003] follow the prose-tests draft's placement under the EPIC (Cameron Garnham)
3fa09ac docs(issues): [#2003] record the discussion outcomes on the EPIC (Cameron Garnham)
20c2d33 docs(issues): [#2003] place the two draft specifications and record the #2375 scheduling (Cameron Garnham)
f95f26d docs(issues): [#2003] overhaul the EPIC specification after the hand-off (Cameron Garnham)

Pull request description:

  ## Summary

  Overhauls the EPIC #2003 specification so the file carries what the issue's comment thread established since July, and hands the EPIC to its new owner. Ten commits: six change the EPIC, the seventh adds this pull request's review audit record, the eighth records the reply URLs in it, the ninth records what the rebase onto current `develop` brought, and the tenth describes the register's index as the five comments it now spans. The GitHub issue body mirrors the EPIC under the Issue Body Mirror rule in its Verification Plan and is re-derived from this head (see Validation).

  Related to #2003

  ## Files touched

  - `docs/issues/open/2003-overhaul-guardrails-and-automation/EPIC.md` (commits 1 to 6, 9 and 10)
  - `docs/pr-reviews/pr-2366-review/PR-REVIEW.md` (commit 7, new)

  ## First commit: the overhaul after the hand-off

  `docs(issues): [#2003] overhaul the EPIC specification after the hand-off`

  The GitHub issue body was updated first (2026-09-28 16:39 UTC) and mirrored this file exactly; 42 of the issue's 46 comments were then minimized because the text carries them, and only the friction register index (two comments at the time) and the ownership record stayed visible.

  What the revision adds: an owner line; the Subissues table through order 13 in the template's columns (statuses, notes, the two child EPICs, #2347 and #2360); the order-12 close-out list; the follow-up owners created by #2347; the five undecided improvement candidates from the #2347 retrospective; a "Decisions Recorded on This EPIC" section (interim formatter, author-side register items to #2278, semantic labels, ownership); a "Friction Register" section with the labelling rule, the closed F series, the disposition precedence, the in-place filing rule and the per-group counts of 2026-09-28; the findings without an owning subissue; dated progress-log entries; an "Issue Body Mirror" rule under Verification Plan; four new risks; and reference lines for the index, the ownership record and the inventory measurements. Sections that were already current are unchanged apart from reflowing each paragraph, list item and table row onto one line.

  Frontmatter: `epic-owner` is `da2ce7`; `status` stays `planned`; `last-updated-utc` is the quoted UTC minute of the last edit and equals the last progress-log entry; the semantic links gain `process-pr-review` and the child-EPIC, #2347 and schema artifacts.

  ## Second commit: the draft specifications and the #2375 scheduling

  `docs(issues): [#2003] place the two draft specifications and record the #2375 scheduling`

  Places the two draft specifications that landed on `develop` (the AI-agent memories draft and the AI-harness workspace draft) under a new "Drafts Awaiting Issues" subsection, records the #2375 scheduling position in its row, and adds the placement decision and a progress-log line.

  ## Third commit: the discussion outcomes

  `docs(issues): [#2003] record the discussion outcomes on the EPIC`

  After PR #2428 merged the three design discussions, records under `Decisions Recorded on This EPIC` the goals-and-boundaries decisions (the four-aspect frame, the gates, contract versus technique, coordination claims, copies of GitHub state, the discussions convention) and the four specifications-and-rationale answers as revised in review round 4, each linking its Outcome section by path and naming the review that holds it, with a Progress Log entry and the update stamp. The parts that belong to #2264 and #2278 are recorded in PR #2434.

  ## Fourth commit: the prose-tests draft's placement

  `docs(issues): [#2003] follow the prose-tests draft's placement under the EPIC`

  Follows the prose-tests ADR draft's placement under this EPIC, merged by PR #2437. The specifications-and-rationale decision links the draft at `docs/issues/drafts/2003-adopt-prose-tests-as-executable-specification/ISSUE.md`, and Drafts Awaiting Issues lists it beside the memories and harness-workspace drafts, under the Scope exception until its issue is created.

  ## Fifth commit: the PR #2484 retrospective dispositions

  `docs(issues): [#2003] record the PR #2484 retrospective dispositions`

  The PR #2484 review retrospective asks this EPIC's owner to decide which of its six proposals enter this EPIC or #2278. A Friction Register paragraph records where each lands: items 1 to 3 in #2278's improvement matrix (orders 5, 8 and 10, added by PR #2494); item 4 (one stamp per event in spec progress logs) on `issue-template-log-correction-rule-unstated`; item 5 (a step for restructuring a spec under review) on `create-issue-issue-to-epic-conversion-unstated`; item 6 (one session per pull-request branch) as a new label against `docs/agents/orchestration.md`; and item 1's tree-wide path sweep and line-width check on `linter-path-citations-unchecked` and `write-markdown-docs-line-wrap-rule-unstated`. A Progress Log entry stamped 2026-10-08 16:50 UTC records the triage, and `last-updated-utc` matches it.

  ## Sixth commit: the friction register section and the checkpoint range

  `docs(issues): [#2003] refresh the friction register section and the checkpoint range`

  Answers R1 and R2 of review 5468071770:

  - The Friction Register describes the register's index as the four comments it now spans: at index v31 (2026-10-08 13:31 UTC) they hold 12 artifact groups and 238 labels, 236 frictions and two CI findings, with a bullet per part naming its groups, and part 3 carries the live counts. The bullet on the closed F series points to the former-number map in part 3.
  - The counts table of 2026-09-28 is kept as a dated snapshot rather than refreshed, because a stamped copy of GitHub state stays true as later batches change the counts; its caption says so and points to part 3, and the clusters sentence speaks of that revision.
  - The introduction no longer carries a friction count, for the same reason.
  - The Delivery Strategy and the Workflow Checkpoints drop the "orders 1–14" range, so neither goes stale with the next Subissues row.
  - A Progress Log entry records the round, and `last-updated-utc` matches it.

  ## Seventh commit: the review audit

  `docs(pr-reviews): [#2003] add the PR #2366 review audit`

  Adds `docs/pr-reviews/pr-2366-review/PR-REVIEW.md` from the repository's audit template: R1 (Major), R2 (Minor), R3 (Minor) and R4 (Nit) of review 5468071770, each with its source thread, concern, solution, current-tree verification and resolution reference, and a Processing Log. R1 and R2 are fixed by the sixth commit; R3 needs no change, as the Merge order below explains; R4 is answered by this description.

  ## Eighth commit: the reply URLs

  `docs(pr-reviews): [#2003] record the PR #2366 reply URLs`: the audit record's four Reply URL fields, and the Resolution reference of R3 and R4, name the posted replies on the four threads, which are resolved.

  ## Ninth commit: the provenance rounds, the rebase and the index revision

  `docs(issues): [#2003] record the provenance rounds and the rebase, and drop the index version`

  After the rebase onto `develop` `5d05fefdd`, the 185 commits that arrived were checked against every section of the EPIC. Two of the merged pull requests are rounds of the AI-model-provenance discussion under this EPIC: PR #2486 (the decision owner's round on Q1 to Q11) and PR #2502 (the opening author's reply on Q1 and Q11 with a new Q12). Its Outcome is pending, so nothing enters Decisions Recorded on This EPIC, and the EPIC lists discussions only through their recorded Outcomes. The other merged work changes no fact the EPIC states: every path it names still resolves, and the subissue rows, drafts, follow-up owners and open findings hold as written. A Progress Log entry records the rebase and the two rounds, and `last-updated-utc` matches it. The Friction Register names the index revision by its timestamp alone, as review 5505015377 suggests, because no index comment carries a version number; the 2026-10-09 log entry that mentions the version stays as written.

  ## Tenth commit: the register's index as five comments

  `docs(issues): [#2003] describe the register's index as five comments at its 2026-10-11 revision`

  Batch 32 laid the register's index out in five comments on 2026-10-11 at 09:08 UTC ([comment 6107435063](#2003 (comment))). The Friction Register's stamped state line now describes that revision: five comments holding 13 artifact groups and 255 labels, 253 frictions and two CI findings, counted from the five comments' bodies. Each part's bullet names the groups it holds now, with a new bullet for part 5 (the hooks, linters and maintenance skills, and the archiving skill `cleanup-completed-issues`). References links all five parts, and a Progress Log entry records the change with `last-updated-utc` matching it.

  ## Merge order

  PR #2494 merged on 2026-10-09 at 11:09 UTC as `686a42f45`, so the Friction Register paragraph saying the PR #2484 retrospective's six proposals are dispositioned in #2278's improvement matrix is true on `develop`.

  **Rebase.** After review 5505015377 approved this pull request at `5dd98ecd0`, the branch was 185 commits behind `develop`; at the reviewer's request it was rebased onto `develop` `5d05fefdd` with no conflict, and `git range-diff` shows all eight commits equal. The ninth commit records what the rebase brought.

  ## Validation

  In a Linux container with the workspace nightly toolchain, at the fixes head `cc6dee1e3` and again at the reply-URL head `5dd98ecd0`, base `1d116fbfa` (this branch's merge base with `develop`): pre-commit profile gate exit 0 (76 s and 130 s); `linter markdown`, `linter cspell`, `linter lychee` exit 0; `frontmatter-validator --all` 19 errors / 4 warnings at each head and 19 / 4 at the base re-measured; `validate-audit-record.py --pr-number 2366` at `5dd98ecd0`, against the review comments captured after the replies were posted: 4 rows, 3 log entries, 0 failures (at `cc6dee1e3` the only failures were the placeholder Reply URL and Resolution reference fields then pending).

  The issue body was re-derived from this head by the Issue Body Mirror rule (drop the frontmatter, the skill-link marker and the title line, keep the rest byte for byte) and compared with the live body: the only differences are the sixth commit's changes below the frontmatter, nine lines changed and three added (the introduction, the Friction Register paragraph and its four index bullets, two of them new, the F-series bullet, the counts caption, the clusters sentence, the Delivery Strategy sentence, the checkpoint line and the new Progress Log entry). The live body was replaced by the derived text on 2026-10-09 10:43 UTC.

  At the new head, base `develop` `5d05fefdd`:

  In a Linux container with the workspace nightly toolchain, at the rebased head `27ddb0ab6`, base `develop` `5d05fefdd` (the merge base): pre-commit profile gate exit 0 (76 s); `linter markdown`, `linter cspell`, `linter lychee` exit 0; `frontmatter-validator --all` 19 errors / 4 warnings at the head and the same at `develop` re-measured; `validate-audit-record.py --pr-number 2366` against the review comments captured on 2026-10-13: 4 rows, 3 log entries, 0 failures; `git merge-tree` against `develop` clean; `git range-diff` against `5dd98ecd0` shows the eight earlier commits equal.

  The issue body was re-derived from the new head by the Issue Body Mirror rule and compared with the live body, last edited on 2026-10-11. The only differences are the ninth and tenth commits' changes below the frontmatter (the Friction Register sentence and its part bullets, the References line, and the two new Progress Log entries) and one trailing blank line that the live body carries and the rule does not produce.

ACKs for top commit:
  josecelano:
    ACK 27ddb0a

Tree-SHA512: a7b1c468c7e89794c638ef235dd44c28e6c96b5fe0dc5cfd48c144c0423c04072b466f9f0f27a40fe6dfa065ab0ae315e7004c7879ae73c92b2cc0fe54b96eb0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants