brief-spec 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- brief_spec-0.5.0/.claude-plugin/plugin.json +18 -0
- brief_spec-0.5.0/.codex-plugin/plugin.json +36 -0
- brief_spec-0.5.0/.gitignore +13 -0
- brief_spec-0.5.0/CHANGELOG.md +323 -0
- brief_spec-0.5.0/LICENSE +21 -0
- brief_spec-0.5.0/PKG-INFO +577 -0
- brief_spec-0.5.0/README.md +534 -0
- brief_spec-0.5.0/hooks/copilot.json +45 -0
- brief_spec-0.5.0/hooks/hooks.json +60 -0
- brief_spec-0.5.0/integrations/copilot/cloud/README.md +22 -0
- brief_spec-0.5.0/integrations/copilot/settings.json.example +14 -0
- brief_spec-0.5.0/plugin.json +13 -0
- brief_spec-0.5.0/pyproject.toml +99 -0
- brief_spec-0.5.0/schemas/brief-spec-bundle-manifest.schema.json +49 -0
- brief_spec-0.5.0/schemas/brief-spec-delivery-receipt.schema.json +49 -0
- brief_spec-0.5.0/schemas/brief-spec-delivery.schema.json +177 -0
- brief_spec-0.5.0/schemas/brief-spec-event.schema.json +67 -0
- brief_spec-0.5.0/schemas/brief-spec-evidence.schema.json +19 -0
- brief_spec-0.5.0/schemas/brief-spec-frame-receipt.schema.json +26 -0
- brief_spec-0.5.0/schemas/brief-spec-frame-request.schema.json +15 -0
- brief_spec-0.5.0/schemas/brief-spec-outcome-brief.schema.json +34 -0
- brief_spec-0.5.0/schemas/brief-spec-session-checkpoint.schema.json +60 -0
- brief_spec-0.5.0/schemas/briefspec-delivery.schema.json +105 -0
- brief_spec-0.5.0/schemas/bundle-manifest.schema.json +49 -0
- brief_spec-0.5.0/schemas/delivery-receipt.schema.json +47 -0
- brief_spec-0.5.0/schemas/evidence.schema.json +36 -0
- brief_spec-0.5.0/schemas/outcome-brief.schema.json +65 -0
- brief_spec-0.5.0/schemas/session-checkpoint.schema.json +144 -0
- brief_spec-0.5.0/skills/brief-spec/SKILL.md +83 -0
- brief_spec-0.5.0/skills/brief-spec/agents/openai.yaml +5 -0
- brief_spec-0.5.0/skills/brief-spec/references/debugging.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/exploration.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/general.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/implementation.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/operations.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/planning.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/research.md +6 -0
- brief_spec-0.5.0/skills/brief-spec/references/review.md +6 -0
- brief_spec-0.5.0/skills/outcome-brief/SKILL.md +81 -0
- brief_spec-0.5.0/skills/outcome-brief/agents/openai.yaml +5 -0
- brief_spec-0.5.0/skills/outcome-brief/references/contract.md +39 -0
- brief_spec-0.5.0/skills/outcome-brief/references/examples.md +51 -0
- brief_spec-0.5.0/skills/session-checkpoint/SKILL.md +43 -0
- brief_spec-0.5.0/skills/session-checkpoint/agents/openai.yaml +5 -0
- brief_spec-0.5.0/skills/session-checkpoint/references/examples.md +51 -0
- brief_spec-0.5.0/skills/session-checkpoint/references/modes.md +71 -0
- brief_spec-0.5.0/src/brief_spec/__init__.py +15 -0
- brief_spec-0.5.0/src/brief_spec/__main__.py +5 -0
- brief_spec-0.5.0/src/briefspec/__init__.py +7 -0
- brief_spec-0.5.0/src/briefspec/__main__.py +5 -0
- brief_spec-0.5.0/src/briefspec/adapters/__init__.py +3 -0
- brief_spec-0.5.0/src/briefspec/adapters/base.py +184 -0
- brief_spec-0.5.0/src/briefspec/adapters/claude.py +10 -0
- brief_spec-0.5.0/src/briefspec/adapters/codex.py +10 -0
- brief_spec-0.5.0/src/briefspec/adapters/copilot.py +10 -0
- brief_spec-0.5.0/src/briefspec/adapters/registry.py +25 -0
- brief_spec-0.5.0/src/briefspec/artifacts.py +134 -0
- brief_spec-0.5.0/src/briefspec/bundle.py +340 -0
- brief_spec-0.5.0/src/briefspec/capabilities.py +12 -0
- brief_spec-0.5.0/src/briefspec/cli.py +669 -0
- brief_spec-0.5.0/src/briefspec/config.py +125 -0
- brief_spec-0.5.0/src/briefspec/continuity.py +94 -0
- brief_spec-0.5.0/src/briefspec/delivery.py +1100 -0
- brief_spec-0.5.0/src/briefspec/diagnostics.py +503 -0
- brief_spec-0.5.0/src/briefspec/errors.py +17 -0
- brief_spec-0.5.0/src/briefspec/events.py +425 -0
- brief_spec-0.5.0/src/briefspec/frames.py +100 -0
- brief_spec-0.5.0/src/briefspec/harnesses.py +317 -0
- brief_spec-0.5.0/src/briefspec/hooks.py +579 -0
- brief_spec-0.5.0/src/briefspec/installers.py +1167 -0
- brief_spec-0.5.0/src/briefspec/markdown.py +377 -0
- brief_spec-0.5.0/src/briefspec/models.py +299 -0
- brief_spec-0.5.0/src/briefspec/renderers.py +126 -0
- brief_spec-0.5.0/src/briefspec/resources.py +21 -0
- brief_spec-0.5.0/src/briefspec/state.py +202 -0
- brief_spec-0.5.0/src/briefspec/triggers.py +92 -0
- brief_spec-0.5.0/src/briefspec/verification.py +711 -0
- brief_spec-0.5.0/src/briefspec/work_types.py +737 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "brief-spec",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Type-aware, evidence-backed reading and delivery for AI coding agents.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Luan Moreno Maciel"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/luanmorenommaciel/brief-spec",
|
|
9
|
+
"repository": "https://github.com/luanmorenommaciel/brief-spec",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"brief",
|
|
13
|
+
"checkpoint",
|
|
14
|
+
"evidence",
|
|
15
|
+
"developer-productivity"
|
|
16
|
+
],
|
|
17
|
+
"skills": "./skills/"
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "brief-spec",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Type-aware, evidence-backed reading and delivery for AI coding agents.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Luan Moreno Maciel",
|
|
7
|
+
"url": "https://github.com/luanmorenommaciel"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/luanmorenommaciel/brief-spec",
|
|
10
|
+
"repository": "https://github.com/luanmorenommaciel/brief-spec",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"brief",
|
|
14
|
+
"checkpoint",
|
|
15
|
+
"evidence",
|
|
16
|
+
"developer-productivity"
|
|
17
|
+
],
|
|
18
|
+
"skills": "./skills/",
|
|
19
|
+
"interface": {
|
|
20
|
+
"displayName": "Brief-Spec",
|
|
21
|
+
"shortDescription": "Predictable evidence-backed agent handoffs",
|
|
22
|
+
"longDescription": "Standardize substantive agent handoffs with a concise Outcome Brief and safe-boundary Session Checkpoints in orient, teach, and spoken modes.",
|
|
23
|
+
"developerName": "Luan Moreno Maciel",
|
|
24
|
+
"category": "Productivity",
|
|
25
|
+
"capabilities": [
|
|
26
|
+
"Interactive"
|
|
27
|
+
],
|
|
28
|
+
"websiteURL": "https://github.com/luanmorenommaciel/brief-spec",
|
|
29
|
+
"defaultPrompt": [
|
|
30
|
+
"Close this task with an evidence-backed Outcome Brief",
|
|
31
|
+
"Orient me with a Session Checkpoint",
|
|
32
|
+
"Teach me what changed, then give me the next move"
|
|
33
|
+
],
|
|
34
|
+
"brandColor": "#64D8FF"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes follow [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
4
|
+
This project uses semantic versioning.
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Compact Outcome Brief for honest `DONE` results: Status, Outcome, and Proof only. The omitted
|
|
11
|
+
Human action, Gaps, Next, and Open fields are read as `None`, so the canonical object equals the
|
|
12
|
+
full form. Every other status still needs all seven fields, and `enforce` does not ask to wrap a
|
|
13
|
+
compact brief in the typed region.
|
|
14
|
+
- Every stop now validates the terminal message under every policy and records the brief kind,
|
|
15
|
+
validity, status, first errors, and running valid/invalid counts in session state. Claude Code
|
|
16
|
+
shows a one-line `systemMessage` warning when a brief is present but invalid.
|
|
17
|
+
- `brief-spec doctor codex` reproduces Codex's hook-approval hash and reports each Brief-Spec hook
|
|
18
|
+
as approved, not yet reviewed, or changed since review. Codex skips unapproved hooks without an
|
|
19
|
+
error, and `codex exec` never shows the review screen.
|
|
20
|
+
- Grok receives the classification through a `PreToolUse` hook, once per decision, because it
|
|
21
|
+
discards prompt-hook output. A Stop correction counts as delivery. The hook never returns a
|
|
22
|
+
permission decision.
|
|
23
|
+
- Copilot receives the classification on the first `postToolUse` of each classified task, because
|
|
24
|
+
command hooks cannot add context from `userPromptSubmitted`.
|
|
25
|
+
- Portuguese classification rules for all eight work types and the built-in subjects, including
|
|
26
|
+
Portuguese negation masking.
|
|
27
|
+
- A `session_end` event. Grok's observe-only Stop at session end (`channel_closed`, `shutdown`) maps
|
|
28
|
+
to it and changes no state.
|
|
29
|
+
- `tests/test_reading_experience.py`, including a labeled everyday-prompt corpus.
|
|
30
|
+
|
|
31
|
+
- `brief-spec frame` with versioned request and receipt schemas for bounded,
|
|
32
|
+
presentation-only Human Frames. Lifecycle coordinators can delegate Markdown
|
|
33
|
+
rendering without delegating approval or dispatch authority.
|
|
34
|
+
|
|
35
|
+
- Experimental `brief-spec-chronicle` package with explicit per-project activation, private
|
|
36
|
+
append-only material-event segments, idempotent ingestion, hash-chain receipts, a rebuildable
|
|
37
|
+
SQLite relation index, deterministic drift rules, canonical Project Chronicle snapshots, Human
|
|
38
|
+
Review Packs, transactional exports, external receipts, archive/restore, doctor, exact deletion,
|
|
39
|
+
and reviewed lesson export.
|
|
40
|
+
- Public `brief-spec-event/1.0` schema and dependency-free artifact primitives for canonical JSON,
|
|
41
|
+
hashing, atomic output sets, manifests, and receipts.
|
|
42
|
+
- Method contexts for Seamwise, Task-Spec, Converge, and general work, kept independent from work
|
|
43
|
+
type, subject, presentation, and lifecycle horizon.
|
|
44
|
+
- Harness capability reporting for Human Frame delivery tiers.
|
|
45
|
+
- Bounded source normalization for Brief-Spec delivery, Seamwise, Task-Spec, Converge, Exa,
|
|
46
|
+
Tavily, Firecrawl, and RAFT records, plus correlation-based cross-harness deduplication.
|
|
47
|
+
- Ingest-order replay across monthly segments, explicit ledger cutoffs, visible late arrivals,
|
|
48
|
+
human-approved pivot baselines, expanded deterministic drift rules, and a disposable
|
|
49
|
+
Seamwise → Task-Spec → Converge end-to-end journey.
|
|
50
|
+
- Generic HTML-to-PDF and spoken-script-to-MP3 helpers that preserve the existing renderer
|
|
51
|
+
contracts while allowing Chronicle to reuse their verified engines.
|
|
52
|
+
- Experimental `brief-spec-renderer-video` package for offline storyboard scenes, H.264/AAC MP4,
|
|
53
|
+
captions, transcript, chapters, source hashes, and renderer-fingerprint-scoped determinism.
|
|
54
|
+
- Comprehensive behavior catalog covering all eight work types, four reading experiences, six
|
|
55
|
+
continuity horizons, method-aware Human Frames, Outcome states, evidence edge cases, downloads,
|
|
56
|
+
harnesses, Chronicle operations, and explicit non-goals.
|
|
57
|
+
- Enforced repository-layout contract that requires canonical package-directory/distribution name
|
|
58
|
+
alignment while preserving the intentional `0.x` import and entry-point compatibility surfaces.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Classifier adapter `1.2`: an explicit request verb weighs twice as much as a noun that only
|
|
63
|
+
mentions other work, so "find the root cause after the last deploy" is debugging and "deploy the
|
|
64
|
+
new build" is operations. Two request verbs of different types still abstain to `general`.
|
|
65
|
+
"Now that X is done," clauses are read as background. A labeled corpus of 31 everyday prompts
|
|
66
|
+
moved from 20 to 31 correct types and from 20 to 30 correct subjects; all 40 live-harness
|
|
67
|
+
prompts keep their expected classification.
|
|
68
|
+
- Subject selection prefers the subject that fits the chosen type, accepts plurals, and no longer
|
|
69
|
+
reads the word "table" as data work.
|
|
70
|
+
- A valid Outcome Brief closes the task. The decision stays recorded, a plain follow-up receives no
|
|
71
|
+
guidance, and the next substantive prompt is classified afresh. A soft cue such as "now that" or
|
|
72
|
+
"moving on" switches the type only when the new prompt classifies as a different, non-fallback
|
|
73
|
+
type.
|
|
74
|
+
- Full classification guidance is sent once per context window; later prompts receive a one-line
|
|
75
|
+
reminder with the sections and exact typed marker. Session start and compaction reset the window.
|
|
76
|
+
OMP and Grok always receive the full text.
|
|
77
|
+
- Checkpoint time and volume are measured since the last valid checkpoint or Outcome Brief instead
|
|
78
|
+
of since session start. Under `suggest`, the model receives one suggestion per window rather than
|
|
79
|
+
one every cooldown period.
|
|
80
|
+
- The session context is one paragraph without a mid-sentence line break and mentions the compact
|
|
81
|
+
form.
|
|
82
|
+
- Method context needs a product reference. The ordinary verb "converge" no longer selects the
|
|
83
|
+
Converge frame; `taskmesh` now selects Task-Spec.
|
|
84
|
+
- OMP capabilities no longer list `agent_end`, which the extension does not register.
|
|
85
|
+
- README, installation, compatibility, architecture, configuration, skills, examples, repository
|
|
86
|
+
layout, and contributing docs now match the installed behavior and paths.
|
|
87
|
+
|
|
88
|
+
- Renamed the PDF and audio renderer source directories to
|
|
89
|
+
`packages/brief-spec-renderer-pdf` and `packages/brief-spec-renderer-audio`; their legacy internal
|
|
90
|
+
Python modules and `briefspec.renderers` entry points remain operational through `0.x`.
|
|
91
|
+
- Expanded the README feature map, Human Continuity matrix, repository map, complete candidate
|
|
92
|
+
installation, documentation index, development gates, and honest limits to match the current
|
|
93
|
+
source tree.
|
|
94
|
+
- Documented the tracked multi-model `output/` corpus separately from runtime exports and defined
|
|
95
|
+
the ownership and cleanup policy for tracked release inputs, local evidence, builds, and caches.
|
|
96
|
+
|
|
97
|
+
### Fixed
|
|
98
|
+
|
|
99
|
+
- Host-inserted prompt text no longer drives the reading frame. Claude Code passes background task
|
|
100
|
+
notifications through the prompt hook; their words could reclassify the task, select a method,
|
|
101
|
+
or turn "orient checkpoint" into an explicit checkpoint request. Notifications, system
|
|
102
|
+
reminders, slash-command echoes, and hook feedback are now removed first, and a prompt made only
|
|
103
|
+
of them is not a user turn.
|
|
104
|
+
- The router skill's typed-marker example now includes `decision_id`, which the hook requires to
|
|
105
|
+
accept the wrapper.
|
|
106
|
+
- The typed review example in `docs/examples.md` used `##` headings that the parser rejects.
|
|
107
|
+
- The README first journey ran `brief-spec types` after installing `v0.2.0`, which ships only the
|
|
108
|
+
`briefspec` command and has no `types` command.
|
|
109
|
+
- Project destinations for OMP (`.omp/`) and Kimi (`.kimi-code/skills/`) were documented as
|
|
110
|
+
`.agents/skills/`; the Cursor and Goose rows had no command.
|
|
111
|
+
- The Copilot cloud README and architecture doc used legacy `briefspec` file names, and the
|
|
112
|
+
installation guide referenced a `v0.5.0` tag that does not exist.
|
|
113
|
+
|
|
114
|
+
- Atomic writes now support Windows Python versions without `os.fchmod` and close the temporary
|
|
115
|
+
descriptor before cleaning up a failed permission change, preserving the original destination
|
|
116
|
+
and error.
|
|
117
|
+
- Chronicle ZIP creation and reading now share one owned temporary stream, avoiding Windows
|
|
118
|
+
pathname-sharing failures while preserving deterministic archive contents.
|
|
119
|
+
- Repository Claude instructions now live in `.claude/CLAUDE.md`, retaining the `OPERATING.md`
|
|
120
|
+
import without triggering strict plugin-root validation warnings.
|
|
121
|
+
- Optional-renderer smoke checks now compare canonical JSON between export and bundle and verify
|
|
122
|
+
each MP3 independently, rather than requiring separate speech generations to be byte-identical.
|
|
123
|
+
PDF byte-identity and rendered-artifact integrity checks remain enforced.
|
|
124
|
+
- Made path-rendering and POSIX-permission tests platform-aware so Windows validates native path
|
|
125
|
+
behavior without pretending that Unix mode bits are enforceable.
|
|
126
|
+
- Chronicle doctor now reports the Windows permission boundary explicitly instead of producing a
|
|
127
|
+
permanent false warning, while retaining `0700`/`0600` enforcement on POSIX systems.
|
|
128
|
+
- The hosted macOS audio gate now installs `ffmpeg`/`ffprobe` before rendering and verification.
|
|
129
|
+
- Installation snapshots now retain full-stack rollback commands when Chronicle and video wheels
|
|
130
|
+
are present, including restoration of the separate Chronicle executable.
|
|
131
|
+
- OMP integration now injects the classification context through the turn system prompt
|
|
132
|
+
(`before_agent_start` → `systemPrompt`) instead of a hidden transcript message, primes the model
|
|
133
|
+
with session context, and enforces the terminal Outcome/typed wrapper at `session_stop`. The dead
|
|
134
|
+
`agent_end` block path and the unmapped `SessionStop` event were removed.
|
|
135
|
+
- Grok Stop no longer continues a turn that already has a valid Outcome Brief or Session
|
|
136
|
+
Checkpoint. Grok paints that message and opens suggested-question chips plus the follow-up
|
|
137
|
+
queue before Stop runs; a continuation held the queue, wiped the chips, and could send the
|
|
138
|
+
wrong next prompt. Stop still supplies one classification repair when the brief itself is
|
|
139
|
+
missing.
|
|
140
|
+
- Grok Stop no longer forces an Outcome Brief onto a non-substantive follow-up. Sticky work
|
|
141
|
+
type from an earlier review was wrapping a literal `PINEAPPLE` reply as a codebase review.
|
|
142
|
+
|
|
143
|
+
### Security
|
|
144
|
+
|
|
145
|
+
- Chronicle is disabled until explicit project initialization, writes only below
|
|
146
|
+
`$BRIEF_SPEC_HOME/chronicles`, rejects credential/transcript/prompt/tool-output fields before
|
|
147
|
+
persistence, bounds events to 64 KiB, and requires an exact project ID for deletion.
|
|
148
|
+
- Lesson approval creates an offline proposal export only; it cannot modify a knowledge system,
|
|
149
|
+
method, skill, policy, or canonical project state.
|
|
150
|
+
|
|
151
|
+
## [0.5.0] - Unreleased candidate
|
|
152
|
+
|
|
153
|
+
### Added
|
|
154
|
+
|
|
155
|
+
- Canonical Brief-Spec identity: `brief-spec` distribution and CLI plus the
|
|
156
|
+
`brief_spec` Python package, while preserving all `briefspec` 0.x aliases.
|
|
157
|
+
- Eight deterministic work-type profiles and open subject slugs with local,
|
|
158
|
+
bounded classification; explicit, host, inferred, and fallback origins;
|
|
159
|
+
categorical confidence; sticky task behavior; and pivot handling.
|
|
160
|
+
- `types list`, `types show`, and `classify` CLI commands, plus the universal
|
|
161
|
+
`brief-spec` routing skill.
|
|
162
|
+
- Typed Markdown wrapper and `brief-spec-delivery/2.0` canonical schema with
|
|
163
|
+
classification, ordered explanations, harness/model metadata, provenance,
|
|
164
|
+
artifacts, work items, manifests, and receipts.
|
|
165
|
+
- Data-driven harness registry and native user/project installers for Codex,
|
|
166
|
+
Claude Code, OMP, Grok Build, and Kimi Code; experimental adapters for
|
|
167
|
+
Copilot, Cursor Agent, and Goose.
|
|
168
|
+
- OMP native extension lifecycle and Kimi user-plugin integration, including
|
|
169
|
+
the project-scope skills-only capability boundary.
|
|
170
|
+
- Canonical `brief-spec-delivery/2.0` exports for deterministic Markdown,
|
|
171
|
+
JSON, self-contained offline HTML, ZIP, spoken text, and SSML, with optional
|
|
172
|
+
PDF and MP3 renderer packages.
|
|
173
|
+
- Provider-neutral provenance for Exa, Tavily, Firecrawl, local files, and
|
|
174
|
+
future research systems without adding their SDKs to the core package.
|
|
175
|
+
- Ordered bundle manifests, external delivery receipts, SHA-256 integrity,
|
|
176
|
+
fixed ZIP metadata, and structural, resolved, rendered, and delivered
|
|
177
|
+
verification levels.
|
|
178
|
+
- Portable Outcome Brief, Session Checkpoint, evidence, delivery, manifest,
|
|
179
|
+
and receipt schemas plus a self-contained offline compound schema bundle.
|
|
180
|
+
- Sanitized, source-fingerprinted live-host evidence and exact-SHA release
|
|
181
|
+
authorization inputs for build-once publication.
|
|
182
|
+
- Browser, PDF, local-audio, clean-wheel, clean-sdist, rollback, hermetic-host,
|
|
183
|
+
and cross-harness live acceptance gates.
|
|
184
|
+
|
|
185
|
+
### Changed
|
|
186
|
+
|
|
187
|
+
- The unpublished `0.3.0` delivery and `0.4.0` renderer candidates are folded
|
|
188
|
+
into this release; no intermediate packages will be published.
|
|
189
|
+
- Canonical state uses `BRIEF_SPEC_HOME` and `~/.local/state/brief-spec`, while
|
|
190
|
+
the legacy variable, state, markers, receipts, schemas, and renderer entry
|
|
191
|
+
point group remain readable through the `0.x` line.
|
|
192
|
+
- Optional renderer distribution names are now `brief-spec-renderer-pdf` and
|
|
193
|
+
`brief-spec-renderer-audio`, version-aligned at `0.5.0`.
|
|
194
|
+
- Human-facing Markdown, HTML, and PDF projections are status-first while the
|
|
195
|
+
unchanged Outcome Brief and Session Checkpoint `1.0` contracts remain
|
|
196
|
+
backward compatible.
|
|
197
|
+
- Verification is zero-network and no-plugin by default. Public URL checks and
|
|
198
|
+
renderer code loading require explicit consent.
|
|
199
|
+
- Inferred classifications are capped at medium confidence; ambiguous or
|
|
200
|
+
conflicting intent falls back to `general` instead of fabricating certainty.
|
|
201
|
+
- Harness maturity is evidence-based: Codex, Claude Code, OMP, Grok Build, and
|
|
202
|
+
Kimi Code pass their required local live matrices; Copilot, Cursor, and Goose
|
|
203
|
+
remain explicitly experimental.
|
|
204
|
+
|
|
205
|
+
### Fixed
|
|
206
|
+
|
|
207
|
+
- Grok Build now accepts native camelCase assistant payloads, obtains exact
|
|
208
|
+
classification metadata through one bounded Stop-hook repair, and uses the
|
|
209
|
+
actual `read_file`/`search_replace` native tool IDs for its disposable
|
|
210
|
+
implementation gate.
|
|
211
|
+
- Receipt ownership now requires the recorded path and prior hash. Locally
|
|
212
|
+
modified managed files are preserved and staged beside the new candidate
|
|
213
|
+
rather than overwritten.
|
|
214
|
+
- Runtime auto-detection follows explicit payload, stable session identifier,
|
|
215
|
+
mutually exclusive host markers, then deterministic fallback precedence.
|
|
216
|
+
- Doctor and installer tests no longer depend on optional host executables from
|
|
217
|
+
the maintainer's real `PATH`.
|
|
218
|
+
|
|
219
|
+
### Security
|
|
220
|
+
|
|
221
|
+
- Resolved verification rejects loopback, private, link-local, metadata,
|
|
222
|
+
multicast, unspecified, redirected-private, and other non-public network
|
|
223
|
+
targets unless the relevant operation is explicitly permitted.
|
|
224
|
+
- File and archive verification now bounds input size, member count, expanded
|
|
225
|
+
size, compression ratio, redirects, requests, headers, and fetched bodies.
|
|
226
|
+
- Path traversal, absolute archive members, duplicate names, special files,
|
|
227
|
+
symlink escapes, command-like evidence, and silent workspace escapes are
|
|
228
|
+
rejected.
|
|
229
|
+
- Hook input, transcript tails, session state, and repair behavior remain
|
|
230
|
+
bounded; secrets and raw transcripts are excluded from artifacts and
|
|
231
|
+
receipts.
|
|
232
|
+
|
|
233
|
+
## [0.4.0] - Unpublished candidate folded into 0.5.0
|
|
234
|
+
|
|
235
|
+
### Added
|
|
236
|
+
|
|
237
|
+
- Optional `briefspec-renderer-pdf` package using canonical offline HTML and Playwright Chromium,
|
|
238
|
+
with A4/Letter output and Poppler-backed verification.
|
|
239
|
+
- Optional `briefspec-renderer-audio` package for local macOS `say` plus `ffmpeg` MP3 output and
|
|
240
|
+
explicitly consented OpenAI text-to-speech.
|
|
241
|
+
- Renderer discovery through the `briefspec.renderers` Python entry-point group.
|
|
242
|
+
- Linux PDF/browser and macOS local-audio end-to-end CI jobs, plus mocked OpenAI boundaries.
|
|
243
|
+
|
|
244
|
+
## [0.3.0] - Unpublished candidate folded into 0.5.0
|
|
245
|
+
|
|
246
|
+
### Added
|
|
247
|
+
|
|
248
|
+
- Canonical `briefspec-delivery/1.0` envelope with source metadata, provenance, artifacts, and
|
|
249
|
+
multi-agent work activity.
|
|
250
|
+
- Deterministic Markdown, JSON, self-contained HTML, and ZIP downloads generated from one object.
|
|
251
|
+
- External delivery receipts and structural, resolved, rendered, and delivered verification.
|
|
252
|
+
- `export`, `bundle`, `verify`, `deliver`, `setup`, and `capabilities` CLI commands.
|
|
253
|
+
- Atomic multi-runtime setup plus doctor repair, all-scope inventory, and version-drift checks.
|
|
254
|
+
- PyPI Trusted Publishing workflow, release manifest, restart-safe digest checks, and staged
|
|
255
|
+
GitHub Release finalization.
|
|
256
|
+
|
|
257
|
+
### Changed
|
|
258
|
+
|
|
259
|
+
- Rich evidence annotations can include a safe `kind=` hint while legacy annotations remain valid.
|
|
260
|
+
- Spoken text and SSML are exportable only from a Spoken Checkpoint.
|
|
261
|
+
|
|
262
|
+
## [0.2.1] - Unpublished candidate from 2026-08-03
|
|
263
|
+
|
|
264
|
+
### Fixed
|
|
265
|
+
|
|
266
|
+
- Codex project hook commands resolve the Brief-Spec bundle from the Git root, so all lifecycle
|
|
267
|
+
events continue to work when a task starts in a nested repository directory.
|
|
268
|
+
- Codex project installs include a PowerShell `commandWindows` override with the same root-stable
|
|
269
|
+
behavior.
|
|
270
|
+
- The README badge, installation command, and verification record now stay aligned with the
|
|
271
|
+
package version.
|
|
272
|
+
- Session Checkpoint JSON fields now match all Orient, Teach, and Spoken human-facing contracts.
|
|
273
|
+
- Markdown validation rejects proof without an inspectable locator and warns when evidence basis
|
|
274
|
+
and result labels are missing.
|
|
275
|
+
- Repeat installation upgrades unchanged receipt-owned skill references while preserving
|
|
276
|
+
independently modified files.
|
|
277
|
+
|
|
278
|
+
### Added
|
|
279
|
+
|
|
280
|
+
- Executable nested-directory regression coverage for Codex project hooks.
|
|
281
|
+
- A tag-driven release workflow that builds once, verifies the wheel, records SHA-256 checksums,
|
|
282
|
+
generates GitHub build provenance, and attaches the artifacts to the release.
|
|
283
|
+
- Contract-equivalence tests for every Session Checkpoint mode.
|
|
284
|
+
- Full-SHA GitHub Actions pins with Dependabot maintenance.
|
|
285
|
+
|
|
286
|
+
## [0.2.0] - 2026-07-31
|
|
287
|
+
|
|
288
|
+
### Fixed
|
|
289
|
+
|
|
290
|
+
- Checkpoint suggestions are delivered once per pending checkpoint and repeat only after the
|
|
291
|
+
configured cooldown, instead of on every completed tool call.
|
|
292
|
+
|
|
293
|
+
### Changed
|
|
294
|
+
|
|
295
|
+
- Claude Code project installs write skills to `.claude/skills/` so the host lists
|
|
296
|
+
`outcome-brief` and `session-checkpoint` natively.
|
|
297
|
+
- Claude Code project hook commands anchor on `$CLAUDE_PROJECT_DIR` so they no longer depend
|
|
298
|
+
on the session's working directory.
|
|
299
|
+
- `doctor` resolves scope automatically: a project install for the current directory wins,
|
|
300
|
+
the user install is the fallback, and `--scope` forces either. The report header now names
|
|
301
|
+
the scope it checked.
|
|
302
|
+
|
|
303
|
+
## [0.1.0] - 2026-07-31
|
|
304
|
+
|
|
305
|
+
### Added
|
|
306
|
+
|
|
307
|
+
- `outcome-brief` with five honest terminal statuses and an evidence-first field order.
|
|
308
|
+
- `session-checkpoint` with orient, teach, and spoken modes.
|
|
309
|
+
- Dependency-free Python control plane for validation, safe-boundary triggers, and bounded state.
|
|
310
|
+
- Codex, Claude Code, and GitHub Copilot lifecycle adapters.
|
|
311
|
+
- Native plugin and marketplace manifests for all three ecosystems.
|
|
312
|
+
- Reversible user and project installers with receipts and conflict preservation.
|
|
313
|
+
- Network-free Copilot cloud bridge built as a deterministic Python zipapp.
|
|
314
|
+
- Doctor, configuration, state-retention, and validation commands.
|
|
315
|
+
- Synthetic Apex experience pilot and clean-room verification surfaces.
|
|
316
|
+
|
|
317
|
+
[Unreleased]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.5.0...HEAD
|
|
318
|
+
[0.5.0]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.2.0...v0.5.0
|
|
319
|
+
[0.4.0]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.3.0...v0.4.0
|
|
320
|
+
[0.3.0]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.2.1...v0.3.0
|
|
321
|
+
[0.2.1]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.2.0...v0.2.1
|
|
322
|
+
[0.2.0]: https://github.com/luanmorenommaciel/brief-spec/compare/v0.1.0...v0.2.0
|
|
323
|
+
[0.1.0]: https://github.com/luanmorenommaciel/brief-spec/releases/tag/v0.1.0
|
brief_spec-0.5.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Luan Moreno Maciel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|