You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 528b933
Browse filesBrowse the repository at this point in the historyBrowse files
Preserve reviewed runtime admission and cover each execute bit.
Cover every standard Mach-O encoding and accurate evidence locator.
Retain valid signed bundles, caches and ordinary excluded diagnostics.
Actual signed native100 RED precedes code and coherent0.55.10 delivery.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+29Lines changed: 29 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,35 @@ All notable changes to this project will be documented in this file.
10
10
11
11
---
12
12
13
+
## [0.55.10] - 2026-10-13
14
+
15
+
### Security
16
+
17
+
- Reject malformed alternate project manifests during authenticated admission without aborting CLI startup.
18
+
19
+
- Require authenticated project authority for indirect category mounts and shared member loaders, including bundle aliases and cross-category claims.
20
+
21
+
- Bind privileged project registration metadata and executable inventory to authenticated artifact bytes; reproduce source caches before the final file check and recheck authority before registration effects.
22
+
23
+
- Reject category-less grouped workspace root commands, external claims to permanent core commands and
24
+
unauthenticated workspace claims to official category roots before registry, bridge or import-source activation.
25
+
- Preserve resolved built-in authority, reject forged source labels and escaping symlinks, and prevent
26
+
rejected workspace sources from shadowing eligible package dependencies.
27
+
- Reject unsigned executable caches and omitted Python/native artifacts; authenticate captured signed source
28
+
bytes before reproducing compatible interpreter caches without executing candidate code.
29
+
30
+
### Fixed
31
+
32
+
- Select the first fully eligible copy of each module, reconsider dependency fallbacks against selected versions
33
+
and each candidate's own version, and refuse contradictory priority cycles before registration effects.
34
+
- Preserve categorized routing and supported unreserved legacy registration, including operator-configured
35
+
built-in discovery, while retaining the completed removal of flat bundle shims.
36
+
- Preserve all six official project-scoped bundle roots only after full artifact checksum and signature
37
+
verification against the core-bundled key; reject unsigned, tampered and workspace-key replacements.
38
+
- Preserve genuine installed bundles when a rejected project copy claims the same name, retain authenticated
39
+
project priority, and skip artifact payload verification for disabled module names.
40
+
- Synchronize bugfix version declarations, frozen project metadata and the promotion fixture.
-**Denylist gate**: Modules listed in denylist are blocked before install/bootstrap regardless of source.
21
21
22
+
## Workspace command authority
23
+
24
+
Default grouped registration rejects category-less project modules before registration or import effects.
25
+
Permanent `init`, `module` and `upgrade` commands require resolved built-in package paths in both modes.
26
+
Unverified workspace packages cannot supply the official `project`, `backlog`, `code`, `spec`, `govern` or
27
+
`requirements` roots. Supported official bundles installed with `--scope project` retain their canonical roots
28
+
only after complete filesystem checksum and signature verification, including untracked module source files,
29
+
against the public key bundled with the CLI and matching
30
+
signed official bundle metadata. Payload symlink members, standalone bytecode, uncovered executable source and missing keys fail closed.
31
+
Current-interpreter source caches remain compatible only when their compiled bytes match the signed source.
32
+
Verification compares those bytes without executing or deserializing candidate caches. Unsigned/test flags, installation receipts and
33
+
`SPECFACT_MODULE_PUBLIC_KEY_PEM` overrides cannot grant these project root commands.
34
+
35
+
Categorized project packages can populate shared category-member loaders even when their commands do not name a
36
+
root. They therefore require authenticated official bundle authority before candidate selection and registration.
37
+
The same gate covers category mounts induced by explicit bundle metadata or namespaced bundle aliases.
38
+
Explicit legacy registration retains unreserved category-less project commands without an official mount claim;
39
+
non-project categorized routing retains its existing policy. These controls protect command admission and import activation, and do not sandbox intentionally
40
+
invoked module code.
41
+
42
+
## Preparing project-scoped release artifacts
43
+
44
+
Publish regular payload files rather than symlinks. Replace links with their intended files before signing;
45
+
remove standalone bytecode and executable files under directories excluded from signing. Regenerate ordinary
46
+
source caches with the target interpreter, or remove stale or transformed caches before project installation.
47
+
The strict project-root admission check independently verifies these conditions. Passing a companion repository
48
+
signing or release-verification command alone does not establish eligibility for privileged project roots.
49
+
22
50
## Integrity flow
23
51
24
52
1. Discovery reads `module-package.yaml` and parses `integrity.checksum`.
@@ -104,3 +132,9 @@ Module packages carry **publisher** and **integrity** metadata so installation,
104
132
## Versioned dependencies
105
133
106
134
Manifest may declare versioned module and pip dependencies via `module_dependencies_versioned` and `pip_dependencies_versioned` (each entry: `name`, `version_specifier`). These are parsed and stored for installation-time resolution while keeping legacy `module_dependencies` / `pip_dependencies` lists backward compatible.
135
+
136
+
Privileged project-root admission binds discovery fields to the same normalized manifest captured in the signed
137
+
payload. It also completes reproduction of any permitted source caches before checking a fresh executable inventory.
138
+
The final check compares membership, source/native digests and raw cache bodies without executing candidate code or
139
+
invoking compilation. Admission and its recheck precede schema, bridge, protocol and import-root registration effects.
140
+
These checks authenticate the admission snapshot; they do not make a mutable workspace immutable after admission.
Copy file name to clipboardExpand all lines: openspec/changes/fix-categoryless-module-command-squatting/CHANGE_VALIDATION.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,14 @@
1
+
2
+
## Signed native100 RED verified — 15 October 2026 (Europe/Berlin)
3
+
4
+
Signed specification6c63d63323e94a7c633c69ea964c85c3d1c9c71c precedes signed authored testsd20d6a56e9781a740a1c82907158c671ad3d4b7f on unchanged protected production/version.
5
+
Actual native run38647654283, artifact11932289125, service ZIP SHA2568429e0ff751d0fcd044cda08b1d4225ca2ea494b94b5330c90bbf24c384151bc, has100 genuine AssertionErrors,
6
+
zero errors/skips and exact source/tree/base/selectors plus all8 authored test hashes. Its RED gate passes
7
+
with zero proof findings. JUnit digest:sha256:6a252b0198a77bdc86e5bb7511af4843a68fe7b836c1856b8c5f870c4ea54ea5. Reviewed production/version0.55.10 is restored only
8
+
after this real service artifact and bindings are verified. Deliberate RED workflow failure is evidence,
9
+
not final merge-ready CI. Final native producer/execution/FULL review, required CI, live exact-head authority
10
+
and completed current-head review remain required; no target merge is authorized. Companion symlink blocker remains.
11
+
1
12
## Current accepted100 signed authoring — 15 October 2026 (Europe/Berlin)
2
13
3
14
The human accepted exact per-source100 mapping4c3ded1d98d1437c1de1fb73c243ad71d804506769135ea42581e9b3781ed274
Copy file name to clipboardExpand all lines: openspec/changes/fix-categoryless-module-command-squatting/TDD_EVIDENCE.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,14 @@
1
+
2
+
## Signed native100 RED verified — 15 October 2026 (Europe/Berlin)
3
+
4
+
Signed specification6c63d63323e94a7c633c69ea964c85c3d1c9c71c precedes signed authored testsd20d6a56e9781a740a1c82907158c671ad3d4b7f on unchanged protected production/version.
5
+
Actual native run38647654283, artifact11932289125, service ZIP SHA2568429e0ff751d0fcd044cda08b1d4225ca2ea494b94b5330c90bbf24c384151bc, has100 genuine AssertionErrors,
6
+
zero errors/skips and exact source/tree/base/selectors plus all8 authored test hashes. Its RED gate passes
7
+
with zero proof findings. JUnit digest:sha256:6a252b0198a77bdc86e5bb7511af4843a68fe7b836c1856b8c5f870c4ea54ea5. Reviewed production/version0.55.10 is restored only
8
+
after this real service artifact and bindings are verified. Deliberate RED workflow failure is evidence,
9
+
not final merge-ready CI. Final native producer/execution/FULL review, required CI, live exact-head authority
10
+
and completed current-head review remain required; no target merge is authorized. Companion symlink blocker remains.
11
+
1
12
## Current accepted100 signed authoring — 15 October 2026 (Europe/Berlin)
2
13
3
14
The human accepted exact per-source100 mapping4c3ded1d98d1437c1de1fb73c243ad71d804506769135ea42581e9b3781ed274
Copy file name to clipboardExpand all lines: pyproject.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
5
5
[project]
6
6
name = "specfact-cli"
7
-
version = "0.55.9"
7
+
version = "0.55.10"
8
8
description = "AI-bloat defense CLI for Python teams. Run deterministic code review, cleanup forecasts, and spec/contract evidence for AI-assisted and brownfield delivery."
0 commit comments