Skip to content

decisions: reconcile all areas - #3765

Merged
migmartri merged 6 commits into
chainloop-dev:mainfrom
migmartri:decisions-reconcile-2026-11-01
Nov 4, 2026
Merged

migmartri merged 6 commits into
chainloop-dev:mainfrom
migmartri:decisions-reconcile-2026-11-01

Conversation

@migmartri

@migmartri migmartri commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Adds docs/decisions/, the Current Decisions pages of this repository. Each page lists the design decisions of one functional area that hold today, with stable area-prefixed IDs, their deciders, the spec they come from, and what a check of the code found. The pages keep only choices that a reader of the code would likely get wrong. Smaller decisions, decisions whose reason the code already states, and decisions that a spec replaced while it was drafted stay in their specs and are counted on each page's "Not shown" line.

It also updates the Design Specs block of CLAUDE.md, so that agents read the decisions index before they change the behavior of an area.

Areas

Each area has a three-letter prefix, and its decision IDs count from 001. Area owners, please check your prefix.

  • Artifact CAS (CAS, owner @migmartri): CAS-001 to CAS-009. Existence cache store, location, tenant key, and fixed lifetime, credentials kept in process, and the browser download cache (Authorization header, existence check before 304). CAS-009 is recorded directly: the existence cache lifetime stays at 24 hours with no setting or off switch, which replaces issue-3543 D-007 and the settings of R-004.
  • Attestation Process (ATT, owner @migmartri): ATT-001 to ATT-004. Organization order with .chainloop.yml, the five commands that read it, one reader shared with Trace, and the API token check.
  • Authentication (AUT, owner @migmartri): AUT-001 to AUT-007. Handoff code exchange, S256 binding, code store with no token at rest, opt-in detection, legacy ?t= handling in the CLI, uniform exchange errors, and a gRPC-only exchange endpoint.
  • Service Operations (OPS, owner @migmartri): OPS-002 to OPS-005. Separate metrics and profiler ports, TLS on the shared endpoint, the HTTP port as the shared endpoint, and multiplexing in the server process. Non-Confirmed: OPS-001.
  • Chainloop Trace (TRC, owner @jiparis): TRC-001 to TRC-039. Spec capture, skills, transcript pointers, pasted images, local mode, the e2e matrix, line attribution, and the Pi and Codex providers. Non-Confirmed: TRC-019 and TRC-028.

Open conflicts

  • Service Operations: issue-3628-controlplane-http-dispatch D-003 (OPS-001) and issue-3628-single-endpoint D-020 disagree about whether the CAS gets a shared endpoint. Both keep the native gRPC transport. The code follows D-020. Proposed: a spec change that records D-020 as the replacement.
  • Authentication: AUT-004 and issue-3626 D-008 disagree about the download login. D-008 keeps it on the legacy callback, and the code requires a challenge for a /download/ callback. Proposed: a spec change that records the current download flow.
  • Chainloop Trace: issue-3515 D-009 (TRC-003) and issue-3569 D-004 (TRC-019) disagree about whether the agent captures pasted images. The instructions follow TRC-003. Proposed: a spec change that records the current rule.
  • Chainloop Trace: issue-3635 D-011 (TRC-028) plans a nightly e2e run, but no workflow runs the suite. Proposed: a spec change that drops the nightly run.

No conflict was on a page before this change, because the pages are new.

One point for the Trace owner: TRC-029 says that the e2e suite pins the agent versions. The suite does not install the agents. It only warns when the installed version is different, so the pin is not enforced.

Review

A check of the written text against the specs and the code added the conditions and limits of many entries: defaults, opt-in settings, error paths, filters, and scope words. Nobody has read the final text of these entries yet. Each area owner, please review the entries and the Language of your area.

Each area owner approves the area map entry and prefix, the key decision cut, and the Language section of their area.

AI disclosure: Claude Code assisted with this change. It ran the eng-adr reconcile, checked each decision and the written text against the code, and drafted the pages. A person approved the area map, the cut, the Language sections, the conflict proposals, and CAS-009.

Add docs/decisions with an index and one page each for Artifact CAS,
Attestation Process, Authentication, Service Operations, and Chainloop
Trace. The pages hold 59 current decisions (ADR-001 to ADR-063, with 4
Non-Confirmed) taken from the 19 specs in docs/specs, each checked
against the code, plus three open conflicts.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9
@chainloop-platform

chainloop-platform Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

PR validation — ✅ 3 passing

Status Policy Material Messages
✅ Passed pr-min-approvals pr-info -
✅ Passed pr-description-required pr-info -
✅ Passed pr-user-story-linked pr-info -

View attestation ↗

AI Session Checks — 🟡 60% · ⚠️ 1 failing

Avg score Sessions Failing policies Attribution Files Lines Total Duration
🟡 60% 1 ⚠️ 1 100% AI / 0% Human 7 +840 / -1 70h37m58s

🟡 60% — 100% AI — ⚠️ 1 policies failing

Oct 31, 2026 23:07 UTC · 70h37m58s · $71.21 · 1.7k in / 840.8k out · claude-code 2.1.316 (claude-opus-5-5)

View session details ↗

Change Summary

Adds an index and five area-prefixed Current Decisions pages, and updates repository guidance to consult them.

AI Session Overall Score

🟡 60% — Unsupported triage claims required correction; documentation checks do not establish the changed guidance works.

AI Session Analysis Breakdown

🟢 90% · scope-discipline

🟢 Changes add the five requested area pages and index without modifying runtime code or dependencies. · High Impact

