theslopmachine 0.4.2 → 0.4.3
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.
- package/README.md +69 -4
- package/RELEASE.md +2 -2
- package/assets/agents/slopmachine.md +5 -6
- package/assets/skills/developer-session-lifecycle/SKILL.md +5 -6
- package/assets/skills/planning-guidance/SKILL.md +1 -1
- package/assets/skills/session-rollover/SKILL.md +1 -2
- package/assets/skills/submission-packaging/SKILL.md +10 -10
- package/assets/skills/verification-gates/SKILL.md +1 -1
- package/assets/slopmachine/document-completeness.md +46 -32
- package/assets/slopmachine/engineering-results.md +43 -39
- package/assets/slopmachine/implementation-comparison.md +40 -33
- package/assets/slopmachine/quality-document.md +45 -86
- package/assets/slopmachine/templates/AGENTS.md +1 -1
- package/package.json +1 -1
- package/src/constants.js +61 -58
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ The current engine is the lighter workflow line:
|
|
|
37
37
|
- smaller always-loaded owner shell
|
|
38
38
|
- smaller developer rulebook
|
|
39
39
|
- richer phase-specific skills loaded when needed
|
|
40
|
-
- bounded 2
|
|
40
|
+
- bounded 2-session developer-session model
|
|
41
41
|
- `beads_rust` bootstrap path
|
|
42
42
|
|
|
43
43
|
## Requirements
|
|
@@ -66,13 +66,13 @@ npm pack
|
|
|
66
66
|
This produces a tarball such as:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
theslopmachine-0.4.
|
|
69
|
+
theslopmachine-0.4.3.tgz
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
You can then install it globally with:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
npm install -g ./theslopmachine-0.4.
|
|
75
|
+
npm install -g ./theslopmachine-0.4.3.tgz
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
For local development instead of global install:
|
|
@@ -143,6 +143,7 @@ The expected high-level lifecycle is:
|
|
|
143
143
|
8. final human decision
|
|
144
144
|
9. remediation when needed
|
|
145
145
|
10. submission packaging
|
|
146
|
+
11. retrospective
|
|
146
147
|
|
|
147
148
|
## How It Is Intended To Operate
|
|
148
149
|
|
|
@@ -154,7 +155,7 @@ That means:
|
|
|
154
155
|
- planning, scaffold, development, verification, hardening, remediation, and packaging load detailed skills only when needed
|
|
155
156
|
- early and late phases do not carry each other's full instruction payloads all the time
|
|
156
157
|
|
|
157
|
-
The
|
|
158
|
+
The current workflow also expects:
|
|
158
159
|
|
|
159
160
|
- targeted reads over broad rereads
|
|
160
161
|
- local and narrow verification during ordinary iteration
|
|
@@ -174,6 +175,70 @@ Examples:
|
|
|
174
175
|
- web backend/fullstack: `docker compose up --build` and `./run_tests.sh`
|
|
175
176
|
- mobile or desktop when Docker runtime is not the direct run path: `./run_app.sh` and `./run_tests.sh`
|
|
176
177
|
|
|
178
|
+
## What It Does Well
|
|
179
|
+
|
|
180
|
+
- keeps the owner shell strict without carrying a giant monolith prompt
|
|
181
|
+
- loads detailed phase and activity skills only when they are actually needed
|
|
182
|
+
- uses a bounded 2-session model to reduce long-run context drag
|
|
183
|
+
- pushes prompt-fit, security, testing, and engineering-quality concerns earlier into planning and hardening
|
|
184
|
+
- standardizes runtime and broad-test expectations with `docker compose up --build` or `./run_app.sh` plus `./run_tests.sh`
|
|
185
|
+
- preserves strong packaging/report discipline with canonical files in `~/slopmachine/`
|
|
186
|
+
|
|
187
|
+
## Installed Assets
|
|
188
|
+
|
|
189
|
+
The package installs:
|
|
190
|
+
|
|
191
|
+
- owner and developer agents
|
|
192
|
+
- phase and activity skills
|
|
193
|
+
- canonical evaluation and report templates in `~/slopmachine/`
|
|
194
|
+
- workflow bootstrap helper
|
|
195
|
+
- repo rulebook template
|
|
196
|
+
- session export utilities
|
|
197
|
+
|
|
198
|
+
Canonical files in `~/slopmachine/`:
|
|
199
|
+
|
|
200
|
+
- `backend-evaluation-prompt.md`
|
|
201
|
+
- `frontend-evaluation-prompt.md`
|
|
202
|
+
- `document-completeness.md`
|
|
203
|
+
- `engineering-results.md`
|
|
204
|
+
- `implementation-comparison.md`
|
|
205
|
+
- `quality-document.md`
|
|
206
|
+
- `retrospectives/`
|
|
207
|
+
|
|
208
|
+
## Dependencies And Assumptions
|
|
209
|
+
|
|
210
|
+
- Node.js 18+ is required for the package CLI itself
|
|
211
|
+
- OpenCode must already be available on the machine
|
|
212
|
+
- git must be available
|
|
213
|
+
- `beads_rust` / `br` is installed or verified by `slopmachine setup`
|
|
214
|
+
|
|
215
|
+
Generated projects follow the original prompt and the existing repository first.
|
|
216
|
+
|
|
217
|
+
Default runtime/test wrapper expectations:
|
|
218
|
+
|
|
219
|
+
- Dockerized web backend/fullstack: `docker compose up --build` and `./run_tests.sh`
|
|
220
|
+
- non-web or non-Docker runtime cases: `./run_app.sh` and `./run_tests.sh`
|
|
221
|
+
|
|
222
|
+
`./run_tests.sh` is always the broad test wrapper.
|
|
223
|
+
|
|
224
|
+
## Command Summary
|
|
225
|
+
|
|
226
|
+
Package CLI:
|
|
227
|
+
|
|
228
|
+
- `slopmachine setup`
|
|
229
|
+
- `slopmachine init`
|
|
230
|
+
- `slopmachine init -o`
|
|
231
|
+
|
|
232
|
+
Package validation:
|
|
233
|
+
|
|
234
|
+
- `npm run check`
|
|
235
|
+
- `npm pack`
|
|
236
|
+
|
|
237
|
+
Generated project conventions:
|
|
238
|
+
|
|
239
|
+
- `docker compose up --build` or `./run_app.sh`
|
|
240
|
+
- `./run_tests.sh`
|
|
241
|
+
|
|
177
242
|
## Files And Locations
|
|
178
243
|
|
|
179
244
|
Main install locations:
|
package/RELEASE.md
CHANGED
|
@@ -41,13 +41,13 @@ npm pack
|
|
|
41
41
|
This should produce a tarball such as:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
theslopmachine-0.4.
|
|
44
|
+
theslopmachine-0.4.3.tgz
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
## Inspect package contents
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
tar -tzf theslopmachine-0.4.
|
|
50
|
+
tar -tzf theslopmachine-0.4.3.tgz
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Check that the tarball includes:
|
|
@@ -67,7 +67,7 @@ Agent-integrity rule:
|
|
|
67
67
|
|
|
68
68
|
## Optimization Goal
|
|
69
69
|
|
|
70
|
-
The main
|
|
70
|
+
The main target is:
|
|
71
71
|
|
|
72
72
|
- less token waste
|
|
73
73
|
- less elapsed time
|
|
@@ -174,18 +174,17 @@ Phase rules:
|
|
|
174
174
|
|
|
175
175
|
## Developer Session Model
|
|
176
176
|
|
|
177
|
-
Use up to
|
|
177
|
+
Use up to two bounded developer sessions:
|
|
178
178
|
|
|
179
|
-
1.
|
|
180
|
-
2.
|
|
181
|
-
3. remediation session: evaluation-response remediation, only if needed
|
|
179
|
+
1. develop session: planning, scaffold, development
|
|
180
|
+
2. bugfix session: integrated verification, hardening, and remediation, only if needed
|
|
182
181
|
|
|
183
182
|
Use `developer-session-lifecycle` for startup, resume detection, session consistency checks, and recovery.
|
|
184
183
|
Use `session-rollover` only for planned transitions between those bounded developer sessions.
|
|
185
184
|
|
|
186
185
|
Do not launch the developer during `P0` or `P1`.
|
|
187
186
|
|
|
188
|
-
When the first
|
|
187
|
+
When the first develop developer session begins in `P2`, start it in this exact order:
|
|
189
188
|
|
|
190
189
|
1. send `lets plan this <original-prompt>`
|
|
191
190
|
2. wait for the developer's first reply
|
|
@@ -59,7 +59,7 @@ Optional startup inputs may include:
|
|
|
59
59
|
6. wait only for the initial clarification approval before development starts
|
|
60
60
|
7. ensure the parent project root has the required working structure, especially `../sessions/` and `../docs/`
|
|
61
61
|
8. initialize the bounded developer-session slots
|
|
62
|
-
9. start the
|
|
62
|
+
9. start the develop developer session only after `P2` is ready to begin
|
|
63
63
|
10. send this exact first planning opener as the first message in that session: `lets plan this <original-prompt>`
|
|
64
64
|
11. wait for the developer's first exchange
|
|
65
65
|
12. send the approved clarification prompt as the second owner message in that same session
|
|
@@ -69,7 +69,7 @@ Optional startup inputs may include:
|
|
|
69
69
|
|
|
70
70
|
The first bounded developer session must begin in this exact order:
|
|
71
71
|
|
|
72
|
-
1. owner starts the
|
|
72
|
+
1. owner starts the develop developer session
|
|
73
73
|
2. owner sends: `lets plan this <original-prompt>`
|
|
74
74
|
3. developer responds
|
|
75
75
|
4. owner sends the approved clarification prompt
|
|
@@ -138,11 +138,10 @@ Required project metadata fields in `../metadata.json` when relevant:
|
|
|
138
138
|
|
|
139
139
|
## Bounded session model
|
|
140
140
|
|
|
141
|
-
Track up to
|
|
141
|
+
Track up to two planned developer sessions:
|
|
142
142
|
|
|
143
|
-
1.
|
|
144
|
-
2.
|
|
145
|
-
3. remediation
|
|
143
|
+
1. develop
|
|
144
|
+
2. bugfix
|
|
146
145
|
|
|
147
146
|
Later session slots may remain unused if the workflow never needs them.
|
|
148
147
|
|
|
@@ -110,7 +110,7 @@ Selected-stack defaults:
|
|
|
110
110
|
- for each major module, define how it integrates with existing modules and which shared contracts it must follow consistently
|
|
111
111
|
- define verification plans that include cross-module scenarios and seam checks, not just isolated feature checks
|
|
112
112
|
- surface real unresolved risks honestly
|
|
113
|
-
- keep the plan aligned with current policy: owner-managed external docs, no `.env` files, junior-friendly repo-local README, and the
|
|
113
|
+
- keep the plan aligned with current policy: owner-managed external docs, no `.env` files, junior-friendly repo-local README, and the current verification cadence
|
|
114
114
|
|
|
115
115
|
## Exit target
|
|
116
116
|
|
|
@@ -104,7 +104,7 @@ The final submission layout in the parent project root must be:
|
|
|
104
104
|
- relocate screenshots and proof materials relevant to runtime behavior and major flows into parent-root `../submission/`
|
|
105
105
|
- preserve parent-root `../sessions/` as the session artifact directory for converted workflow session exports
|
|
106
106
|
- export all tracked workflow sessions before generating the final submission documents
|
|
107
|
-
- after the session exports are complete,
|
|
107
|
+
- after the session exports are complete, the owner should answer the final submission-document questions based on the recent review responses gathered across evaluation reports, remediation results, verification notes, and packaging checks
|
|
108
108
|
|
|
109
109
|
## Session export sequence
|
|
110
110
|
|
|
@@ -120,8 +120,8 @@ For each tracked session:
|
|
|
120
120
|
|
|
121
121
|
Naming rule for converted files under `../sessions/`:
|
|
122
122
|
|
|
123
|
-
-
|
|
124
|
-
-
|
|
123
|
+
- the develop session becomes `develop-N.json`
|
|
124
|
+
- the bugfix session becomes `bugfix-N.json`
|
|
125
125
|
|
|
126
126
|
After those steps:
|
|
127
127
|
|
|
@@ -135,13 +135,13 @@ After those steps:
|
|
|
135
135
|
|
|
136
136
|
After all session exports are complete:
|
|
137
137
|
|
|
138
|
-
1.
|
|
139
|
-
2.
|
|
140
|
-
3. generate the required final submission documents from that
|
|
138
|
+
1. gather the recent review responses from evaluation reports, accepted triage notes, remediation outcomes, verification notes, and packaging checks
|
|
139
|
+
2. answer the final submission-document questions from that gathered review evidence
|
|
140
|
+
3. generate the required final submission documents from that gathered review evidence plus the canonical `~/slopmachine/` reference files
|
|
141
141
|
|
|
142
142
|
Do not start generating the final submission documents before the session exports are complete.
|
|
143
|
-
Do not
|
|
144
|
-
If the
|
|
143
|
+
Do not rely on one single cached evaluation session as the only source for final submission-document answers.
|
|
144
|
+
If the gathered review evidence is incomplete, stop and repair the missing evidence before continuing packaging.
|
|
145
145
|
|
|
146
146
|
## Required file moves
|
|
147
147
|
|
|
@@ -171,8 +171,8 @@ If the last evaluation session id is missing or unusable, stop and repair metada
|
|
|
171
171
|
- confirm required screenshots have been relocated into parent-root `../submission/`
|
|
172
172
|
- confirm parent-root metadata fields are populated correctly
|
|
173
173
|
- confirm session export naming rules are followed under `../sessions/`:
|
|
174
|
-
- `develop-N.json` for
|
|
175
|
-
- `bugfix-N.json` for
|
|
174
|
+
- `develop-N.json` for the develop session
|
|
175
|
+
- `bugfix-N.json` for the bugfix session
|
|
176
176
|
|
|
177
177
|
## Submission artifact and response contract
|
|
178
178
|
|
|
@@ -77,7 +77,7 @@ Use this skill after development begins whenever you are reviewing work, decidin
|
|
|
77
77
|
- a broad gate is an owner-run integrated verification boundary, not every ordinary phase change
|
|
78
78
|
- a phase change alone does not automatically require a broad gate unless that phase exit explicitly calls for one
|
|
79
79
|
- a broad gate normally means some combination of full clean runtime proof, `./run_tests.sh`, and platform-appropriate UI/E2E evidence when UI-bearing flows exist
|
|
80
|
-
-
|
|
80
|
+
- the workflow target is at most 3 broad owner-run verification moments across the whole cycle
|
|
81
81
|
- ordinary planning, ordinary slice acceptance, and routine in-phase verification are not broad gates by default and should rely on targeted local verification unless the risk profile says otherwise
|
|
82
82
|
|
|
83
83
|
For Dockerized web backend/fullstack projects, the default Docker cadence is:
|
|
@@ -1,45 +1,59 @@
|
|
|
1
|
-
##
|
|
1
|
+
## Delivery Completeness Template
|
|
2
|
+
|
|
3
|
+
Use this file as the structure reference for the delivery-completeness and hard-threshold submission outputs.
|
|
4
|
+
|
|
5
|
+
Do not copy sample-project content into the final document.
|
|
6
|
+
Replace every placeholder with evidence from the current delivered project.
|
|
7
|
+
|
|
8
|
+
## Document completeness
|
|
2
9
|
|
|
3
10
|
| Document Type | File Path | Completeness | Description |
|
|
4
11
|
| :---- | :---- | :---- | :---- |
|
|
5
|
-
| **User Instructions** |
|
|
6
|
-
| **Testing Instructions** |
|
|
7
|
-
| **
|
|
12
|
+
| **User Instructions** | `<path>` | `<Complete/Partial/Missing>` | `<what is present and whether it is enough>` |
|
|
13
|
+
| **Testing Instructions** | `<path>` | `<Complete/Partial/Missing>` | `<how local and broad test paths are documented>` |
|
|
14
|
+
| **Runtime/Deployment Instructions** | `<path>` | `<Complete/Partial/Missing>` | `<how runtime startup is documented>` |
|
|
15
|
+
| **Other Required Project Docs** | `<path>` | `<Complete/Partial/Missing>` | `<other prompt-required or delivery-required docs>` |
|
|
8
16
|
|
|
9
|
-
|
|
17
|
+
## Code completeness
|
|
10
18
|
|
|
11
|
-
| Module | Implementation Status | Description |
|
|
19
|
+
| Module / Area | Implementation Status | Description |
|
|
12
20
|
| :---- | :---- | :---- |
|
|
13
|
-
| **
|
|
14
|
-
| **
|
|
15
|
-
| **
|
|
16
|
-
| **
|
|
17
|
-
| **
|
|
18
|
-
| **
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
|
23
|
-
| **Test Data** | ✅ Complete | add\_test\_data.py |
|
|
24
|
-
|
|
25
|
-
5.3 Deployment Completeness
|
|
26
|
-
|
|
27
|
-
| Deployment Method | Implementation Status | Description |
|
|
21
|
+
| **Core runtime** | `<Complete/Partial/Missing>` | `<what exists>` |
|
|
22
|
+
| **Primary user-facing flows** | `<Complete/Partial/Missing>` | `<what exists>` |
|
|
23
|
+
| **Admin/operator flows** | `<Complete/Partial/Missing/Not Applicable>` | `<what exists>` |
|
|
24
|
+
| **Persistence / state / data model** | `<Complete/Partial/Missing/Not Applicable>` | `<what exists>` |
|
|
25
|
+
| **Tests** | `<Complete/Partial/Missing>` | `<what exists>` |
|
|
26
|
+
| **Build / packaging / runtime config** | `<Complete/Partial/Missing>` | `<what exists>` |
|
|
27
|
+
|
|
28
|
+
## Runtime and deployment completeness
|
|
29
|
+
|
|
30
|
+
| Runtime Method | Implementation Status | Description |
|
|
28
31
|
| :---- | :---- | :---- |
|
|
29
|
-
| **
|
|
30
|
-
| **
|
|
31
|
-
| **
|
|
32
|
-
| **
|
|
32
|
+
| **Primary runtime command** | `<Complete/Partial/Missing>` | `<docker compose up --build or ./run_app.sh, etc.>` |
|
|
33
|
+
| **Broad test command** | `<Complete/Partial/Missing>` | `<./run_tests.sh behavior>` |
|
|
34
|
+
| **Local development verification** | `<Complete/Partial/Missing>` | `<local tests/tools present for normal iteration>` |
|
|
35
|
+
| **Persistence / initialization / automation** | `<Complete/Partial/Missing/Not Applicable>` | `<what happens automatically>` |
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
## Delivery completeness rating
|
|
35
38
|
|
|
36
|
-
**Rating
|
|
39
|
+
**Rating:** `<score or qualitative result>`
|
|
37
40
|
|
|
38
41
|
**Strengths:**
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
- `<strength 1>`
|
|
44
|
+
- `<strength 2>`
|
|
45
|
+
- `<strength 3>`
|
|
46
|
+
|
|
47
|
+
**Gaps or limits:**
|
|
48
|
+
|
|
49
|
+
- `<gap 1 or 'None material'>`
|
|
50
|
+
- `<gap 2 if needed>`
|
|
51
|
+
|
|
52
|
+
## Hard-threshold summary inputs
|
|
53
|
+
|
|
54
|
+
Explicitly answer:
|
|
45
55
|
|
|
56
|
+
1. Can the delivered product actually run through its primary runtime command?
|
|
57
|
+
2. Can the delivered product actually be verified through `./run_tests.sh`?
|
|
58
|
+
3. Does the delivered output fully cover the core prompt requirements?
|
|
59
|
+
4. Is the delivered product a real 0-to-1 delivery rather than a partial or schematic implementation?
|
|
@@ -1,59 +1,63 @@
|
|
|
1
|
-
|
|
1
|
+
## Engineering Details and Professionalism Template
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* **Error Handling**
|
|
5
|
-
* **Input Validation and Message Prompts**
|
|
6
|
-
* **Error Handling**
|
|
7
|
-
* **File Upload Security**
|
|
3
|
+
Use this file as the structure reference for the engineering-details-and-professionalism submission output.
|
|
8
4
|
|
|
9
|
-
|
|
5
|
+
Do not copy stack-specific example code or project-specific security claims into the final document.
|
|
6
|
+
Replace every placeholder with current-project evidence.
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
## Core checklist
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
Cover these areas explicitly using project-type equivalents when the exact surface changes:
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
1. coding standards and consistency
|
|
13
|
+
2. error handling and user-safe failures
|
|
14
|
+
3. input validation
|
|
15
|
+
4. logging or diagnostics
|
|
16
|
+
5. security-sensitive implementation details
|
|
17
|
+
6. test integrity
|
|
18
|
+
7. cleanup and professionalism
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
## Engineering details review
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
### Coding standards
|
|
23
|
+
- `<what standards/patterns are followed>`
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
### Error handling
|
|
26
|
+
- `<how errors are handled and surfaced safely>`
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
* ✅ **Integration Testing**: 8 test cases (End-to-end process, Chinese language support)
|
|
30
|
-
* ✅ **Total**: 41 test cases all passed
|
|
28
|
+
### Input validation
|
|
29
|
+
- `<how important inputs are validated>`
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
### Logging / diagnostics
|
|
32
|
+
- `<what logging or diagnostics exist>`
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
* ✅ Test data does not pollute the production database (db.sqlite3)
|
|
37
|
-
* ✅ Automatic data initialization scripts in startup scripts are disabled
|
|
34
|
+
### Security details
|
|
35
|
+
- `<security mechanisms actually present>`
|
|
38
36
|
|
|
39
|
-
|
|
37
|
+
### Test integrity
|
|
38
|
+
- `<test types present, isolation model, and major coverage notes>`
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
### Cleanup and professionalism
|
|
41
|
+
- `<absence of secrets, debug leftovers, committed dependency trees, etc.>`
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
## Checklist table
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
| Check | Status | Evidence |
|
|
46
|
+
| :---- | :---- | :---- |
|
|
47
|
+
| Error handling is credible | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
48
|
+
| Important inputs are validated | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
49
|
+
| Logging/diagnostics are useful | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
50
|
+
| No secrets/keys are committed | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
51
|
+
| No committed dependency directories | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
52
|
+
| No obvious leftover debug statements | `<Pass/Partial/Fail>` | `<evidence>` |
|
|
46
53
|
|
|
47
|
-
|
|
48
|
-
* **Error Handling**: Layered processing, user-friendly prompts, comprehensive exception capturing
|
|
49
|
-
* **Security**: Django built-in security features, CSRF/XSS/SQL injection protection
|
|
50
|
-
* **Test Integrity**: 41 test cases, completely isolated test environment
|
|
51
|
-
* **Maintainability**: Modular design, clear responsibilities, easy to extend
|
|
54
|
+
## Professionalism summary
|
|
52
55
|
|
|
53
|
-
**
|
|
56
|
+
**Strengths:**
|
|
54
57
|
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
- `<strength 1>`
|
|
59
|
+
- `<strength 2>`
|
|
57
60
|
|
|
58
|
-
|
|
61
|
+
**Remaining concerns:**
|
|
59
62
|
|
|
63
|
+
- `<concern 1 or 'None material'>`
|
|
@@ -1,36 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
## Prompt Understanding and Adaptability Template
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use this file as the structure reference for the prompt-understanding-and-adaptability submission output.
|
|
4
|
+
|
|
5
|
+
Do not copy example requirements or project-specific features into the final document.
|
|
6
|
+
Replace every placeholder with current-project evidence.
|
|
7
|
+
|
|
8
|
+
## Actual implementation vs requirements comparison
|
|
9
|
+
|
|
10
|
+
| Requirement Item | Original Requirement | Actual Implementation | Exceeding Portion / Notes |
|
|
4
11
|
| :---- | :---- | :---- | :---- |
|
|
5
|
-
|
|
|
6
|
-
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* **Add Suggestion**
|
|
12
|
+
| `<requirement>` | `<what the prompt asked for>` | `<what was delivered>` | `<extra or note>` |
|
|
13
|
+
| `<requirement>` | `<what the prompt asked for>` | `<what was delivered>` | `<extra or note>` |
|
|
14
|
+
|
|
15
|
+
## Depth of requirement understanding
|
|
16
|
+
|
|
17
|
+
Explain whether the delivered project shows real understanding of:
|
|
18
|
+
|
|
19
|
+
- business objectives
|
|
20
|
+
- user and operator flows
|
|
21
|
+
- implicit constraints
|
|
22
|
+
- runnability and maintainability expectations
|
|
23
|
+
- why the chosen implementation fits the actual problem
|
|
24
|
+
|
|
25
|
+
Use project-specific evidence only.
|
|
26
|
+
|
|
27
|
+
## Prompt-fit summary
|
|
28
|
+
|
|
29
|
+
Answer explicitly:
|
|
30
|
+
|
|
31
|
+
1. Did the implementation stay aligned with the actual prompt?
|
|
32
|
+
2. Did it cover the core required flows completely?
|
|
33
|
+
3. Did it understand the business goal rather than only surface technical tasks?
|
|
34
|
+
4. Where did it exceed, refine, or interpret the prompt, and was that prompt-faithful?
|
|
35
|
+
|
|
36
|
+
## Over-delivery / adaptability notes
|
|
37
|
+
|
|
38
|
+
- `<meaningful improvement or adaptation>`
|
|
39
|
+
- `<meaningful improvement or adaptation>`
|
|
40
|
+
|
|
41
|
+
## Risks or caveats
|
|
36
42
|
|
|
43
|
+
- `<any remaining prompt-fit caveat or 'None material'>`
|
|
@@ -1,108 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
**Project Positioning**
|
|
1
|
+
## Engineering and Architecture Quality Template
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
Use this file as the structure reference for the engineering-and-architecture self-assessment output.
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Do not copy stack-specific or project-specific example content into the final document.
|
|
6
|
+
Replace every placeholder with current-project evidence.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
## Project positioning
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* **Testing Framework**: pytest 8.3.4 \+ pytest-django 4.9.0
|
|
17
|
-
* **Deployment**: Docker Compose one-click startup
|
|
10
|
+
- **Project Type:** `<web/mobile/desktop/cli/library/etc.>`
|
|
11
|
+
- **Primary problem solved:** `<short summary>`
|
|
12
|
+
- **Major user or operator surfaces:**
|
|
13
|
+
- `<surface 1>`
|
|
14
|
+
- `<surface 2>`
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
## Technology stack selection
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
- **Primary runtime stack:** `<actual stack>`
|
|
19
|
+
- **Primary language(s):** `<actual language(s)>`
|
|
20
|
+
- **Persistence / data layer:** `<actual persistence>`
|
|
21
|
+
- **Testing stack:** `<actual test stack>`
|
|
22
|
+
- **Deployment / runtime model:** `<actual runtime model>`
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
## Architecture description
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
* **Template Layer**: Renders HTML pages to return to the client.
|
|
30
|
-
* **Backend Management**: Management interface provided by Django Admin.
|
|
31
|
-
* **Data Layer**: SQLite3 database for data storage.
|
|
26
|
+
- **High-level structure:** `<major layers/modules>`
|
|
27
|
+
- **Runtime boundaries:** `<how runtime pieces fit together>`
|
|
28
|
+
- **Data or state boundaries:** `<where state lives and how it flows>`
|
|
29
|
+
- **Key contracts:** `<critical interfaces or shared contracts>`
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
## Module division
|
|
34
32
|
|
|
35
|
-
| Module | Responsibility | File |
|
|
33
|
+
| Module | Responsibility | File / Area |
|
|
36
34
|
| :---- | :---- | :---- |
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
| **Data Models** | ORM model definitions, database table structures | main/models.py |
|
|
40
|
-
| **View Functions** | Business logic processing, request/response handling | main/views.py |
|
|
41
|
-
| **Backend Management** | Django Admin configuration | main/admin.py |
|
|
42
|
-
| **Templates** | HTML page rendering | main/templates/ |
|
|
43
|
-
| **Testing** | Unit testing, integration testing | tests/ |
|
|
35
|
+
| `<module>` | `<responsibility>` | `<path>` |
|
|
36
|
+
| `<module>` | `<responsibility>` | `<path>` |
|
|
44
37
|
|
|
45
|
-
|
|
38
|
+
## Architecture quality assessment
|
|
46
39
|
|
|
47
|
-
|
|
40
|
+
**Score / Rating:** `<score or qualitative result>`
|
|
48
41
|
|
|
49
|
-
**
|
|
42
|
+
**Strengths:**
|
|
50
43
|
|
|
51
|
-
|
|
44
|
+
- `<strength 1>`
|
|
45
|
+
- `<strength 2>`
|
|
46
|
+
- `<strength 3>`
|
|
52
47
|
|
|
53
|
-
**
|
|
48
|
+
**Areas for improvement:**
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
* **Django Best Practices**: Utilizes built-in functions such as Django ORM, Admin, and Messages.
|
|
58
|
-
* **Centralized Configuration**: All configurations are managed centrally in settings.py.
|
|
59
|
-
* **Scalability**: The database can be easily replaced with PostgreSQL or MySQL.
|
|
50
|
+
- `<improvement 1 or 'None material'>`
|
|
51
|
+
- `<improvement 2 if needed>`
|
|
60
52
|
|
|
61
|
-
|
|
53
|
+
## Maintainability review
|
|
62
54
|
|
|
63
|
-
|
|
64
|
-
* Consider using the Django REST Framework to provide API interfaces.
|
|
55
|
+
Address explicitly:
|
|
65
56
|
|
|
66
|
-
|
|
57
|
+
1. Is the structure modular and reviewable?
|
|
58
|
+
2. Are cross-cutting concerns handled consistently?
|
|
59
|
+
3. Are there major coupling or extension risks?
|
|
60
|
+
4. Does the project look like a credible maintained system rather than a stacked prototype?
|
|
67
61
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
| Field | Type | Description |
|
|
71
|
-
| :---- | :---- | :---- |
|
|
72
|
-
| id | INTEGER PK | Primary Key |
|
|
73
|
-
| name | VARCHAR(100) | Food Name |
|
|
74
|
-
| meal\_type | VARCHAR(20) | Meal Type (breakfast/lunch/dinner) |
|
|
75
|
-
| vote\_count | INTEGER | Vote Count |
|
|
76
|
-
| created\_at | DATETIME | Creation Time |
|
|
77
|
-
| updated\_at | DATETIME | Update Time |
|
|
78
|
-
|
|
79
|
-
**Table Structure: Suggestion (Opinions and Suggestions)**
|
|
80
|
-
|
|
81
|
-
| Field | Type | Description |
|
|
82
|
-
| :---- | :---- | :---- |
|
|
83
|
-
| id | INTEGER PK | Primary Key |
|
|
84
|
-
| title | VARCHAR(200) | Title |
|
|
85
|
-
| content | TEXT | Content |
|
|
86
|
-
| category | VARCHAR(20) | Category (food/service/environment/price/other) |
|
|
87
|
-
| status | VARCHAR(20) | Status (pending/processing/resolved/closed) |
|
|
88
|
-
| submitter\_name | VARCHAR(50) | Submitter Name (Optional) |
|
|
89
|
-
| submitter\_contact | VARCHAR(100) | Contact Info (Optional) |
|
|
90
|
-
| image | VARCHAR(100) | Image Path (Optional) |
|
|
91
|
-
| admin\_reply | TEXT | Admin Reply (Optional) |
|
|
92
|
-
| created\_at | DATETIME | Creation Time |
|
|
93
|
-
| updated\_at | DATETIME | Update Time |
|
|
94
|
-
|
|
95
|
-
**Index Design**
|
|
96
|
-
|
|
97
|
-
* **FoodVote Table Index**: Composite index to support queries by meal type and vote count: models.Index(fields=\['meal\_type', '-vote\_count'\]).
|
|
98
|
-
* **Suggestion Table Index**:
|
|
99
|
-
* Composite index for status and creation time: models.Index(fields=\['status', '-created\_at'\]).
|
|
100
|
-
* Composite index for category and creation time: models.Index(fields=\['category', '-created\_at'\]).
|
|
101
|
-
|
|
102
|
-
**Design Evaluation:**
|
|
103
|
-
|
|
104
|
-
* ✅ Index design is reasonable and covers main query scenarios.
|
|
105
|
-
* ✅ Field types are chosen appropriately, using TextChoices enumeration types.
|
|
106
|
-
* ✅ Uses Django ORM for easy migration to other databases.
|
|
107
|
-
* ✅ Timestamp fields are automatically managed using auto\_now\_add and auto\_now.
|
|
62
|
+
## Evidence to include
|
|
108
63
|
|
|
64
|
+
- brief architecture explanation
|
|
65
|
+
- major module map
|
|
66
|
+
- any key diagrams or screenshots when useful
|
|
67
|
+
- repo structure screenshot reference when used in the final generated file
|
package/package.json
CHANGED
package/src/constants.js
CHANGED
|
@@ -1,87 +1,90 @@
|
|
|
1
|
-
import os from
|
|
2
|
-
import path from
|
|
3
|
-
import { fileURLToPath } from
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
4
|
|
|
5
|
-
export const PACKAGE_VERSION =
|
|
6
|
-
export const OPCODE_VERSION =
|
|
7
|
-
export const BR_VERSION =
|
|
8
|
-
export const PACKAGE_ROOT = path.resolve(
|
|
5
|
+
export const PACKAGE_VERSION = "0.4.3";
|
|
6
|
+
export const OPCODE_VERSION = "1.3.5";
|
|
7
|
+
export const BR_VERSION = "0.1.34";
|
|
8
|
+
export const PACKAGE_ROOT = path.resolve(
|
|
9
|
+
path.dirname(fileURLToPath(import.meta.url)),
|
|
10
|
+
"..",
|
|
11
|
+
);
|
|
9
12
|
|
|
10
13
|
export function resolveHomeDir() {
|
|
11
|
-
return process.env.SLOPMACHINE_HOME || os.homedir()
|
|
14
|
+
return process.env.SLOPMACHINE_HOME || os.homedir();
|
|
12
15
|
}
|
|
13
16
|
|
|
14
17
|
export function buildPaths() {
|
|
15
|
-
const home = resolveHomeDir()
|
|
18
|
+
const home = resolveHomeDir();
|
|
16
19
|
return {
|
|
17
20
|
home,
|
|
18
|
-
slopmachineDir: path.join(home,
|
|
19
|
-
opencodeDir: path.join(home,
|
|
20
|
-
opencodeAgentsDir: path.join(home,
|
|
21
|
-
opencodeConfigPath: path.join(home,
|
|
22
|
-
globalSkillsDir: path.join(home,
|
|
23
|
-
}
|
|
21
|
+
slopmachineDir: path.join(home, "slopmachine"),
|
|
22
|
+
opencodeDir: path.join(home, ".config", "opencode"),
|
|
23
|
+
opencodeAgentsDir: path.join(home, ".config", "opencode", "agents"),
|
|
24
|
+
opencodeConfigPath: path.join(home, ".config", "opencode", "opencode.json"),
|
|
25
|
+
globalSkillsDir: path.join(home, ".agents", "skills"),
|
|
26
|
+
};
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
export const REQUIRED_SKILL_DIRS = [
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
]
|
|
30
|
+
"clarification-gate",
|
|
31
|
+
"developer-session-lifecycle",
|
|
32
|
+
"session-rollover",
|
|
33
|
+
"final-evaluation-orchestration",
|
|
34
|
+
"beads-operations",
|
|
35
|
+
"planning-guidance",
|
|
36
|
+
"planning-gate",
|
|
37
|
+
"scaffold-guidance",
|
|
38
|
+
"development-guidance",
|
|
39
|
+
"verification-gates",
|
|
40
|
+
"integrated-verification",
|
|
41
|
+
"hardening-gate",
|
|
42
|
+
"evaluation-triage",
|
|
43
|
+
"remediation-guidance",
|
|
44
|
+
"submission-packaging",
|
|
45
|
+
"retrospective-analysis",
|
|
46
|
+
"owner-evidence-discipline",
|
|
47
|
+
"report-output-discipline",
|
|
48
|
+
"frontend-design",
|
|
49
|
+
];
|
|
47
50
|
|
|
48
51
|
export const REQUIRED_SLOPMACHINE_FILES = [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
]
|
|
52
|
+
"backend-evaluation-prompt.md",
|
|
53
|
+
"frontend-evaluation-prompt.md",
|
|
54
|
+
"document-completeness.md",
|
|
55
|
+
"quality-document.md",
|
|
56
|
+
"engineering-results.md",
|
|
57
|
+
"implementation-comparison.md",
|
|
58
|
+
"workflow-init.js",
|
|
59
|
+
"templates/AGENTS.md",
|
|
60
|
+
"utils/strip_session_parent.py",
|
|
61
|
+
"utils/convert_ai_session.py",
|
|
62
|
+
];
|
|
60
63
|
|
|
61
64
|
export const MCP_ENTRIES = {
|
|
62
|
-
|
|
63
|
-
type:
|
|
64
|
-
command: [
|
|
65
|
+
"chrome-devtools": {
|
|
66
|
+
type: "local",
|
|
67
|
+
command: ["npx", "-y", "chrome-devtools-mcp@latest"],
|
|
65
68
|
},
|
|
66
69
|
context7: {
|
|
67
70
|
enabled: true,
|
|
68
|
-
type:
|
|
69
|
-
url:
|
|
71
|
+
type: "remote",
|
|
72
|
+
url: "https://mcp.context7.com/mcp",
|
|
70
73
|
headers: {
|
|
71
|
-
CONTEXT7_API_KEY:
|
|
74
|
+
CONTEXT7_API_KEY: "",
|
|
72
75
|
},
|
|
73
76
|
},
|
|
74
77
|
exa: {
|
|
75
78
|
enabled: true,
|
|
76
|
-
type:
|
|
77
|
-
url:
|
|
79
|
+
type: "remote",
|
|
80
|
+
url: "https://mcp.exa.ai/mcp",
|
|
78
81
|
headers: {
|
|
79
|
-
EXA_API_KEY:
|
|
82
|
+
EXA_API_KEY: "",
|
|
80
83
|
},
|
|
81
84
|
},
|
|
82
85
|
shadcn: {
|
|
83
|
-
command: [
|
|
86
|
+
command: ["npx", "shadcn@latest", "mcp"],
|
|
84
87
|
enabled: false,
|
|
85
|
-
type:
|
|
88
|
+
type: "local",
|
|
86
89
|
},
|
|
87
|
-
}
|
|
90
|
+
};
|