mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-16 03:49:26 +00:00
release: prepare v1.2.0-alpha.1 and record rollout blockers
This commit is contained in:
@@ -30,4 +30,7 @@ jobs:
|
|||||||
files: |
|
files: |
|
||||||
dist/*.whl
|
dist/*.whl
|
||||||
dist/*.tar.gz
|
dist/*.tar.gz
|
||||||
|
body_path: RELEASE_NOTES.md
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
|
prerelease: ${{ contains(github.ref_name, '-') }}
|
||||||
|
make_latest: ${{ !contains(github.ref_name, '-') }}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"feature_name": "contributor-scan",
|
"feature_name": "contributor-scan",
|
||||||
"created_at": "2026-09-08T20:00:00Z",
|
"created_at": "2026-09-08T20:00:00Z",
|
||||||
"updated_at": "2026-09-14T06:06:32.633059+00:00",
|
"updated_at": "2026-09-14T06:10:56.975614+00:00",
|
||||||
"language": "en",
|
"language": "en",
|
||||||
"phase": "implementation",
|
"phase": "implementation",
|
||||||
"approvals": {
|
"approvals": {
|
||||||
@@ -65,5 +65,12 @@
|
|||||||
"independent": false,
|
"independent": false,
|
||||||
"record": "census-repair-verification.md"
|
"record": "census-repair-verification.md"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"tag": "v1.2.0-alpha.1",
|
||||||
|
"package_version": "1.2.0a1",
|
||||||
|
"channel": "alpha",
|
||||||
|
"rollout_decision": "NO-GO",
|
||||||
|
"status_record": "census-repair-verification.md"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"feature_name": "pre-push-safety-net",
|
"feature_name": "pre-push-safety-net",
|
||||||
"created_at": "2026-09-12T15:35:00Z",
|
"created_at": "2026-09-12T15:35:00Z",
|
||||||
"updated_at": "2026-09-14T06:06:32.633405+00:00",
|
"updated_at": "2026-09-14T06:10:56.975614+00:00",
|
||||||
"language": "en",
|
"language": "en",
|
||||||
"phase": "implementation",
|
"phase": "implementation",
|
||||||
"approvals": {
|
"approvals": {
|
||||||
@@ -150,5 +150,12 @@
|
|||||||
"record": "../contributor-scan/census-repair-verification.md",
|
"record": "../contributor-scan/census-repair-verification.md",
|
||||||
"effect": "Node 44/44 input census restored; partial/missing census remains explicitly unresolved. Existing eligibility stale; runtime/context/independent qualification remain NO-GO."
|
"effect": "Node 44/44 input census restored; partial/missing census remains explicitly unresolved. Existing eligibility stale; runtime/context/independent qualification remain NO-GO."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"tag": "v1.2.0-alpha.1",
|
||||||
|
"package_version": "1.2.0a1",
|
||||||
|
"channel": "alpha",
|
||||||
|
"rollout_decision": "NO-GO",
|
||||||
|
"status_record": "status.md"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# Pre-push safety net status — v1.2.0-alpha.1
|
||||||
|
|
||||||
|
Updated 2026-09-14. Phase: **implementation**. Requirements, design and tasks are
|
||||||
|
approved. **26/27 executable tasks complete; task 8.3 remains blocked.**
|
||||||
|
Rollout: **NO-GO**. The alpha tag publishes experimental implementation and evidence;
|
||||||
|
it does not approve normal hook capabilities or production enforcement.
|
||||||
|
|
||||||
|
## Verified
|
||||||
|
|
||||||
|
Immutable pushed snapshots, shared multi-ref deadlines, ranker-owned scope, physical
|
||||||
|
vendor exclusion, compatible immutable graph/result reuse, actionability admission,
|
||||||
|
compact truthful reporting and non-destructive hook integration are implemented.
|
||||||
|
Advisory and blocking share the same evidence bar; optional model output cannot bypass it.
|
||||||
|
|
||||||
|
Contributor-scan task 2.19 is verified: the pinned frontend now retains the original
|
||||||
|
Gruntfile, bringing the real NodeGoat census from 43/44 to 44/44 files. Partial, absent
|
||||||
|
and malformed census no longer masquerade as a complete result or a falsely empty graph.
|
||||||
|
The final code verification recorded 1321 passed tests, nine skipped, passing canonical
|
||||||
|
gates and a packaged native PHP/JavaScript partition smoke. See
|
||||||
|
[owner verification](../contributor-scan/census-repair-verification.md).
|
||||||
|
|
||||||
|
## Rollout blockers
|
||||||
|
|
||||||
|
1. **Useful checks within the deadline are unproven.** The last full representative
|
||||||
|
runtime profile timed out on all 21 Node transactions, completing 0/24 declared target
|
||||||
|
checks. Cancellation/reporting stayed below the two-second allowance. The subsequent
|
||||||
|
census repair is verified, but the full changed-code runtime/coverage profile has not
|
||||||
|
passed under its new identities. Amortize engine startup/loading work and rerun the
|
||||||
|
frozen seven-class profile; require warm p95 <=30s and >=95% completed supported checks.
|
||||||
|
2. **Target and change-context evidence remains incomplete.** VAmPI preserves raw findings
|
||||||
|
at all three known sites, but the exact SQLI function question/transitive witness and
|
||||||
|
supported authorization context are unresolved. Raw findings or rank positions cannot
|
||||||
|
establish an actionable new regression. Repair this in the shared scan boundary and
|
||||||
|
verify the actual associated query/path evidence.
|
||||||
|
3. **Independent quality qualification is missing.** Freeze and review untouched Node API
|
||||||
|
vulnerable/fixed/benign cases, including middleware/module/async context. Ghost remains
|
||||||
|
reserved with missing reviewed inputs. PHP and Python need their own independent
|
||||||
|
language/framework/family populations; Node results cannot qualify them. Require >=95%
|
||||||
|
observed actionable precision with counts/intervals, >=90% supported recall, nonzero
|
||||||
|
reviewed emitted alerts/positive controls and zero known fixed/benign false alerts.
|
||||||
|
4. **No current capability is eligible.** The earlier registry is NO-GO and becomes stale
|
||||||
|
under the repaired runtime/core identities. Loading it enables zero capabilities.
|
||||||
|
After the preceding evidence passes together, regenerate exact-semantic eligibility
|
||||||
|
and rerun packaged acceptance validation. Do not relabel old measurements as current.
|
||||||
|
|
||||||
|
C/libpng arithmetic and bounds remain explicitly unsupported; this is not a C/C++
|
||||||
|
detection qualification. Advisory rollout cannot be justified by silence from an
|
||||||
|
unqualified registry.
|
||||||
|
|
||||||
|
## Ownership and revalidation
|
||||||
|
|
||||||
|
Engine lifecycle, source/census and context/witness normalization belong to
|
||||||
|
`contributor-scan`. The hook consumes those contracts; no second engine, source IR,
|
||||||
|
ranker priority exceptions or differential graph mutation is introduced here. Graph
|
||||||
|
mutation would need a separate cold-equivalence experiment.
|
||||||
|
|
||||||
|
After owner fixes, refreeze identities and rerun ordinary scan gates, Python regressions,
|
||||||
|
PHP-to-Node transfer, the representative cache/deadline profile, independent per-capability
|
||||||
|
quality evaluation and packaged hook validation. Keep task 8.3 unchecked and the feature
|
||||||
|
in implementation until those mandatory results are established.
|
||||||
|
|
||||||
|
Evidence: [group 8 validation](validation-group-8.md),
|
||||||
|
[runtime scorecard](../../../benchmarks/measurements/2026-09-13-nodegoat-feasibility.json),
|
||||||
|
[census repair](../../../benchmarks/measurements/2026-09-14-node-census-repair.json).
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
# OpenUltraSAST
|
# OpenUltraSAST
|
||||||
|
|
||||||
|
**v1.2.0-alpha.1:** experimental pre-push safety net. Integration and census repairs are
|
||||||
|
verified; useful hook coverage, latency and independent capability qualification remain
|
||||||
|
**NO-GO**. No real hook capability is enabled. See [release notes](RELEASE_NOTES.md) and
|
||||||
|
[spec status](.kiro/specs/pre-push-safety-net/status.md).
|
||||||
|
|
||||||
OpenUltraSAST is a command-line security analysis harness built around one
|
OpenUltraSAST is a command-line security analysis harness built around one
|
||||||
goal: eliminating false positives by turning a suspicion into an
|
goal: eliminating false positives by turning a suspicion into an
|
||||||
evidence-backed finding, and learning from the claims that were rejected. A
|
evidence-backed finding, and learning from the claims that were rejected. A
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# v1.2.0-alpha.1
|
||||||
|
|
||||||
|
Experimental pre-push security safety net for AI-accelerated development. Python package
|
||||||
|
version: `1.2.0a1`. This alpha is **not a rollout GO**; no real hook capability is enabled.
|
||||||
|
|
||||||
|
- Analyze immutable pushed commits across refs without changing the working tree or
|
||||||
|
replacing existing hooks. Share one deadline across preparation, analysis and reporting.
|
||||||
|
- Keep the existing ranker responsible for scope and physically exclude vendor code from
|
||||||
|
graph inputs. Reuse only compatible, complete immutable graph and answer artifacts.
|
||||||
|
- Gate advisory and blocking alerts on the same actionable change/witness/repair evidence.
|
||||||
|
Preserve explicit incomplete coverage; optional model assistance cannot create evidence.
|
||||||
|
- Add frozen runtime and PHP/Node/Python evaluation records with honest populations,
|
||||||
|
missing-target accounting and versioned eligibility that rejects stale evidence.
|
||||||
|
- Repair the pinned JavaScript frontend's Gruntfile omission and incomplete-census handling.
|
||||||
|
The real NodeGoat input now retains 44/44 files; native PHP/JavaScript smoke passes.
|
||||||
|
|
||||||
|
Implementation verification: 1321 tests passed, nine skipped; detector/map/local-pair
|
||||||
|
gates and packaged partition smoke passed. These checks verify implementation contracts,
|
||||||
|
not useful hook precision, recall or latency.
|
||||||
|
|
||||||
|
Rollout remains blocked by representative changed-code latency/completion, VAmPI
|
||||||
|
query/context/transitive evidence and independent reviewed per-capability populations.
|
||||||
|
The earlier eligibility artifact is stale under the repaired identities and enables
|
||||||
|
nothing. See [current spec status](https://github.com/norandom/OpenUltraSAST/blob/v1.2.0-alpha.1/.kiro/specs/pre-push-safety-net/status.md) for the
|
||||||
|
owners, unchanged thresholds and required revalidation. Pre-push implementation stands
|
||||||
|
at 26/27 tasks; task 8.3 remains blocked. C arithmetic/bounds detection is unsupported.
|
||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "openultrasast"
|
name = "openultrasast"
|
||||||
version = "1.1.0"
|
version = "1.2.0a1"
|
||||||
description = "OpenCode-oriented SAST harness for evidence-gated security analysis"
|
description = "OpenCode-oriented SAST harness for evidence-gated security analysis"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
|
|
||||||
__all__ = ["__version__"]
|
__all__ = ["__version__"]
|
||||||
|
|
||||||
__version__ = "1.1.0"
|
__version__ = "1.2.0a1"
|
||||||
|
|||||||
Reference in New Issue
Block a user