🟡 78% · user-trust-signal

🟡 The user questioned the selection rationale and rule adherence before approving a corrected triage. · Low Severity

🟡 73% · verification

🟢 The final lint run inspected all six decision documents and reported zero hard violations. · High Impact

🟠 No captured run demonstrates the new decision-reading and spec-editing guidance in use, and the active user supplied no behavioral confirmation. · Medium Severity

💡 Exercise the changed guidance on a representative task and observe decision-page discovery before accepting the behavior change.

🟡 72% · context-and-planning

🟢 The opening supplied a structured reconciliation workflow covering collection, approval, code checks, clarity, and publication. · High Impact

🔴 35% · alignment

🔴 Incomplete source reading led to an unsupported claim that every retained decision satisfied the triage rules. · High Severity

💡 Read complete decision records and record each test result before claiming the selection satisfies the rules.

🟠 The assistant presented superseded decisions as an unresolved format choice, then admitted the existing rules already settled it. · Medium Severity

💡 Distinguish genuine user choices from outcomes already determined by the governing rules before asking for approval.

abstained · solution-quality

🟡 solution-quality not assessed — reviewer should confirm coverage · Low Severity


File Attribution

████████████████████ 100% AI / 0% Human

Status Attribution File Lines
created ai docs/decisions/chainloop-trace.md +367 / -0
created ai docs/decisions/artifact-cas.md +117 / -0
created ai docs/decisions/authentication.md +102 / -0
created ai docs/decisions/README.md +94 / -0
created ai docs/decisions/service-operations.md +82 / -0
created ai docs/decisions/attestation-process.md +77 / -0
modified ai CLAUDE.md +1 / -1

Policies (4, 1 failing)

Status Policy Material Messages
✅ Passed ai-config-ai-agents-allowed ai-coding-session-e31005 -
✅ Passed ai-config-no-dangerous-commands ai-coding-session-e31005 -
⚠️ Failed ai-config-no-secrets ai-coding-session-e31005
✅ Passed ai-config-mcp-servers-allowed ai-coding-session-e31005 -

Security Checks — ✅ 5 passing

✅ secret-scan

Status Policy Messages
✅ Passed secrets-detection -

✅ sast-scan

Status Policy Messages
✅ Passed owasp-top10-2025 -
✅ Passed sast -
✅ Passed cwe-top25 -
✅ Passed cwe-top26-40-cusp -
Scans not applied (3)
Scan Reason
vulnerability-scan no manifest/lockfile changed
github-actions-scan no workflow files changed
iac-scan no IaC files changed

View attestation ↗

Security context

✅ Nothing this change touches has a recorded security-fix history.

View in Chainloop ↗ · How this works ↗


Powered by Chainloop and Chainloop Trace

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 6 files

Reply with feedback, questions, or to request a fix.

View guided diff | Re-trigger cubic

Comment thread docs/decisions/service-operations.md Resolved
Comment thread docs/decisions/attestation-process.md Resolved
Comment thread docs/decisions/chainloop-trace.md Resolved
Comment thread docs/decisions/chainloop-trace.md Resolved
Comment thread docs/decisions/authentication.md Resolved
Comment thread docs/decisions/artifact-cas.md Resolved
Comment thread docs/decisions/README.md Resolved
Comment thread docs/decisions/README.md Resolved
Comment thread docs/decisions/authentication.md Resolved
Comment thread docs/decisions/chainloop-trace.md Resolved
Follow the new Current Decisions format: each area gets a three-letter
prefix (CAS, ATT, AUT, OPS, TRC) and its own ID sequence from 001, and
the pages use the new agent instructions comment. The IDs were not yet
merged or cited, so they are renumbered rather than kept.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9
Add the conditions and limits that the code shows (defaults, opt-in
settings, error paths, filters, and scope) to the entries and the
Language of each area. Move ATT-002 to Current decisions, narrow the
OPS-001 conflict, and add an Authentication conflict about the download
login. Point CLAUDE.md agents to the decisions index.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9
The existence cache lifetime stays at 24 hours with no setting and no
off switch. This replaces issue-3543 D-007 and the settings of R-004.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9
…wn counts

Scope CAS-005 to the HTTP download endpoint, AUT-006 to requests that
pass field validation, AUT-007 to a missing JSON/REST mapping, and the
Trace to CAS relationship to pushes. Count dispatch D-001 as shown,
because OPS-005 now cites it.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 7 files (changes from recent commits).

Requires human review: Auto-approval blocked because this review re-detected 1 unresolved issue already reported by Cubic.

View guided diff | Re-trigger cubic

Comment thread docs/decisions/README.md Resolved
Comment thread docs/decisions/attestation-process.md Resolved
Comment thread docs/decisions/chainloop-trace.md Resolved
Comment thread docs/decisions/service-operations.md Resolved
Comment thread docs/decisions/artifact-cas.md Resolved
Comment thread docs/decisions/chainloop-trace.md Resolved
Scope OPS-003 to the shared endpoint ingress, restate the CAS legacy
listener in the relationships, cite R-003 for ATT-002, and say that the
TRC-001 fallback is not built. Name replaced decisions in the Trace
Not shown line.

Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>

Chainloop-Trace-Sessions: e3100522-144f-4450-91f7-eed1cd2c29d9

@matiasinsaurralde matiasinsaurralde left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@migmartri
migmartri merged commit f388592 into chainloop-dev:main Nov 4, 2026
16 of 17 checks passed
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.

2 participants