Skip to content

feat: add M10 release readiness evidence - #3

Merged
Sythos merged 1 commit into
mainfrom
milestone/m10
Aug 23, 2026
Merged

feat: add M10 release readiness evidence#3
Sythos merged 1 commit into
mainfrom
milestone/m10

Conversation

@Sythos

@Sythos Sythos commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a deterministic Section 30 release-evidence contract and hardening review matrix
  • add the sanitized provider release audit command and operator documentation
  • extend package tests, repository layout, SPDX checks, and CI entry-point validation

Validation

  • npm test
  • npm run typecheck
  • GitHub Actions commit run 32646093192 (green)

The release decision remains conditional until external adapters and live deployment rehearsals are recorded.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 87f2c76f34

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +325 to +326
if (!/^[0-9a-f]{40,64}$/i.test(normalized.commitSha)) {
throw releaseError('commitSha must be a hexadecimal Git object identifier', 'INVALID_RELEASE_COMMIT');

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Verify that the release commit actually exists

An approved evidence object can retain the template's all-zero SHA, or use any arbitrary 40-character hexadecimal value, and still produce productionReady: true because this check validates only the string format. In the audit CLI's Git-checkout context, verify that the identifier resolves to the intended release commit; otherwise the resulting evidence cannot be tied to the code it claims to certify.

Useful? React with 👍 / 👎.

Comment on lines +132 to +135
function assertSafeReference(value, field) {
const reference = assertSafeText(value, field);
if (reference.includes('\\') || reference.split('/').includes('..')) {
throw releaseError(`${field} must be a repository-relative reference`, 'UNSAFE_RELEASE_REFERENCE');

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reject every absolute or URL evidence reference

For evidence supplied by an operator, this condition accepts values such as /etc/passwd, /tmp/private-output, and https://example.test/evidence as repository-relative references because none contains a backslash or ... Those values can then be returned by createReleaseEvidence, contrary to the documented promise that published evidence contains no absolute local paths; explicitly reject leading slashes and URI schemes rather than relying on the narrow workstation-path regex.

Useful? React with 👍 / 👎.

{ "id": "governance.roles-delegation", "status": "verified", "evidence": ["src/admin/rbac.test.mjs", "src/admin/delegation.test.mjs", "doc/rbac-admin-mfa.md"] },
{ "id": "governance.master-log-access", "status": "verified", "evidence": ["src/admin/rbac.test.mjs", "doc/rbac-admin-mfa.md"] },
{ "id": "governance.api-mcp-readonly", "status": "verified", "evidence": ["doc/api-and-mcp.md", "src/admin/admin-tools.test.mjs"] },
{ "id": "governance.future-features", "status": "verified", "evidence": ["GULOGULO.md#30", "doc/release-readiness.md#future"] },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Point verified checklist entries at resolvable evidence

In a clean checkout, this verified entry has no resolvable evidence: a repo-wide filename search shows that GULOGULO.md is absent, and doc/release-readiness.md has no #future heading (its generated anchor is #future-work-deliberately-outside-m10). Nevertheless the default audit counts this item as verified and reports the checklist complete, so either use real repository references here or make the audit resolve files and fragments before accepting them.

Useful? React with 👍 / 👎.

Comment on lines +116 to +120
function assertDate(value, field) {
const date = assertString(value, field, { max: 64 });
if (Number.isNaN(Date.parse(date))) {
throw releaseError(`${field} must be an ISO-8601 date`, 'INVALID_RELEASE_DATE');
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Enforce ISO-8601 syntax instead of Date.parse acceptance

When an evidence producer supplies malformed dates such as "1", "0", or "August 23, 2026", JavaScript's Date.parse accepts them even though the validator claims to require ISO-8601. This affects both generatedAt and approval timestamps, allowing ambiguously or falsely dated release evidence; validate the intended ISO representation explicitly and reject normalization-dependent inputs.

Useful? React with 👍 / 👎.

const tests = Object.freeze((input.tests ?? []).map(normalizeTestEvidence));
const decision = assertEnum(input.releaseDecision, 'releaseDecision', RELEASE_DECISIONS);
const normalized = {
evidenceVersion: assertString(input.evidenceVersion ?? RELEASE_EVIDENCE_VERSION, 'evidenceVersion', { max: 16 }),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reject unsupported evidence schema versions

For an input declaring evidenceVersion: "999" or another future schema, this code preserves the value while validating the object using the current 1.0 rules. Consumers can therefore be told that a newer schema was successfully audited even though its semantics were never interpreted; require RELEASE_EVIDENCE_VERSION here or dispatch to a validator for the declared version.

Useful? React with 👍 / 👎.

@Sythos
Sythos merged commit 9c8cc20 into main Aug 23, 2026
2 checks passed
@Sythos
Sythos deleted the milestone/m10 branch August 23, 2026 14:51
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.

1 participant