From ef37765941ef694fe60a5522aaef4181a1ec7b16 Mon Sep 17 00:00:00 2001 From: ABZerra <95617524+ABZerra@users.noreply.github.com> Date: Fri, 16 Oct 2026 16:35:23 +0100 Subject: [PATCH 1/2] Allow independent review by any eligible invited team member --- .github/CODEOWNERS | 2 -- AGENTS.md | 2 +- CONTRIBUTING.md | 2 +- README.md | 2 +- SETUP.md | 16 ++++++++-------- checks/README.md | 2 +- 6 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 5334f58..0000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Backup intentionally pending. Primary-authored changes wait for an eligible independent owner. -* @ABZerra diff --git a/AGENTS.md b/AGENTS.md index b452fdb..8fa0e6f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,6 +24,6 @@ If PR submission is unavailable, disclose it and give a concrete handoff: curren ## Review and maintenance -One eligible independent human code-owner approval and the three required checks permit auto-merge. The primary normally reviews; the backup reviews primary-authored changes and can review when the primary is unavailable. Never self-approve, use AI acting through the author account as independent approval, or bypass waiting for an eligible reviewer. File changes invalidate approval; comments alone do not. Report open PRs as pending, not published. AI review is optional. +One eligible independent human team-member approval and the three required checks permit auto-merge. The team consists of people invited to this repository whose invitation is accepted and whose effective permissions allow their approval to satisfy GitHub's required-review rule (write or higher under the standard roles). Any such team member may approve someone else's change; no designated primary approver or backup is required. Public readers and pending invitations do not qualify. Never self-approve, use AI acting through the author account as independent approval, or bypass waiting for an eligible reviewer. File changes invalidate approval; comments alone do not. Report open PRs as pending, not published. AI review is optional. Normal intake must not change instructions, CI, or approvers to accommodate a submission. Such maintenance and starter upgrades require an explicit owner request and a separate PR recording requester and authorized scope. The reviewer verifies that request at the existing approval checkpoint under existing rules. Preserve project knowledge, original evidence, and local adaptations; record selective adoption accurately. No automatic sync, schedule, or extra authorization gate. GitHub setting changes require authorized application and effective verification; merging configuration files is insufficient. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 515fbc6..07819a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -47,7 +47,7 @@ python3 checks/validate.py --root . --category document-status --format text Exactly `curator/internal-references`, `curator/evidence-provenance`, and `curator/document-status` are required documentation checks. Evidence relevance, wording, duplication, and unreachable external links are advisory findings, but a human reviewer can request changes. Passing metadata checks does not prove a claim true. AI assistance is optional; no AI sign-off or fourth gate is required. -Request the primary owner's review, or the backup for primary-authored work or primary unavailability. One eligible independent human code-owner approval suffices; nobody self-approves and an AI using an owner's account is not independent human review. Without an eligible reviewer, the PR waits. Enable native auto-merge for this PR once authorized submission is available; repository-level enablement alone is insufficient. File changes invalidate approval and rerun checks; comments alone do not. Valid approval and passing checks authorize publication without a second manual confirmation. +Request review from any invited team member with accepted repository access and effective write permission or higher. One eligible independent human approval suffices; no designated primary approver or backup is required. Nobody self-approves and an AI using the author's account is not independent human review. Public readers and pending invitations do not qualify. Without an eligible reviewer, the PR waits. Enable native auto-merge for this PR once authorized submission is available; repository-level enablement alone is insufficient. File changes invalidate approval and rerun checks; comments alone do not. Valid approval and passing checks authorize publication without a second manual confirmation. If native access cannot submit a PR, provide a handoff containing the current statement and source, proposed change, supporting evidence, unresolved questions, and related open PR if known. Say that submission is pending. Cowork PR support is unverified; a handoff does not demonstrate direct submission and must not silently become a Claude Code-only requirement. diff --git a/README.md b/README.md index a066602..fc80776 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Status: current Curator is a reusable starter for evidence-backed project knowledge. Each project gets an independent repository, separate from production code, with readable explanations, traceable sources, and one maintained home per topic. -**Initial starter publication:** [subvisual/curator](https://github.com/subvisual/curator), authorized on 16 October 2026. The owner explicitly waived independent human seed review once for this initial snapshot, following independent AI review and local verification. This exception does not apply to future changes. Primary approver `ABZerra` is the current code owner; the backup remains intentionally pending, so primary-authored changes must wait for an eligible independent owner. Native settings must be verified separately; live review/merge behavior and Cowork PR submission remain unverified. License selection is deferred; public visibility alone does not grant a general reuse license. +**Initial starter publication:** [subvisual/curator](https://github.com/subvisual/curator), authorized on 16 October 2026. The owner explicitly waived independent human seed review once for this initial snapshot, following independent AI review and local verification. This exception does not apply to future changes. Any invited team member with accepted access and effective write permission or higher may approve someone else's change. No designated primary approver or backup is required; an author still needs independent human approval. Native settings must be verified separately; live review/merge behavior and Cowork PR submission remain unverified. License selection is deferred; public visibility alone does not grant a general reuse license. ## Start here diff --git a/SETUP.md b/SETUP.md index 834311d..7e33380 100644 --- a/SETUP.md +++ b/SETUP.md @@ -6,22 +6,22 @@ This procedure prepares an independent project knowledge repository. Local start ## A. Establish the repository from sources -1. Record the destination (personal account or organization), project purpose, intended readers, primary human approver, backup, and contributor access. Prefer an organization for teams. Ask only for missing information. Projects are private by default; public visibility needs the project's explicit decision. All repository readers must also be able to access retained external originals. -2. Verify the destination's plan supports required PRs, eligible code-owner review, required checks, stale-approval dismissal, strict branch freshness, and auto-merge for the chosen visibility. If an upgrade is needed, explain it and leave setup incomplete; do not weaken controls or make a project public as a workaround. Check current [GitHub ruleset availability](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets) against the actual account. +1. Record the destination (personal account or organization), project purpose, intended readers, invited team members and their effective contributor/reviewer access. Prefer an organization for teams. Ask only for missing information. Projects are private by default; public visibility needs the project's explicit decision. All repository readers must also be able to access retained external originals. +2. Verify the destination's plan supports required PRs, eligible independent team-member review, required checks, stale-approval dismissal, strict branch freshness, and auto-merge for the chosen visibility. If an upgrade is needed, explain it and leave setup incomplete; do not weaken controls or make a project public as a workaround. Check current [GitHub ruleset availability](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets) against the actual account. 3. After external setup is authorized, create an independent repository from the reviewed starter, using `main` as the accepted branch. Inspect the initial seed before it is trusted: an independent eligible human must review the seed, including workflows and validators, before privileged execution or publication of accepted project knowledge. A first commit is not proof of reviewed provenance. If the account cannot support an independently reviewed bootstrap, stop external setup with a concrete limitation rather than self-approving or bypassing review. 4. Record the verified starter source repository, commit, and release in `.curator/origin.json`, with project kind and an accurate adoption record. Do not invent a published release for this unreleased local starter. Preserve local adaptations and the original source identity for later selective upgrades. 5. Apply and verify the native controls below. Copying a template, CODEOWNERS, workflow, or policy file does not apply GitHub settings. Leave setup incomplete until the effective controls are confirmed. 6. Inspect supplied documents, notes, links, and accessible originals first. Preserve evidence using [CONTRIBUTING.md](CONTRIBUTING.md). Identify coherent topics and ask only about meaningful gaps or conflicts; use an interview when sources are sparse. Replace the template index with useful supported explanations and explicit unknowns, rather than empty folders or invented facts. -7. Open the initial documentation PR. If the primary authored it, the backup reviews. Enable auto-merge for the PR; passing required checks and valid independent human approval publish the knowledge. No eligible reviewer means waiting, not a timeout bypass. +7. Open the initial documentation PR. Any eligible invited team member other than the author may review. Enable auto-merge for the PR; passing required checks and valid independent human approval publish the knowledge. No eligible reviewer means waiting, not a timeout bypass. -For **Curator itself**, the public destination is [subvisual/curator](https://github.com/subvisual/curator), with description “Curator — a reusable starter for evidence-backed project knowledge.” Primary approver `ABZerra` is an active organization member with repository administrator access; the organization has the Team plan. On 16 October 2026 the owner explicitly authorized a one-time exception to independent human seed review for the initial starter publication after independent AI review and local validation. This is not a standing bootstrap bypass for adopters or later changes. The backup remains intentionally pending. CODEOWNERS lists only the verified primary until an eligible backup is established; future primary-authored changes cannot obtain independent code-owner approval during this gap. Required reviews, stale-approval dismissal, required checks, and administrator enforcement remain required. Contributor scope and live enforcement behavior remain unverified. License selection is deferred, with no default license. No first project is required. +For **Curator itself**, the public destination is [subvisual/curator](https://github.com/subvisual/curator), with description “Curator — a reusable starter for evidence-backed project knowledge.” Repository administrator `ABZerra` is an active organization member with repository administrator access; the organization has the Team plan. On 16 October 2026 the owner explicitly authorized a one-time exception to independent human seed review for the initial starter publication after independent AI review and local validation. This is not a standing bootstrap bypass for adopters or later changes. The owner subsequently replaced the designated primary/backup rule with approval by any eligible invited team member. Invitations must be accepted and the reviewer must have effective write permission or higher. No backup role is required, and authors cannot approve their own changes. Required reviews, stale-approval dismissal, required checks, and administrator enforcement remain required. Contributor scope and live enforcement behavior remain unverified. License selection is deferred, with no default license. No first project is required. ## Native review and merge configuration Use repository Settings and the account's supported native ruleset or branch-protection UI. Verify the effective state, including overlapping organization rules, rather than relying on a saved configuration screen. Both personal and organization destinations must satisfy the same outcomes. -1. In `.github/CODEOWNERS`, configure a single wildcard rule covering every file with the verified primary and backup accounts, both eligible with the required repository access. Use actual verified logins; do not activate sample identities. Listing two owners allows either to approve; it does not require two approvals or decide whether the primary is unavailable. Keep coverage for the CODEOWNERS file and workflow/check changes themselves. -2. In Settings → Rules → Rulesets (or the supported branch-protection equivalent), target `main`, activate enforcement, require pull requests and **one** approval, require code-owner review, and dismiss stale approvals after file/diff changes. Do not add a separate last-push approval requirement that would unintentionally demand a second reviewer. Comments alone must leave approval intact. +1. Invite the intended team and verify each reviewer's accepted access and effective write permission or higher. Public visibility and a pending invitation do not make someone an eligible reviewer. Do not grant access to unrelated people or silently elevate read-only collaborators. The team is repository-specific, not everyone in the organization. Inspect inherited organization and team grants: GitHub counts any qualifying write-access reviewer, so effective access must match the intended invited team. There is no designated primary/backup pair or maintained reviewer roster in CODEOWNERS. +2. In Settings → Rules → Rulesets (or the supported branch-protection equivalent), target `main`, activate enforcement, require pull requests and **one** independent approval, disable the designated code-owner review requirement, and dismiss stale approvals after file/diff changes. This lets any eligible invited team member approve someone else's change. Do not add a separate last-push approval requirement that would unintentionally demand a second reviewer. Comments alone must leave approval intact. Existing repositories adopt this through an owner-authorized maintenance PR; apply and read back the settings only after that change is reviewed. Removing CODEOWNERS alone does not configure the rule. 3. Require precisely these three documentation status contexts, selecting the expected GitHub App when the UI supports it: - `curator/internal-references` @@ -51,10 +51,10 @@ The following checks require observed evidence; publication alone does not mark | Area | Evidence required to mark verified | | --- | --- | -| Destination and access | Exact account/repository identity, visibility, qualifying plan, reader and contributor access; verified primary/backup eligibility | +| Destination and access | Exact account/repository identity, visibility, qualifying plan, reader and contributor access; verified invited-team reviewer eligibility | | Seed trust | Independent human review of the initial seed and workflow/check implementation before relying on it | | Effective protection | Active rules for `main`, no bypass, direct/force push and deletion restrictions, and administrative applicability | -| Review eligibility | One eligible code-owner approval suffices; author cannot approve; owner-authored work waits for backup | +| Review eligibility | One eligible invited team member's approval suffices; the author cannot approve their own change; no primary/backup roles | | Check enforcement | Exact three contexts, expected App binding where supported, all required; failed or missing context blocks merge | | Branch freshness | PR must be current with `main`; stale results do not permit merge after accepted-branch changes | | Approval lifetime | File changes dismiss approval and rerun checks; comments do not dismiss it | diff --git a/checks/README.md b/checks/README.md index be85d82..9cb7265 100644 --- a/checks/README.md +++ b/checks/README.md @@ -61,6 +61,6 @@ No parsing operation fetches external sources. The runner's GitHub API transport Bind required status contexts to the observed Actions app during [owner setup](../SETUP.md). That binding is not authentication of a unique workflow: trusted writers and administrators remain a governance boundary. Every workflow, check, instruction and ownership edit requires existing eligible human review and an explicitly requested maintenance PR. Proposed rules cannot authorize their own adoption. Test proposed validator code locally without privileged credentials; merge under the old validators. Use additive schema migrations when needed. -The [auto-merge workflow](../.github/workflows/enable-auto-merge.yml) only enables GitHub's native auto-merge; it neither approves nor directly merges. After verifying protections, enable repository variable `CURATOR_AUTOMERGE_ENABLED=true`. Until then the workflow is dormant. A denied mutation leaves an unsuccessful workflow run and a pending enablement action; an assistant must report that limitation, never promise automatic publication. It is not a fourth required documentation check. Repository settings and CODEOWNERS are not configured by these files. +The [auto-merge workflow](../.github/workflows/enable-auto-merge.yml) only enables GitHub's native auto-merge; it neither approves nor directly merges. After verifying protections, enable repository variable `CURATOR_AUTOMERGE_ENABLED=true`. Until then the workflow is dormant. A denied mutation leaves an unsuccessful workflow run and a pending enablement action; an assistant must report that limitation, never promise automatic publication. It is not a fourth required documentation check. Repository settings and collaborator permissions are not configured by these files. Action pins were resolved from public upstream tags: checkout v4.2.2 and setup-python v5.6.0. Parser dependencies are markdown-it-py 4.0.0 and mdurl 0.1.2, locked to downloaded wheel hashes. Dependency upgrades follow the same owner-requested maintenance workflow. From ad939a3c14f520fb07f3329ebd7af3d0d159e91b Mon Sep 17 00:00:00 2001 From: ABZerra <95617524+ABZerra@users.noreply.github.com> Date: Fri, 16 Oct 2026 17:09:54 +0100 Subject: [PATCH 2/2] Document verified Cowork folder setup and contribution --- AGENTS.md | 2 +- CONTRIBUTING.md | 2 +- README.md | 2 +- SETUP.md | 6 ++--- docs/cowork-setup.md | 58 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 docs/cowork-setup.md diff --git a/AGENTS.md b/AGENTS.md index b452fdb..4d004b9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,7 +20,7 @@ Follow [CONTRIBUTING.md](CONTRIBUTING.md). Clear requests to store or incorporat Keep originals byte-preserved with provenance; label extracts, translations, renderings, notes, and transcripts accurately. Maintain English explanations with one home per topic and nearby sources. Keep generated deliverables outside this repository. During artifact work, hand explicit capture requests to a separate documentation workflow using only relevant information, attribution, and context; do not claim an automatic new chat was created unless it was. -If PR submission is unavailable, disclose it and give a concrete handoff: current statement/source, proposed change, evidence, unresolved questions, and related proposal if known. Cowork PR support remains unverified. Do not silently substitute Claude Code, install mandatory skills, or build a connector/backend to fill the gap. +If PR submission is unavailable, disclose it and give a concrete handoff: current statement/source, proposed change, evidence, unresolved questions, and related proposal if known. Cowork contribution is verified for the specific [folder and host-credential route](docs/cowork-setup.md); verify access in the current environment. Do not silently substitute Claude Code, install mandatory skills, or build a connector/backend to fill the gap. ## Review and maintenance diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 515fbc6..4cefb73 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,7 +49,7 @@ Exactly `curator/internal-references`, `curator/evidence-provenance`, and `curat Request the primary owner's review, or the backup for primary-authored work or primary unavailability. One eligible independent human code-owner approval suffices; nobody self-approves and an AI using an owner's account is not independent human review. Without an eligible reviewer, the PR waits. Enable native auto-merge for this PR once authorized submission is available; repository-level enablement alone is insufficient. File changes invalidate approval and rerun checks; comments alone do not. Valid approval and passing checks authorize publication without a second manual confirmation. -If native access cannot submit a PR, provide a handoff containing the current statement and source, proposed change, supporting evidence, unresolved questions, and related open PR if known. Say that submission is pending. Cowork PR support is unverified; a handoff does not demonstrate direct submission and must not silently become a Claude Code-only requirement. +If native access cannot submit a PR, provide a handoff containing the current statement and source, proposed change, supporting evidence, unresolved questions, and related open PR if known. Say that submission is pending. The [verified Cowork route](docs/cowork-setup.md) uses an attached local folder, Desktop Commander and existing host GitHub credentials. Other environments still need verification; a handoff does not demonstrate direct submission and must not silently become a Claude Code-only requirement. For an unanswered question, offer a documentation-gap issue with established facts, unknowns, why it matters, and the relevant topic. Inspect duplicates and create it only after the reader accepts. Do not turn this into assignment or deadline tracking. diff --git a/README.md b/README.md index a066602..9ee4dfb 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Status: current Curator is a reusable starter for evidence-backed project knowledge. Each project gets an independent repository, separate from production code, with readable explanations, traceable sources, and one maintained home per topic. -**Initial starter publication:** [subvisual/curator](https://github.com/subvisual/curator), authorized on 16 October 2026. The owner explicitly waived independent human seed review once for this initial snapshot, following independent AI review and local verification. This exception does not apply to future changes. Primary approver `ABZerra` is the current code owner; the backup remains intentionally pending, so primary-authored changes must wait for an eligible independent owner. Native settings must be verified separately; live review/merge behavior and Cowork PR submission remain unverified. License selection is deferred; public visibility alone does not grant a general reuse license. +**Initial starter publication:** [subvisual/curator](https://github.com/subvisual/curator), authorized on 16 October 2026. The owner explicitly waived independent human seed review once for this initial snapshot, following independent AI review and local verification. This exception does not apply to future changes. Primary approver `ABZerra` is the current code owner; the backup remains intentionally pending, so primary-authored changes must wait for an eligible independent owner. Native settings must be verified separately; successful approved merge behavior remains unverified. The [Cowork setup record](docs/cowork-setup.md) documents the verified folder contribution route and its limits. License selection is deferred; public visibility alone does not grant a general reuse license. ## Start here diff --git a/SETUP.md b/SETUP.md index 834311d..8dce00a 100644 --- a/SETUP.md +++ b/SETUP.md @@ -39,11 +39,11 @@ Use [GitHub CODEOWNERS guidance](https://docs.github.com/en/repositories/managin Cowork is the minimum intended environment; Claude Code is also supported. Teammates may need repository access, folder or supported connector selection, and authentication once. Ordinary use should then be access-and-ask, with no mandatory skills or special commands. Reading access and contribution access are separate capabilities. -For Cowork, use the account's existing supported folder/project or native connection. Verify that shared instructions are actually available, relevant repository files can be read, and the accepted `main` SHA can be resolved and used for selective retrieval. A repository URL, successful folder opening, manual import, or ordinary Claude chat integration is not proof of automatic instruction loading, ongoing freshness, or PR capability. The thin `CLAUDE.md` import is for environments that support it; it does not establish Cowork behavior. +For Cowork, follow the [folder setup and verification record](docs/cowork-setup.md). On 16 October 2026, an isolated Claude desktop project demonstrated explicit instruction loading through saved project instructions, repeated remote-main resolution, and draft PR creation from its attached local checkout using Desktop Commander and existing host GitHub credentials. This verifies that specific route, not automatic `@AGENTS.md` expansion or write access from a folder attachment alone. -Bound account-specific verification to the authorized destination and capabilities: inspect available supported access, verify a selective read and current revision, and, only when separately authorized, use a real focused contribution to verify opening and reusing a PR. Record the actual account/surface, date, revision, result, and remaining limitation. Stop when the native path is unavailable or incompatible; do not build a connector, introduce a paid backend, or keep trying unrelated integrations. **Cowork PR support remains unverified.** Successful Claude Code operation does not substitute for a working Cowork path. +Bound each account's setup to the authorized repository. Verify instruction availability, selective reads at the accepted revision, and freshness before relying on answers. Contribution requires separate authorization and working credentials. Do not silently substitute Claude Code, build a connector, or introduce mandatory skills or a paid backend when the intended path fails. Local Claude Code CLI authentication and behavior remain independently unverified. -When PR submission is unavailable, provide the concrete contribution handoff from [CONTRIBUTING.md](CONTRIBUTING.md). When current revision access fails, answer from available material with its revision/date and explicit freshness limitation. Neither fallback is proof that the intended direct-submission or automatic-freshness behavior works. Do not overwrite a dirty checkout to refresh. +When PR submission is unavailable, provide the concrete contribution handoff from [CONTRIBUTING.md](CONTRIBUTING.md). When current revision access fails, answer from available material with its revision/date and explicit freshness limitation. Neither fallback proves direct submission or freshness. Never overwrite a dirty checkout to refresh. ## Effective verification record diff --git a/docs/cowork-setup.md b/docs/cowork-setup.md new file mode 100644 index 0000000..f96af11 --- /dev/null +++ b/docs/cowork-setup.md @@ -0,0 +1,58 @@ +# Cowork folder setup + +Status: current + +Use this procedure for an existing local Curator checkout in Claude desktop. It records the route verified on 16 October 2026: a dedicated Cowork project, an attached local folder, saved project instructions, and the installed Desktop Commander connector with authenticated Git and GitHub CLI on the host. It does not establish support for every Cowork account or version. See the [verification record](#verification-record) for evidence and limits. + +## Connect the intended folder + +1. Create or select a dedicated Claude project. For verification, use a new test session so existing drafts and unrelated conversations stay untouched. +2. Use the project's **Add folder** control to select only the intended checkout. A project context upload is not the same as live folder access. In the tested app, File → Open Folder routed to Code mode instead of this Cowork flow. +3. Review the native folder permission prompts. The test granted access for the session, leaving persistent permission unchecked. Folder access permits file operations; a read-only instruction is a behavioral constraint, not an OS permission boundary. Files used by the cloud session are processed by Anthropic. +4. Save the bootstrap below in the project's **Instructions**. Attach the folder when starting a fresh session; do not assume one session's attachment automatically applies to the next. + +## Save a bootstrap that reads the shared instructions + +The tested folder flow automatically supplied a staged `CLAUDE.md` containing `@AGENTS.md`, but did not expand that import. The fresh session did automatically receive saved project instructions and then explicitly read the repository files. Keep the shared policy in [AGENTS.md](../AGENTS.md); the bootstrap tells Cowork to retrieve it rather than maintaining a second policy copy. + +Suggested project instructions, adapted from the verified test: + +> Before answering a repository question, explicitly read AGENTS.md and the relevant entry points (README.md and docs/index.md) from the connected local repository. Do not assume the @AGENTS.md line in CLAUDE.md was expanded. Resolve the latest accepted remote main SHA for each question and read relevant files at that same SHA. Compare it with local HEAD and disclose any freshness limitation. Do not reset, pull over, or overwrite local changes. Treat staged uploads and unmerged PRs as potentially stale or proposed, not accepted main. Follow the repository instructions and explicit owner scope. Keep access within the attached repository and do not touch unrelated folders or drafts. Distinguish automatically supplied instructions from explicit file reads. + +For the initial read-only test, add: “No file edits, commits, pushes, PRs, approvals, merges, settings changes, or cloud repository attachments.” This was the saved test project's default; the owner later authorized a narrowly scoped contribution exception. For normal contributions, follow [CONTRIBUTING.md](../CONTRIBUTING.md) after an explicit capture request. The test exception does not authorize further writes. + +In a fresh session, ask Cowork to state its automatically supplied context before tools, then read the shared instructions and entry points explicitly. Have it report the remote main SHA, local HEAD and dirty state, and answer a small question with file citations. Repeat a question to check that it resolves the accepted revision again. Successful folder opening alone is not proof of this behavior. + +Use read-only Git queries such as `git ls-remote origin refs/heads/main` for the remote revision. If the accepted commit is locally available, retrieve files with `git show :`. Do not use local HEAD or a staged snapshot as accepted main without comparison. If a new remote commit is unavailable locally, use an authorized retrieval path that preserves existing work, or disclose the limitation; a successful `ls-remote` alone does not retrieve its files. + +## Contribute through the verified host route + +Reading a folder does not supply GitHub write credentials. The successful test used the already-installed Desktop Commander connector to run commands on the Mac hosting the attached checkout, with existing authenticated `git` and `gh`. It did not use a cloud clone, native cloud repository attachment, or a local Claude Code session. This connector is a prerequisite of the tested route, not a mandatory Curator dependency; another route needs its own verification. + +For an authorized contribution: + +1. Re-read AGENTS.md and CONTRIBUTING.md, resolve accepted main, inspect local changes and related open PRs, and preserve all unrelated work. If isolation cannot be achieved safely, stop with a concrete handoff. +2. Create a uniquely named branch from the accepted commit. Prepare only the requested changes and run the three validators using the pinned dependencies documented in [checks/README.md](../checks/README.md). Missing dependencies are not a passing result. +3. Use the host's existing GitHub authentication to commit, push the branch and open the focused PR. Do not copy host tokens to a cloud runtime or print credentials. Use a scoped commit identity if needed, rather than changing global Git configuration. If authorization is unavailable, report the blocked capability instead of substituting another environment silently. +4. Verify the PR URL, base/head SHAs, exact diff, required checks and review state. Report an open PR as pending, not published. Normal publication follows CONTRIBUTING.md and the effective review rules; AI acting through the author account is not independent human approval. + +For a separately authorized capability test, use a disposable Markdown fixture marked `Status: template`, explicitly require a **draft PR**, and leave auto-merge disabled. Do not approve or merge it. After the owner requests cleanup, close it unmerged, delete only its test branches and return the clean checkout to main. Preserve existing drafts throughout. + +## Verification record + +Observed by Codex while operating the owner's isolated Claude desktop Cowork project on 16 October 2026; command execution was performed by the Cowork agent. This is a documented verification, not a verbatim transcript. The tested accepted revision was `e4192e5a040185efb383d329f68175d9c7c92a45` in `subvisual/curator`. + +| Capability | Observed result and scope | +| --- | --- | +| Local reads | Cowork read repository instructions and relevant files through the attached checkout on the host. | +| Instruction loading | Saved project bootstrap loaded automatically in a fresh session; AGENTS.md was subsequently read explicitly. The staged CLAUDE.md import did not expand. | +| Freshness | Repeated remote-main resolution matched local HEAD. Cowork distinguished unmerged PR #3 from accepted main and disclosed the possible conflict between old docs and live settings. No advancing-main scenario was exercised. | +| Contribution | [Test PR #4](https://github.com/subvisual/curator/pull/4) was created from the local folder through Desktop Commander and host credentials. Head `19f9de2a02e38fa9c9f0a422b2b9c1016c32fe58` added only a seven-line disposable template. | +| Live checks and boundary | [GitHub Actions run](https://github.com/subvisual/curator/actions/runs/38928927315) passed all three required statuses. Codex independently verified draft state, review required, no auto-merge request and unchanged main. This was not a test of successful approved auto-merge. | +| Cleanup | PR #4 closed unmerged; remote/local test branches deleted; checkout returned clean to main. No existing drafts were modified. | + +The PR body's generated Claude Code footer does not identify the execution route: the observed contribution used Cowork's host connector. A separate cloud attachment test in PR #2 is not evidence for folder behavior. + +Still unverified: reuse/update of an existing PR through this folder route, refresh after accepted main advances, and independent local Claude Code CLI instruction/read/contribution behavior. The CLI was logged out at the last check. Automatic instruction import remains unsupported in this observed folder flow; keep the explicit bootstrap and verify again after relevant environment changes. + +This record changes no review policy or GitHub settings. [PR #3](https://github.com/subvisual/curator/pull/3) separately proposes the team-review documentation update; its unmerged text is not treated as accepted main here. Keep that governance change independently reviewable.