@bongos/core 1.21.97 → 1.21.99

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.
@@ -523,8 +523,8 @@ module.exports = function buildTasksRouter() {
523
523
  // down to Metic+ it needed an undo at the same rank, or a Metic's mis-retire would
524
524
  // be unrecoverable without Archon SQL (no other route restores an abandoned task —
525
525
  // PATCH refuses `status` outright). A restore lands in **backlog**, never straight
526
- // to ready: the task was retired for a reason, so it re-enters as un-workable and
527
- // takes a second, deliberate promote to become claimable again.
526
+ // to ready: the task was retired for a reason, so it re-enters PARKED (core_274,
527
+ // task 1004592 — the promotion sweep skips it) and only a second promote frees it.
528
528
  router.post('/tasks/:id/promote', auth.requireBuilder, auth.requirePermission('task.promote'), async (req, res) => {
529
529
  const id = Number(req.params.id);
530
530
  const task = await db.getTask(id);
@@ -535,7 +535,7 @@ module.exports = function buildTasksRouter() {
535
535
  // The restore branch returns early: no reward gate (that is a promote-to-WORKABLE
536
536
  // concern and backlog is the pre-workable state — same reasoning as /demote).
537
537
  if (task.status === 'abandoned') {
538
- const restored = await db.restoreTask({ taskId: id });
538
+ const restored = await db.restoreTask({ taskId: id, parkedBy: req.builder.id });
539
539
  return res.json({ ok: true, restored: true, status: restored.taskStatus });
540
540
  }
541
541
  // task 1670 / ADR 0096 + task 1673 amendment (2026-06-28): a task must never
@@ -585,7 +585,7 @@ module.exports = function buildTasksRouter() {
585
585
  // any later lifecycle state). A claimed task is `active`, so this gate also
586
586
  // refuses demoting work that's already in flight — demote is not a way to yank a
587
587
  // task out from under its claim holder. No reward side-effects (the reward gate
588
- // is a promote-only concern; backlog is the pre-workable state).
588
+ // is a promote-only concern). The task lands PARKED so the sweep leaves it (1004592).
589
589
  // rank: metic+archon — ready→backlog demotion; scope mutation; mirrors /promote (ADR 0090).
590
590
  router.post('/tasks/:id/demote', auth.requireBuilder, auth.requirePermission('task.demote'), async (req, res) => {
591
591
  const id = Number(req.params.id);
@@ -594,7 +594,7 @@ module.exports = function buildTasksRouter() {
594
594
  if (task.status !== 'ready') {
595
595
  return res.fail('cannot_demote', 409, { current_status: task.status });
596
596
  }
597
- await db.updateTaskStatus(id, 'backlog');
597
+ if (!(await db.parkTask(id, req.builder.id))) return res.fail('cannot_demote', 409);
598
598
  res.json({ ok: true });
599
599
  });
600
600
 
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.21.97",
3
+ "version": "1.21.99",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.21.97",
9
+ "version": "1.21.99",
10
10
  "license": "AGPL-3.0-or-later",
11
11
  "dependencies": {
12
12
  "express": "^4.21.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.21.97",
3
+ "version": "1.21.99",
4
4
  "description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "main": "src/platform-server.js",
@@ -9412,5 +9412,25 @@
9412
9412
  "id": "1004652",
9413
9413
  "text": "Connecting GitHub no longer makes a second app when something goes wrong. If a step stops, the checklist shows which one, says in one plain sentence that nothing is lost, and gives a \"Pick up where it stopped\" button that carr"
9414
9414
  }
9415
+ ],
9416
+ "1.21.98": [
9417
+ {
9418
+ "id": "1004654",
9419
+ "text": "The artist studio now has a day room. From 7 in the morning until 7 in the evening, by the clock on the artist's own computer, the studio shows a sunny sky with drifting clouds, a sun instead of the moon, lighter buildings wit"
9420
+ },
9421
+ {
9422
+ "id": "1004592",
9423
+ "text": "When someone restores a cut task or takes a task back off the board, it now stays put until a person promotes it. Before, the automatic promoter put it straight back on the claimable list within about five minutes."
9424
+ }
9425
+ ],
9426
+ "1.21.99": [
9427
+ {
9428
+ "id": "1004330",
9429
+ "text": "The plan for applying an artist's submitted page automatically, with nobody at a terminal, is written and broken into five build tasks. It is off until a project turns it on, it has a monthly limit, and the artist still approv"
9430
+ },
9431
+ {
9432
+ "id": "1004658",
9433
+ "text": "There is now one walk anyone can re-run that tests a project's whole government from start to finish, and a table showing the result. It founds a test project with a chosen government and checks that this government, not the f"
9434
+ }
9415
9435
  ]
9416
9436
  }