-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add environment contract v2 and release hardening #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| name: Bug report | ||
| description: Report a reproducible Samsarix Platform Doctor defect. | ||
| title: "bug: " | ||
| labels: ["bug"] | ||
| body: | ||
| - type: markdown | ||
| attributes: | ||
| value: >- | ||
| Thanks for helping improve Samsarix Platform Doctor. Never include API keys, | ||
| tokens, private manifests, or other sensitive values. Report vulnerabilities | ||
| privately as described in SECURITY.md. | ||
| - type: input | ||
| id: version | ||
| attributes: | ||
| label: Samsarix version | ||
| placeholder: "0.2.0 or commit SHA" | ||
| validations: | ||
| required: true | ||
| - type: input | ||
| id: environment | ||
| attributes: | ||
| label: Environment | ||
| description: Operating system, Python version, and installation method. | ||
| placeholder: "Windows 11, Python 3.14, installed from a wheel" | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: reproduce | ||
| attributes: | ||
| label: Reproduction | ||
| description: Minimal sanitized manifest and exact command needed to reproduce the issue. | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: expected | ||
| attributes: | ||
| label: Expected behavior | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: actual | ||
| attributes: | ||
| label: Actual behavior | ||
| description: Include sanitized output and the exit code. | ||
| validations: | ||
| required: true | ||
| - type: checkboxes | ||
| id: safety | ||
| attributes: | ||
| label: Safety check | ||
| options: | ||
| - label: I removed credentials, private data, and sensitive paths from this report. | ||
| required: true | ||
| - label: This is not an undisclosed security vulnerability. | ||
| required: true |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| blank_issues_enabled: false | ||
| contact_links: | ||
| - name: Private security report | ||
| url: mailto:support@samsarix.com?subject=Security%3A%20Samsarix%20Platform%20Doctor | ||
| about: Report unpatched vulnerabilities or sensitive security details privately. | ||
| - name: Support | ||
| url: mailto:support@samsarix.com?subject=Support%3A%20Samsarix%20Platform%20Doctor | ||
| about: Ask a question that is not suitable for a public issue. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| name: Feature request | ||
| description: Propose a bounded readiness check or workflow improvement. | ||
| title: "feature: " | ||
| labels: ["enhancement"] | ||
| body: | ||
| - type: textarea | ||
| id: problem | ||
| attributes: | ||
| label: Problem | ||
| description: What real developer workflow is currently difficult or unreliable? | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: proposal | ||
| attributes: | ||
| label: Proposed outcome | ||
| description: Describe the smallest complete behavior that would solve the problem. | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: safety | ||
| attributes: | ||
| label: Safety and automation considerations | ||
| description: Note any command execution, network, credential, timeout, redaction, or CI implications. | ||
| validations: | ||
| required: true | ||
| - type: textarea | ||
| id: alternatives | ||
| attributes: | ||
| label: Alternatives considered |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| ## Summary | ||
|
|
||
| Describe the user-visible outcome and why this is the smallest complete change. | ||
|
|
||
| ## Verification | ||
|
|
||
| - [ ] Formatting and lint pass. | ||
| - [ ] Strict type checking passes. | ||
| - [ ] Tests and the coverage gate pass. | ||
| - [ ] Package build and metadata checks pass when packaging is affected. | ||
| - [ ] The strict repository doctor check passes. | ||
|
|
||
| List the exact commands and results: | ||
|
|
||
| ## Compatibility and safety | ||
|
|
||
| - [ ] Manifest and JSON compatibility impacts are documented. | ||
| - [ ] No secret values, private data, or unsafe command execution were introduced. | ||
| - [ ] Documentation, examples, changelog, and productization record are current. | ||
|
|
||
| Note security, privacy, dependency, filesystem, network, or rollback considerations here. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,6 +6,27 @@ All notable changes to Samsarix Platform Doctor are documented here. | |
|
|
||
| ### Added | ||
|
|
||
| - Manifest schema version 2 with standards-compliant PEP 440 distribution constraints. | ||
| - Read-only executable availability checks that never launch declared commands. | ||
| - Manifest schema version in successful JSON reports for contract-aware automation. | ||
|
|
||
| ### Changed | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Merge duplicate The Also applies to: 28-28 🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||
|
|
||
| - `init` now creates version 2 manifests; version 1 manifests remain supported unchanged. | ||
| - Package version advanced to `0.2.0` and now depends on PyPA `packaging`. | ||
| - Distribution duplicate detection now follows canonical Python package-name semantics. | ||
|
|
||
| ### Security | ||
|
|
||
| - Refuse non-regular manifest files before reading to avoid blocking special-file inputs. | ||
| - Convert TOML recursion and oversized numeric conversion failures into structured manifest errors. | ||
| - Bound version fields and normalize invalid installed metadata into structured component results. | ||
| - Escape terminal controls from all human-rendered dynamic output. | ||
| - Update the isolated build backend to a patched `setuptools` release and audit runtime dependencies in CI. | ||
| - Handle symbolic-link cycles consistently across Python 3.11 through 3.14. | ||
|
|
||
| ### Added | ||
|
|
||
| - Local `doctor` command with human and JSON output. | ||
| - Non-overwriting `init` command and versioned TOML manifest. | ||
| - Python, installed-distribution, environment-presence, and contained-file checks. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,16 +6,17 @@ This roadmap separates four gates: merge, release, publication, and flagship ado | |
|
|
||
| Portfolio role: **internal infrastructure**. Use this to improve the portfolio through immutable, reviewed automation or internal deployments. It must not become a hidden runtime dependency for customer-facing products. | ||
|
|
||
| Current disposition: Merge as a prerelease-quality foundation after the focused merge gates pass; release remains blocked on the items below. | ||
| Current disposition: publish the repository as an MPL-2.0 open-source prerelease and merge only after the focused source, package, and hosted-CI gates pass. PyPI publication remains a separate owner-controlled milestone. | ||
|
|
||
| ## Stabilize the productized default | ||
|
|
||
| - Keep the default branch buildable from a clean checkout and preserve exact-head CI evidence. | ||
| - Keep Samsarix LLC branding, package identity, license metadata, and compatibility aliases internally consistent. | ||
| - Preserve the pre-productization default under a rollback ref before merging; do not delete legacy history. | ||
| - Locally reproduced in this pass: unit tests, formatting, lint, types, 90% coverage, and package build pass. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- ROADMAP.md ---'
cat -n ROADMAP.md | sed -n '1,40p'
printf '%s\n' '--- coverage references ---'
rg -n -i --glob '!node_modules' --glob '!dist' --glob '!build' \
'coverage|branch coverage|90%|95%' .Repository: Deathcharge/samsarix-platform Length of output: 5552 🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- coverage configuration ---'
cat -n pyproject.toml | sed -n '55,85p'
printf '%s\n' '--- documented verification results ---'
cat -n docs/PRODUCTIZATION.md | sed -n '135,165p'
printf '%s\n' '--- release and contribution coverage requirements ---'
cat -n docs/RELEASING.md | sed -n '28,45p'
cat -n CONTRIBUTING.md | sed -n '24,55p'Repository: Deathcharge/samsarix-platform Length of output: 6273 Report the measured coverage correctly. Line 16 should state 🤖 Prompt for AI Agents |
||
| - Next: adopt one real manifest consumer and treat hosted zero-runner failures as infrastructure, not product failures. | ||
| - Review priority: Diagnose pre-step hosted CI failures, adopt one real manifest consumer, and require green exact-head wheel/CLI checks before release. | ||
| - Environment contract v2 now validates PEP 440 distribution ranges and read-only executable availability while preserving schema v1 compatibility. | ||
| - Next: use public-repository Actions to establish exact-head CI, then adopt one real manifest consumer through an immutable revision. | ||
| - Review priority: green exact-head wheel/CLI checks, real consumer adoption, then package-publication provenance. | ||
|
|
||
| ## Release candidate | ||
|
|
||
|
|
@@ -25,11 +26,12 @@ Current disposition: Merge as a prerelease-quality foundation after the focused | |
|
|
||
| Current hardening backlog: | ||
|
|
||
| - Hosted CI is red at the exact inspected SHA and gives no diagnostic steps/logs. | ||
| - Checks only presence, not component versions, executable/API compatibility, credential validity, or service reachability. | ||
| - Private-repository CI was blocked before runner startup by the account billing setting; public standard GitHub-hosted runners avoid paid Actions minutes. | ||
| - Executable checks establish safe `PATH` discovery only; they do not execute tools to probe their versions or APIs. | ||
| - Credential validity, package API compatibility, and service reachability are not checked. | ||
| - No evidenced adopter, public package, tag, release, or stable schema consumer. | ||
| - The `samsarix-platform` name still suggests a broader platform than the implemented doctor command. | ||
| - Package identity, private-repository visibility, and MPL publication authority need owner review. | ||
| - PyPI namespace ownership, trusted publishing, provenance, and first-release authority remain owner gates. | ||
|
|
||
| ## Samsarix adoption | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use a top-level heading on the first line.
markdownlint-cli2reports MD041 because the template starts with## Summary. Change it to# Summary.Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
🤖 Prompt for AI Agents
Source: Linters/SAST tools